import { Event, VerifiedEvent } from 'nostr-tools' export type TProfile = { username: string pubkey: string original_username?: string banner?: string avatar?: string nip05?: string about?: string website?: string lud06?: string lud16?: string lightningAddress?: string created_at?: number } export type TMailboxRelayScope = 'read' | 'write' | 'both' export type TMailboxRelay = { url: string scope: TMailboxRelayScope } export type TRelayList = { write: string[] read: string[] originalRelays: TMailboxRelay[] } export type TRelayInfo = { name?: string description?: string icon?: string pubkey?: string contact?: string supported_nips?: number[] software?: string version?: string tags?: string[] payments_url?: string limitation?: { auth_required?: boolean payment_required?: boolean } } export type TWebMetadata = { title?: string | null description?: string | null image?: string | null } export type TRelaySet = { id: string name: string relayUrls: string[] } export type TConfig = { relayGroups: TRelaySet[] theme: TThemeSetting } export type TThemeSetting = 'light' | 'dark' | 'system' export type TTheme = 'light' | 'dark' export type TDraftEvent = Pick export type TNip07 = { getPublicKey: () => Promise signEvent: (draftEvent: TDraftEvent) => Promise nip04?: { encrypt?: (pubkey: string, plainText: string) => Promise decrypt?: (pubkey: string, cipherText: string) => Promise } } export interface ISigner { getPublicKey: () => Promise signEvent: (draftEvent: TDraftEvent) => Promise nip04Encrypt: (pubkey: string, plainText: string) => Promise nip04Decrypt: (pubkey: string, cipherText: string) => Promise } export type TSignerType = 'nsec' | 'nip-07' | 'bunker' | 'browser-nsec' | 'ncryptsec' | 'npub' export type TAccount = { pubkey: string signerType: TSignerType ncryptsec?: string nsec?: string bunker?: string bunkerClientSecretKey?: string npub?: string } export type TAccountPointer = Pick export type TFeedType = 'following' | 'relays' | 'temporary' export type TLanguage = 'en' | 'zh' | 'pl' export type TImageInfo = { url: string; blurHash?: string; dim?: { width: number; height: number } } export type TNoteListMode = 'posts' | 'postsAndReplies' | 'pictures' export type TNotificationType = 'all' | 'mentions' | 'reactions' | 'zaps' export type TPageRef = { scrollToTop: () => void } export type TNip66RelayInfo = TRelayInfo & { url: string shortUrl: string hasNip11: boolean triedNip11: boolean relayType?: string countryCode?: string }