import { ProfilePointer } from "./pointers.js"; import { Filter } from "./filter.js"; export type SelectOptimalRelaysOptions = { /** Maximum number of connections (relays) to select */ maxConnections: number; /** Cap the number of relays a user can have */ maxRelaysPerUser?: number; /** Custom priority function for calculating relay scores.*/ score?: (relay: string, coverage: number, popularity: number) => number; }; /** Selects the optimal relays for a list of ProfilePointers */ export declare function selectOptimalRelays(users: ProfilePointer[], { maxConnections, maxRelaysPerUser, score }: SelectOptimalRelaysOptions): ProfilePointer[]; /** Sets relays for any user that has 0 relays */ export declare function setFallbackRelays(users: ProfilePointer[], fallbacks: string[]): ProfilePointer[]; /** Removes blacklisted relays from the user's relays */ export declare function removeBlacklistedRelays(users: ProfilePointer[], blacklist: string[]): ProfilePointer[]; /** A map of pubkeys by relay */ export type OutboxMap = Record; /** A map of filters by relay */ export type FilterMap = Record; /** Creates an {@link OutboxMap} for an array of profile points (groups users by relay) */ export declare function groupPubkeysByRelay(pointers: ProfilePointer[]): OutboxMap; /** Alias for {@link groupPubkeysByRelay} */ export declare const createOutboxMap: typeof groupPubkeysByRelay; /** Creates a {@link FilterMap} for an {@link OutboxMap} */ export declare function createFilterMap(outboxMap: OutboxMap, filter: Omit): FilterMap;