nostr-fetch
Version:
A utility library that allows JS/TS apps to effortlessly fetch past events from Nostr relays
56 lines • 2.02 kB
TypeScript
import type { EventVerifier, Filter, NostrEvent } from "@nostr-fetch/kernel/nostr";
import { type WSCloseEvent, type WebSocketMinCtor } from "@nostr-fetch/kernel/webSocket";
type Callback<E> = E extends void ? () => void : (ev: E) => void;
export interface Relay {
url: string;
wsReadyState: number;
connect(): Promise<Relay>;
close(): void;
prepareSub(filters: Filter[], options: SubscriptionOptions): Subscription;
on<E extends RelayEventTypes>(type: E, cb: RelayEventCbTypes[E]): void;
off<E extends RelayEventTypes>(type: E, cb: RelayEventCbTypes[E]): void;
}
export type RelayOptions = {
connectTimeoutMs: number;
webSocketConstructor: WebSocketMinCtor;
};
export declare const initRelay: (relayUrl: string, options: RelayOptions) => Relay;
export type RelayConnectCb = Callback<void>;
export type RelayDisconnectCb = Callback<WSCloseEvent | undefined>;
export type RelayNoticeCb = Callback<string>;
export type RelayErrorCb = Callback<void>;
export type RelayEventCbTypes = {
connect: RelayConnectCb;
disconnect: RelayDisconnectCb;
notice: RelayNoticeCb;
error: RelayErrorCb;
};
export type RelayEventTypes = keyof RelayEventCbTypes;
type EoseEventPayload = {
aborted: boolean;
};
export type SubEventCb = Callback<NostrEvent>;
export type SubEoseCb = Callback<EoseEventPayload>;
export type SubClosedCb = Callback<string>;
export type SubEventCbTypes = {
event: SubEventCb;
eose: SubEoseCb;
closed: SubClosedCb;
};
export type SubEventTypes = keyof SubEventCbTypes;
export interface Subscription {
subId: string;
req(): void;
close(): void;
on<E extends SubEventTypes>(type: E, cb: SubEventCbTypes[E]): void;
off<E extends SubEventTypes>(type: E, cb: SubEventCbTypes[E]): void;
}
export interface SubscriptionOptions {
subId?: string;
eventVerifier: EventVerifier;
skipVerification: boolean;
skipFilterMatching: boolean;
abortSubBeforeEoseTimeoutMs: number;
}
export {};
//# sourceMappingURL=relay.d.ts.map