declare type QueueItem = () => void; declare type IdleCallback = () => void | Promise; declare type AddCallback = () => void | Promise; interface Options { concurrency?: number; } declare class PromiseQueue { options: Required; running: number; queue: QueueItem[]; idleCallbacks: IdleCallback[]; constructor({ concurrency }?: Options); clear(): void; onIdle(callback: IdleCallback): () => void; waitTillIdle(): Promise; add(callback: AddCallback): Promise; private processNext; } export { PromiseQueue };