import { MeasureAreaMode, ClickEvent, FeatureCollection, GuideFeatureCollection, ModeProps, PointerMoveEvent, Polygon, Position, Tooltip } from '@deck.gl-community/editable-layers';
import { MeasurementToolsTextProps } from '../types';
import { ValueOf } from 'type-fest';
import { MapMeasurementUnitAuto } from '../const';
import { TentativeFeature } from '../../../../node_modules/@deck.gl-community/editable-layers/dist/edit-modes/types';
/**
 * Custom area measurement mode that extends `MeasureAreaMode` with polygon finalization, keyboard controls, and formatted tooltip support.
 *
 * @remarks
 * Calculates area using Turf.js. Supports Enter to finalize (3+ points), Escape to cancel,
 * and click on first/last point to close the polygon. Prevents overlapping lines when configured.
 */
export declare class CustomMeasureAreaMode extends MeasureAreaMode {
    _isMeasuringSessionFinished: boolean;
    area: number;
    tooltips: Tooltip[];
    resultPolygon: FeatureCollection;
    handleClick(event: ClickEvent, props: ModeProps<FeatureCollection>): void;
    handleKeyUp(event: KeyboardEvent, props: ModeProps<FeatureCollection>): void;
    updateTooltip(polygon: Polygon | TentativeFeature, props: ModeProps<FeatureCollection>): void;
    handlePointerMove(event: PointerMoveEvent, props: ModeProps<FeatureCollection>): void;
    resetClickSequence(): void;
    getGuides(props: ModeProps<FeatureCollection>): GuideFeatureCollection;
    getTooltips(): Tooltip[];
    isFinalizedEdition(clickSequence: Position[], clickedEditHandle: {
        properties: {
            positionIndexes: number[];
        };
    } | null | undefined): boolean;
    allowOverlapping(props: ModeProps<FeatureCollection>): boolean;
    finalizeEdition(props: ModeProps<FeatureCollection>): void;
    resetEdition(props: ModeProps<FeatureCollection>): void;
    getTooltipText({ meters, locale, unit, options, }: {
        meters: number;
        unit: ValueOf<typeof MapMeasurementUnitAuto>;
        locale: string;
        options?: MeasurementToolsTextProps;
    }): string;
}
