import { INodeExport, INodeState, NodeState } from "./nodeState";
import { PortState } from "./portState";
import { RootStore } from "./rootStore";
import { Point } from "../utils/point";
import { ErrorResult } from "../utils/result";
import { ILinkState, ILinkStateWithId, LinkState } from './linkState';
export declare class Callbacks {
    private _onNodesAddResult?;
    private _onNodesRemoveResult?;
    private _onNodePositionChanged?;
    private _onNodeLabelChanged?;
    private _onNodeTypeChanged?;
    private _onNodeDataChanged?;
    private _onNodeIsSelectionEnabledChanged?;
    private _onNodeIsDragEnabledChanged?;
    private _onDragStarted?;
    private _onDrag?;
    private _onDragEnded?;
    private _onImportedStateRendered?;
    private _onLinkValidation?;
    private _onLinksAddResult?;
    private _onLinksRemoveResult?;
    private _onLinkingStarted?;
    private _onLinkingEnded?;
    private _rootStore;
    constructor(rootStore: RootStore);
    import: (callbacks?: ICallbacks | undefined) => void;
    export: () => ICallbacks;
    linkValidation: (info: OnLinkValidation) => boolean;
    nodesAdded: (info: OnNodesAddResult) => void;
    nodesRemoved: (info: OnNodesRemoveResult) => void;
    nodePositionChanged: (node: NodeState, change: PropertyChange<Point>) => void;
    nodeTypeChanged: (node: NodeState, change: PropertyChange<string | undefined>) => void;
    nodeLabelChanged: (node: NodeState, change: PropertyChange<string | undefined>) => void;
    nodeDataChanged: (node: NodeState, change: PropertyChange<any>) => void;
    nodeIsSelectionEnabledChanged: (node: NodeState, change: PropertyChange<boolean | undefined>) => void;
    nodeIsDragEnabledChanged: (node: NodeState, change: PropertyChange<boolean | undefined>) => void;
    dragStarted: (info: OnDragStarted) => void;
    drag: (info: OnDrag) => void;
    dragEnded: (info: OnDragEnded) => void;
    importedStateRendered: () => void;
    linksAdded: (info: OnLinksAddResult) => void;
    linksRemoved: (info: OnLinksRemoveResult) => void;
    linkingStarted: (info: OnLinkingStarted) => void;
    linkingEnded: (info: OnLinkingEnded) => void;
}
export interface ICallbacks {
    onNodesAddResult?: (info: OnNodesAddResult, rootStore: RootStore) => void;
    onNodesRemoveResult?: (info: OnNodesRemoveResult, rootStore: RootStore) => void;
    onNodePositionChanged?: (info: OnNodePositionChanged, rootStore: RootStore) => void;
    onNodeLabelChanged?: (info: OnNodeLabelChanged, rootStore: RootStore) => void;
    onNodeTypeChanged?: (info: OnNodeTypeChanged, rootStore: RootStore) => void;
    onNodeDataChanged?: (info: OnNodeDataChanged, rootStore: RootStore) => void;
    onNodeIsSelectionEnabledChanged?: (info: OnNodeIsSelectionEnabledChanged, rootStore: RootStore) => void;
    onNodeIsDragEnabledChanged?: (info: OnNodeIsDragEnabledChanged, rootStore: RootStore) => void;
    onDragStarted?: (info: OnDragStarted, rootStore: RootStore) => void;
    onDrag?: (info: OnDrag, rootStore: RootStore) => void;
    onDragEnded?: (info: OnDragEnded, rootStore: RootStore) => void;
    onImportedStateRendered?: (rootStore: RootStore) => void;
    onLinkValidation?: (info: OnLinkValidation, rootStore: RootStore) => boolean;
    onLinksAddResult?: (info: OnLinksAddResult, rootStore: RootStore) => void;
    onLinksRemoveResult?: (info: OnLinksRemoveResult, rootStore: RootStore) => void;
    onLinkingStarted?: (info: OnLinkingStarted, rootStore: RootStore) => void;
    onLinkingEnded?: (info: OnLinkingEnded, rootStore: RootStore) => void;
}
export interface OnDragStarted {
    nodes: NodeState[];
}
export interface OnDrag {
    nodes: NodeState[];
    delta: Point;
}
export interface OnDragEnded {
    nodes: NodeState[];
}
export interface OnNodePropertyChanged<TValue> extends PropertyChange<TValue> {
    node: NodeState;
}
export interface OnNodePositionChanged extends OnNodePropertyChanged<Point> {
}
export interface OnNodeLabelChanged extends OnNodePropertyChanged<string | undefined> {
}
export interface OnNodeTypeChanged extends OnNodePropertyChanged<string | undefined> {
}
export interface OnNodeDataChanged extends OnNodePropertyChanged<any> {
}
export interface OnNodeIsSelectionEnabledChanged extends OnNodePropertyChanged<boolean | undefined> {
}
export interface OnNodeIsDragEnabledChanged extends OnNodePropertyChanged<boolean | undefined> {
}
export interface OnNodesAddResult {
    addedNodes: NodeState[];
    failedToAddNodes: ErrorResult<INodeState>[];
    importing: boolean;
}
export interface OnNodesRemoveResult {
    removedNodes: INodeExport[];
    failedToRemoveNodeIds: string[];
}
export interface OnLinkValidation {
    source: PortState;
    target: PortState;
}
export interface OnLinksAddResult {
    addedLinks: LinkState[];
    failedToAddLinks: ErrorResult<ILinkState>[];
    importing: boolean;
}
export interface OnLinksRemoveResult {
    removedLinks: ILinkStateWithId[];
    failedToRemoveLinkIds: string[];
}
export interface OnLinkingStarted {
    sourcePort: PortState;
}
export interface OnLinkingEnded {
    sourcePort: PortState;
    targetPort?: PortState;
    linked: boolean;
}
export declare type PropertyChange<TValue> = {
    oldValue: TValue;
    newValue: TValue;
};
//# sourceMappingURL=callbacks.d.ts.map