import type { ResolvedCliConfig } from "./config.js"; export interface SSEEvent { readonly id?: string; readonly event?: string; readonly data: T; readonly retry?: number; } export interface SSEOptions { readonly path: string; readonly query?: Record; readonly cursor?: string; readonly signal?: AbortSignal; readonly initialRetryDelayMs?: number; readonly maxRetryDelayMs?: number; /** Сколько раз переподключаться при обрыве (0 — не переподключать). По умолчанию бесконечно. */ readonly maxReconnects?: number; /** Дедуп ключ — если указан, подписка с тем же ключом будет переиспользована. */ readonly dedupKey?: string; } export interface SSEHandlers { readonly onOpen?: () => void; readonly onEvent: (event: SSEEvent) => void; readonly onError?: (error: Error) => void; readonly onRetry?: (attempt: number, delayMs: number) => void; readonly onClose?: () => void; } export interface SSESubscription { close(): void; } export declare class SSEClient { private readonly config; private readonly subscriptions; private readonly refCounts; constructor(config: ResolvedCliConfig); subscribe(options: SSEOptions, handlers: SSEHandlers): SSESubscription; }