export interface ManagedBashJob {
    jobId: string;
    command: string;
    cwd: string;
    status: "running" | "completed" | "failed";
    output: string;
    fullOutputPath?: string;
    exitCode?: number | null;
    error?: string;
    startedAt: number;
    endedAt?: number;
    timeoutSeconds?: number;
    requestedTimeoutSeconds?: number;
    abortController?: AbortController;
}
export declare const MAX_MANAGED_BASH_JOBS = 100;
export declare const COMPLETED_JOB_TTL_MS: number;
export declare function formatAsyncJobError(error: unknown): string;
export declare function createManagedBashJob(command: string, cwd: string, timeoutSeconds?: number, requestedTimeoutSeconds?: number): ManagedBashJob;
/**
 * Remove a managed job that never actually started executing (for example when
 * async-manager registration fails after the map insert). Without this, the
 * entry would stay "running" forever: TTL cleanup only evicts settled jobs, so
 * the zombie would linger until the max-jobs overflow forcibly removed it.
 */
export declare function discardManagedBashJob(jobId: string): void;
export declare function listManagedBashJobIds(): string[];
export declare function getManagedBashJob(jobId: string): ManagedBashJob | undefined;
export declare function abortManagedBashJob(jobId: string): ManagedBashJob | undefined;
//# sourceMappingURL=bash-async-jobs.d.ts.map