import { Comparator } from "../util/Comparator";
import { Cloneable } from "../util/interface/Cloneable";
import { AbstractSet } from "./AbstractSet";
import { Collection } from "./Collection";
import { NavigableSet } from "./NavigableSet";
/**
 * A `NavigableSet` implementation based on a `TreeMap`. The elements are ordered using their natural ordering, or
 * by a `Comparator` provided at set creation time, depending on which constructor is used.
 */
export declare class TreeSet<K> extends AbstractSet<K> implements NavigableSet<K>, Cloneable {
    private tMap;
    constructor(comparator?: Comparator<K>);
    /**
     * @override
     */
    get size(): number;
    /**
     * Gets a key comparator
     */
    get comparator(): Comparator<K>;
    /**
     * @override
     */
    append(key: K): boolean;
    /**
     * @override
     */
    appendAll<E extends K>(collection: Collection<E>): boolean;
    /**
     * @override
     */
    clone(): TreeSet<K>;
    /**
     * @override
     */
    clear(): void;
    /**
     * @override
     */
    contains(key: K): boolean;
    /**
     * Deletes the key/value pair from the collection. This method is the member of the JavaScript's `Set` interface.
     * @param key The key value to remove mapping
     * @returns _true_ if the mapping for the  `key` was deleted, _false_ otherwise
     * @see {@link remove}
     */
    delete(key: K): boolean;
    /**
     * @override
     */
    entries(): IterableIterator<[K, K]>;
    /**
     * @override
     */
    forEach(callbackfn: (value: K, value2: K, set: Set<K>) => void, thisArg?: any): void;
    /**
     * @override
     */
    has(key: K): boolean;
    /**
     * @override
     */
    keys(): IterableIterator<K>;
    /**
     * @override
     */
    values(): IterableIterator<K>;
    /**
     * @override
     * @see {@link delete}
     */
    remove(key: K): boolean;
    /**
     * @override
     */
    [Symbol.toStringTag]: string;
    /**
     * @override
     */
    [Symbol.iterator](): IterableIterator<K>;
    /**
     * @override
     */
    first(): K | undefined;
    /**
     * @override
     */
    last(): K | undefined;
    /**
     * @override
     */
    ceiling(key: K): K | undefined;
    /**
     * @override
     */
    floor(key: K): K | undefined;
    /**
     * @override
     */
    higher(key: K): K | undefined;
    /**
     * @override
     */
    lower(key: K): K | undefined;
    /**
     * @override
     */
    pollFirst(): K | undefined;
    /**
     * @override
     */
    pollLast(): K | undefined;
    /**
     * @override
     */
    toArray(): K[];
}
