import { type ChildProcess } from 'node:child_process'; export declare class SupervisorUnavailableError extends Error { readonly resolvedPath: string; readonly reason: "supervisor_unavailable"; constructor(resolvedPath: string, options?: { cause?: unknown; }); } export declare function resolveSupervisorBinary(explicitPath?: string, env?: NodeJS.ProcessEnv): string; export type SupervisorLine = { v: 1; type: 'started'; pid: number; pgid: number; ts: string; } | { v: 1; type: 'exited'; code: number | null; signal: string | null; ts: string; } | { v: 1; type: 'quiescent'; descendants: 0; ts: string; } | { v: 1; type: 'error'; reason: 'unsupported_platform' | 'containment_failed'; ts: string; }; export type ExitReason = 'ok' | 'child_failure' | 'deadline' | 'cancelled' | 'containment_failure' | 'trajectory_write_failed'; export type SupervisorContainmentDetail = 'unsupported_platform' | 'containment_failed' | 'deadline_backstop_descendants_may_survive' | 'missing_quiescent' | 'spawn_failed' | 'signal_failed'; export declare class SupervisorProtocolError extends Error { readonly reason: "containment_failure"; readonly detail: "protocol_violation"; constructor(message: string, options?: { cause?: unknown; }); } export declare class SupervisorContainmentError extends Error { readonly detail: SupervisorContainmentDetail; readonly reason: "containment_failure"; constructor(detail: SupervisorContainmentDetail, options?: { cause?: unknown; }); } export interface SupervisorSession { readonly process: ChildProcess; started: Promise<{ pid: number; pgid: number; }>; exited: Promise<{ code: number | null; signal: string | null; }>; quiescent: Promise; closed: Promise<{ code: number | null; signal: NodeJS.Signals | null; }>; cancel(reason: 'cancel' | 'deadline'): void; dispose(): Promise; } export declare function parseSupervisorLine(line: string): SupervisorLine; export declare function exitCodeFor(reason: ExitReason, childCode?: number): number; export declare function attachSupervisor(options: { binary: string; args: string[]; graceMs?: number; deadlineMs?: number; controlFd?: number; cwd?: string; env?: NodeJS.ProcessEnv; stdio?: 'inherit' | 'pipe' | ['ignore', 'pipe', 'pipe']; }): SupervisorSession;