import type { INode, IWorkflowBase } from '.'; export type DiffableNode = Pick; export type DiffableWorkflow = { nodes: N[]; }; export declare const enum NodeDiffStatus { Eq = "equal", Modified = "modified", Added = "added", Deleted = "deleted" } export type NodeDiff = { status: NodeDiffStatus; node: T; }; export type WorkflowDiff = Map>; export declare function compareNodes(base: T | undefined, target: T | undefined): boolean; export declare function compareWorkflowsNodes(base: T[], target: T[], nodesEqual?: (base: T | undefined, target: T | undefined) => boolean): WorkflowDiff; export declare class WorkflowChangeSet { nodes: WorkflowDiff; constructor(nodes?: WorkflowDiff); hasChanges(): boolean; mergeNext(wcs: WorkflowChangeSet): void; } declare function mergeAdditiveChanges(_prev: GroupedWorkflowHistory>, next: GroupedWorkflowHistory>, diff: WorkflowDiff): boolean; export declare const RULES: { mergeAdditiveChanges: typeof mergeAdditiveChanges; }; type GroupedWorkflowHistory> = { workflowChangeSet: WorkflowChangeSet; groupedWorkflows: W[]; from: W; to: W; }; export type DiffRule = (prev: GroupedWorkflowHistory, next: GroupedWorkflowHistory, diff: WorkflowDiff) => boolean; export declare function groupWorkflows(workflows: W[], rules: Array>): Array>; export {}; //# sourceMappingURL=workflow-diff.d.ts.map