/**
 * @module vim-loader
 */
import { MeshSection } from 'vim-format';
import { G3dSubset } from './g3dSubset';
export declare class G3dMeshCounts {
    instances: number;
    meshes: number;
    indices: number;
    vertices: number;
}
/**
 * Holds the offsets needed to preallocate geometry for a given meshIndexSubset
 */
export declare class G3dMeshOffsets {
    readonly subset: G3dSubset;
    readonly section: MeshSection;
    readonly counts: G3dMeshCounts;
    private readonly _indexOffsets;
    private readonly _vertexOffsets;
    /**
     * Computes geometry offsets for given subset and section
     * @param subset subset for which to compute offsets
     * @param section 'opaque' | 'transparent' | 'all'
     */
    constructor(subset: G3dSubset, section: MeshSection);
    private computeOffsets;
    /**
     * Returns the index offset for given mesh and its instances.
     * @param mesh subset-based mesh index
     */
    getIndexOffset(mesh: number): number;
    /**
     * Returns the vertex offset for given mesh and its instances.
     * @param mesh subset-based mesh index
     */
    getVertexOffset(mesh: number): number;
    /**
     * Returns instance counts of given mesh.
     * @param mesh subset-based mesh index
     */
    getMeshInstanceCount(mesh: number): number;
    /**
     * Returns source-based instance for given mesh and index.
     * @mesh subset-based mesh index
     * @index mesh-based instance index
     */
    getMeshInstance(mesh: number, index: number): number;
    /**
     * Returns the source-based mesh index at given index
     */
    getSourceMesh(index: number): number;
}
