import { DistanceLabel, DistanceLine } from './DistanceLabel';
import type { AnchoredLine, AnchoredRadiusEllipse, SvgRenderer } from '../components/Markup/SvgRenderer';
import { Vector3 } from '../types/Math';
import { SettingsController } from '../controllers/SettingsController';
export type Measurement = {
    line: DistanceLine;
    svgData: {
        lines: AnchoredLine[];
        ellipses: AnchoredRadiusEllipse[];
    };
    distanceLabels: DistanceLabel[];
};
export declare function createLine(params: {
    start: Vector3;
    end: Vector3;
    color?: string;
    width?: number;
    strokeDasharray?: string;
    opacity?: number;
}): AnchoredLine;
export declare function createEllipse(params: {
    anchor: Vector3;
    color?: string;
    radius?: {
        x: number;
        y: number;
    };
}): AnchoredRadiusEllipse;
export declare class MeasurementRenderer {
    element: HTMLElement;
    private measurements;
    private globalOffset;
    private readonly gui;
    private camera;
    private readonly settingsController;
    private readonly svgRenderer;
    constructor(params: {
        settingsController: SettingsController;
        svgRenderer: SvgRenderer;
    });
    setGlobalOffset(params: Vector3): void;
    getGlobalOffset(): THREE.Vector3;
    addMeasurement(params: {
        measurePoint1: Vector3;
        measurePoint2: Vector3;
        config?: {
            type: 'colorAxis' | 'greyTriangle';
        };
    }): Promise<void>;
    clearMeasurements(): void;
    private onProjectSettingsUpdated;
    private onRenderReady;
    private onResize;
    private onCameraUpdated;
    private updateDistanceLabelPosition;
    private isDistanceLabelHidden;
    private areRectsOverlapping;
    private isOverlapping;
    private stackElementsVerticallyToFirst;
    private createColorAxis;
    private createGreyTriangle;
    private updateSvgData;
}
