/** * Geometry Conversion Utilities * * Converts between manifold-3d format and moicad's Geometry type. * Handles metadata preservation through CSG operations. */ import type { Geometry } from "../types/geometry-types"; import type { ManifoldObject, ManifoldWithMeta } from "./types"; /** * Convert a Manifold object to moicad's Geometry format * Uses buffer pooling to reduce memory allocations */ export declare function manifoldToGeometry(manifold: ManifoldObject): Geometry; /** * Convert a Manifold object to moicad's Geometry format (zero-copy version) * Returns TypedArrays directly - more efficient but requires special handling * Use this when frontend supports TypedArray deserialization */ export declare function manifoldToGeometryZeroCopy(manifold: ManifoldObject): { vertices: Float32Array; indices: Uint32Array; normals: Float32Array; bounds: { min: number[]; max: number[]; }; stats: { vertexCount: number; faceCount: number; volume: number; }; }; /** * Convert moicad's Geometry to a Manifold object * Useful for operations that need to go back to manifold format */ export declare function geometryToManifold(geometry: Geometry): ManifoldObject; /** * Wrap a Manifold object with metadata */ export declare function wrapWithMetadata(manifold: ManifoldObject, metadata?: Partial): ManifoldWithMeta; /** * Preserve metadata through an operation * The result manifold gets the metadata from the original */ export declare function preserveMetadata(result: ManifoldObject, original: ManifoldWithMeta): ManifoldWithMeta; /** * Merge metadata from multiple sources * Used when combining multiple manifolds (e.g., union) */ export declare function mergeMetadata(result: ManifoldObject, sources: ManifoldWithMeta[]): ManifoldWithMeta; /** * Convert Manifold with metadata to moicad Geometry with metadata preserved */ export declare function manifoldWithMetaToGeometry(manifoldWithMeta: ManifoldWithMeta): Geometry & { metadata?: ManifoldWithMeta["metadata"]; }; /** * Reset object ID counter (useful for testing) */ export declare function resetObjectIdCounter(): void; /** * Parse a color string (CSS name or hex) to RGBA tuple (0-1 range) */ export declare function parseColor(colorStr: string): [number, number, number, number] | null; /** * Chunk large geometry for memory-efficient processing * Splits geometry into smaller chunks to avoid memory spikes during serialization */ export declare function chunkGeometry(vertices: Float32Array, indices: Uint32Array, normals: Float32Array, chunkSize?: number): Generator<{ vertices: number[]; indices: number[]; normals: number[]; chunkIndex: number; totalChunks: number; }>; /** * Serialize geometry with memory optimization * Automatically chunks large geometries to prevent memory spikes */ export declare function serializeGeometryOptimized(manifold: ManifoldObject, maxVertices?: number): Geometry | { chunks: Array<{ vertices: number[]; indices: number[]; normals: number[]; }>; isChunked: true; totalVertices: number; totalFaces: number; bounds: { min: number[]; max: number[]; }; stats: { vertexCount: number; faceCount: number; volume: number; }; }; //# sourceMappingURL=geometry.d.ts.map