import { BufferGeometry, Color, ConeGeometry, Group, Line, LineDashedMaterial, Mesh, MeshBasicMaterial, Sprite, Vector3, type Camera } from "three";
export type DimensionUnit = "m" | "mm";
export type DimensionLineOptions = {
    boundingMaterial: MeshBasicMaterial;
    endpointGeometry: ConeGeometry;
    endpointMaterial: MeshBasicMaterial;
    endpointScale: Vector3;
    lineMaterial: LineDashedMaterial;
    root: Group;
    start: Vector3;
    end: Vector3;
};
export declare class DimensionLine {
    static scale: number;
    static scaleFactor: number;
    static units: DimensionUnit;
    readonly root: Group<import("three").Object3DEventMap>;
    readonly start: Vector3;
    readonly endpointMeshes: Mesh[];
    boundingMesh: Mesh | null;
    end: Vector3;
    line: Line;
    private readonly boundingMaterial;
    private readonly endpointGeometry;
    private readonly endpointMaterial;
    private readonly lineGeometry;
    private readonly lineMaterial;
    private readonly ownerRoot;
    private endpointBaseScale;
    private labelHeight;
    private labelSprite;
    private labelText;
    private labelTexture;
    private labelWidth;
    constructor({ boundingMaterial, endpointGeometry, endpointMaterial, endpointScale, lineMaterial, root, start, end, }: DimensionLineOptions);
    get length(): number;
    get center(): Vector3;
    get text(): Sprite<import("three").Object3DEventMap>;
    get boundingBox(): Mesh<BufferGeometry<import("three").NormalBufferAttributes, import("three").BufferGeometryEventMap>, import("three").Material<import("three").MaterialEventMap> | import("three").Material<import("three").MaterialEventMap>[], import("three").Object3DEventMap> | null;
    set dimensionColor(dimensionColor: Color);
    set visibility(visible: boolean);
    set endpointScale(scale: Vector3);
    set endPoint(point: Vector3);
    createBoundingBox(): void;
    removeFromScene(): void;
    dispose(): void;
    updateForCamera(camera: Camera, viewportHeight: number): void;
    private addEndpointMeshes;
    private addEndpointMesh;
    private createLabelSprite;
    private createBoundingBoxMesh;
    private getTextContent;
    private updateLabel;
    private updatePositions;
    private updateBoundingBox;
    private rescaleMesh;
    private rescaleBoundingMesh;
    private rescaleLabel;
}
