import * as THREE from 'three';
import { GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js';
import type { ModelDescription, LoaderResponse } from '@/types/index';
import type { BodyObject } from './BlendShapeManager';
import type { AnimationManager } from './AnimationManager';
type ModelRuntimeOptions = {
    config: ModelDescription;
    animationManager: AnimationManager;
    getScene: () => THREE.Scene | null;
    getCharacterGroup: () => THREE.Group | null;
    getBody: () => BodyObject;
    setBody: (body: BodyObject) => void;
};
export declare class ModelRuntime {
    private config;
    private animationManager;
    private getScene;
    private getCharacterGroup;
    private getBody;
    private setBody;
    private loader;
    private ktx2Loader;
    private model;
    constructor(options: ModelRuntimeOptions);
    setConfig(config: ModelDescription): void;
    detectTextureSupport(renderer: THREE.WebGLRenderer): void;
    getModelMap(): Map<string, GLTF>;
    changeBundle(record: LoaderResponse): void;
    loadBundles(list: LoaderResponse[], onProgress: (progress: number) => void): Promise<LoaderResponse[]>;
    loadGLBModel(glbURL: string): void;
    loadLowResTexture(url: string): Promise<unknown>;
    addModel(code: string, modelUrl: string): void;
    destroyModel(code: string, cleanMaterial: (material: THREE.Material | THREE.Material[]) => void): void;
    loadGlb(url: string, onProgress?: (event: ProgressEvent) => void): Promise<GLTF>;
    addGlb(url: string, onProgress?: (event: ProgressEvent) => void): Promise<GLTF>;
    destroy(): void;
    private createGLTFLoader;
    private createKTX2Loader;
    private cloneTrack;
    private mountRecord;
    private mountAposeScene;
    private registerAnimationClips;
    private bindBodyMeshes;
}
export {};
//# sourceMappingURL=ModelRuntime.d.ts.map