import {TreeNode} from "../TreeNode";
import {NestedTestableNodeData} from "../InMemoryTestableNode";
import {NestedBranchData, NestedTieredData} from "../MemoryBranchNode";
import {TieredExtraData} from "../StateBranchNode";
import {OfferData} from "../store";

export interface CloneTierAction {
    canCloneTier: (treeNode: TreeNode) => boolean;
    cloneTier: <Expected = any>(
        nestedTestableNodeData: NestedTestableNodeData,
        nestedBranchData: NestedBranchData<NestedBranchData | OfferData, TieredExtraData>,
        targetTreeNodeToClone: TreeNode,
    ) => Expected | void
}