import { Heap } from "heap-js";
import { ChordAngle, Meters, Point } from "../types.js";
import { Id } from "../_generated/dataModel.js";
import { S2Bindings } from "./s2Bindings.js";
import { QueryCtx } from "../_generated/server.js";
import { Logger } from "./logging.js";
export declare class ClosestPointQuery {
    private s2;
    private logger;
    private point;
    private maxDistance;
    private maxResults;
    private minLevel;
    private maxLevel;
    private levelMod;
    toProcess: Heap<CellCandidate>;
    results: Heap<Result>;
    maxDistanceChordAngle?: ChordAngle;
    constructor(s2: S2Bindings, logger: Logger, point: Point, maxDistance: Meters | undefined, maxResults: number, minLevel: number, maxLevel: number, levelMod: number);
    execute(ctx: QueryCtx): Promise<{
        key: string;
        coordinates: {
            latitude: number;
            longitude: number;
        };
        distance: number;
    }[]>;
    addCandidate(cellID: bigint, level: number, distance: ChordAngle): void;
    popCandidate(): CellCandidate | null;
    addResult(pointID: Id<"points">, point: Point): void;
    distanceThreshold(): ChordAngle | undefined;
}
type CellCandidate = {
    cellID: bigint;
    level: number;
    distance: ChordAngle;
};
type Result = {
    pointID: Id<"points">;
    distance: ChordAngle;
};
export {};
//# sourceMappingURL=pointQuery.d.ts.map