import { vec3 } from 'gl-matrix'; import type { Resources, StructureProvider } from '../index.js'; import { Mesh } from './Mesh.js'; type ChunkEntry = { mesh: Mesh; origin: vec3; transparent: boolean; }; export type EmissiveLight = { position: vec3; intensity: number; color: [number, number, number]; }; export declare class ChunkBuilder { private readonly gl; private structure; private readonly resources; private chunks; private readonly chunkSize; private meshesDirty; private meshCache; private emissiveLights; private emissiveLightsByChunk; private emissiveDirty; private readonly blockPropsCache; private buildToken; constructor(gl: WebGLRenderingContext, structure: StructureProvider, resources: Resources, chunkSize?: number | vec3, buildOnInit?: boolean); setStructure(structure: StructureProvider, options?: { rebuild?: boolean; }): void; updateStructureBuffers(chunkPositions?: vec3[]): void; updateStructureBuffersAsync(options?: { chunkPositions?: vec3[]; timeSliceMs?: number; onProgress?: (completed: number, total: number) => void; }): Promise; getMeshes(): Mesh[]; cancelPendingBuilds(): void; getMeshesInRange(cameraPos: vec3, maxDistance?: number): Mesh[]; getMeshEntries(): ChunkEntry[]; getMeshEntriesInRange(cameraPos: vec3, maxDistance?: number): ChunkEntry[]; private needsCull; private isFullyOccluded; private finishChunkMesh; getEmissiveLights(): EmissiveLight[]; private clearEmissiveLights; private prepareRebuild; private finalizeRebuild; private finalizeRebuildAsync; private processBlock; private getBlockProps; private buildChunkFilter; private now; private yieldControl; private chunkKey; private getChunk; private rebuildMeshCache; private markDirty; } export {}; //# sourceMappingURL=ChunkBuilder.d.ts.map