import { IDisposable } from "./IDisposable"; import { List } from "./List"; import { Promise } from "./Promise"; 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) => void; private drain; private throwIfDispose; }