import { BehaviorConfig, TerraDrawModeBehavior } from "./base.behavior"; import { HexColor, OnFinishContext, Projection, TerraDrawAdapterStyling, TerraDrawKeyboardEvent, TerraDrawModeRegisterConfig, TerraDrawModeState, TerraDrawMouseEvent, Validation } from "../common"; import { FeatureId, GeoJSONStore, GeoJSONStoreFeatures, StoreChangeHandler } from "../store/store"; export type CustomStyling = Record HexColor) | ((feature: GeoJSONStoreFeatures) => number)>; export declare enum ModeTypes { Drawing = "drawing", Select = "select", Static = "static", Render = "render" } export type BaseModeOptions = { styles?: Partial; pointerDistance?: number; validation?: Validation; projection?: Projection; }; export declare abstract class TerraDrawBaseDrawMode { protected _state: TerraDrawModeState; get state(): TerraDrawModeState; set state(_: TerraDrawModeState); protected _styles: Partial; get styles(): Partial; set styles(styling: Partial); protected behaviors: TerraDrawModeBehavior[]; protected validate: Validation | undefined; protected pointerDistance: number; protected coordinatePrecision: number; protected onStyleChange: StoreChangeHandler; protected store: GeoJSONStore; protected setDoubleClickToZoom: TerraDrawModeRegisterConfig["setDoubleClickToZoom"]; protected unproject: TerraDrawModeRegisterConfig["unproject"]; protected project: TerraDrawModeRegisterConfig["project"]; protected setCursor: TerraDrawModeRegisterConfig["setCursor"]; protected registerBehaviors(behaviorConfig: BehaviorConfig): void; protected projection: Projection; constructor(options?: BaseModeOptions); type: ModeTypes; mode: string; protected setDrawing(): void; protected setStarted(): void; protected setStopped(): void; register(config: TerraDrawModeRegisterConfig): void; validateFeature(feature: unknown): feature is GeoJSONStoreFeatures; abstract start(): void; abstract stop(): void; abstract cleanUp(): void; abstract styleFeature(feature: GeoJSONStoreFeatures): TerraDrawAdapterStyling; onFinish(finishedId: FeatureId, context: OnFinishContext): void; onDeselect(deselectedId: FeatureId): void; onSelect(selectedId: FeatureId): void; onKeyDown(event: TerraDrawKeyboardEvent): void; onKeyUp(event: TerraDrawKeyboardEvent): void; onMouseMove(event: TerraDrawMouseEvent): void; onClick(event: TerraDrawMouseEvent): void; onDragStart(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void; onDrag(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void; onDragEnd(event: TerraDrawMouseEvent, setMapDraggability: (enabled: boolean) => void): void; protected getHexColorStylingValue(value: HexColor | ((feature: GeoJSONStoreFeatures) => HexColor) | undefined, defaultValue: HexColor, feature: GeoJSONStoreFeatures): HexColor; protected getNumericStylingValue(value: number | ((feature: GeoJSONStoreFeatures) => number) | undefined, defaultValue: number, feature: GeoJSONStoreFeatures): number; private getStylingValue; } export declare abstract class TerraDrawBaseSelectMode extends TerraDrawBaseDrawMode { type: ModeTypes; abstract selectFeature(featureId: FeatureId): void; abstract deselectFeature(featureId: FeatureId): void; }