import { Text } from 'troika-three-text';
import { BatchedText } from 'troika-three-text';
import { TopLevelAccelerationStructure } from './TopLevelAccelerationStructure.js';
import { BufferGeometry, Camera, Intersection, Material, Scene, Texture } from 'three';
import { BatchObject } from '../batching/BatchObject.js';
import { SpeckleRaycaster } from './SpeckleRaycaster.js';
import { DrawGroup } from '../batching/Batch.js';
import SpeckleTextMaterial from '../materials/SpeckleTextMaterial.js';
import { SpeckleWebGLRenderer } from '../../index.js';
export declare class SpeckleBatchedText extends BatchedText {
    material: SpeckleTextMaterial;
    private tas;
    private _batchMaterial;
    private _batchObjects;
    private _textObjects;
    private _dirty;
    groups: Array<DrawGroup>;
    materials: Material[];
    private materialCache;
    private materialCacheLUT;
    private readonly DEBUG_BILLBOARDS;
    private debugMeshes;
    get TAS(): TopLevelAccelerationStructure;
    get batchObjects(): BatchObject[];
    get batchMaterial(): Material;
    set dirty(value: boolean);
    get isBillboarded(): any;
    setBatchMaterial(material: Material): void;
    setBatchObjects(batchObjects: BatchObject[], textObjects: Text[]): void;
    private lookupMaterial;
    getCachedMaterial(material: Material, copy?: boolean): Material;
    buildTAS(): void;
    /** This could be made faster. BUT, as this point in time it's not worth the effort */
    updateTransformsUniform(): void;
    updateMaterialTransformsUniform(material: Material): void;
    setGradientTexture(texture: Texture): void;
    getBatchObjectMaterial(batchObject: BatchObject): Material | null;
    private convertRaycastIntersect;
    private initDebugBox;
    /** Debug purposes only */
    onBeforeRender(renderer: SpeckleWebGLRenderer, scene: Scene, camera: Camera, geometry: BufferGeometry, material: Material, group: unknown): void;
    raycast(raycaster: SpeckleRaycaster, intersects: Array<Intersection>): void;
    /**
     * Update the batched geometry bounds to hold all members
     */
    updateBounds(): void;
    /**
     * @param {Text} text
     */
    addText(text: Text): void;
    private setTexData;
    /**
     * @override
     * Patched version that allows:
     * - Individual text opacities
     * - Coordinate inside gradient/ramp texture <27>
     */
    _prepareForRender(material: SpeckleTextMaterial): void;
}
