/// <reference types="@geoscene/core/interfaces.d.ts" />
import { default as AreaMeasurementAnalysis } from '@geoscene/core/analysis/AreaMeasurementAnalysis.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 area: MeasurementValue<__geoscene.Area>;
    readonly perimeter: MeasurementValue<__geoscene.Length>;
}
export default class AreaMeasurement3dViewModel extends AnalysisViewModel<SceneView, AreaMeasurementAnalysis> {
    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.SystemOrAreaUnit[];
    set unitOptions(units: __geoscene.SystemOrAreaUnit[] | undefined);
    private _userUnitOptions?;
    /**
     * Unit system (imperial, metric) or specific unit used for displaying the distance values.
     */
    get unit(): __geoscene.SystemOrAreaUnit;
    set unit(unit: __geoscene.SystemOrAreaUnit | 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 Area Measurement 3D component is only supported in 3D views.";
    protected constructAnalysis(): AreaMeasurementAnalysis;
}