/**
 * @module vim-loader
 */
import * as THREE from 'three';
import { G3d, G3dMesh, G3dMaterial } from 'vim-format';
import { InsertableGeometry } from './insertableGeometry';
import { InsertableSubmesh } from './insertableSubmesh';
import { G3dMeshOffsets } from './g3dOffsets';
import { Vim } from '../vim';
import { ModelMaterial } from '../materials/materials';
export declare class InsertableMesh {
    offsets: G3dMeshOffsets;
    mesh: THREE.Mesh;
    vim: Vim;
    /**
     * Whether the mesh is merged or not.
     */
    get merged(): boolean;
    /**
     * Whether the mesh is transparent or not.
     */
    transparent: boolean;
    /**
     * Total bounding box for this mesh.
     */
    get boundingBox(): THREE.Box3;
    /**
     * Set to true to ignore SetMaterial calls.
     */
    ignoreSceneMaterial: boolean;
    /**
     * initial material.
     */
    private _material;
    geometry: InsertableGeometry;
    constructor(offsets: G3dMeshOffsets, materials: G3dMaterial, transparent: boolean);
    get progress(): number;
    insert(g3d: G3dMesh, mesh: number): void;
    insertFromVim(g3d: G3d, mesh: number): void;
    update(): void;
    clearUpdate(): void;
    /**
     * Returns submesh corresponding to given face on a merged mesh.
     */
    getSubmeshFromFace(faceIndex: number): InsertableSubmesh;
    /**
     *
     * @returns Returns all submeshes
     */
    getSubmeshes(): InsertableSubmesh[];
    /**
     *
     * @returns Returns submesh for given index.
     */
    getSubmesh(index: number): InsertableSubmesh;
    /**
     * Overrides mesh material, set to undefine to restore initial material.
     */
    setMaterial(value: ModelMaterial): void;
}
