import type { Edge, EdgeAddChange, EdgeChange, EdgeRemoveChange, EdgeSelectionChange, ElementChange, FlowElement, FlowElements, GraphEdge, GraphNode, Node, NodeAddChange, NodeChange, NodeRemoveChange, NodeSelectionChange, } from '../types' export declare const applyChanges: < T extends Node | Edge | FlowElement = Node, C extends ElementChange = T extends GraphNode ? NodeChange : EdgeChange, >( changes: C[], elements: T[], ) => T[] export declare const applyEdgeChanges: (changes: EdgeChange[], edges: GraphEdge[]) => GraphEdge[] export declare const applyNodeChanges: (changes: NodeChange[], nodes: GraphNode[]) => GraphNode[] export declare const createSelectionChange: (id: string, selected: boolean) => NodeSelectionChange | EdgeSelectionChange export declare const createAdditionChange: < T extends GraphNode | GraphEdge = GraphNode, C extends EdgeAddChange | NodeAddChange = T extends GraphNode ? NodeAddChange : EdgeAddChange, >( item: T, ) => C export declare const createRemoveChange: (id: string) => NodeRemoveChange | EdgeRemoveChange export declare const getSelectionChanges: (items: FlowElements, selectedIds: string[]) => NodeSelectionChange[]