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 promiseStore; private list; private detachables; private subscribers; private isDrainInProgress; private isDisposing; private disposeReason; 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; }