import { Group, Rect } from '@wisemapping/web2d';
import NodeModel from './model/NodeModel';
import Canvas from './Canvas';
import DragTopic from './DragTopic';
import LayoutManager from './layout/LayoutManager';
import SizeType from './SizeType';
import PositionType from './PositionType';
import CanvasElement from './CanvasElement';
export type NodeOption = {
    readOnly: boolean;
};
declare abstract class NodeGraph implements CanvasElement {
    private _mouseEvents;
    private _options;
    protected _onFocus: boolean;
    private _size;
    private _model;
    private _elem2d;
    constructor(nodeModel: NodeModel, options: NodeOption);
    abstract addToWorkspace(workspace: Canvas): void;
    abstract removeFromWorkspace(workspace: Canvas): void;
    isReadOnly(): boolean;
    getType(): string;
    setId(id: number): void;
    protected _set2DElement(elem2d: Group): void;
    get2DElement(): Group;
    abstract setPosition(point: PositionType, fireEvent: any): void;
    /** */
    addEvent(type: string, listener: any): void;
    /** */
    removeEvent(type: string, listener: any): void;
    /** */
    fireEvent(type: string, event: any): void;
    /** */
    setMouseEventsEnabled(isEnabled: boolean): void;
    /** */
    isMouseEventsEnabled(): boolean;
    getSize(): SizeType;
    setSize(size: SizeType): void;
    getModel(): NodeModel;
    setModel(model: NodeModel): void;
    getId(): number;
    abstract setOnFocus(focus: boolean): void;
    abstract closeEditors(): void;
    abstract setCursor(type: string): void;
    abstract getOuterShape(): Rect;
    isOnFocus(): boolean;
    dispose(workspace: Canvas): void;
    createDragNode(layoutManager: LayoutManager): DragTopic;
    abstract buildDragShape(): any;
    getPosition(): PositionType;
    isCentralTopic(): boolean;
}
export default NodeGraph;
