import { requestIdle as defaultRequestIdle } from './request-idle.ts';
export declare class ProcessScheduler {
    #private;
    /**
     * Supports scheduling a `process` to be run with certain constraints.
     *  - Process runs are never concurrent.
     *  - Multiple calls to schedule will be fulfilled by a single process
     *    run started after the call to schedule.  A call is never fulfilled by an
     *    already running process run.  This can be thought of as debouncing.
     *  - Process runs are throttled so that the process runs at most once every
     *    `throttleMs`.
     *  - Process runs try to run during an idle period, but will delay at most
     *    `idleTimeoutMs`.
     *  - Scheduled runs which have not completed when `abortSignal` is aborted
     *    will reject with an `AbortError`.
     */
    constructor(process: () => Promise<void>, idleTimeoutMs: number, throttleMs: number, abortSignal: AbortSignal, requestIdle?: typeof defaultRequestIdle);
    schedule(): Promise<void>;
}
//# sourceMappingURL=process-scheduler.d.ts.map