import type { ChildProcess } from "node:child_process";
export type ManagedProcessTerminationReason = "exit" | "abort" | "deadline" | "inactivity" | "spawn_error";
export interface ManagedChildProcessOutcome {
    reason: ManagedProcessTerminationReason;
    exitCode: number | null;
    signal: NodeJS.Signals | null;
    stderr: string;
    durationMs: number;
    error?: Error;
}
export interface ManagedChildProcessOptions {
    signal?: AbortSignal;
    deadlineAtMs?: number;
    inactivityTimeoutMs?: number;
    terminationGraceMs?: number;
    stderrMaxBytes?: number;
    onStderr?: (chunk: string) => void;
    now?: () => number;
}
/** Owns cancellation, escalation, stderr and reaping for one child process. */
export declare class ManagedChildProcess {
    readonly child: ChildProcess;
    private readonly options;
    private readonly startedAtMs;
    private readonly now;
    private readonly outcomePromise;
    private resolveOutcome;
    private requestedReason;
    private stderrTail;
    private spawned;
    private settled;
    private deadlineTimer;
    private inactivityTimer;
    private escalationTimer;
    constructor(child: ChildProcess, options?: ManagedChildProcessOptions);
    wait(): Promise<ManagedChildProcessOutcome>;
    get isSettled(): boolean;
    markActivity(): void;
    private readonly onStderr;
    private readonly onSpawn;
    private readonly onClose;
    private readonly onError;
    private installAbort;
    private readonly onAbort;
    private installDeadline;
    private requestTermination;
    private settle;
    private clearTimers;
}
//# sourceMappingURL=managedChildProcess.d.ts.map