import { AbortOptions, MaybePromise } from '@mithic/commons'; import { Queue } from './queue.js'; import { Stack } from './stack.js'; /** A double-ended queue. */ export interface Deque extends Queue, Stack { /** Adds an element to the front of this {@link Deque}. */ unshift(item: T, options?: AbortOptions): MaybePromise; } /** A {@link Deque} that supports peeking the front/back elements. */ export interface PeekableDeque extends Deque { front(options?: AbortOptions): MaybePromise; back(options?: AbortOptions): MaybePromise; } /** A {@link Deque} with synchronous operations. */ export interface SyncDeque extends Deque { front?(): T | undefined; back?(): T | undefined; push(item: T): void; pop(): T | undefined; unshift(item: T): void; shift(): T | undefined; } //# sourceMappingURL=deque.d.ts.map