import { BlockMaskBuffer } from './block-mask-buffer';
import { type GaussianColumns } from '../data-table';
/**
 * Pre-computed lookup structures for efficient voxel block queries.
 */
interface BlockLookup {
    solidSet: Set<number>;
    mixedMap: Map<number, number>;
    masks: number[];
}
/**
 * Grid parameters for block-based voxel queries.
 */
interface BlockGridParams {
    gridMinX: number;
    gridMinY: number;
    gridMinZ: number;
    blockSize: number;
    voxelResolution: number;
    numBlocksX: number;
    numBlocksY: number;
    numBlocksZ: number;
    strideY: number;
    strideZ: number;
}
/**
 * Build block lookup structures from the buffer's Morton codes.
 *
 * @param buffer - Block mask buffer containing voxelized blocks.
 * @param strideY - numBlocksX (stride for Y dimension).
 * @param strideZ - numBlocksX * numBlocksY (stride for Z dimension).
 * @returns Solid block set, mixed block map (linear index to masks array index), and masks.
 */
declare const buildBlockLookup: (buffer: BlockMaskBuffer, strideY: number, strideZ: number) => BlockLookup;
/**
 * Test whether a Gaussian's center lies inside an occupied voxel.
 *
 * @param px - Gaussian center x.
 * @param py - Gaussian center y.
 * @param pz - Gaussian center z.
 * @param grid - Block grid parameters.
 * @param lookup - Block lookup structures.
 * @param blockFilter - Optional set of block indices to restrict the test to.
 * @returns True if the center is in an occupied (and optionally filtered) voxel.
 */
declare const isCenterInOccupiedVoxel: (px: number, py: number, pz: number, grid: BlockGridParams, lookup: BlockLookup, blockFilter?: Set<number>) => boolean;
/**
 * Test whether a Gaussian has meaningful contribution at any occupied voxel
 * center within its AABB range.
 *
 * Iterates over blocks that overlap the Gaussian's AABB, then evaluates the
 * Gaussian's opacity contribution at each occupied voxel center in those blocks.
 *
 * @param gaussianIdx - Index of the Gaussian.
 * @param columns - Gaussian column data arrays.
 * @param grid - Block grid parameters.
 * @param lookup - Block lookup structures.
 * @param minContribution - Minimum contribution threshold.
 * @param blockFilter - Optional set of block indices to restrict the test to.
 * @returns True if the Gaussian contributes above threshold at any qualifying voxel.
 */
declare const gaussianContributesToVoxels: (gaussianIdx: number, columns: GaussianColumns, grid: BlockGridParams, lookup: BlockLookup, minContribution: number, blockFilter?: Set<number>) => boolean;
export { buildBlockLookup, isCenterInOccupiedVoxel, gaussianContributesToVoxels, type BlockLookup, type BlockGridParams };
