import { Emitter } from "@welshman/lib"; import { Filter, TrustedEvent, HashedEvent } from "@welshman/util"; export declare const LOCAL_RELAY_URL = "local://welshman.relay/"; export declare let repositorySingleton: Repository; export type RepositoryUpdate = { added: TrustedEvent[]; removed: Set; }; export declare class Repository extends Emitter { eventsById: Map; eventsByWrap: Map; eventsByAddress: Map; eventsByTag: Map; eventsByDay: Map; eventsByAuthor: Map; eventsByKind: Map; deletes: Map; expired: Map; static get(): Repository; constructor(); dump: () => E[]; load: (events: E[], chunkSize?: number) => void; getEvent: (idOrAddress: string) => E | undefined; hasEvent: (event: E) => boolean | undefined; removeEvent: (idOrAddress: string) => void; query: (filters: Filter[], { includeDeleted, includeExpired, shouldSort }?: { includeDeleted?: boolean | undefined; includeExpired?: boolean | undefined; shouldSort?: boolean | undefined; }) => E[]; publish: (event: E, { shouldNotify }?: { shouldNotify?: boolean | undefined; }) => boolean; isDeletedByAddress: (event: E) => boolean; isDeletedById: (event: E) => boolean; isDeleted: (event: E) => boolean; isExpired: (event: E) => boolean; _sortEvents: (shouldSort: boolean, events: E[]) => E[]; _updateIndex: (m: Map, k: K, add?: E, remove?: E) => void; _getEvents: (ids: Iterable) => E[]; _applyIdsFilter: (filter: Filter) => { filter: Filter; ids: Set; } | undefined; _applyAuthorsFilter: (filter: Filter) => { filter: Filter; ids: Set; } | undefined; _applyTagsFilter: (filter: Filter) => { filter: Filter; ids: Set; } | undefined; _applyKindsFilter: (filter: Filter) => { filter: Filter; ids: Set; } | undefined; _applyDaysFilter: (filter: Filter) => { filter: Filter; ids: Set; } | undefined; _applyAnyFilter: (filter: Filter) => { filter: Filter; ids: Set; } | undefined; } //# sourceMappingURL=repository.d.ts.map