import { Vector3 } from '@vertexvis/geometry';
import { Disposable, Listener } from '@vertexvis/utils';
import { MinimumDistanceMeasurementResult } from './results';
export interface LineOverlay extends Disposable {
    type: 'line';
    id: string;
    start: Vector3.Vector3;
    end: Vector3.Vector3;
}
export interface DistanceVectorOverlay extends Disposable {
    type: 'distance-vector';
    id: string;
    x: {
        start: Vector3.Vector3;
        end: Vector3.Vector3;
    };
    y: {
        start: Vector3.Vector3;
        end: Vector3.Vector3;
    };
    z: {
        start: Vector3.Vector3;
        end: Vector3.Vector3;
    };
}
export type MeasurementOverlay = LineOverlay | DistanceVectorOverlay;
export declare class MeasurementOverlayManager {
    private overlays;
    private overlaysChanged;
    addLineFromResult(result: MinimumDistanceMeasurementResult): LineOverlay;
    addLine(start: Vector3.Vector3, end: Vector3.Vector3): LineOverlay;
    addDistanceVectorFromResult(result: MinimumDistanceMeasurementResult): DistanceVectorOverlay;
    addDistanceVector(start: Vector3.Vector3, end: Vector3.Vector3): DistanceVectorOverlay;
    private addOverlay;
    getOverlays(): MeasurementOverlay[];
    private remove;
    onOverlaysChanged(listener: Listener<MeasurementOverlay[]>): Disposable;
}
