import { IDragon, INode } from '@alilc/lowcode-designer';
import { dragonSymbol, nodeSymbol } from '../symbols';
import { IPublicModelDragon, IPublicModelLocateEvent, IPublicModelDragObject, IPublicTypeDragNodeDataObject, IPublicModelNode, IPublicTypeDragObject } from '@alilc/lowcode-types';
export declare const innerDragonSymbol: unique symbol;
export declare class Dragon implements IPublicModelDragon {
    readonly workspaceMode: boolean;
    private readonly [innerDragonSymbol];
    constructor(innerDragon: IDragon, workspaceMode: boolean);
    get [dragonSymbol](): IDragon;
    static create(dragon: IDragon | null, workspaceMode: boolean): IPublicModelDragon | null;
    /**
     * is dragging or not
     */
    get dragging(): boolean;
    /**
     * 绑定 dragstart 事件
     * @param func
     * @returns
     */
    onDragstart(func: (e: IPublicModelLocateEvent) => any): () => void;
    /**
     * 绑定 drag 事件
     * @param func
     * @returns
     */
    onDrag(func: (e: IPublicModelLocateEvent) => any): () => void;
    /**
     * 绑定 dragend 事件
     * @param func
     * @returns
     */
    onDragend(func: (o: {
        dragObject: IPublicModelDragObject;
        copy?: boolean;
    }) => any): () => void;
    /**
     * 设置拖拽监听的区域 shell，以及自定义拖拽转换函数 boost
     * @param shell 拖拽监听的区域
     * @param boost 拖拽转换函数
     */
    from(shell: Element, boost: (e: MouseEvent) => IPublicTypeDragNodeDataObject | null): any;
    /**
     * boost your dragObject for dragging(flying) 发射拖拽对象
     *
     * @param dragObject 拖拽对象
     * @param boostEvent 拖拽初始时事件
     */
    boost(dragObject: IPublicTypeDragObject, boostEvent: MouseEvent | DragEvent, fromRglNode?: IPublicModelNode & {
        [nodeSymbol]: INode;
    }): void;
    /**
     * 添加投放感应区
     */
    addSensor(sensor: any): void;
    /**
     * 移除投放感应
     */
    removeSensor(sensor: any): void;
}
