import { IQueue } from "./queue.ts";
/**
 * In-memory implementation of IQueue<T>
 *
 * InMemoryQueue provides a simple, non-persistent queue implementation
 * with support for blocking dequeue operations. When the queue is empty,
 * dequeue operations will block until an item is available or the queue is closed.
 *
 * @template T - The type of items stored in this queue
 */
declare class InMemoryQueue<T> implements IQueue<T> {
    /** Internal array storing queue items */
    private items;
    /** Whether the queue has been closed */
    private _isClosed;
    /** Pending promises for blocked dequeue operations */
    private pendingDequeuePromises;
    dequeue(): Promise<T | undefined>;
    enqueue(item: T): Promise<void>;
    /**
     * Resolves pending dequeue promises with available items
     * @private
     */
    private resolvePendingPromises;
    size(): Promise<number>;
    isEmpty(): Promise<boolean>;
    peek(): Promise<T | undefined>;
    /**
     * Closes the queue and resolves any pending promises with undefined
     * Once closed, the queue cannot be used for further operations
     */
    close(): Promise<void>;
}
export { InMemoryQueue };
