/// <reference types="@geoscene/core/interfaces.d.ts" />
import { default as QuantityFormatter } from '@geoscene/core/applications/Components/QuantityFormatter.js';
export type MeasurementModeString = "euclidean" | "geodesic";
export type Quantity = __geoscene.Area | __geoscene.Length;
export type MeasurementState = "disabled" | "measured" | "measuring" | "ready" | "unsupported";
export type MeasurementValue<T extends Quantity = Quantity> = {
    state: "available";
    value: T;
} | {
    state: "invalid";
    value?: never;
} | {
    state: "unavailable";
    value?: never;
};
export declare const measurementAreaUnits: ("square-millimeters" | "square-centimeters" | "square-decimeters" | "square-meters" | "square-kilometers" | "square-inches" | "square-feet" | "square-yards" | "square-miles" | "square-nautical-miles" | "square-us-feet" | "acres" | "ares" | "hectares" | "imperial" | "metric")[];
export declare const measurementLengthUnits: ("imperial" | "metric" | "millimeters" | "centimeters" | "decimeters" | "meters" | "kilometers" | "inches" | "feet" | "yards" | "miles" | "nautical-miles" | "us-feet")[];
export declare function getMeasurementValue<T extends Quantity>(value: nullish | T, valid?: boolean): MeasurementValue<T>;
export declare function formatQuantity(formatter: QuantityFormatter, quantity: Quantity): string;