import * as THREE from 'three';
import type { Mesh, MeshPrimitive, TextureInfo, Node } from '../glTF';
import type { Parser } from '../parser';
import type { GlTFResult } from '../type';
import type { ImageBitmapLike } from '../../../../texture/imageBitmap';
export declare class BaseExtension {
    markDefs(parser: Parser): void;
    prepare(parser: Parser): void | Promise<void>;
    emitResult(result: GlTFResult, parser: Parser): void | Promise<void>;
    createPrimitiveKey(primitiveDef: MeshPrimitive, parser: Parser): void | string;
    extendTexture(texture: THREE.Texture, mapDef: TextureInfo, parser: Parser): null | THREE.Texture;
    loadBuffer(index: number, parser: Parser): null | Promise<ArrayBuffer>;
    loadBufferView(index: number, parser: Parser): null | Promise<ArrayBuffer>;
    loadImage(index: number, parser: Parser): null | Promise<ImageBitmapLike>;
    loadTexture(index: number, parser: Parser): null | Promise<THREE.Texture>;
    loadGeometry(primitiveDef: MeshPrimitive, parser: Parser): null | Promise<THREE.BufferGeometry>;
    loadMaterial(primitiveDef: MeshPrimitive, parser: Parser): null | Promise<THREE.Material>;
    loadMeshPrimitive(meshDef: Mesh, primitiveDef: MeshPrimitive, parser: Parser): null | Promise<THREE.Points | THREE.Line | THREE.Mesh>;
    extendMaterial(material: THREE.Material, primitiveDef: MeshPrimitive, parser: Parser): Promise<void>;
    loadMesh(index: number, parser: Parser): null | Promise<THREE.Object3D>;
    extendNode(node: THREE.Object3D, nodeDef: Node, parser: Parser): Promise<void>;
    loadNodeAttachments(index: number, parser: Parser): null | Promise<THREE.Object3D>;
    loadCamera(index: number, parser: Parser): null | Promise<THREE.Camera>;
    loadAnimation(index: number, parser: Parser): null | Promise<THREE.AnimationClip>;
}
