UNPKG

@nostr-fetch/kernel

Version:
146 lines 4.7 kB
/** * The data structure of Nostr event. */ export type NostrEvent = { id: string; pubkey: string; created_at: number; kind: number; tags: string[][]; content: string; sig: string; }; /** * Standardized Nostr event kinds. * cf. https://github.com/nostr-protocol/nips#event-kinds * * @deprecated use literal kind numbers instead. */ export declare const eventKind: { readonly metadata: 0; readonly text: 1; readonly recommendRelay: 2; readonly contacts: 3; readonly encryptedDirectMessage: 4; readonly eventDeletion: 5; readonly repost: 6; readonly reaction: 7; readonly badgeAward: 8; readonly genericRepost: 16; readonly channelCreation: 40; readonly channelMetadata: 41; readonly channelMessage: 42; readonly channelHideMessage: 43; readonly channelMuteUser: 44; readonly fileMetadata: 1063; readonly liveChatMessage: 1311; readonly report: 1984; readonly label: 1985; readonly communityPostApproval: 4550; readonly zapRequest: 9734; readonly zap: 9735; readonly muteList: 10000; readonly pinList: 10001; readonly relayList: 10002; readonly walletInfo: 13194; readonly clientAuth: 22242; readonly walletRequest: 23194; readonly walletResponse: 23195; readonly nostrConnect: 24133; readonly httpAuth: 27235; readonly categorizedPeopleList: 30000; readonly categorizedBookmarkList: 30001; readonly profileBadges: 30008; readonly badgeDefinition: 30009; readonly marketplaceStall: 30017; readonly marketplaceProduct: 30018; readonly article: 30023; readonly draftArticle: 30024; readonly appSpecificData: 30078; readonly liveEvent: 30311; readonly classifiedListing: 30402; readonly draftClassifiedListing: 30403; readonly dateBasedCalendarEvent: 31922; readonly timeBasedCalendarEvent: 31923; readonly calendar: 31924; readonly calendarEventRsvp: 31925; readonly handlerRecommendation: 31989; readonly handlerInformation: 31990; readonly communityDefinition: 34550; }; /** * Keys of filter props for tag queries. */ type TagQueryKey = `#${string}`; /** * Checks if the given string is a valid key of tag query in filter. * * A valid tag query key is a string that starts with `#` and followed by a single Latin alphabet (`[A-Za-z]`). */ export declare const isValidTagQueryKey: (s: string) => boolean; /** * Filter for Nostr event subscription. */ export type Filter = { ids?: string[]; kinds?: number[]; authors?: string[]; since?: number; until?: number; limit?: number; search?: string; } & { [tag in TagQueryKey]: string[]; }; type C2RReq = [type: "REQ", subId: string, ...filters: Filter[]]; type C2RClose = [type: "CLOSE", subId: string]; export type C2RMessage = C2RReq | C2RClose; export type C2RMessageType = C2RMessage[0]; type R2CEvent = [type: "EVENT", subId: string, event: NostrEvent]; type R2CEose = [type: "EOSE", subId: string]; type R2CClosed = [type: "CLOSED", subId: string, message: string]; type R2CNotice = [type: "NOTICE", notice: string]; export type R2CMessage = R2CEvent | R2CEose | R2CClosed | R2CNotice; export type R2CMessageType = R2CMessage[0]; export type R2CSubMessage = R2CEvent | R2CEose; export type R2CSubMessageType = R2CSubMessage[0]; export declare const parseR2CMessage: (rawMsg: string) => R2CMessage | undefined; export declare const validateEvent: (rawEv: Record<string, unknown>) => rawEv is NostrEvent; /** * Type of functions that verify the signature of the Nostr event. */ export type EventVerifier = (event: NostrEvent) => boolean | Promise<boolean>; /** * no-op `EventVerifier` which regards all events have a valid signature. * * @example * // emulating `skipVerification: true` * import { NostrFetcher, noopVerifier } from "nostr-fetch"; * * const fetcher = NostrFetcher.init(); * const events = fetcher.allEventsIterator({ ... }, { ... }, { eventVerifier: noopVerifier }); */ export declare const noopVerifier: EventVerifier; export declare class FilterMatcher { #private; constructor(filters: Filter[]); match(ev: NostrEvent): boolean; } /** * Queries supported NIP numbers of the given relay. */ export declare const querySupportedNips: (relayUrl: string) => Promise<Set<number>>; export declare const generateSubId: () => string; /** * Checks if the NOTICE message seems to have to do with REQs by fetcher. * * Considers following relay implementations: * * - strfry * - nostream * - nostr-rs-relay * - relayer */ export declare const isNoticeForReqError: (notice: string) => boolean; export {}; //# sourceMappingURL=nostr.d.ts.map