import type { BVHVector3, BVHBox3 } from "./bvhMath";
/**
 * A node in the BVH structure
 * @param extents - the min coords of this node's bounding box
 * @param startIndex - an index in the bbox array, where the first element of this node is located
 * @param endIndex - an index in the bbox array, where the last of this node is located, plus 1 (meaning that its non-inclusive).
 * @param level - distance of this node from the root for the bvh tree. root node has level=0, its children have level=1 etc.
 */
export declare class BVHNode {
    id: number;
    extents: number[];
    startIndex: number;
    endIndex: number;
    deepth: number;
    node0?: BVHNode;
    node1?: BVHNode;
    constructor(id: number, extents: number[], startIndex: number, endIndex: number, deepth: number);
}
export declare const BYTES_PER_NODE: number;
export declare function packBVHNode(root: BVHNode, length: number): ArrayBuffer;
export declare function containsNodeBox(point: BVHVector3, box: BVHBox3, threshold?: number): boolean;
/**
 * 计算射线和 BVHNode 的相交
 * @param rayOrigin - 射线原点
 * @param invRayDirection - 1 / 射线方向
 * @param node - BVHNode
 * @param threshold - 扩大
 */
export declare function intersectNodeBox(rayOrigin: BVHVector3, invRayDirection: BVHVector3, box: BVHBox3, threshold?: number): number | null;
