/**
 * @module vim-loader
 */
import * as THREE from 'three';
import { Vim } from '../vim';
import { InstancedSubmesh } from './instancedSubmesh';
import { G3d, G3dMesh } from 'vim-format';
import { ModelMaterial } from '../materials/materials';
export declare class InstancedMesh {
    g3dMesh: G3dMesh | G3d;
    vim: Vim;
    mesh: THREE.InstancedMesh;
    bimInstances: ArrayLike<number>;
    meshInstances: ArrayLike<number>;
    boundingBox: THREE.Box3;
    boxes: THREE.Box3[];
    ignoreSceneMaterial: boolean;
    private _material;
    readonly size: number;
    constructor(g3d: G3dMesh | G3d, mesh: THREE.InstancedMesh, instances: Array<number>);
    get merged(): boolean;
    /**
     * Returns submesh for given index.
     */
    getSubMesh(index: number): InstancedSubmesh;
    /**
     * Returns all submeshes for given index.
     */
    getSubmeshes(): InstancedSubmesh[];
    setMaterial(value: ModelMaterial): void;
    private computeBoundingBoxes;
    private importBoundingBoxes;
    computeBoundingBox(boxes: THREE.Box3[]): THREE.Box3;
}
