import type { DshRemoteHistoryEntry } from './dsh-event-contract.js'; export declare const LIVE_BATCH_ITEMS = 50; export declare const LIVE_BATCH_BYTES: number; export interface LiveEventBatch { sessionRef: string; entries: DshRemoteHistoryEntry[]; bytes: number; issuedAt: number; queueWaitMs: number; replayed: boolean; } /** One consumer forms batches when it can send; producer callbacks never wait on ACKs. */ export declare class DshLiveEventBatcher { private readonly options; private readonly sessions; private bufferedBytes; private bufferedEntries; private flight; private timer; private timerDueAt; private closed; private readonly now; constructor(options: { publish(batch: LiveEventBatch): Promise; replay(sessionRef: string, afterSeq: number, throughSeq: number): Promise<{ entries: DshRemoteHistoryEntry[]; throughSeq: number; }>; onError(error: unknown): void; now?: () => number; maxBufferEntries?: number; maxBufferBytes?: number; }); enqueue(sessionRef: string, entry: DshRemoteHistoryEntry, issuedAt: number): void; private schedule; private drain; private consume; flush(): Promise; close(): void; stats(): { bufferedBytes: number; bufferedEntries: number; pendingSessions: number; }; } //# sourceMappingURL=live-event-batcher.d.ts.map