import { type CameraBasis } from './camera';
import { GaussianBVH } from '../spatial';
/**
 * Compute the 6 world-space frustum planes for the view sub-frustum that
 * intersects a tile-group's pixel rectangle.
 *
 * Each plane is stored as `(nx, ny, nz, d)` where the inside-the-frustum
 * test is `n · p ≥ d`. Plane normals point *into* the frustum. The plane
 * order in `out` is: near, far, left, right, top, bottom (not relied on
 * by callers — `GaussianBVH.queryFrustumRawInto` treats all six uniformly).
 *
 * Side-plane derivation: a pixel edge at column `gx` corresponds to camera-
 * space `cx = (gx − cx0) / focalX · cz`. The plane containing all rays
 * through that edge is `right − (gx − cx0)/focalX · forward`. The "into
 * the frustum" direction is whichever sign of the resulting normal
 * satisfies the interior half-space.
 *
 * @param camera - Camera basis (right, down, forward, eye, focals).
 * @param gx0 - Group min pixel x (inclusive).
 * @param gy0 - Group min pixel y (inclusive).
 * @param gx1 - Group max pixel x (exclusive).
 * @param gy1 - Group max pixel y (exclusive).
 * @param width - Image width in pixels.
 * @param height - Image height in pixels.
 * @param near - Near plane.
 * @param far - Far plane.
 * @param out - 24-float output buffer; must be at least length 24.
 */
declare const computeGroupFrustumPlanes: (camera: CameraBasis, gx0: number, gy0: number, gx1: number, gy1: number, width: number, height: number, near: number, far: number, out: Float32Array) => void;
/**
 * Run a frustum-plane BVH query, resizing `buffer` if it's too small.
 *
 * @param bvh - Pre-built `GaussianBVH` over the scene.
 * @param planes - 24-float plane array from `computeGroupFrustumPlanes`.
 * @param buffer - Reusable result buffer (grown if too small).
 * @returns Possibly-reallocated buffer and the candidate count.
 */
declare const queryBvhFrustum: (bvh: GaussianBVH, planes: Float32Array, buffer: Uint32Array) => {
    buffer: Uint32Array;
    count: number;
};
export { computeGroupFrustumPlanes, queryBvhFrustum };
