import { BufferGeometry, Group, Material, Raycaster } from 'three';
import { BatchObject } from '../batching/BatchObject';
import { TopLevelAccelerationStructure } from './TopLevelAccelerationStructure';
import { DrawGroup } from '../batching/InstancedMeshBatch';
export default class SpeckleInstancedMesh extends Group {
    static MeshBatchNumber: number;
    private tas;
    private batchMaterial;
    private materialCache;
    private materialStack;
    private _batchObjects;
    groups: Array<DrawGroup>;
    materials: Material[];
    private instanceGeometry;
    private instances;
    get TAS(): TopLevelAccelerationStructure;
    get batchObjects(): BatchObject[];
    constructor(geometry: BufferGeometry);
    setBatchMaterial(material: Material): void;
    setBatchObjects(batchObjects: BatchObject[]): void;
    setOverrideMaterial(material: Material): void;
    getCachedMaterial(material: Material, copy?: boolean): Material;
    restoreMaterial(): void;
    buildTAS(): void;
    updateDrawGroups(transformBuffer: Float32Array, gradientBuffer: Float32Array): void;
    updateTransformsUniform(): void;
    updateMaterialTransformsUniform(material: Material): void;
    getBatchObjectMaterial(batchObject: BatchObject): Material;
    private convertRaycastIntersect;
    raycast(raycaster: Raycaster, intersects: any): void;
}
