import { type NostrEvent, type ReqFilter, type SystemInterface } from ".."; import type { FlatReqFilter } from "../query-optimizer"; import { BaseRequestRouter } from "../request-router"; import { type AuthorsRelaysCache, type EventFetcher, type PickedRelays } from "."; /** * Simple outbox model using most popular relays */ export declare class OutboxModel extends BaseRequestRouter { #private; constructor(relays: AuthorsRelaysCache, fetcher: EventFetcher); static fromSystem(system: SystemInterface): OutboxModel; /** * Pick top relays for each user * @param authors The authors whos relays will be picked * @param pickN Number of relays to pick per pubkey * @param type Read/Write relays * @returns */ pickTopRelays(authors: Array, pickN: number, type: "write" | "read"): Array; /** * Split a request filter by authors * @param filter Filter to split * @param pickN Number of relays to pick per author * @returns */ forRequest(filter: ReqFilter, pickN?: number): Array; /** * Split a flat request filter by authors * @param filter Filter to split * @param pickN Number of relays to pick per author * @returns */ forFlatRequest(input: Array, pickN?: number): Array; /** * Pick relay inboxs for replies * @param ev The reply event to send * @param system Nostr system interface * @param pickN Number of relays to pick per recipient * @returns */ forReply(ev: NostrEvent, pickN?: number): Promise; forReplyTo(pk: string, pickN?: number | undefined): Promise; /** * Update relay cache with latest relay lists * @param authors The authors to update relay lists for */ updateRelayLists(authors: Array): Promise; } //# sourceMappingURL=outbox-model.d.ts.map