import { IDisposable } from "./IDisposable"; import { List } from "./List"; export interface IQueue extends IDisposable { enqueue(item: TItem): void; enqueueFromPromise(promise: Promise): void; dequeue(): Promise; peek(): Promise; length(): number; } export declare class Queue implements IQueue { private privPromiseStore; private privList; private privDetachables; private privSubscribers; private privIsDrainInProgress; private privIsDisposing; private privDisposeReason; constructor(list?: List); enqueue: (item: TItem) => void; enqueueFromPromise: (promise: Promise) => void; dequeue: () => Promise; peek: () => Promise; length: () => number; isDisposed: () => boolean; drainAndDispose(pendingItemProcessor: (pendingItemInQueue: TItem) => void, reason?: string): Promise; dispose(reason?: string): Promise; private drain; private throwIfDispose; }