interface OnProgressData {
    queueLength: number;
    countRunning: number;
}
type ResolveValue = any;
interface ThrottlerArgs {
    maxConcurrent?: number;
    delayMs?: number;
    onProgress?: (data: OnProgressData) => void;
    onResult?: (result: ResolveValue) => void;
    onError?: (err: ResolveValue) => void;
    onEnd?: (results: ResolveValue[], errors: ResolveValue[]) => void;
}
export interface IThrottler {
    setDelayMs(delayMs: number): void;
    add: (fn: () => Promise<ResolveValue>) => void;
}
export default class Throttler implements IThrottler {
    private readonly decrementTimeouts;
    private readonly queue;
    private readonly results;
    private readonly errors;
    private maxConcurrent;
    private delayMs;
    onProgress?: (data: OnProgressData) => void;
    onResult?: (result: ResolveValue) => void;
    onError?: (err: ResolveValue) => void;
    onEnd?: (results: ResolveValue[], errors: ResolveValue[]) => void;
    constructor(args?: ThrottlerArgs);
    setDelayMs(delayMs: number): void;
    add(fn: () => Promise<ResolveValue>): void;
    private run;
}
export {};
