import SpeckleRenderer from '../SpeckleRenderer';
import { Plane, Vector3 } from 'three';
import { Measurement } from './Measurement';
export declare enum MeasurementType {
    PERPENDICULAR = 0,
    POINTTOPOINT = 1
}
export interface MeasurementOptions {
    visible: boolean;
    type?: MeasurementType;
    vertexSnap?: boolean;
    units?: string;
    precision?: number;
}
export declare class Measurements {
    private renderer;
    private measurements;
    private measurement;
    private selectedMeasurement;
    private raycaster;
    private _options;
    private frameLock;
    private _enabled;
    private _paused;
    private pointBuff;
    private normalBuff;
    private screenBuff0;
    private screenBuff1;
    constructor(renderer: SpeckleRenderer);
    get enabled(): boolean;
    get visible(): boolean;
    set enabled(value: boolean);
    set paused(value: boolean);
    set options(options: MeasurementOptions);
    update(): void;
    fromMeasurementData(startPoint: Vector3, endPoint: Vector3): void;
    updateClippingPlanes(planes: Plane[]): void;
    private onPointerMove;
    private onPointerClick;
    private onPointerDoubleClick;
    private autoLazerMeasure;
    private startMeasurement;
    private cancelMeasurement;
    private finishMeasurement;
    private snap;
    private flashMeasurement;
    pickMeasurement(data: any): Measurement;
    selectMeasurement(measurement: Measurement, value: boolean): void;
    removeMeasurement(): void;
    private applyOptions;
}
