import { Project, Unproject, TerraDrawCallbacks, TerraDrawChanges, TerraDrawMouseEvent, SetCursor, TerraDrawStylingFunction, GetLngLatFromEvent, TerraDrawAdapter } from "../common";
import { AdapterListener } from "./adapter-listener";
type BasePointerListener = (event: PointerEvent) => void;
type BaseKeyboardListener = (event: KeyboardEvent) => void;
type BaseMouseListener = (event: MouseEvent) => void;
export type BaseAdapterConfig = {
    coordinatePrecision?: number;
    minPixelDragDistanceDrawing?: number;
    minPixelDragDistance?: number;
    minPixelDragDistanceSelecting?: number;
};
export declare abstract class TerraDrawBaseAdapter implements TerraDrawAdapter {
    constructor(config: BaseAdapterConfig);
    private _nextKeyUpIsContextMenu;
    protected _minPixelDragDistance: number;
    protected _minPixelDragDistanceDrawing: number;
    protected _minPixelDragDistanceSelecting: number;
    protected _lastDrawEvent: TerraDrawMouseEvent | undefined;
    protected _coordinatePrecision: number;
    protected _heldKeys: Set<string>;
    protected _listeners: AdapterListener<BasePointerListener | BaseKeyboardListener | BaseMouseListener>[];
    protected _dragState: "not-dragging" | "pre-dragging" | "dragging";
    protected _currentModeCallbacks: TerraDrawCallbacks | undefined;
    abstract getMapEventElement(): HTMLElement;
    protected getButton(event: PointerEvent | MouseEvent): "neither" | "left" | "middle" | "right";
    protected getMapElementXYPosition(event: PointerEvent | MouseEvent): {
        containerX: number;
        containerY: number;
    };
    protected getDrawEventFromEvent(event: PointerEvent | MouseEvent, isContextMenu?: boolean): TerraDrawMouseEvent | null;
    /**
     * Registers the provided callbacks for the current drawing mode and attaches
     * the necessary event listeners.
     * @param {TerraDrawCallbacks} callbacks - An object containing callback functions
     * for handling various drawing events in the current mode.
     */
    register(callbacks: TerraDrawCallbacks): void;
    /**
     * Gets the coordinate precision. The coordinate precision is the number of decimal places in geometry
     * coordinates stored in the store.
     * @returns {number} The coordinate precision.
     */
    getCoordinatePrecision(): number;
    protected getAdapterListeners(): AdapterListener<BasePointerListener>[];
    /**
     * Unregisters the event listeners for the current drawing mode.
     * This is typically called when switching between drawing modes or
     * stopping the drawing process.
     */
    unregister(): void;
    abstract clear(): void;
    abstract project(...args: Parameters<Project>): ReturnType<Project>;
    abstract unproject(...args: Parameters<Unproject>): ReturnType<Unproject>;
    abstract setCursor(...args: Parameters<SetCursor>): ReturnType<SetCursor>;
    abstract getLngLatFromEvent(...event: Parameters<GetLngLatFromEvent>): ReturnType<GetLngLatFromEvent>;
    abstract setDraggability(enabled: boolean): void;
    abstract setDoubleClickToZoom(enabled: boolean): void;
    abstract render(changes: TerraDrawChanges, styling: TerraDrawStylingFunction): void;
}
export {};
