import { Vec3 } from 'playcanvas';
import { DataTable } from './data-table';
/**
 * Bounds specification with min/max Vec3.
 */
interface Bounds {
    min: Vec3;
    max: Vec3;
}
/**
 * Result of computing Gaussian extents.
 */
interface GaussianExtentsResult {
    /**
     * DataTable containing extent_x, extent_y, extent_z columns.
     * To compute AABB for Gaussian i:
     *   minX = x[i] - extent_x[i], maxX = x[i] + extent_x[i]
     *   minY = y[i] - extent_y[i], maxY = y[i] + extent_y[i]
     *   minZ = z[i] - extent_z[i], maxZ = z[i] + extent_z[i]
     */
    extents: DataTable;
    /** Scene bounds (union of all Gaussian AABBs) */
    sceneBounds: Bounds;
    /** Number of Gaussians skipped due to invalid values */
    invalidCount: number;
}
/**
 * Compute axis-aligned bounding box half-extents for all Gaussians in a DataTable.
 *
 * Each Gaussian is an oriented ellipsoid defined by position, rotation (quaternion),
 * and scale (log scale). This function computes the AABB that encloses each
 * rotated ellipsoid and stores only the half-extents. The full AABB can be
 * reconstructed at runtime using: min = position - extent, max = position + extent.
 *
 * @param dataTable - DataTable containing Gaussian splat data
 * @returns GaussianExtentsResult with extents DataTable and scene bounds
 */
declare const computeGaussianExtents: (dataTable: DataTable) => GaussianExtentsResult;
export { computeGaussianExtents };
export type { Bounds, GaussianExtentsResult };
