import type { Bounds } from '../data-table';
import { BlockMaskBuffer } from '../voxel/block-mask-buffer';
/**
 * A simple triangle mesh with positions and indices.
 */
interface Mesh {
    /** Vertex positions (3 floats per vertex) */
    positions: Float32Array;
    /** Triangle indices (3 indices per triangle) */
    indices: Uint32Array;
}
/**
 * Result of marching cubes surface extraction.
 */
type MarchingCubesMesh = Mesh;
/**
 * Extract a triangle mesh from a BlockMaskBuffer using marching cubes.
 *
 * Each voxel is treated as a cell in the marching cubes grid. Corner values
 * are binary (0 = empty, 1 = occupied) with a 0.5 threshold. Vertices are
 * placed at edge midpoints, producing a mesh that follows voxel boundaries.
 *
 * @param buffer - Voxel block data after filtering
 * @param gridBounds - Grid bounds aligned to block boundaries
 * @param voxelResolution - Size of each voxel in world units
 * @returns Mesh with positions and indices
 */
declare function marchingCubes(buffer: BlockMaskBuffer, gridBounds: Bounds, voxelResolution: number): MarchingCubesMesh;
export { marchingCubes };
export type { Mesh, MarchingCubesMesh };
