import * as THREE from 'three';
export declare class Draco {
    decoderPath: string;
    private decoderPending;
    private decoderConfig;
    private workerLimit;
    private workerNextTaskID;
    private workerSourceURL;
    private workerPool;
    constructor();
    setDecoderPath(decoderPath: string): void;
    setDecoderConfig(config: any): this;
    setWorkerLimit(workerLimit: number): this;
    decodeDracoFile(buffer: ArrayBuffer, callback: (geometry: THREE.BufferGeometry) => void, attributeIDs: Record<string, string>, attributeTypes: Record<string, any>): void;
    decodeGeometry(buffer: ArrayBuffer, taskConfig?: {
        attributeIDs: Record<string, string>;
        attributeTypes: Record<string, any>;
        useUniqueIDs: boolean;
    }): Promise<THREE.BufferGeometry>;
    _createGeometry(geometryData: any): THREE.BufferGeometry;
    _initDecoder(): Promise<void>;
    _getWorker(taskID: number, taskCost: number): Promise<Worker>;
    _releaseTask(worker: Worker, taskID: number): void;
    dispose(): this;
}
export declare const draco: Draco;
