import { Material, BufferAttribute, Box3, BufferGeometry } from 'three';
import { PrimitiveBatch } from './PrimitiveBatch.js';
import SpeckleMesh, { TransformStorage } from '../objects/SpeckleMesh.js';
import { DrawRanges } from './DrawRanges.js';
import { NodeRenderView } from '../tree/NodeRenderView.js';
import { type BatchUpdateRange, type DrawGroup, GeometryType } from './Batch.js';
export declare class MeshBatch extends PrimitiveBatch {
    protected primitive: SpeckleMesh;
    protected transformStorage: TransformStorage;
    private indexBuffer0;
    private indexBuffer1;
    private indexBufferIndex;
    protected drawRanges: DrawRanges;
    get bounds(): Box3;
    get minDrawCalls(): number;
    get triCount(): number;
    get pointCount(): number;
    get lineCount(): number;
    get geometryType(): GeometryType;
    get mesh(): SpeckleMesh;
    constructor(id: string, subtreeId: string, renderViews: NodeRenderView[], transformStorage: TransformStorage);
    protected getCurrentIndexBuffer(): BufferAttribute;
    protected getNextIndexBuffer(): BufferAttribute;
    protected shuffleMaterialOrder(a: DrawGroup, b: DrawGroup): number;
    protected updateGradientIndexBufferData(start: number, end: number, value: number): {
        minIndex: number;
        maxIndex: number;
    };
    setDrawRanges(ranges: BatchUpdateRange[]): void;
    resetDrawRanges(): void;
    buildBatch(): Promise<void>;
    protected makeMeshGeometry(indices: Uint32Array | Uint16Array, position: Float64Array | Float32Array, normals: Float32Array, batchIndices: Float32Array, color?: Float32Array): BufferGeometry;
    getRenderView(index: number): NodeRenderView | null;
    getMaterialAtIndex(index: number): Material | null;
}
