import { h } from '../../stencil-public-runtime';
import { Formatter } from '../../lib/formatter';
import { MeasurementModel, MeasurementOutcome, MeasurementOverlayManager, MeasurementResult } from '../../lib/measurement';
import { AngleUnitType, DistanceUnitType } from '../../lib/types';
export declare class ViewerMeasurementDetails {
    /**
     * The `MeasurementModel` that should be reflected in these details.
     * If not specified, a new `MeasurementModel` will be created,
     * which can then be used to update the display.
     */
    measurementModel?: MeasurementModel;
    /**
     * The manager that the component will use to present measurement overlays.
     */
    measurementOverlays?: MeasurementOverlayManager;
    /**
     * The outcome to display. This property is automatically updated if a
     * measurement model is provided.
     */
    measurementOutcome?: MeasurementOutcome;
    /**
     * The unit of distance-based measurement.
     */
    distanceUnits: DistanceUnitType;
    /**
     * The unit of angle-based measurement.
     */
    angleUnits: AngleUnitType;
    /**
     * The number of fraction digits to display.
     */
    fractionalDigits: number;
    /**
     * An optional formatter that can be used to format the display of a distance.
     * The formatting function is passed a calculated real-world distance and is
     * expected to return a string.
     */
    distanceFormatter?: Formatter<number>;
    /**
     * An optional formatter that can be used to format the display of an angle.
     * The formatting function is passed a calculated angle in degrees and is
     * expected to return a string.
     */
    angleFormatter?: Formatter<number>;
    /**
     * An optional formatter that can be used to format the display of an area.
     * The formatting function is passed a calculated area and is
     * expected to return a string.
     */
    areaFormatter?: Formatter<number>;
    /**
     * A set of result types to display. If `undefined`, then all results will be
     * displayed.
     */
    resultTypes?: MeasurementResult['type'][];
    private overlay?;
    private distanceMeasurementUnits;
    private angleMeasurementUnits;
    private areaMeasurementUnits;
    private onOutcomeChangedHandler?;
    /**
     * @internal
     */
    protected connectedCallback(): void;
    /**
     * @internal
     */
    protected disconnectedCallback(): void;
    /**
     * @internal
     */
    protected handleDistanceUnitsChanged(): void;
    /**
     * @internal
     */
    protected handleAngleUnitsChanged(): void;
    /**
     * @internal
     */
    protected handleMeasurementModelChanged(): void;
    /**
     * @internal
     */
    protected handleResultTypesChanged(): void;
    /**
     * @internal
     */
    protected render(): h.JSX.IntrinsicElements;
    private handleShowOverlay;
    private handleHideOverlay;
    private handleOutcomeChange;
    private updateStateFromModel;
    private renderResult;
    private getResultForType;
    private makeDistanceFormatter;
    private makeAngleFormatter;
    private makeAreaFormatter;
    private makeFormatter;
    private formatValue;
}
