import { GLTF, GLTFLoaderPlugin, GLTFParser, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
import { LoadingManager, Object3D } from 'three';
import { ThreeViewer } from '../../viewer';
import { ILoader } from '../IImporter';
import { SerializationMetaType } from '../../utils';
import { ImportAddOptions } from '../AssetManager';
export declare class GLTFLoader2 extends GLTFLoader implements ILoader<GLTF, Object3D | undefined> {
    isGLTFLoader2: boolean;
    importOptions?: ImportAddOptions;
    constructor(manager: LoadingManager);
    /**
     * Saves the current resource path in the gltf document extras/userData, which is then exported along with the asset when its exported using GLTFExporter2.
     * This value is then used the next time that file is imported to correctly resolve external assets from the original resource path.
     * [wip]
     */
    static ['_EmbedResourcePath']: boolean;
    static ['_UseResourcePath']: boolean;
    static ImportExtensions: ((parser: GLTFParser) => GLTFLoaderPlugin)[];
    private _resPathUrlModifier;
    /**
     * Use {@link MeshLine}(an extension of three.js `Line2`) instead of default `Line` for lines. This allows changing line width and other properties like `dashed`.
     *
     * This is the default value for the flag, it can also be controlled by using the `useMeshLines` in the import options.
     */
    static UseMeshLines: boolean;
    /**
     * If true, the loader will create unique names for objects in the gltf file when multiple objects with the same name are found.
     * This is useful when importing gltf files with multiple objects with the same name, and creating animations for them.
     * If set to 'auto', it will only create unique names when loading a `rootSceneModelRoot`, i.e. the scene object exported with `AssetExporter`
     */
    static CreateUniqueNames: boolean | 'auto';
    /**
     * Preparsers are run on the arraybuffer/string before parsing to read the glb/gltf data
     */
    preparsers: GLTFPreparser[];
    static BundledResourcesKey: string;
    static AllowEmptyFiles: boolean;
    preparse(data: ArrayBuffer | string, path: string): Promise<ArrayBuffer | string>;
    parse(data: ArrayBuffer | string, path: string, onLoad: (gltf: GLTF) => void, onError?: (event: ErrorEvent) => void, url?: string): void;
    /**
     * This is run post parse to extract the result scene from the GLTF object
     * @param res
     * @param _
     */
    transform(res: GLTF, options: ImportAddOptions): Object3D | undefined;
    register(callback: (parser: GLTFParser) => GLTFLoaderPlugin): this;
    setup(viewer: ThreeViewer, extraExtensions: ((parser: GLTFParser) => GLTFLoaderPlugin)[]): this;
    gltfViewerParser: (viewer: ThreeViewer) => (p: GLTFParser) => GLTFLoaderPlugin;
}
export interface GLTFPreparser {
    process(data: string | ArrayBuffer, path: string): Promise<string | ArrayBuffer>;
    [key: string]: any;
}
declare module 'three/examples/jsm/loaders/GLTFLoader.js' {
    interface GLTFParser {
        importOptions?: ImportAddOptions;
    }
}
declare module 'three/examples/jsm/loaders/GLTFLoader.js' {
    interface GLTF {
        _bundledResources?: SerializationMetaType;
    }
    interface GLTFParser {
        bundledResources?: SerializationMetaType;
    }
}
//# sourceMappingURL=../../src/assetmanager/import/GLTFLoader2.d.ts.map