import type { GLTF, GLTFLoaderPlugin, GLTFParser } from 'three/examples/jsm/loaders/GLTFLoader.js';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
import { LoadingManager, Object3D } from 'three';
import { AnyOptions } from 'ts-browser-helpers';
import { ThreeViewer } from '../../viewer';
import { ILoader } from '../IImporter';
export declare class GLTFLoader2 extends GLTFLoader implements ILoader<GLTF, Object3D | undefined> {
    isGLTFLoader2: boolean;
    constructor(manager: LoadingManager);
    static ImportExtensions: ((parser: GLTFParser) => GLTFLoaderPlugin)[];
    /**
     * Preparsers are run on the arraybuffer/string before parsing to read the glb/gltf data
     */
    preparsers: GLTFPreparser[];
    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, _: AnyOptions): 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;
}
//# sourceMappingURL=GLTFLoader2.d.ts.map