/**
 * @module vim-loader
 */
import * as THREE from 'three';
import { G3d, G3dMesh, G3dMaterial } from 'vim-format';
import { Scene } from '../scene';
import { G3dMeshOffsets } from './g3dOffsets';
export declare class GeometrySubmesh {
    instance: number;
    start: number;
    end: number;
    boundingBox: THREE.Box3;
    expandBox(point: THREE.Vector3): void;
}
export declare class InsertableGeometry {
    _scene: Scene;
    materials: G3dMaterial;
    offsets: G3dMeshOffsets;
    geometry: THREE.BufferGeometry;
    submeshes: GeometrySubmesh[];
    boundingBox: THREE.Box3;
    private _computeBoundingBox;
    private _indexAttribute;
    private _vertexAttribute;
    private _colorAttribute;
    private _updateStartMesh;
    private _updateEndMesh;
    private _meshToUpdate;
    constructor(offsets: G3dMeshOffsets, materials: G3dMaterial, transparent: boolean);
    get progress(): number;
    insert(mesh: G3dMesh, at: number): number[];
    float32ArraysAreEqual(array1: Float32Array, array2: Float32Array): boolean;
    insertFromG3d(g3d: G3d, mesh: number): number[];
    private setIndex;
    private setVertex;
    private setColor;
    private expandBox;
    flushUpdate(): void;
    update(): void;
}
