import { BufferGeometry, Color, Mesh, Quaternion, Raycaster, Vector3, type Intersection } from 'three';
import { ObjectLayers, type SpeckleObject } from '../../IViewer.js';
export interface SpeckleTextParams {
    textValue?: string;
    richTextValue?: string;
    height?: number;
    anchorX?: string;
    anchorY?: string;
}
export interface SpeckleTextStyle {
    backgroundColor?: Color | null;
    backgroundCornerRadius?: number;
    backgroundPixelHeight?: number;
    textColor?: Color;
    billboard?: boolean;
}
export declare class SpeckleText extends Mesh {
    private _layer;
    private _text;
    private _background;
    private _backgroundSize;
    private _style;
    private _resolution;
    private defaultMaterial;
    private getFlatRaycastMesh;
    private getCurvedRaycastMesh;
    static SpeckleTextParamsFromMetadata(metadata: SpeckleObject): SpeckleTextParams;
    get textMesh(): Text;
    get backgroundMesh(): Mesh<BufferGeometry, import("three").Material | import("three").Material[]> | null;
    set style(value: SpeckleTextStyle);
    constructor(uuid: string, layer: ObjectLayers);
    update(params: SpeckleTextParams, updateFinished?: () => void): Promise<void>;
    setTransform(position?: Vector3, quaternion?: Quaternion, scale?: Vector3): void;
    raycast(raycaster: Raycaster, intersects: Array<Intersection>): void;
    private updateStyle;
    private updateBackground;
    /** From https://discourse.threejs.org/t/roundedrectangle-squircle/28645  */
    private RectangleRounded;
}
