///
///
import { ILayer, Scene } from '@antv/l7';
import { Feature } from '@turf/turf';
import EventEmitter from 'eventemitter3';
import { DrawEvent } from '../constant';
import { Cursor, Popup } from '../interactive';
import { SceneRender } from '../render';
import { Source } from '../source';
import { DeepPartial, IBaseFeature, IBaseModeOptions, ICursorType, ILngLat, IRenderType, ISceneMouseEvent, PopupContent, RenderMap } from '../typings';
export declare abstract class BaseMode extends EventEmitter {
static instances: BaseMode[];
/**
* L7 场景实例,在构造器中传入
*/
protected scene: Scene;
/**
* 数据管理中心
*/
protected source: Source;
/**
* 渲染器render对象
*/
protected render: RenderMap;
/**
* 指针管理器
* @protected
*/
protected cursor: Cursor;
/**
* Drawer 配置
*/
protected options: O;
/**
* 当前Drawer是否为开启绘制状态
*/
protected enabled: boolean;
protected allowCreate: boolean;
/**
* scene相关事件管理
* @protected
*/
protected sceneRender: SceneRender;
/**
* 光标在地图上的经纬度位置
* @protected
*/
protected mouseLngLat: ILngLat;
protected popup?: Popup;
/**
* 本次enable添加的绘制物个数
* @protected
*/
protected addCount: number;
/**
* 当期是否可以添加新的绘制物
*/
get addable(): boolean;
constructor(scene: Scene, options: DeepPartial);
protected abstract get dragItem(): Feature | null | undefined;
protected abstract get editItem(): Feature | null | undefined;
/**
* 获取当前options配置的方法
*/
getOptions(): O;
/**
* 获取当前激活的绘制项
*/
getEditItem(): Feature | null | undefined;
/**
* 获取当前正在被拖拽的绘制项
*/
getDragItem(): Feature | null | undefined;
/**
* 获取当前Drawer需要用到的render类型数据,避免创建无效的Render
*/
abstract getRenderTypes(): IRenderType[];
/**
* 获取当前Drawer默认参数
* @param options
*/
abstract getDefaultOptions(options: DeepPartial): O;
/**
* 获取数据
*/
abstract getData(getOriginData?: boolean): Feature[];
/**
* 获取主图层实例
*/
abstract getMainLayer(): ILayer[];
/**
* 设置数据
* @param data
*/
abstract setData(data: Feature[]): void;
setHelper(type: PopupContent | keyof O['helper'] | null): void;
/**
* 获取当前是否为编辑态
*/
isEnable(): boolean;
/**
* 绑定回调函数的this指向
*/
bindThis(): void;
bindCommonEvent(): void;
/**
* 绑定判断 select 事件方法
* @param emit
*/
bindEmitSelectEvent(emit?: boolean): void;
/**
* 监听通用事件
*/
bindEnableEvent(): void;
/**
* 监听通用事件
*/
unbindEnableEvent(): void;
bindKeyboardEvent(): void;
unbindKeyboardEvent(): void;
saveMouseLngLat: import("lodash").DebouncedFunc<(e: ISceneMouseEvent) => void>;
/**
* 触发change事件,同时触发保存数据备份
*/
emitChangeEvent(): void;
/**
* 保存当前数据备份
*/
saveHistory: import("lodash").DebouncedFunc<() => void>;
/**
* 回退至上一次数据备份
*/
revertHistory(): void;
/**
* 重做回退之前的数据备份
*/
redoHistory(): void;
/**
* 获取 renderType 与对应 L7图层的键值对
*/
getRenderLayers(): import("lodash").Dictionary;
getTargetFeature(target: Feature | string | null | undefined, data?: Feature[]): IBaseFeature | null;
abstract setActiveFeature(target: Feature | string | null | undefined): void;
abstract resetFeatures(): void;
/**
* 删除当前active的绘制物
*/
removeActiveFeature(): Feature | undefined;
/**
* 删除指定
* @param target
*/
removeFeature(target: Feature | string): void;
/**
* 矫正正在绘制Feature的虚线部分(Drawer中都是在onSceneMouseMove中进行绘制)
*/
correctDrawItem(): void;
/**
* 根据子类实现的 getRenderTypes 方法,初始化对应的Render实例。
*/
initRender(): RenderMap;
/**
* 光标在地图上移动时的回调,子类均会重写该方法
* @param e
*/
abstract onSceneMouseMove(e: ISceneMouseEvent): void;
/**
* 根据用户传入的options返回通用的options默认配置
* @param options
*/
getCommonOptions(options: DeepPartial): IBaseModeOptions;
/**
* 设置地图上光标样式类型
* @param cursor
*/
setCursor(cursor: ICursorType | null): void;
/**
* 重置光标到常规状态
*/
resetCursor(): void;
/**
* 启用 Drawer
* @param allowCreate 是否支持添加操作
*/
enable(allowCreate?: boolean): void;
/**
* 禁用Drawer
*/
disable(): void;
/**
* 清空所有数据
*/
clear(disable?: boolean): void;
/**
* 显示该Drawer下所有图层
*/
show(): void;
/**
* 隐藏该Drawer下所有图层
*/
hide(): void;
/**
* 销毁当前Drawer
*/
destroy(): void;
}