import { DataTable } from './data-table';
import { type DeviceCreator } from '../types';
declare const sortByVisibility: (dataTable: DataTable, indices: Uint32Array) => void;
/**
 * Simplifies a Gaussian splat DataTable to a target number of splats by
 * progressive pair-wise merging of nearest-neighbor gaussians.
 *
 * The merge math is derived from sparkjsdev/spark `gsplat.rs::new_merged`
 * (area·α weighted, mass-conserving opacity, no filter floor, opacity
 * clamped at 1). It preserves color fidelity through multiple iterations
 * far better than the NanoGS Porter-Duff opacity + volume-weighted formula
 * does — color drift / over-saturation is essentially gone even at
 * aggressive reductions.
 *
 * @param dataTable - The input splat DataTable.
 * @param targetCount - The desired number of output splats.
 * @param createDevice - Optional factory yielding a `GraphicsDevice`. When supplied, KNN and edge-cost run on the GPU; otherwise the CPU KD-tree path is used.
 * @returns A new DataTable with approximately `targetCount` splats.
 */
declare const simplifyGaussians: (dataTable: DataTable, targetCount: number, createDevice?: DeviceCreator) => Promise<DataTable>;
export { sortByVisibility, simplifyGaussians };
