import type { IClear, ICopy, IEmpty, IInto, ILength, Pair, Predicate, Predicate2 } from "@thi.ng/api";
import type { PriorityQueueOpts } from "./api.js";
import { Heap } from "./heap.js";
/**
 * Returns a new {@link PriorityQueue} instance, a thin veneer wrapper for a
 * backing {@link Heap} and exposing a PQ-like API for arbitrary values, with
 * configurable value equality handling and priority ordering.
 *
 * @remarks
 *
 * - By default higher priority values mean higher priority.
 * - Already queued items can be reprioritized or removed.
 * - The queue head can be inspected via `peek()` and/or `peekPriority()`
 *   without removing it from the queue.
 * - Multiple items can be added at once via `into()`
 * - The queue is iterable (in priority order, according to given comparator)
 */
export declare const defPriorityQueue: <T>(values?: Iterable<Pair<number, T>> | null, opts?: Partial<PriorityQueueOpts<T>>) => PriorityQueue<T>;
export declare class PriorityQueue<T> implements Iterable<Pair<number, T>>, IClear, ICopy<PriorityQueue<T>>, IEmpty<PriorityQueue<T>>, IInto<Pair<number, T>, PriorityQueue<T>>, ILength {
    protected opts: Partial<PriorityQueueOpts<T>>;
    heap: Heap<Pair<number, T>>;
    equiv: Predicate2<T>;
    constructor(values?: Iterable<Pair<number, T>> | null, opts?: Partial<PriorityQueueOpts<T>>);
    get length(): number;
    [Symbol.iterator](): Generator<Pair<number, T>, void, unknown>;
    clear(): void;
    copy(): PriorityQueue<T>;
    empty(): PriorityQueue<T>;
    push(val: T, priority: number): this;
    pushPop(val: T, priority: number): import("@thi.ng/api").Maybe<Pair<number, T>>;
    pop(): T | undefined;
    peek(): T | undefined;
    peekPriority(): number | undefined;
    remove(val: T): boolean;
    find(val: T): Pair<number, T> | undefined;
    findWith(fn: Predicate<Pair<number, T>>): Pair<number, T> | undefined;
    has(val: T): boolean;
    into(values: Iterable<Pair<number, T>>): this;
    reprioritize(val: T, priority: number): boolean;
}
//# sourceMappingURL=priority-queue.d.ts.map