import { Box3, Camera, Object3D, Plane, Vector2, Vector3, Vector4 } from 'three';
export declare enum MeasurementState {
    HIDDEN = 0,
    DANGLING_START = 1,
    DANGLING_END = 2,
    COMPLETE = 3
}
export declare abstract class Measurement extends Object3D {
    startPoint: Vector3;
    endPoint: Vector3;
    startNormal: Vector3;
    endNormal: Vector3;
    startLineLength: number;
    endLineLength: number;
    value: number;
    units: string;
    precision: number;
    protected static vec3Buff0: Vector3;
    protected static vec3Buff1: Vector3;
    protected static vec3Buff2: Vector3;
    protected static vec3Buff3: Vector3;
    protected static vec3Buff4: Vector3;
    protected static vec4Buff0: Vector4;
    protected static vec4Buff1: Vector4;
    protected static vec2Buff0: Vector2;
    protected _state: MeasurementState;
    protected renderingCamera: Camera;
    protected renderingSize: Vector2;
    set state(value: MeasurementState);
    get state(): MeasurementState;
    set isVisible(value: boolean);
    get bounds(): Box3;
    frameUpdate(camera: Camera, size: Vector2, bounds: Box3): void;
    update(): void;
    raycast(raycaster: any, intersects: any): void;
    highlight(value: boolean): void;
    updateClippingPlanes(planes: Plane[]): void;
}
