import type { LspTransport } from "../../core/lsp.js"; /** The slice of a spawned child process the transport uses (so a test can drive a fake duplex — no real spawn). */ export interface LspChildProcess { stdin: { write(data: Buffer): void; on(event: "error", cb: (err: unknown) => void): void; }; stdout: { on(event: "data", cb: (chunk: Buffer) => void): void; }; on(event: "exit" | "error", cb: (arg?: unknown) => void): void; kill(signal?: string): void; /** Present on a real child process; used on win32 (shell:true shim) to tree-kill on close. */ pid?: number; } export declare class StdioLspTransport implements LspTransport { private readonly child; private readonly requestTimeoutMs; private nextId; private readonly pending; private isClosed; private readonly decode; /** design/121: server→client notification subscribers (publishDiagnostics, …). Empty = pre-121 behavior. */ private readonly notificationHandlers; constructor(child: LspChildProcess, requestTimeoutMs?: number); /** Manager-visible liveness: evict + reopen instead of reusing a dead server (crashed / killed). */ get closed(): boolean; private onMessage; /** design/121 {@link LspTransport.onNotification}: subscribe to server notifications; returns unsubscribe. */ onNotification(handler: (method: string, params: unknown) => void): () => void; private failAll; private send; request(method: string, params: unknown, signal?: AbortSignal): Promise; notify(method: string, params: unknown): void; close(): Promise; } //# sourceMappingURL=stdio-lsp-transport.d.ts.map