import { type BlockGridParams } from './voxel-query';
import { DataTable, type Bounds, type GaussianExtentsResult, type GaussianColumns } from '../data-table';
import { GpuVoxelization } from '../gpu';
import { GaussianBVH } from '../spatial';
import type { DeviceCreator } from '../types';
/**
 * Context produced by the shared voxel filter setup pipeline.
 */
interface VoxelFilterContext {
    pcDataTable: DataTable;
    extentsResult: GaussianExtentsResult;
    sceneBounds: Bounds;
    bvh: GaussianBVH;
    gpuVoxelization: GpuVoxelization | null;
}
/**
 * Set up the common voxelization pipeline used by both filterCluster and filterFloaters.
 *
 * Transforms columns to world space, computes Gaussian extents, builds a BVH,
 * creates a GPU device, and uploads all Gaussians.
 *
 * @param dataTable - Input Gaussian splat data.
 * @param createDevice - Function to create a GPU device for voxelization.
 * @returns Context containing all shared resources.
 */
declare const setupVoxelFilter: (dataTable: DataTable, createDevice: DeviceCreator) => Promise<VoxelFilterContext>;
/**
 * Build GaussianColumns from a VoxelFilterContext.
 *
 * @param ctx - Voxel filter context.
 * @returns Column arrays for Gaussian evaluation.
 */
declare const buildGaussianColumns: (ctx: VoxelFilterContext) => GaussianColumns;
/**
 * Build BlockGridParams from grid bounds and voxel size.
 *
 * @param gridBounds - Block-aligned grid bounds.
 * @param voxelResolution - Size of each voxel in world units.
 * @returns Block grid parameters.
 */
declare const buildBlockGridParams: (gridBounds: Bounds, voxelResolution: number) => BlockGridParams;
export { setupVoxelFilter, buildGaussianColumns, buildBlockGridParams, type VoxelFilterContext };
