import { BufferGeometry, Camera, ColorRepresentation, DataTexture, Material, Matrix4, Mesh, Scene, WebGLRenderer } from 'three'; import { SharedGeometry } from '../../scene/SharedGeometry'; export interface DrawRange { vertexStart: number; vertexCount: number; indexStart: number; indexCount: number; } export interface InstanceDrawInfo { visible: boolean; active: boolean; geometryIndex: number; } export declare class MultiMesh extends Mesh { isBatchedMesh: boolean; maxDrawCount: number; maxVertexCount: number; maxIndexCount: number; _multiDrawStarts: Int32Array; _multiDrawCounts: Int32Array; _multiDrawInstances: Int32Array | null; _multiDrawCount: number; private _matricesTexture; private _indirectTexture; private _colorsTexture; private geometryInitialized; reservedRanges: DrawRange[]; drawRanges: { start: number; count: number; }[]; attributeTextures: Map; availableInstanceIds: number[]; drawInfo: InstanceDrawInfo[]; geometryCount: number; visibilityChanged: boolean; constructor(maxDrawCount: number, maxVertexCount: number, maxIndexCount: number, material: Material); private initMatricesTexture; initIndirectTexture(): void; initAttributeTexture(name: string): void; initColorsTexture(): void; addInstance(geometryId: number, matrix?: Matrix4, color?: ColorRepresentation, attributes?: Map): any; addGeometry(geometry: BufferGeometry, vertexCount?: number, indexCount?: number): number; setGeometryAt(geometryId: number, geometry: BufferGeometry): number; static fromSharedGeometry(gData: SharedGeometry, material: Material): MultiMesh; initializeGeometry(reference: BufferGeometry): void; private validateGeometry; dispose(): this; onBeforeRender(renderer: WebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry, material: Material): void; }