import type { GLTFDracoDecoder, GLTFMeshoptDecodeDescriptor, GLTFMeshoptDecoder } from "./GLTFLoader";
export interface GLTFMeshoptDecoderModule {
    readonly ready?: PromiseLike<void>;
    decodeGltfBuffer(target: Uint8Array, count: number, size: number, source: Uint8Array, mode: GLTFMeshoptDecodeDescriptor["mode"], filter?: GLTFMeshoptDecodeDescriptor["filter"]): void;
}
export interface GLTFDracoStatus {
    ok(): boolean;
    error_msg(): string;
}
export interface GLTFDracoDecoderBuffer {
    Init(data: Uint8Array, byteLength: number): void;
}
export interface GLTFDracoMesh {
    num_points(): number;
    num_faces(): number;
}
export interface GLTFDracoAttribute {
    num_components(): number;
}
export interface GLTFDracoNumericArray {
    size(): number;
    GetValue(index: number): number;
}
export interface GLTFDracoDecoderInstance {
    GetEncodedGeometryType(buffer: GLTFDracoDecoderBuffer): number;
    DecodeBufferToMesh(buffer: GLTFDracoDecoderBuffer, mesh: GLTFDracoMesh): GLTFDracoStatus;
    GetAttributeByUniqueId(mesh: GLTFDracoMesh, uniqueId: number): GLTFDracoAttribute | null;
    GetAttributeFloatForAllPoints(mesh: GLTFDracoMesh, attribute: GLTFDracoAttribute, out: GLTFDracoNumericArray): boolean;
    GetFaceFromMesh(mesh: GLTFDracoMesh, faceIndex: number, out: GLTFDracoNumericArray): boolean;
}
export interface GLTFDracoDecoderModule {
    readonly TRIANGULAR_MESH: number;
    readonly Decoder: new () => GLTFDracoDecoderInstance;
    readonly DecoderBuffer: new () => GLTFDracoDecoderBuffer;
    readonly Mesh: new () => GLTFDracoMesh;
    readonly DracoFloat32Array: new () => GLTFDracoNumericArray;
    readonly DracoInt32Array: new () => GLTFDracoNumericArray;
    destroy?(object: unknown): void;
}
export declare function createMeshoptDecoder(module: GLTFMeshoptDecoderModule): GLTFMeshoptDecoder;
export declare function createDracoDecoder(module: GLTFDracoDecoderModule): GLTFDracoDecoder;
//# sourceMappingURL=GLTFCompressionDecoders.d.ts.map