import { TerraDrawMouseEvent, TerraDrawAdapterStyling, NumericStyling, Cursor, UrlStyling } from "../../common";
import { GeoJSONStoreFeatures, StoreValidation } from "../../store/store";
import { BaseModeOptions, CustomStyling, ModeUpdateOptions, TerraDrawBaseDrawMode } from "../base.mode";
import { BehaviorConfig } from "../base.behavior";
type MarkerModeStyling = {
    /** Marker must be a PNG or JPG  */
    markerUrl: UrlStyling;
    markerHeight: NumericStyling;
    markerWidth: NumericStyling;
};
interface Cursors {
    create?: Cursor;
    dragStart?: Cursor;
    dragEnd?: Cursor;
}
interface TerraDrawMarkerModeOptions<T extends CustomStyling> extends BaseModeOptions<T> {
    cursors?: Cursors;
    editable?: boolean;
}
export declare class TerraDrawMarkerMode extends TerraDrawBaseDrawMode<MarkerModeStyling> {
    mode: "marker";
    private cursors;
    private editable;
    private editedFeatureId;
    private pixelDistance;
    private clickBoundingBox;
    private pointSearch;
    private mutateFeature;
    constructor(options?: TerraDrawMarkerModeOptions<MarkerModeStyling>);
    updateOptions(options?: ModeUpdateOptions<TerraDrawMarkerModeOptions<MarkerModeStyling>>): void;
    /** @internal */
    start(): void;
    /** @internal */
    stop(): void;
    /** @internal */
    onClick(event: TerraDrawMouseEvent): void;
    /** @internal */
    onMouseMove(): void;
    /** @internal */
    onKeyDown(): void;
    /** @internal */
    onKeyUp(): void;
    /** @internal */
    cleanUp(): void;
    onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
    /** @internal */
    onDrag(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
    /** @internal */
    onDragEnd(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void;
    registerBehaviors(config: BehaviorConfig): void;
    /** @internal */
    styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
    validateFeature(feature: unknown): StoreValidation;
    private onLeftClick;
    private onRightClick;
    afterFeatureUpdated(feature: GeoJSONStoreFeatures): void;
}
export {};
