import { MeshSection } from "./g3d";
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 {
    subset: G3dSubset;
    section: MeshSection;
    counts: G3dMeshCounts;
    indexOffsets: Int32Array;
    vertexOffsets: Int32Array;
    /**
     * Computes geometry offsets for given subset and section
     * @param subset subset for which to compute offsets
     * @param section on of 'opaque' | 'transparent' | 'all'
     */
    static fromSubset(subset: G3dSubset, section: MeshSection): G3dMeshOffsets;
    getIndexOffset(mesh: number): number;
    getVertexOffset(mesh: number): number;
    /**
     * Returns how many instances of given meshes are the filtered view.
     */
    getMeshInstanceCount(mesh: number): number;
    /**
     * Returns instance for given mesh.
     * @mesh view-relative mesh index
     * @at view-relative instance index for given mesh
     * @returns mesh-relative instance index
     */
    getMeshInstance(mesh: number, index: number): number;
    /**
     * Returns the vim-relative mesh index at given index
     */
    getMesh(index: number): number;
}
