import { Logger } from "winston";
export type PromiseSupplier<T> = () => Promise<T>;
export interface QueueOptions {
    maxNumberOfConcurrentPromises?: number;
    unitOfTimeMillis?: number;
    maxThroughputPerUnitTime?: number;
}
export declare class MyConcurrentPromiseQueue<T> {
    private readonly maxNumberOfConcurrentPromises;
    private readonly unitOfTimeMillis;
    private readonly maxThroughputPerUnitTime;
    private promisesToExecute;
    private promisesBeingExecuted;
    private promiseExecutedCallbacks;
    private promiseCompletedTimesLog;
    protected logger_: Logger;
    constructor(options?: QueueOptions);
    numberOfQueuedPromises(): number;
    numberOfExecutingPromises(): number;
    addPromise(promiseSupplier: PromiseSupplier<T>): Promise<T | null>;
    private execute;
    private canExecuteMorePromises;
    private onPromiseFulfilled;
    private onPromiseRejected;
    private finalizePromise;
    turnOffLogger(): void;
}
