import { EventEmitter } from "events"; import { SignedEvent, TrustedEvent, Filter } from "@welshman/util"; import { AdapterContext, AbstractAdapter } from "./adapter.js"; export declare enum DifferenceEvent { Message = "message", Error = "error", Close = "close" } export type DifferenceEvents = { [DifferenceEvent.Message]: (payload: { have: string[]; need: string[]; }, url: string) => void; [DifferenceEvent.Error]: (error: string, url: string) => void; [DifferenceEvent.Close]: () => void; }; export type DifferenceOptions = { relay: string; filter: Filter; events: SignedEvent[]; signal?: AbortSignal; context?: AdapterContext; }; export declare class Difference extends EventEmitter { readonly options: DifferenceOptions; have: Set; need: Set; _id: string; _unsubscriber: () => void; _adapter: AbstractAdapter; _closed: boolean; constructor(options: DifferenceOptions); close(): void; } export type DiffOptions = { relays: string[]; filters: Filter[]; events: SignedEvent[]; signal?: AbortSignal; context?: AdapterContext; }; export type DiffItem = { relay: string; have: Set; need: Set; }; export declare const diff: ({ relays, filters, ...options }: DiffOptions) => Promise<{ relay: string; have: string[]; need: string[]; }[]>; export type PullOptions = DiffOptions; export declare const pull: ({ context, ...options }: PullOptions) => Promise; export type PushOptions = DiffOptions; export declare const push: ({ context, events, ...options }: PushOptions) => Promise; //# sourceMappingURL=diff.d.ts.map