import { BaseQueue as BQ, Queue as Q, PriorityQueue as PQ, PriorityQueueNode as PQE, A, N, B } from '../typings'; declare class BaseQueue implements BQ { items: A[]; readonly capacity: N; constructor(capacity?: N); getHead(): any; getTail(): any; size(): number; isEmpty(): boolean; isFull(): boolean; clear(): void; } declare class Queue extends BaseQueue implements Q { items: T[]; constructor(capacity?: N); enqueue(p: T): number | Error; dequeue(): T; toArray(): T[]; reverse(): this; peek(): T; } declare class PriorityQueue extends BaseQueue implements PQ { items: PQE[]; defaultPriority: N; constructor(capacity?: N, defaultPriority?: N); highestPriority(): number; lowestPriority(): number; protected createNode(v: T, p?: N, position?: N): { value: T; position: number; priority: number; }; enqueue(element: T, priority?: N, positionFlag?: B, needSetPosition?: B): number | Error; dequeue(): T; toArray(): T[]; protected _getHead(): PQE; protected _getTail(): PQE; getHead(): T; getTail(): T; size(): number; clear(): void; setPosition(from?: N): void; isValidRange(p: N): boolean; updatePriorityAt(p: N, priority: N, positionFlag?: B): boolean; updateDimension(v: N): void; peek(): T; } export { BaseQueue, Queue, PriorityQueue };