/** * In-process SSE pub/sub. * * Each subscribed Express response gets its own write loop with: * - 15s heartbeats so proxies don't kill the connection * - lazy back-pressure: if the client falls behind, drop oldest events * - automatic cleanup on close/error/timeout * * Zero deps — uses raw res.write with the text/event-stream protocol. */ import type { ServerResponse } from 'http'; type Frame = { event: string; data: any; id?: number; }; export declare class SseHub { private clients; private nextId; private nextEventId; private listeners; /** * Register a server-side listener that fires on every broadcast, * regardless of whether any clients are connected. Used to mirror * events into in-memory caches (e.g., logStorage) so reloads recover * recent state. */ onBroadcast(fn: (event: string, data: any) => void): void; subscribe(res: ServerResponse, replay?: Frame[]): number; broadcast(event: string, data: any): void; size(): number; closeAll(): void; private send; private flush; private disconnect; } export {};