/** * In-memory event bus for the local UI. * * Tiny synchronous fan-out: publishers (route adapters, orchestrator hook, * update observer) call `publish`; SSE connections subscribe and receive every * event until they unsubscribe. Listener errors are caught so one broken * client cannot break others. */ import type { LocalUiEvent } from './types.js'; export type LocalUiEventListener = (event: LocalUiEvent) => void; export declare class EventBus { private readonly listeners; publish(event: LocalUiEvent): void; subscribe(listener: LocalUiEventListener): () => void; /** Test helper. */ listenerCount(): number; }