import type { TreeNode } from './types';
export declare enum ChangeType {
    Inserted = "inserted",
    Deleted = "deleted",
    Moved = "moved",
    Unchanged = "unchanged",
    Updated = "updated"
}
export type Change = [ChangeType.Unchanged] | [ChangeType.Inserted] | [ChangeType.Deleted] | [ChangeType.Updated] | [ChangeType.Moved] | [ChangeType.Moved, ChangeType.Updated];
export type DiffTree<TValue> = [DiffTreeNode<TValue>] | [DiffTreeNode<TValue>, DiffTreeNode<TValue>];
export type DiffTreeNode<TValue> = Omit<TreeNode<{
    value: TValue;
}>, 'children'> & {
    change: Change;
    children: DiffTreeNode<TValue>[];
};
export { TreeNode };
export declare function diffTrees<TValue>(treeA: TreeNode<{
    value: TValue;
}>, treeB: TreeNode<{
    value: TValue;
}>, options?: {
    valueEquality: (a: TValue, b: TValue) => boolean;
}): DiffTree<TValue>;
//# sourceMappingURL=diff-tree.d.ts.map