import { type ManagedBashJob } from "../tools/bash-async-jobs.js";
import type { AsyncJobDeliveryCallback, AsyncJobDeliveryHandler } from "./types.js";
interface AsyncJobManagerOptions {
    onJobComplete: AsyncJobDeliveryCallback;
    maxRunningJobs?: number;
    maxRetainedJobs?: number;
    completedJobTtlMs?: number;
}
export declare class AsyncJobManager {
    #private;
    static instance(): AsyncJobManager | undefined;
    static setInstance(value: AsyncJobManager | undefined): void;
    static resetForTests(): void;
    constructor(options: AsyncJobManagerOptions);
    get disposed(): boolean;
    get atCapacity(): boolean;
    registerSession(): symbol;
    releaseSession(sessionId: symbol): void;
    isSessionDisposed(sessionId: symbol): boolean;
    registerBashJob(job: ManagedBashJob, onComplete?: AsyncJobDeliveryHandler, sessionId?: symbol): void;
    completeBashJob(job: ManagedBashJob): void;
    acknowledgeDeliveries(jobIds: readonly string[]): void;
    isDeliverySuppressed(jobId: string): boolean;
    deliveryState(): {
        queued: number;
        delivering: boolean;
        pendingJobIds: string[];
    };
    retentionState(): {
        jobs: number;
        suppressions: number;
        handlers: number;
        queued: number;
        sessions: number;
    };
    dispose(): void;
}
export {};
//# sourceMappingURL=job-manager.d.ts.map