import { Map, Feature } from 'ol';
import { UnitType } from '../utils/unitConverter';
import { MapStorage } from './storage';
import { MeasurementResult } from '../types';

export type { MeasurementResult };
export interface MeasurementOptions {
    strokeColor?: string;
    strokeWidth?: number;
    strokeDashArray?: number[];
    fillColor?: string;
    fillOpacity?: number;
    nodeRadius?: number;
    nodeColor?: string;
    nodeBorderColor?: string;
    nodeBorderWidth?: number;
    fontSize?: number;
    fontColor?: string;
    fontFamily?: string;
    fontWeight?: string;
    labelBackgroundColor?: string;
    labelBorderColor?: string;
    labelBorderWidth?: number;
    labelBorderRadius?: number;
    labelPadding?: string;
    labelOpacity?: number;
    tooltipBackgroundColor?: string;
    tooltipBorderColor?: string;
    tooltipBorderWidth?: number;
    tooltipBorderRadius?: number;
    tooltipPadding?: string;
    tooltipFontSize?: number;
    tooltipFontColor?: string;
    tooltipOpacity?: number;
    helpTooltipBackgroundColor?: string;
    helpTooltipBorderColor?: string;
    helpTooltipBorderWidth?: number;
    helpTooltipBorderRadius?: number;
    helpTooltipPadding?: string;
    helpTooltipFontSize?: number;
    helpTooltipFontColor?: string;
    helpTooltipOpacity?: number;
    helpTooltipShadow?: string;
    zIndex?: number;
}
export declare class MeasurementTool {
    private map;
    private source;
    private layer;
    private draw;
    private modify;
    private snap;
    private sketch;
    private measureTooltipElement;
    private measureTooltip;
    private helpTooltipElement;
    private helpTooltip;
    private listener;
    private tooltipHelper;
    private coordinateClickListener;
    private modifyListener;
    private pointerMoveListener;
    private options;
    private onResult?;
    private currentMeasurementType;
    private currentUnit;
    private segmentTooltips;
    private areaTooltips;
    private angleTooltips;
    private measurements;
    private storage;
    constructor(map: Map, storage: MapStorage, options?: MeasurementOptions);
    private getGeodesicLength;
    private getGeodesicArea;
    private clearFeatureTooltips;
    private updateFeatureMeasurement;
    private updateLineTooltips;
    private updatePolygonTooltip;
    private updateAngleTooltip;
    private getMaxZIndex;
    private createStyle;
    private calculateAngle;
    private formatDistance;
    private formatArea;
    private formatAngle;
    private createSegmentTooltipOverlay;
    private clearSegmentTooltips;
    private createNodeTooltip;
    private saveMeasurements;
    private addNodeMarkers;
    private nodeMarkers;
    private clearNodeMarkers;
    private initModify;
    private loadMeasurements;
    startDistanceMeasurement(onResult: (result: MeasurementResult) => void, unit?: UnitType): void;
    startAreaMeasurement(onResult: (result: MeasurementResult) => void, unit?: UnitType): void;
    startCoordinateMeasurement(onResult: (result: MeasurementResult) => void): void;
    startAngleMeasurement(onResult: (result: MeasurementResult) => void, unit?: UnitType): void;
    startLengthMeasure(onResult: (result: MeasurementResult) => void): void;
    startAreaMeasure(onResult: (result: MeasurementResult) => void): void;
    stopMeasure(): void;
    stopMeasurement(): void;
    clearMeasurements(): void;
    getFeatureCount(): number;
    getFeatures(): Feature[];
    addMeasurement(measurement: MeasurementResult): void;
    removeMeasurement(id: string): void;
    getMeasurements(): MeasurementResult[];
    static formatMeasurement(value: number, type: string): {
        value: number;
        unit: string;
        formatted: string;
    };
    private addCoordinateClickListener;
    private createCoordinateTooltip;
    private createCoordinatePoint;
    private addInteraction;
    private addAngleInteraction;
    private formatLength;
    private createMeasureTooltip;
    private createSegmentTooltip;
    private updateSegmentLabels;
    private createLineSegmentTooltips;
    private addPointerMoveListener;
    private removePointerMoveListener;
    private removeDrawInteraction;
    destroy(): void;
}
//# sourceMappingURL=measurementTool.d.ts.map