/**
 * GridIndex is a data structure for testing the intersection of
 * circles and rectangles in a 2d plane.
 * It is optimized for rapid insertion and querying.
 * GridIndex splits the plane into a set of "cells" and keeps track
 * of which geometries intersect with each cell. At query time,
 * full geometry comparisons are only done for items that share
 * at least one cell. As long as the geometries are relatively
 * uniformly distributed across the plane, this greatly reduces
 * the number of comparisons necessary.
 *
 * @private
 */
declare class GridIndex {
    circleKeys: Array<any>;
    boxKeys: Array<any>;
    boxCells: Array<Array<number>>;
    circleCells: Array<Array<number>>;
    bboxes: Array<number>;
    circles: Array<number>;
    xCellCount: number;
    yCellCount: number;
    width: number;
    height: number;
    xScale: number;
    yScale: number;
    boxUid: number;
    circleUid: number;
    constructor(width: number, height: number, cellSize: number);
    keysLength(): number;
    insert(key: any, x1: number, y1: number, x2: number, y2: number): void;
    insertCircle(key: any, x: number, y: number, radius: number): void;
    _insertBoxCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, uid: number): void;
    _insertCircleCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, uid: number): void;
    _query(x1: number, y1: number, x2: number, y2: number, hitTest: boolean, predicate?: any): boolean | any[];
    _queryCircle(x: number, y: number, radius: number, hitTest: boolean, predicate?: any): boolean | any[];
    query(x1: number, y1: number, x2: number, y2: number, predicate?: any): Array<any>;
    hitTest(x1: number, y1: number, x2: number, y2: number, predicate?: any): boolean;
    hitTestCircle(x: number, y: number, radius: number, predicate?: any): boolean;
    _queryCell(x1: number, y1: number, x2: number, y2: number, cellIndex: number, result: any, queryArgs: any, predicate?: any): boolean;
    _queryCellCircle(x1: number, y1: number, x2: number, y2: number, cellIndex: number, result: any, queryArgs: any, predicate?: any): boolean;
    _forEachCell(x1: number, y1: number, x2: number, y2: number, fn: any, arg1: any, arg2?: any, predicate?: any): void;
    _convertToXCellCoord(x: number): number;
    _convertToYCellCoord(y: number): number;
    _circlesCollide(x1: number, y1: number, r1: number, x2: number, y2: number, r2: number): boolean;
    _circleAndRectCollide(circleX: number, circleY: number, radius: number, x1: number, y1: number, x2: number, y2: number): boolean;
}
export default GridIndex;
//# sourceMappingURL=grid_index.d.ts.map