import { TerraDrawMouseEvent, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, HexColorStyling, NumericStyling, Cursor } from "../../common";
import { GeoJSONStoreFeatures, StoreValidation } from "../../store/store";
import { BaseModeOptions, CustomStyling, TerraDrawBaseDrawMode } from "../base.mode";
type TerraDrawRectangleModeKeyEvents = {
    cancel: KeyboardEvent["key"] | null;
    finish: KeyboardEvent["key"] | null;
};
type RectanglePolygonStyling = {
    fillColor: HexColorStyling;
    outlineColor: HexColorStyling;
    outlineWidth: NumericStyling;
    fillOpacity: NumericStyling;
};
interface Cursors {
    start?: Cursor;
}
interface TerraDrawRectangleModeOptions<T extends CustomStyling> extends BaseModeOptions<T> {
    keyEvents?: TerraDrawRectangleModeKeyEvents | null;
    cursors?: Cursors;
}
export declare class TerraDrawRectangleMode extends TerraDrawBaseDrawMode<RectanglePolygonStyling> {
    mode: "rectangle";
    private center;
    private clickCount;
    private currentRectangleId;
    private keyEvents;
    private cursors;
    constructor(options?: TerraDrawRectangleModeOptions<RectanglePolygonStyling>);
    updateOptions(options?: TerraDrawRectangleModeOptions<RectanglePolygonStyling>): void;
    private updateRectangle;
    private close;
    /** @internal */
    start(): void;
    /** @internal */
    stop(): void;
    /** @internal */
    onClick(event: TerraDrawMouseEvent): void;
    /** @internal */
    onMouseMove(event: TerraDrawMouseEvent): void;
    /** @internal */
    onKeyDown(): void;
    /** @internal */
    onKeyUp(event: TerraDrawKeyboardEvent): void;
    /** @internal */
    onDragStart(): void;
    /** @internal */
    onDrag(): void;
    /** @internal */
    onDragEnd(): void;
    /** @internal */
    cleanUp(): void;
    /** @internal */
    styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling;
    validateFeature(feature: unknown): StoreValidation;
}
export {};
