import { Box3, Camera, Plane, Raycaster, Vector2, Vector3, type Intersection } from 'three';
import { Measurement } from './Measurement.js';
import { MeasurementData, MeasurementType } from '@speckle/shared/viewer/state';
export declare class PerpendicularMeasurement extends Measurement {
    private startGizmo;
    private endGizmo;
    flipStartNormal: boolean;
    midPoint: Vector3;
    set isVisible(value: boolean);
    get bounds(): Box3;
    get measurementType(): MeasurementType;
    constructor();
    frameUpdate(camera: Camera, size: Vector2, bounds: Box3): void;
    locationUpdated(point: Vector3, normal: Vector3): void;
    locationSelected(): void;
    update(): Promise<void>;
    raycast(raycaster: Raycaster, intersects: Array<Intersection>): void;
    highlight(value: boolean): void;
    updateClippingPlanes(planes: Plane[]): void;
    toMeasurementData(): MeasurementData;
    fromMeasurementData(data: MeasurementData): void;
}
