import * as THREE from 'three/webgpu';
import type { VirtualMeshSource } from './core/preprocess/buildVirtualMesh.js';
export interface FromGeometryOptions {
    /**
     * Keep the `uv` attribute. Vertices are then welded by position and UV, so UV seams stay separate vertices
     * (the simplifier treats them as seams, not borders). Default: true when the geometry has a `uv` attribute.
     */
    uvs?: boolean;
    /** Keep the `color` attribute as per-vertex colors (multiplied with the material color). Default: false. */
    colors?: boolean;
    /**
     * 'compute' (default): smooth normals over the position-welded mesh, ignoring the `normal` attribute.
     * 'keep': use the geometry's normals; vertices with different normals stay separate, so hard edges stay hard.
     */
    normals?: 'compute' | 'keep';
    /** Only this range of the index buffer (or of the vertices, for non-indexed geometry), e.g. one of `geometry.groups`. */
    range?: {
        start: number;
        count: number;
    };
}
/**
 * Weld vertices and produce a `VirtualMeshSource`. By default vertices are welded by position (and UV when the
 * geometry has UVs) and get smooth normals, so meshlets share edges. See `FromGeometryOptions`.
 */
export declare function fromBufferGeometry(geometry: THREE.BufferGeometry, options?: FromGeometryOptions): VirtualMeshSource;
/**
 * Concatenate several already-welded meshes into one source mesh with per-vertex colors.
 * Each part uses its own `colors` if present, otherwise the given flat `color`.
 */
export declare function mergeSources(parts: {
    mesh: VirtualMeshSource;
    color?: THREE.ColorRepresentation;
}[]): VirtualMeshSource;
