import { GraphType, GraphState, LabelState, EditorCommand, GraphCommonEvent, GraphNodeEvent, GraphEdgeEvent, GraphCanvasEvent, GraphCustomEvent } from '../constants';
import IGGroup from '@antv/g-canvas/lib/group';
import { IShape as IGShape } from '@antv/g-canvas/lib/interfaces';
import { Graph as IGraph, TreeGraph as ITreeGraph } from '@antv/g6';
import { IPoint, ShapeStyle as IShapeStyle, GraphOptions as IGraphOptions, GraphData as IGraphData, TreeGraphData as ITreeGraphData, NodeConfig as INodeConfig, EdgeConfig as IEdgeConfig, BehaviorOption as IBehaviorOption, IG6GraphEvent as IGraphEvent } from '@antv/g6/lib/types';
import { ShapeOptions as IShapeOptions } from '@antv/g6/lib/interface/shape';
import { INode, IEdge } from '@antv/g6/lib/interface/item';
export interface GShape extends IGShape {
}
export interface GGroup extends IGGroup {
}
export interface Graph extends IGraph {
}
export interface TreeGraph extends ITreeGraph {
}
export interface AnchorPoint extends IPoint {
    index: number;
}
export interface ShapeStyle extends IShapeStyle {
}
export interface FlowData extends IGraphData {
}
export interface MindData extends ITreeGraphData {
}
export interface NodeModel extends INodeConfig {
    originStyle: ShapeStyle;
}
export interface EdgeModel extends IEdgeConfig {
}
export interface GraphEvent extends IGraphEvent {
}
export interface GraphOptions extends IGraphOptions {
    /** remove 节点或线之前执行，返回true 不进行删除 */
    hjackCommand: ({ graph, node, commnadName }: {
        graph: any;
        node: any;
        commnadName: any;
    }) => boolean;
    /** 鼠标移入节点之后，节点是否高亮Point, 返回true不进行高亮 */
    hjacpHighlitghtPoint: ({ graph, node }: {
        graph: any;
        node: any;
    }) => boolean;
}
export interface CustomShape extends IShapeOptions {
}
export interface CustomNode extends CustomShape {
}
export interface CustomEdge extends CustomShape {
}
export declare type Item = Node | Edge;
export interface Node extends INode {
}
export interface Edge extends IEdge {
}
export interface Behavior extends IBehaviorOption {
    graph?: Graph;
    graphType?: GraphType;
    graphMode?: string;
    [propName: string]: any;
}
export interface Command<P = object, G = Graph> {
    /** 命令名称 */
    name: string;
    /** 命令参数 */
    params: P;
    /** 是否可以执行 */
    canExecute(graph: G): boolean;
    /** 是否应该执行 */
    shouldExecute(graph: G): boolean;
    /** 是否可以撤销 */
    canUndo(graph: G): boolean;
    /** 初始命令 */
    init(graph: G): void;
    /** 执行命令 */
    execute(graph: G): void;
    /** 撤销命令 */
    undo(graph: G): void;
    /** 命令快捷键 */
    shortcuts: string[] | string[][];
}
export interface CommandEvent {
    name: EditorCommand;
    params: object;
}
export interface GraphStateEvent {
    graphState: GraphState;
}
export interface LabelStateEvent {
    labelState: LabelState;
}
export declare type GraphNativeEvent = GraphCommonEvent | GraphNodeEvent | GraphEdgeEvent | GraphCanvasEvent | GraphCustomEvent;
export declare type GraphReactEvent = keyof typeof GraphCommonEvent | keyof typeof GraphNodeEvent | keyof typeof GraphEdgeEvent | keyof typeof GraphCanvasEvent | keyof typeof GraphCustomEvent;
export declare type GraphReactEventProps = Record<GraphReactEvent, (e: any) => void>;
