export class BufferedGeometryBVH {
    /**
     *
     * @param {AABB3|number[]} out
     */
    getBounds(out: AABB3 | number[]): void;
    /**
     *
     * @type {THREE.BufferGeometry|null}
     * @private
     */
    private __geometry;
    /**
     *
     * @type {number[]|null}
     * @private
     */
    private __geometry_index;
    /**
     *
     * @type {number[]|null}
     * @private
     */
    private __geometry_positions;
    /**
     *
     * @type {number}
     * @private
     */
    private __triangle_count;
    /**
     *
     * @param {THREE.BufferGeometry} geo
     */
    build(geo: THREE.BufferGeometry): void;
    /**
     * Tests ray for occlusion
     * Returns true if ray hits anything at all
     * @param {Ray3} ray
     * @returns {boolean}
     */
    occluded(ray: Ray3): boolean;
    /**
     *
     * @param {SurfacePoint3} result
     * @param {number} x
     * @param {number} y
     * @param {number} z
     * @returns {boolean} true if result is found, only false when geometry is empty
     */
    nearestSurfacePoint(result: SurfacePoint3, x: number, y: number, z: number): boolean;
    /**
     * Code is largely inlined, to avoid extra checks
     * NOTE: raycast is performed in local coordinate space
     * @param {number[]} output
     * @param {number[]|Ray3} ray
     * @returns {number} distance along the ray, negative if no hit
     */
    raycast2(output: number[], ray: number[] | Ray3): number;
    /**
     * NOTE: raycast is performed in local coordinate space
     * @param {number[]} output
     * @param {number[]|Ray3} ray
     * @returns {number} distance along the ray, negative if no hit
     */
    raycast(output: number[], ray: number[] | Ray3): number;
    #private;
}
import { AABB3 } from "../../../../core/geom/3d/aabb/AABB3.js";
import { SurfacePoint3 } from "../../../../core/geom/3d/SurfacePoint3.js";
//# sourceMappingURL=BufferedGeometryBVH.d.ts.map