///
import { EventEmitter } from 'events';
import { IAsyncQueueOptions } from './IAsyncQueueOptions';
import { IQueueProcessor } from './IQueueProcessor';
import { IQueueWorkload } from './IQueueWorkload';
import { QueueJob } from './QueueJob';
import { IAsyncQueueStats } from './IAsyncQueueStats';
import { ILoggerApi } from '../logging/ILoggerApi';
import { IQueue } from './IQueue';
import { QueueJobRef } from './QueueJobRef';
export declare class AsyncWorkerQueue extends EventEmitter implements IQueue {
private _inc;
private _done;
private _error;
private _paused;
private enqueueing;
private options;
private processor;
private runningTasks;
private all;
private worker;
private done;
private active;
private logger;
private concurrent;
private maxConcurrent;
constructor(processor: IQueueProcessor, options?: IAsyncQueueOptions);
getInc(): number;
getLogger(): ILoggerApi;
private cleanup;
private next;
getConcurrent(): number;
speedUp(): void;
speedDown(): void;
status(): IAsyncQueueStats;
private process;
private enqueue;
private drained;
private fireProcess;
get(id: string): Promise> | QueueJob;
set(x: QueueJob): QueueJob | Promise>;
/**
* all processed queue is empty
*/
await(): Promise;
/**
* Creates a new QueueJob for passed entry and return a promise which that the job will be enqueued
*
* @param entry
* @returns {QueueJob}
*/
push(entry: T): QueueJobRef;
running(): number;
doingEnqueueing(): number;
enqueued(): number;
amount(): number;
isPaused(): boolean;
isRunning(): boolean;
isIdle(): boolean;
isOccupied(): boolean;
pause(): Promise;
resume(): void;
shutdown(doAwait?: boolean): Promise;
}