import type { OpenCodeClient, OpenCodeEvent } from './client.js'; type Listener = (event: OpenCodeEvent) => void; /** The session an event belongs to. Form events carry it inside the form. */ export declare function sessionOf(event: OpenCodeEvent): string | undefined; /** * One event subscription per OpenCode server, fanned out to the turns listening on its sessions. A * server's stream closes when its last listener leaves; a stream that drops reconnects with backoff. */ export declare class OpenCodeEventHub { private readonly streams; /** Listen to one session's events on a server. Resolves once the server's stream is open. */ listen(serverKey: string, client: OpenCodeClient, sessionId: string, listener: Listener): Promise<() => void>; close(): void; /** * The server's stream, opened on `client`. A different client for a known key (the host replaced * the connection, e.g. a new sandbox under the same key) moves every listener to a stream on the * new one: the old connection may be dead, and its sessions would never hear back. */ private streamFor; private pump; } export {}; //# sourceMappingURL=event-hub.d.ts.map