/// <reference types="node" />
import EventEmitter from 'events';
import PQueue from 'p-queue';
declare type Task<TaskResultType> = (() => PromiseLike<TaskResultType>) | (() => TaskResultType);
export interface QueueOptions {
    concurrency?: number;
}
export declare class Queue extends EventEmitter {
    _queue: PQueue;
    constructor(options?: QueueOptions);
    queueCommand<Result = unknown>(fn: Task<Result>): Promise<Result>;
    isProcessing(): boolean;
    empty(): Promise<void>;
}
export {};
