import { ViralBatchedMesh } from "../components/custom-objects/viral-batched-mesh";
import type { BufferElement } from "../types";
import { type SimplifyOptions } from "./geometry-simplifier";
/**
 * Simplify buffer elements while preserving the ability to batch them
 * This simplifies each element's geometry individually, so element mapping remains valid
 */
export declare function simplifyBufferElements(bufferElements: BufferElement[], options: SimplifyOptions): Promise<BufferElement[]>;
/**
 * Create a simplified version of a ViralBatchedMesh by simplifying its buffer elements
 * This preserves element mapping functionality (hide, isolate, changeColor)
 *
 * @param originalMesh - The original batched mesh
 * @param options - Simplification options
 * @returns Object containing simplified buffer elements and original color
 */
export declare function getSimplifiedBatchedMeshData(originalMesh: any, // ViralBatchedMesh
options: SimplifyOptions): Promise<{
    simplifiedElements: BufferElement[];
    originalColor: any;
}>;
/**
 * Simplify buffer elements in batches for better performance
 * Uses parallel processing when possible
 */
export declare function simplifyBufferElementsBatch(bufferElements: BufferElement[], options: SimplifyOptions, batchSize?: number): Promise<BufferElement[]>;
/**
 * FAST: Simplify entire batched mesh geometry at once
 * This is much faster than per-element simplification but breaks element mapping
 * Use this when you don't need hide/isolate/changeColor functionality
 *
 * @param batchedMesh - The batched mesh to simplify
 * @param options - Simplification options
 * @returns New simplified ViralBatchedMesh
 */
export declare function simplifyBatchedMeshFast(batchedMesh: ViralBatchedMesh, options: SimplifyOptions): Promise<ViralBatchedMesh>;
