export interface HitBounds { xMin: number; xMax: number; yMin: number; yMax: number; } /** * Wraps SpatialGrid with dirty-flag bookkeeping + the cell-size heuristic * (~√n cells), so chart code no longer repeats the insertion loop scaffold. * Callers drive the iteration through `rebuild` and the `visit` callback, * which lets scatter (flat array) and line (series-indexed array) share * the same code path. */ export declare class SpatialHitTester { private _grid; private _dirty; markDirty(): void; get isDirty(): boolean; /** * Rebuild the grid. `forEachPoint` is called once with an insert * function; the caller drives iteration. Cleared when `pointCount` * is zero. */ rebuild(bounds: HitBounds, pointCount: number, forEachPoint: (insert: (idx: number, x: number, y: number) => void) => void): void; /** * Query the nearest point within `radiusPx` of (dataX, dataY). */ query(dataX: number, dataY: number, radiusPx: number, pxPerDataX: number, pxPerDataY: number, xData: Float32Array | null, yData: Float32Array | null): number; clear(): void; }