import { Instance } from "../instance-provider/instance"; import { Bounds } from "../primitives/bounds"; import { Vec2 } from "../util/vector"; export declare type TrackedQuadTreeBoundsAccessor = (o: T) => Bounds | null; export interface ITrackedQuadTreeVisitFunction { (node: TrackedQuadtreeNode, child?: Bounds): void; } export declare class TrackedQuadTreeQuadrants { TL: TrackedQuadtreeNode; TR: TrackedQuadtreeNode; BL: TrackedQuadtreeNode; BR: TrackedQuadtreeNode; destroy(): void; constructor(bounds: Bounds, depth: number, getBounds: TrackedQuadTreeBoundsAccessor, childToNode: Map>, childToBounds: Map | null>); } export declare class TrackedQuadtreeNode { bounds: Bounds; children: T[]; childToNode: Map>; childToBounds: Map | null>; depth: number; getBounds: TrackedQuadTreeBoundsAccessor; nodes: TrackedQuadTreeQuadrants | null; nullBounded: T[]; destroy(): void; constructor(left: number, right: number, top: number, bottom: number, getBounds: TrackedQuadTreeBoundsAccessor, depth?: number); add(child: T): boolean; addAll(children: T[]): void; cover(bounds: Bounds): void; private doAdd; private doRemove; gatherChildren(list: T[]): T[]; query(bounds: Bounds | Vec2, visit?: ITrackedQuadTreeVisitFunction): T[]; queryBounds(b: Bounds, list: T[], visit?: ITrackedQuadTreeVisitFunction): T[]; queryPoint(p: any, list: T[], visit?: ITrackedQuadTreeVisitFunction): T[]; remove(child: T): void; split(): void; visit(cb: ITrackedQuadTreeVisitFunction): void; } export declare class TrackedQuadTree extends TrackedQuadtreeNode { }