import { BufferGeometry, Camera, DataTexture, Material, Mesh, Scene, WebGLRenderer } from 'three'; import { SharedGeometry } from '../../scene/SharedGeometry.ts'; export interface DrawRange { isHidden: boolean; vertexStart: number; vertexCount: number; indexStart: number; indexCount: number; } export declare class MultiMesh2 extends Mesh { isBatchedMesh: boolean; private _multiDrawCounts; private _multiDrawStarts; private _multiDrawCount; private_multiDrawInstances: any; private _maxVertexCount; private _maxIndexCount; private _maxInstanceCount; private geometryInitialized; _multiDrawInstances: Int32Array | null; _visibilityChanged: boolean; private drawRanges; private geometryCount; _geometryCount: number; _matricesTexture: DataTexture; _indirectTexture: DataTexture; _colorsTexture: DataTexture; sharedRanges: Map; constructor(maxInstanceCount: number, maxVertexCount: number, maxIndexCount: number, material: Material); applyVisibility(): void; static fromSharedGeometry(gData: SharedGeometry, material: Material): MultiMesh2; _initMatricesTexture(): void; _initIndirectTexture(): void; _initColorsTexture(): void; private initializeGeometry; onBeforeRender(renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry, material: Material): void; dispose(): this; }