import type { AABB2 } from '../AABB2.js';
import type { IDataChunk2D } from './IDataChunk2D.js';
declare enum Quadrant {
    NorthEast = "northEast",
    SouthEast = "southEast",
    SouthWest = "southWest",
    NorthWest = "northWest"
}
type IChunkQuadTreeChildNodes<ChunkType extends IDataChunk2D> = {
    [index in Quadrant]: ChunkQuadTreeNode<ChunkType> | null;
};
export declare class ChunkQuadTreeNode<ChunkType extends IDataChunk2D> {
    static IntersectDistanceFactor: number;
    static BeforeAfterDeltaFactor: number;
    originX: number | null;
    originY: number | null;
    chunks: ChunkType[];
    isLeaf: boolean;
    readonly nodes: IChunkQuadTreeChildNodes<ChunkType>;
    constructor(chunks?: ChunkType | ChunkType[]);
    canSubdivide(): boolean;
    clear(): void;
    subdivide(maxChunkNodes?: number): void;
    private static makeChild;
    appendChunk(chunk: ChunkType): void;
    private appendToNode;
    findChunks(aabb: AABB2, out?: ChunkType[]): ChunkType[];
    isNorthWest(aabb: AABB2): boolean;
    isNorthEast(aabb: AABB2): boolean;
    isSouthEast(aabb: AABB2): boolean;
    isSouthWest(aabb: AABB2): boolean;
    findChunksAt(x: number, y: number): ChunkType[];
}
export {};
//# sourceMappingURL=ChunkQuadTreeNode.d.ts.map