/// <reference types="@geoscene/core/interfaces.d.ts" />
import { default as DirectLineMeasurementAnalysis } from '@geoscene/core/analysis/DirectLineMeasurementAnalysis.js';
import { default as SceneView } from '@geoscene/core/views/SceneView';
import { AnalysisViewModel } from '../../support/AnalysisViewModel';
import { MeasurementModeString, MeasurementState, MeasurementValue } from '../../support/measurementUtils';
export interface Measurement {
    readonly mode: MeasurementModeString;
    readonly directDistance: MeasurementValue<__geoscene.Length>;
    readonly horizontalDistance: MeasurementValue<__geoscene.Length>;
    readonly verticalDistance: MeasurementValue<__geoscene.Length>;
}
export type State = "disabled" | "measured" | "measuring" | "ready";
export default class DirectLineMeasurement3DViewModel extends AnalysisViewModel<SceneView, DirectLineMeasurementAnalysis> {
    initialize(): void;
    get state(): Exclude<MeasurementState, "unsupported">;
    get displayState(): MeasurementState;
    /**
     * The current measurement calculated between the two points.
     */
    get measurement(): Measurement;
    /**
     * List of unit systems (imperial, metric) and specific units for displaying the distance values.
     */
    get unitOptions(): __geoscene.SystemOrLengthUnit[];
    set unitOptions(units: __geoscene.SystemOrLengthUnit[] | undefined);
    private _userUnitOptions?;
    /**
     * Unit system (imperial, metric) or specific unit used for displaying the distance values.
     */
    get unit(): __geoscene.SystemOrLengthUnit;
    set unit(unit: __geoscene.SystemOrLengthUnit | undefined);
    private _userUnit?;
    get defaultUnit(): __geoscene.MeasurementSystem | undefined;
    place(options?: {
        signal?: AbortSignal;
    }): Promise<void>;
    protected clearAnalysis(): void;
    protected readonly supportedViewType = "3d";
    protected readonly unsupportedErrorMessage = "The Direct Line Measurement 3D component is only supported in 3D views.";
    protected constructAnalysis(): DirectLineMeasurementAnalysis;
}