import { EventEmitter } from 'node:events'; import type { Event } from './types.js'; interface Dispatcher { apply: (type: string, event: Event, baseline: unknown) => Promise; } interface ActorAdapterEmitter { fetchByLastEventId: () => Promise; fetchByLastEventDate: () => Promise; } interface EventAdapterEmitter { fetchStream: (type: string, sinceValue: unknown) => EventEmitter; } interface StreamOptions { sinceEventId?: unknown; sinceDate?: unknown; eventTypes?: string[]; actorTypes: string[]; } declare function checkQueues(queues: Record, count: number, depth: number): boolean; declare function checkSetIntersection(a: string[], b: string[]): boolean; declare function chooseEvents(queues: Record): Event[]; declare function depthCheck(queues: Record, depth: number): boolean; declare function findTypeById(queues: Record, id: string): string | undefined; declare function getIdSeriesFromIndex(queues: Record, index: number): string[]; declare function mergeAndSort(queues: Record): Event[]; declare function removeEmpty(emptied: Record, queues: Record, cb?: () => void): void; export default function (manager: unknown, dispatcher: Dispatcher, actorAdapter: ActorAdapterEmitter, eventAdapter: EventAdapterEmitter): { checkQueues: typeof checkQueues; checkSetIntersection: typeof checkSetIntersection; chooseEvents: typeof chooseEvents; depthCheck: typeof depthCheck; findTypeById: typeof findTypeById; getActorStream: (actorType: string, _actorId: unknown, options: StreamOptions) => Promise>; getEventStream: (options: StreamOptions) => EventEmitter<[never]>; getIdSeriesFromIndex: typeof getIdSeriesFromIndex; mergeAndSort: typeof mergeAndSort; removeEmpty: typeof removeEmpty; }; export {};