import { IDisposable } from "./IDisposable.js"; import { List } from "./List.js"; 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; }