import type { EdgeChange, NodeChange, WorkflowEdge, WorkflowNode } from "../editor";
/**
 * Apply a batch of node changes to an existing node list. Returns a
 * **new array** if anything changed, the **same array** otherwise (so
 * React.memo'd children don't re-render unnecessarily).
 */
export declare function applyNodeChanges<TData = unknown>(nodes: WorkflowNode<TData>[], changes: NodeChange<TData>[]): WorkflowNode<TData>[];
/**
 * Apply a batch of edge changes. Same shape as `applyNodeChanges`.
 */
export declare function applyEdgeChanges<TData = unknown>(edges: WorkflowEdge<TData>[], changes: EdgeChange<TData>[]): WorkflowEdge<TData>[];
export declare const change: {
    node: {
        add<TData>(item: WorkflowNode<TData>): NodeChange<TData>;
        remove<TData>(id: string): NodeChange<TData>;
        position<TData>(id: string, position: {
            x: number;
            y: number;
        }, dragging: boolean): NodeChange<TData>;
        dimensions<TData>(id: string, dimensions: {
            width: number;
            height: number;
        }): NodeChange<TData>;
        select<TData>(id: string, selected: boolean): NodeChange<TData>;
        replace<TData>(id: string, item: WorkflowNode<TData>): NodeChange<TData>;
    };
    edge: {
        add<TData>(item: WorkflowEdge<TData>): EdgeChange<TData>;
        remove<TData>(id: string): EdgeChange<TData>;
        select<TData>(id: string, selected: boolean): EdgeChange<TData>;
        replace<TData>(id: string, item: WorkflowEdge<TData>): EdgeChange<TData>;
    };
};
//# sourceMappingURL=changes.d.ts.map