import { Compare } from "../util/function/Compare";
import { AbstractQueue } from "./AbstractQueue";
import { Element } from "./Collection";
/**
 * An unbounded priority `Queue` based on a priority heap.  This queue orders elements according to an order specified
 * at construction time, which is specified either according to their _natural order_, or according to a
 * `Compare` function type, depending on which constructor is used. A priority queue does not permit _null_ and _undefined_ elements.
 */
export declare class PriorityQueue<T> extends AbstractQueue<T> {
    private _minHeap;
    constructor(compare?: Compare<T>);
    /**
     * @override
     */
    get length(): number;
    /**
     * @override
     */
    get size(): number;
    /**
     * @override
     */
    element(): Element<T> | undefined;
    /**
     * Inserts the specified element into this priority queue
     * @param value
     * @returns
     */
    offer(value: Element<T>): boolean;
    /**
     * @override
     */
    peek(): Element<T> | undefined;
    /**
     * @override
     */
    poll(): Element<T> | undefined;
    /**
     * @override
     */
    removeFirst(): Element<T> | undefined;
    [Symbol.iterator](): IterableIterator<Element<T>>;
    /**
     * @override
     */
    append(value: Element<T>): boolean;
    /**
     * @override
     */
    clear(): void;
    /**
     * @override
     */
    contains(value: Element<T>): boolean;
    /**
     * @override
     */
    toArray(): Element<T>[];
    /**
     * @override
     */
    remove(value: Element<T>): boolean;
    /**
     * @override
     */
    removeAt(index: number): Element<T> | undefined;
    [Symbol.toStringTag]: string;
}
