import type { SessionEvent } from "./session-types.js"; /** HTTP poll result. `done: true` ends active waits and stops websocket reconnect. */ export type FetchEventsResult = SessionEvent[] | { events: SessionEvent[]; done?: boolean; }; export type TunnelWatcher = { getLastSeq(): number; getEventsSince(sinceSeq: number): SessionEvent[]; waitForEvents(input: { sinceSeq?: number; timeoutMs?: number; }): Promise; close(): void; }; /** Merge timeline events by id, sorted by seq (HTTP + websocket sources). */ export declare function mergeTimelineEvents(...sources: SessionEvent[][]): SessionEvent[]; export declare function startTunnelWatcher(input: { wsUrl: string; onError?: (message: string) => void; /** Optional HTTP snapshot poll used as a backup while waiting (mirrors web UI). */ fetchEvents?: () => Promise; pollIntervalMs?: number; }): TunnelWatcher;