@@ -2004,7 +2004,181 @@ contract SuperformRouterPlusTest is ProtocolActions {
2004
2004
liqRequests: liqRequests
2005
2005
});
2006
2006
2007
+ // vm.startPrank(deployer);
2008
+
2009
+ // uint64 REBALANCE_FROM = ETH;
2010
+ // uint64 REBALANCE_TO = OP;
2011
+
2012
+ // // Step 1: Initial XCHAIN Deposit
2013
+ // _xChainDeposit(superformId5ETH, REBALANCE_FROM, 1);
2014
+
2015
+ // // Step 2: Start cross-chain rebalance
2016
+ // vm.makePersistent(getContract(SOURCE_CHAIN, "SuperformRouterPlusAsync"));
2017
+ // vm.makePersistent(getContract(SOURCE_CHAIN, "DAI"));
2018
+ // vm.selectFork(FORKS[SOURCE_CHAIN]);
2019
+ // // ISuperformRouterPlus.InitiateXChainRebalanceArgs memory args =
2020
+ // // _buildInitiateXChainRebalanceArgs(REBALANCE_FROM, REBALANCE_TO, deployer);
2021
+
2022
+ // ISuperformRouterPlus.InitiateXChainRebalanceArgs memory args;
2023
+ // args.id = superformId5ETH;
2024
+ // args.sharesToRedeem = SuperPositions(SUPER_POSITIONS_SOURCE).balanceOf(deployer, superformId5ETH);
2025
+ // args.interimAsset = getContract(SOURCE_CHAIN, "DAI");
2026
+ // args.receiverAddressSP = address(deployer);
2027
+ // vm.selectFork(FORKS[REBALANCE_FROM]);
2028
+ // uint256 expectedAmountOfRebalanceFrom = IBaseForm(superform5ETH).previewRedeemFrom(args.sharesToRedeem);
2029
+ // // conversion from DAI on DSTCHAIN to DAI on SOURCE CHAIN
2030
+ // args.expectedAmountInterimAsset = _convertDecimals(
2031
+ // expectedAmountOfRebalanceFrom,
2032
+ // getContract(REBALANCE_FROM, "DAI"),
2033
+ // args.interimAsset,
2034
+ // REBALANCE_FROM,
2035
+ // SOURCE_CHAIN
2036
+ // );
2037
+ // //vm.selectFork(initialFork);
2038
+ // args.finalizeSlippage = 100; // 1%
2039
+ // //args.callData = _callDataRebalanceFromXChain(args.interimAsset, superformId5ETH, REBALANCE_FROM);
2040
+
2041
+ // LiqBridgeTxDataArgs memory liqBridgeTxDataArgs = LiqBridgeTxDataArgs(
2042
+ // 1,
2043
+ // getContract(REBALANCE_TO, "DAI"),
2044
+ // getContract(REBALANCE_TO, "DAI"),
2045
+ // getContract(REBALANCE_TO, "DAI"),
2046
+ // getContract(SOURCE_CHAIN, "SuperformRouterPlusAsync"),
2047
+ // REBALANCE_TO,
2048
+ // REBALANCE_TO,
2049
+ // REBALANCE_TO,
2050
+ // false,
2051
+ // getContract(SOURCE_CHAIN, "SuperformRouterPlusAsync"),
2052
+ // uint256(REBALANCE_TO),
2053
+ // 1e18,
2054
+ // //1e18,
2055
+ // true,
2056
+ // /// @dev placeholder value, not used
2057
+ // 0,
2058
+ // 1,
2059
+ // 1,
2060
+ // 1,
2061
+ // address(0)
2062
+ // );
2063
+
2064
+ // SingleVaultSFData memory data = SingleVaultSFData(
2065
+ // superformId5ETH,
2066
+ // 1e18,
2067
+ // 1e18,
2068
+ // 100,
2069
+ // LiqRequest(_buildLiqBridgeTxData(liqBridgeTxDataArgs, false), getContract(REBALANCE_FROM, "DAI"), address(0), 1, SOURCE_CHAIN, 0),
2070
+ // "",
2071
+ // false,
2072
+ // false,
2073
+ // ROUTER_PLUS_ASYNC_SOURCE,
2074
+ // deployer,
2075
+ // ""
2076
+ // );
2077
+
2078
+ // args.callData = abi.encodeCall(
2079
+ // IBaseRouter.singleXChainSingleVaultWithdraw, SingleXChainSingleVaultStateReq(AMBs, REBALANCE_FROM, data)
2080
+ // );
2081
+
2082
+ // /// @dev rebalance to call data formulation for a xchain deposit
2083
+ // args.rebalanceToSelector = IBaseRouter.singleXChainSingleVaultDeposit.selector;
2084
+
2085
+ // args.rebalanceToAmbIds = new uint8[][](1);
2086
+ // args.rebalanceToAmbIds[0] = AMBs;
2087
+ // args.rebalanceToDstChainIds = new uint64[](1);
2088
+ // args.rebalanceToDstChainIds[0] = REBALANCE_TO;
2089
+
2090
+ // vm.selectFork(FORKS[REBALANCE_TO]);
2091
+
2092
+ // (address superformRebalanceTo,,) = superformId4OP.getSuperform();
2093
+ // address underlyingTokenRebalanceTo = IBaseForm(superformRebalanceTo).getVaultAsset();
2094
+ // /// data for a bridge from Router to Core State Registry
2095
+ // // LiqBridgeTxDataArgs memory liqBridgeTxDataArgs = LiqBridgeTxDataArgs(
2096
+ // // 1,
2097
+ // // args.interimAsset,
2098
+ // // getContract(SOURCE_CHAIN, ERC20(underlyingTokenRebalanceTo).symbol()),
2099
+ // // underlyingTokenRebalanceTo,
2100
+ // // getContract(SOURCE_CHAIN, "SuperformRouter"),
2101
+ // // SOURCE_CHAIN,
2102
+ // // REBALANCE_TO,
2103
+ // // REBALANCE_TO,
2104
+ // // false,
2105
+ // // getContract(REBALANCE_TO, "CoreStateRegistry"),
2106
+ // // uint256(REBALANCE_TO),
2107
+ // // 1e18,
2108
+ // // //1e18,
2109
+ // // false,
2110
+ // // /// @dev placeholder value, not used
2111
+ // // 0,
2112
+ // // 1,
2113
+ // // 1,
2114
+ // // 1,
2115
+ // // address(0)
2116
+ // // );
2117
+
2118
+ // // conversion from USDC on SOURCE CHAIN to DAI on DSTCHAIN
2119
+ // uint256 expectedAmountToReceiveAfterBridge = _convertDecimals(
2120
+ // args.expectedAmountInterimAsset,
2121
+ // args.interimAsset,
2122
+ // getContract(REBALANCE_TO, "DAI"),
2123
+ // SOURCE_CHAIN,
2124
+ // REBALANCE_TO
2125
+ // );
2126
+
2127
+ // uint256 expectedOutputAmount = IBaseForm(superform4OP).previewDepositTo(expectedAmountToReceiveAfterBridge);
2128
+
2129
+ // SingleVaultSFData memory sfData = SingleVaultSFData({
2130
+ // superformId: superformId4OP,
2131
+ // amount: expectedAmountToReceiveAfterBridge,
2132
+ // outputAmount: expectedOutputAmount,
2133
+ // maxSlippage: 100,
2134
+ // liqRequest: LiqRequest({
2135
+ // txData: _buildLiqBridgeTxData(liqBridgeTxDataArgs, false),
2136
+ // token: args.interimAsset,
2137
+ // interimToken: address(0),
2138
+ // bridgeId: 1,
2139
+ // liqDstChainId: REBALANCE_TO,
2140
+ // nativeAmount: 0
2141
+ // }),
2142
+ // permit2data: "",
2143
+ // hasDstSwap: false,
2144
+ // retain4626: false,
2145
+ // receiverAddress: address(deployer),
2146
+ // receiverAddressSP: address(deployer),
2147
+ // extraFormData: ""
2148
+ // });
2149
+ // args.rebalanceToSfData = abi.encode(sfData);
2150
+
2151
+ // vm.selectFork(REBALANCE_FROM);
2152
+
2153
+ // vm.startPrank(deployer);
2154
+
2155
+ // SuperPositions(SUPER_POSITIONS_SOURCE).increaseAllowance(
2156
+ // ROUTER_PLUS_SOURCE, superformId5ETH, args.sharesToRedeem
2157
+ // );
2158
+ // vm.recordLogs();
2159
+ // SuperformRouterPlus(ROUTER_PLUS_SOURCE).startCrossChainRebalance{ value: 2 ether }(args);
2160
+
2161
+ // // Step 3: Process XChain Withdraw (rebalance from)
2162
+ // uint256 balanceOfInterimAssetBefore =
2163
+ // MockERC20(args.interimAsset).balanceOf(getContract(SOURCE_CHAIN, "SuperformRouterPlusAsync"));
2164
+
2165
+ // _processXChainWithdrawOneVault(SOURCE_CHAIN, REBALANCE_FROM, vm.getRecordedLogs(), 2);
2166
+
2167
+ // vm.selectFork(FORKS[SOURCE_CHAIN]);
2168
+ // uint256 balanceOfInterimAssetAfter =
2169
+ // MockERC20(args.interimAsset).balanceOf(getContract(SOURCE_CHAIN, "SuperformRouterPlusAsync"));
2170
+
2171
+ // uint256 interimAmountOnRouterPlusAsync = balanceOfInterimAssetAfter - balanceOfInterimAssetBefore;
2172
+
2173
+ // ISuperformRouterPlusAsync.CompleteCrossChainRebalanceArgs memory completeArgs =
2174
+ // _buildCompleteCrossChainRebalanceArgs(interimAmountOnRouterPlusAsync, superformId4OP, REBALANCE_TO);
2175
+
2176
+ // Step 4: Complete cross-chain rebalance
2007
2177
vm.startPrank (deployer);
2178
+ //completeArgs.amountReceivedInterimAsset = completeArgs.amountReceivedInterimAsset / 3;
2179
+ //completeArgs.liqRequests[0][0].token = getContract(SOURCE_CHAIN, "DAI");
2180
+ //completeArgs.liqRequests[0][0].interimToken = getContract(SOURCE_CHAIN, "DAI");
2181
+ completeArgs.receiverAddressSP = address (12345 );
2008
2182
vm.expectRevert (ISuperformRouterPlusAsync.COMPLETE_REBALANCE_DIFFERENT_RECEIVER.selector );
2009
2183
SuperformRouterPlusAsync (ROUTER_PLUS_ASYNC_SOURCE).completeCrossChainRebalance { value: 1 ether }(completeArgs);
2010
2184
vm.stopPrank ();
0 commit comments