import { EdgeData, NodeData, PortData } from '../types';
/**
 * Helper function for upserting a node in a edge.
 */
export declare function upsertNode(nodes: NodeData[], edges: EdgeData[], edge: EdgeData, newNode: NodeData): {
    nodes: NodeData<any>[];
    edges: EdgeData<any>[];
};
/**
 * Helper function for removing a node between edges and
 * linking the children.
 */
export declare function removeAndUpsertNodes(nodes: NodeData[], edges: EdgeData[], removeNodes: NodeData | NodeData[], onNodeLinkCheck?: (newNodes: NodeData[], newEdges: EdgeData[], from: NodeData, to: NodeData, port?: PortData) => undefined | boolean): {
    edges: EdgeData<any>[];
    nodes: NodeData<any>[];
};
/**
 * Helper function to remove a node and its related edges.
 */
export declare function removeNode(nodes: NodeData[], edges: EdgeData[], removeNodes: string | string[]): {
    nodes: any[];
    edges: any[];
};
/**
 * Helper function to remove a node's related edges.
 */
export declare function removeEdgesFromNode(nodeId: string, edges: EdgeData[]): EdgeData<any>[];
/**
 * Remove edge(s)
 */
export declare function removeEdge(edges: EdgeData[], edge: EdgeData | EdgeData[]): EdgeData<any>[];
/**
 * Create an edge given 2 nodes.
 */
export declare function createEdgeFromNodes(fromNode: NodeData, toNode: NodeData): {
    id: string;
    from: string;
    to: string;
    parent: string;
};
/**
 * Add a node and optional edge.
 */
export declare function addNodeAndEdge(nodes: NodeData[], edges: EdgeData[], node: NodeData, toNode?: NodeData): {
    nodes: NodeData<any>[];
    edges: (EdgeData<any> | {
        id: string;
        from: string;
        to: string;
        parent: string;
    })[];
};
