import { ServerProcessRegistry, type ProcessIdentity } from "./processes.js"; import type { RunnerOutcome } from "./state.js"; export type SupervisedRunnerResult = { outcome: RunnerOutcome; exitCode: number | null; signal: NodeJS.Signals | null; diagnostic?: string; }; type ChildRunnerSupervisorOptions = { label: string; registry: ServerProcessRegistry; onMessage: (message: Message) => Promise; parseMessage: (frame: Buffer) => Message; encodeResponse: (response: Response) => Buffer; isReady: (message: Message) => boolean; isTerminal: (message: Message) => boolean; startupTimeoutMs?: number; maxMessageBytes?: number; oversizedMessage?: string; onSpawn?: (identity: ProcessIdentity) => void; onDiagnostic?: (message: string) => void; }; type ChildRunnerStartOptions = { args: string[]; cwd: string; env: NodeJS.ProcessEnv; }; /** Shared supervision, framing, diagnostics, and process-group shutdown for server runners. */ export declare class ChildRunnerSupervisor { private readonly options; private child; private identity; private readonly decoder; private diagnostic; private terminalMessage; private stopping; private processing; private readyResolve; private readyReject; private exitResolve; private readonly readyPromise; private readonly exitPromise; constructor(options: ChildRunnerSupervisorOptions); start(options: ChildRunnerStartOptions): Promise; wait(): Promise; stop(outcome?: RunnerOutcome): Promise; private onStdout; private onStderr; private appendDiagnostic; private onExit; } export {};