import type { ICopy, IEmpty, Pair } from "@thi.ng/api";
import type { DistanceFn, ReadonlyVec } from "@thi.ng/vectors";
import type { IRegionQuery, ISpatialSet } from "./api.js";
import { NdQuadtreeMap } from "./nd-quadtree-map.js";
export declare class NdQuadtreeSet<K extends ReadonlyVec> implements ICopy<NdQuadtreeSet<K>>, IEmpty<NdQuadtreeSet<K>>, IRegionQuery<K, K, number>, ISpatialSet<K> {
    /**
     * Returns a new point-based `NdQuadtreeSet` for nD keys in given
     * region defined by `min` / `max` coordinates. The dimensionality
     * of the tree is implicitly defined by the provided coordinates.
     * Only points within that region can be indexed.
     *
     * @remarks
     * Due to exponentially growing lookup tables, currently only
     * supports up to 16 dimensions.
     */
    static fromMinMax<K extends ReadonlyVec>(min: ReadonlyVec, max: ReadonlyVec): NdQuadtreeSet<K>;
    protected tree: NdQuadtreeMap<K, K>;
    protected _size: number;
    constructor(pos: ReadonlyVec, ext: ReadonlyVec, keys?: Iterable<K>, distanceFn?: DistanceFn);
    [Symbol.iterator](): IterableIterator<K>;
    keys(): IterableIterator<K>;
    values(): IterableIterator<K>;
    get size(): number;
    copy(): NdQuadtreeSet<K>;
    clear(): void;
    empty(): NdQuadtreeSet<K>;
    add(key: K, eps?: number): boolean;
    into(keys: Iterable<K>, eps?: number): boolean;
    remove(key: K): boolean;
    has(key: K, eps?: number): boolean;
    get(key: K, eps?: number): K | undefined;
    query(q: K, maxDist: number, limit?: number, acc?: Pair<K, K>[]): Pair<K, K>[];
    queryKeys(q: K, maxDist: number, limit: number, acc?: K[]): K[];
    queryValues(q: K, maxDist: number, limit: number, acc?: K[]): K[];
}
//# sourceMappingURL=nd-quadtree-set.d.ts.map