import type { BeButtonEvent, ScreenViewport } from "@itwin/core-frontend";
import { EventHandled, SnapDetail } from "@itwin/core-frontend";
import type { Feature } from "../api/FeatureTracking.js";
import { MeasurementToolBase } from "../api/MeasurementTool.js";
import type { LocationMeasurement, LocationMeasurementFormattingProps } from "../measurements/LocationMeasurement.js";
import { MeasureLocationToolModel } from "../toolmodels/MeasureLocationToolModel.js";
import type { DialogItem, DialogPropertySyncItem } from "@itwin/appui-abstract";
import { SheetMeasurementHelper } from "../api/SheetMeasurementHelper.js";
/** Tool that measure precise locations */
export declare class MeasureLocationTool extends MeasurementToolBase<LocationMeasurement, MeasureLocationToolModel> {
    static toolId: string;
    static iconSpec: string;
    private static readonly useDynamicMeasurementPropertyName;
    protected get allowedDrawingTypes(): SheetMeasurementHelper.DrawingType[];
    private static _isUserNotifiedOfGeolocationFailure;
    private _useDynamicMeasurement;
    static get flyover(): string;
    static get description(): string;
    static get keyin(): string;
    protected get feature(): Feature | undefined;
    constructor(enableSheetMeasurements?: boolean, allowedViewportCallback?: (vp: ScreenViewport) => boolean, formatting?: LocationMeasurementFormattingProps);
    onRestartTool(): Promise<void>;
    onPostInstall(): Promise<void>;
    onDataButtonDown(ev: BeButtonEvent): Promise<EventHandled>;
    private sheetMeasurementsDataButtonDown;
    onMouseMotion(ev: BeButtonEvent): Promise<void>;
    private createLocationProps;
    protected createToolModel(): MeasureLocationToolModel;
    isValidLocation(ev: BeButtonEvent, isButtonEvent: boolean): boolean;
    protected requestSnap(ev: BeButtonEvent): Promise<SnapDetail | undefined>;
    /** Update the props to add GeoLocation information when available */
    private queryGeoLocation;
    private getSlopeFromNormal;
    protected updateToolAssistance(): void;
    onInstall(): Promise<boolean>;
    onCleanup(): Promise<void>;
    supplyToolSettingsProperties(): DialogItem[];
    applyToolSettingPropertyChange(updatedValue: DialogPropertySyncItem): Promise<boolean>;
}
//# sourceMappingURL=MeasureLocationTool.d.ts.map