import { Throttleable } from "../..";
/**
 * Offers the necessary functionality to throttle
 * highly concurent operations.
 */
declare class Throttler {
    private _tasksQueue;
    private _concurrencyCounter;
    private _concurrencyLimit;
    protected get concurrencyLimit(): number;
    protected get concurrencyCounter(): number;
    protected get tasksQueue(): Throttleable<any>[];
    constructor(concurrencyLimit?: number);
    enqueueTask(task: Throttleable<any>): void;
    private handleTaskEnqueued;
    private executeNextTaskIfPossible;
    private executeNextTask;
    private tasksQueueNotEmpty;
    private dequeueTask;
    private handleTaskFinished;
    private incrementConcurrencyCounter;
    private decrementConcurrencyCounter;
    private concurrencyLimitNotReached;
}
export { Throttler };
