@pendle/core-v2 0.20.1-testnet → 0.21.0-testnet

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  14. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +34 -2
  16. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  18. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  19. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  24. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  30. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  32. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  36. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  38. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  40. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  43. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  45. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.json +141 -0
  49. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.json +141 -0
  51. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +4 -0
  52. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.json +10 -0
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +143 -2
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.dbg.json +4 -0
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.json +1257 -0
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.dbg.json +4 -0
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.json +1244 -0
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +4 -0
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +1218 -0
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +4 -0
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +1192 -0
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +4 -0
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.json +10 -0
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +4 -0
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.json +133 -0
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +4 -0
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.json +10 -0
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +4 -0
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.json +40 -0
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +4 -0
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.json +322 -0
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +4 -0
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.json +1171 -0
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +4 -0
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.json +10 -0
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +4 -0
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.json +133 -0
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +143 -2
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +143 -2
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +143 -2
  87. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.json +141 -0
  89. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +143 -2
  91. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  92. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +143 -2
  93. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  94. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  95. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  96. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  97. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  98. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  99. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  100. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.json +2 -2
  101. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  102. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +39 -2
  103. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +4 -0
  104. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.json +10 -0
  105. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +4 -0
  106. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.json +24 -0
  107. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +4 -0
  108. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.json +133 -0
  109. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +4 -0
  110. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.json +328 -0
  111. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +4 -0
  112. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.json +467 -0
  113. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +4 -0
  114. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.json +61 -0
  115. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +4 -0
  116. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.json +30 -0
  117. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +4 -0
  118. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.json +398 -0
  119. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +4 -0
  120. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.json +24 -0
  121. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +4 -0
  122. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.json +278 -0
  123. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.json +18 -0
  125. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  127. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  129. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  131. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  132. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  133. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  134. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.json +19 -0
  135. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  137. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  138. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  139. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  140. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  141. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -2
  142. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +4 -0
  143. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.json +322 -0
  144. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.dbg.json +4 -0
  145. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.json +47 -0
  146. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  147. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +2 -2
  148. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  149. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +2 -2
  150. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  151. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
  152. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  153. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +2 -2
  154. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  155. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
  156. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  157. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +2 -2
  158. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  159. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
  160. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  161. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +2 -2
  162. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  163. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  164. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  165. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  166. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  167. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  168. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  169. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
  170. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
  171. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +1 -1
  172. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  173. package/build/artifacts/contracts/router/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +4 -0
  174. package/build/artifacts/contracts/router/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.json +10 -0
  175. package/build/artifacts/contracts/router/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
  176. package/build/artifacts/contracts/router/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +65 -0
  177. package/build/artifacts/contracts/router/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +4 -0
  178. package/build/artifacts/contracts/router/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +388 -0
  179. package/build/artifacts/contracts/router/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +4 -0
  180. package/build/artifacts/contracts/router/kyberswap/interfaces/IHashflow.sol/IHashflow.json +101 -0
  181. package/build/artifacts/contracts/router/kyberswap/interfaces/IMetaAggregationRouter.sol/IMetaAggregationRouter.dbg.json +4 -0
  182. package/build/artifacts/contracts/router/kyberswap/interfaces/IMetaAggregationRouter.sol/IMetaAggregationRouter.json +183 -0
  183. package/build/artifacts/contracts/router/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
  184. package/build/artifacts/contracts/router/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +215 -0
  185. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +7 -9
  186. package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +10 -0
  187. package/contracts/core/StandardizedYield/SYBase.sol +23 -5
  188. package/contracts/core/StandardizedYield/StEthHelper.sol +71 -0
  189. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol +170 -0
  190. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol +162 -0
  191. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol +134 -0
  192. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol +154 -0
  193. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +289 -0
  194. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol +618 -0
  195. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol +68 -0
  196. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol +322 -0
  197. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol +390 -0
  198. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol +329 -0
  199. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol +30 -0
  200. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol +189 -0
  201. package/contracts/core/libraries/ArrayLib.sol +6 -3
  202. package/contracts/core/libraries/Errors.sol +4 -0
  203. package/contracts/interfaces/Balancer/IAsset.sol +4 -0
  204. package/contracts/interfaces/Balancer/IBalancerFees.sol +6 -0
  205. package/contracts/interfaces/Balancer/IBalancerStablePreview.sol +22 -0
  206. package/contracts/interfaces/Balancer/IBasePool.sol +30 -0
  207. package/contracts/interfaces/Balancer/IComposableStable.sol +39 -0
  208. package/contracts/interfaces/Balancer/IGauge.sol +10 -0
  209. package/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol +6 -0
  210. package/contracts/interfaces/Balancer/IMetaStablePool.sol +31 -0
  211. package/contracts/interfaces/Balancer/IRateProvider.sol +6 -0
  212. package/contracts/interfaces/Balancer/IVault.sol +78 -0
  213. package/contracts/interfaces/ConvexCurve/IRewards.sol +5 -0
  214. package/contracts/interfaces/IApeStaking.sol +1 -1
  215. package/contracts/interfaces/IPFeeDistributor.sol +2 -0
  216. package/contracts/offchain-helpers/Multicall2.sol +103 -0
  217. package/contracts/offchain-helpers/PendleMulticall.sol +26 -0
  218. package/contracts/router/kyberswap/AggregationRouterHelper.sol +193 -205
  219. package/contracts/router/kyberswap/ScaleDataHelperEthereum1.sol +147 -0
  220. package/contracts/router/kyberswap/interfaces/IAggregationExecutor.sol +17 -0
  221. package/contracts/router/kyberswap/interfaces/IExecutorHelperEthereum1.sol +191 -0
  222. package/contracts/router/kyberswap/interfaces/IHashflow.sol +30 -0
  223. package/contracts/router/kyberswap/interfaces/IMetaAggregationRouter.sol +33 -0
  224. package/contracts/router/kyberswap/interfaces/IMetaAggregationRouterV2.sol +42 -0
  225. package/deployments/43113-helper.json +2 -1
  226. package/deployments/80001-helper.json +2 -1
  227. package/deployments/80001-markets/USDC-DEC-8TH.json +10 -0
  228. package/package.json +6 -6
  229. package/typechain-types/GMXPreviewHelper.ts +134 -0
  230. package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
  231. package/typechain-types/IAggregationExecutor.ts +182 -0
  232. package/typechain-types/IExecutorHelperEthereum1.ts +643 -0
  233. package/typechain-types/IGMXVault.ts +494 -0
  234. package/typechain-types/IGlpManager.ts +115 -0
  235. package/typechain-types/IHashflow.ts +159 -0
  236. package/typechain-types/IKyberSwapAggregationRouterHelper.ts +109 -0
  237. package/typechain-types/IMetaAggregationRouter.ts +213 -0
  238. package/typechain-types/IMetaAggregationRouterV2.ts +221 -0
  239. package/typechain-types/IPFeeDistributor.ts +18 -0
  240. package/typechain-types/IPYieldTokenV2.ts +915 -0
  241. package/typechain-types/IRewardRouterV2.ts +303 -0
  242. package/typechain-types/IRewards.ts +35 -5
  243. package/typechain-types/ISwapAggregator.ts +124 -0
  244. package/typechain-types/IVaultPriceFeed.ts +114 -0
  245. package/typechain-types/InterestManagerYTV2.ts +124 -0
  246. package/typechain-types/PendleAura3EthSY.ts +0 -39
  247. package/typechain-types/PendleAuraCbethWstethSY.ts +0 -39
  248. package/typechain-types/PendleAuraWethWstethSY.ts +0 -39
  249. package/typechain-types/PendleConvexLPSY.ts +204 -0
  250. package/typechain-types/PendleCurveFraxUsdcSY.ts +204 -0
  251. package/typechain-types/PendleCurveUsdd3CrvSY.ts +204 -0
  252. package/typechain-types/PendleFeeDistributor.ts +37 -0
  253. package/typechain-types/PendleGlpSY.ts +1449 -0
  254. package/typechain-types/PendleLooksStakingSY.ts +204 -0
  255. package/typechain-types/PendleMulticall.ts +110 -0
  256. package/typechain-types/PendlePrincipalTokenV2.ts +614 -0
  257. package/typechain-types/PendleQiTokenSY.ts +204 -0
  258. package/typechain-types/PendleWstEthSY.ts +204 -0
  259. package/typechain-types/PendleYieldContractFactoryV2.ts +801 -0
  260. package/typechain-types/PendleYieldTokenV2.ts +1304 -0
  261. package/typechain-types/SAPE.ts +204 -0
  262. package/typechain-types/SYBase.ts +204 -0
  263. package/typechain-types/SYBaseWithRewards.ts +204 -0
  264. package/typechain-types/SwapAggregator.ts +406 -0
  265. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1 -1
  266. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  267. package/typechain-types/factories/ActionMintRedeem__factory.ts +1 -1
  268. package/typechain-types/factories/ActionMisc__factory.ts +1 -1
  269. package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
  270. package/typechain-types/factories/ActionSwapPT__factory.ts +1 -1
  271. package/typechain-types/factories/ActionSwapYT__factory.ts +1 -1
  272. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  273. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  274. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  275. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  276. package/typechain-types/factories/Errors__factory.ts +38 -1
  277. package/typechain-types/factories/GMXPreviewHelper__factory.ts +78 -0
  278. package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
  279. package/typechain-types/factories/IAggregationExecutor__factory.ts +84 -0
  280. package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +407 -0
  281. package/typechain-types/factories/IGMXVault__factory.ts +320 -0
  282. package/typechain-types/factories/IGlpManager__factory.ts +55 -0
  283. package/typechain-types/factories/IHashflow__factory.ts +113 -0
  284. package/typechain-types/factories/IKyberSwapAggregationRouterHelper__factory.ts +56 -0
  285. package/typechain-types/factories/IMetaAggregationRouterV2__factory.ts +234 -0
  286. package/typechain-types/factories/IMetaAggregationRouter__factory.ts +202 -0
  287. package/typechain-types/factories/IPFeeDistributor__factory.ts +19 -0
  288. package/typechain-types/factories/IPYieldTokenV2__factory.ts +702 -0
  289. package/typechain-types/factories/IRewardRouterV2__factory.ts +180 -0
  290. package/typechain-types/factories/IRewards__factory.ts +18 -0
  291. package/typechain-types/factories/ISwapAggregator__factory.ts +66 -0
  292. package/typechain-types/factories/IVaultPriceFeed__factory.ts +60 -0
  293. package/typechain-types/factories/InterestManagerYTV2__factory.ts +63 -0
  294. package/typechain-types/factories/MarketMathStatic__factory.ts +1 -1
  295. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  296. package/typechain-types/factories/PendleAura3EthSY__factory.ts +1 -40
  297. package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1 -40
  298. package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1 -40
  299. package/typechain-types/factories/PendleConvexLPSY__factory.ts +141 -0
  300. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +142 -1
  301. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +142 -1
  302. package/typechain-types/factories/PendleFeeDistributor__factory.ts +33 -1
  303. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  304. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  305. package/typechain-types/factories/PendleGlpSY__factory.ts +1255 -0
  306. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +142 -1
  307. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  308. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  309. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  310. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  311. package/typechain-types/factories/PendleMulticall__factory.ts +100 -0
  312. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +564 -0
  313. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  314. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  315. package/typechain-types/factories/PendleQiTokenSY__factory.ts +142 -1
  316. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  317. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  318. package/typechain-types/factories/PendleWstEthSY__factory.ts +142 -1
  319. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +674 -0
  320. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  321. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1122 -0
  322. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  323. package/typechain-types/factories/RouterStatic__factory.ts +1 -1
  324. package/typechain-types/factories/SAPE__factory.ts +142 -1
  325. package/typechain-types/factories/SYBaseWithRewards__factory.ts +141 -0
  326. package/typechain-types/factories/SYBase__factory.ts +141 -0
  327. package/typechain-types/factories/SwapAggregator__factory.ts +309 -0
  328. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  329. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  330. package/typechain-types/hardhat.d.ts +103 -13
  331. package/typechain-types/index.ts +24 -4
  332. package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.dbg.json +0 -4
  333. package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.json +0 -136
  334. package/contracts/router/kyberswap/IMultihopRouterEthereum.sol +0 -141
@@ -1,12 +1,19 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
 
3
3
  pragma solidity 0.8.17;
4
- import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
- import "./IMultihopRouterEthereum.sol";
6
- import "./IAggregatorRouterHelper.sol";
7
4
  import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
8
5
  import "../../core/libraries/BoringOwnableUpgradeable.sol";
9
6
 
7
+ import "../../interfaces/IWETH.sol";
8
+
9
+ import "./interfaces/IMetaAggregationRouter.sol";
10
+ import "./interfaces/IMetaAggregationRouterV2.sol";
11
+ import "./interfaces/IHashflow.sol";
12
+ import "./interfaces/IExecutorHelperEthereum1.sol";
13
+
14
+ import "./IAggregatorRouterHelper.sol";
15
+ import "./ScaleDataHelperEthereum1.sol";
16
+
10
17
  contract AggregationRouterHelper is
11
18
  IAggregationRouterHelper,
12
19
  Initializable,
@@ -20,8 +27,6 @@ contract AggregationRouterHelper is
20
27
  uint256 private constant _BURN_FROM_TX_ORIGIN = 0x10;
21
28
  uint256 private constant _SIMPLE_SWAP = 0x20;
22
29
 
23
- uint256 private constant SLIPPAGE_RANGE = 10; // over 100
24
-
25
30
  constructor() initializer {}
26
31
 
27
32
  function initialize() external initializer {
@@ -30,29 +35,9 @@ contract AggregationRouterHelper is
30
35
 
31
36
  function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}
32
37
 
33
- enum DexType {
34
- UNI,
35
- STABLESWAP,
36
- CURVE,
37
- KYBERDMM,
38
- SADDLE,
39
- UNIV3PROMM,
40
- BALANCERV2,
41
- KYBERRFQ,
42
- DODO,
43
- WSTETH
44
- }
45
-
46
- struct SwapDescription {
47
- IERC20 srcToken;
48
- IERC20 dstToken;
49
- address[] srcReceivers;
50
- uint256[] srcAmounts;
51
- address dstReceiver;
52
- uint256 amount;
53
- uint256 minReturnAmount;
54
- uint256 flags;
55
- bytes permit;
38
+ struct Swap {
39
+ bytes data;
40
+ bytes4 selector;
56
41
  }
57
42
 
58
43
  struct SimpleSwapData {
@@ -64,7 +49,7 @@ contract AggregationRouterHelper is
64
49
  }
65
50
 
66
51
  struct SwapExecutorDescription {
67
- IMultihopRouterEthereum.Swap[][] swapSequences;
52
+ Swap[][] swapSequences;
68
53
  address tokenIn;
69
54
  address tokenOut;
70
55
  uint256 minTotalAmountOut;
@@ -79,47 +64,129 @@ contract AggregationRouterHelper is
79
64
  returns (bytes memory)
80
65
  {
81
66
  bytes4 selector = bytes4(kybercall[:4]);
82
- (
83
- address caller,
84
- SwapDescription memory desc,
85
- bytes memory executorData,
86
- bytes memory clientData
87
- ) = abi.decode(kybercall[4:], (address, SwapDescription, bytes, bytes));
88
-
89
- (desc, executorData) = _getScaledInputData(desc, executorData, newAmount);
90
- return abi.encodeWithSelector(selector, caller, desc, executorData, clientData);
67
+
68
+ if (selector == IWETH.deposit.selector) {
69
+ return kybercall; // no scaling needed
70
+ }
71
+
72
+ if (selector == IWETH.withdraw.selector) {
73
+ return abi.encodeWithSelector(selector, newAmount);
74
+ }
75
+
76
+ if (
77
+ selector == IMetaAggregationRouter.swap.selector ||
78
+ selector == IMetaAggregationRouter.swapSimpleMode.selector
79
+ ) {
80
+ (
81
+ address callTarget,
82
+ IMetaAggregationRouter.SwapDescription memory desc,
83
+ bytes memory targetData,
84
+ bytes memory clientData
85
+ ) = abi.decode(
86
+ kybercall[4:],
87
+ (address, IMetaAggregationRouter.SwapDescription, bytes, bytes)
88
+ );
89
+
90
+ (desc, targetData) = _getScaledInputDataV1(
91
+ desc,
92
+ targetData,
93
+ newAmount,
94
+ selector == IMetaAggregationRouter.swapSimpleMode.selector ||
95
+ _flagsChecked(desc.flags, _SIMPLE_SWAP)
96
+ );
97
+ return abi.encodeWithSelector(selector, callTarget, desc, targetData, clientData);
98
+ }
99
+
100
+ if (selector == IMetaAggregationRouterV2.swap.selector) {
101
+ IMetaAggregationRouterV2.SwapExecutionParams memory params = abi.decode(
102
+ kybercall[4:],
103
+ (IMetaAggregationRouterV2.SwapExecutionParams)
104
+ );
105
+
106
+ (params.desc, params.targetData) = _getScaledInputDataV2(
107
+ params.desc,
108
+ params.targetData,
109
+ newAmount,
110
+ _flagsChecked(params.desc.flags, _SIMPLE_SWAP)
111
+ );
112
+ return abi.encodeWithSelector(selector, params);
113
+ }
114
+
115
+ if (selector == IMetaAggregationRouterV2.swapSimpleMode.selector) {
116
+ (
117
+ address callTarget,
118
+ IMetaAggregationRouterV2.SwapDescriptionV2 memory desc,
119
+ bytes memory targetData,
120
+ bytes memory clientData
121
+ ) = abi.decode(
122
+ kybercall[4:],
123
+ (address, IMetaAggregationRouterV2.SwapDescriptionV2, bytes, bytes)
124
+ );
125
+
126
+ (desc, targetData) = _getScaledInputDataV2(desc, targetData, newAmount, true);
127
+ return abi.encodeWithSelector(selector, callTarget, desc, targetData, clientData);
128
+ }
129
+
130
+ revert("InputScalingHelper: Invalid selector");
91
131
  }
92
132
 
93
- function _getScaledInputData(
94
- SwapDescription memory desc,
133
+ function _getScaledInputDataV1(
134
+ IMetaAggregationRouter.SwapDescription memory desc,
95
135
  bytes memory executorData,
96
- uint256 newAmount
97
- ) internal pure returns (SwapDescription memory, bytes memory) {
98
- uint256 flags = desc.flags;
136
+ uint256 newAmount,
137
+ bool isSimpleMode
138
+ ) internal pure returns (IMetaAggregationRouter.SwapDescription memory, bytes memory) {
99
139
  uint256 oldAmount = desc.amount;
100
140
  if (oldAmount == newAmount) {
101
141
  return (desc, executorData);
102
142
  }
103
143
 
104
144
  // simple mode swap
105
- if (flags & _SIMPLE_SWAP != 0) {
106
- require(desc.srcReceivers.length == 0, "kyber: can't scale if take fee");
145
+ if (isSimpleMode) {
107
146
  return (
108
- _getNewDescription(desc, oldAmount, newAmount),
109
- _getNewSimpleSwapData(executorData, oldAmount, newAmount)
147
+ _scaledSwapDescriptionV1(desc, oldAmount, newAmount),
148
+ _scaledSimpleSwapData(executorData, oldAmount, newAmount)
110
149
  );
111
150
  }
112
151
 
113
152
  //normal mode swap
114
- bytes memory newExecutorData = _getNewExecutorData(executorData, oldAmount, newAmount);
115
- return (_getNewDescription(desc, oldAmount, newAmount), newExecutorData);
153
+ return (
154
+ _scaledSwapDescriptionV1(desc, oldAmount, newAmount),
155
+ _scaledExecutorCallBytesData(executorData, oldAmount, newAmount)
156
+ );
116
157
  }
117
158
 
118
- function _getNewDescription(
119
- SwapDescription memory desc,
159
+ function _getScaledInputDataV2(
160
+ IMetaAggregationRouterV2.SwapDescriptionV2 memory desc,
161
+ bytes memory executorData,
162
+ uint256 newAmount,
163
+ bool isSimpleMode
164
+ ) internal pure returns (IMetaAggregationRouterV2.SwapDescriptionV2 memory, bytes memory) {
165
+ uint256 oldAmount = desc.amount;
166
+ if (oldAmount == newAmount) {
167
+ return (desc, executorData);
168
+ }
169
+
170
+ // simple mode swap
171
+ if (isSimpleMode) {
172
+ return (
173
+ _scaledSwapDescriptionV2(desc, oldAmount, newAmount),
174
+ _scaledSimpleSwapData(executorData, oldAmount, newAmount)
175
+ );
176
+ }
177
+
178
+ //normal mode swap
179
+ return (
180
+ _scaledSwapDescriptionV2(desc, oldAmount, newAmount),
181
+ _scaledExecutorCallBytesData(executorData, oldAmount, newAmount)
182
+ );
183
+ }
184
+
185
+ function _scaledSwapDescriptionV1(
186
+ IMetaAggregationRouter.SwapDescription memory desc,
120
187
  uint256 oldAmount,
121
188
  uint256 newAmount
122
- ) internal pure returns (SwapDescription memory) {
189
+ ) internal pure returns (IMetaAggregationRouter.SwapDescription memory) {
123
190
  uint256 oldMinReturnAmount = desc.minReturnAmount;
124
191
  desc.minReturnAmount = (desc.minReturnAmount * newAmount) / oldAmount;
125
192
  //newMinReturnAmount should no be 0 if oldMinReturnAmount > 0
@@ -141,7 +208,7 @@ contract AggregationRouterHelper is
141
208
  return desc;
142
209
  }
143
210
 
144
- function _getNewSimpleSwapData(
211
+ function _scaledSimpleSwapData(
145
212
  bytes memory data,
146
213
  uint256 oldAmount,
147
214
  uint256 newAmount
@@ -162,170 +229,91 @@ contract AggregationRouterHelper is
162
229
  return abi.encode(swapData);
163
230
  }
164
231
 
165
- function _getNewExecutorData(
232
+ function _scaledExecutorCallBytesData(
166
233
  bytes memory data,
167
234
  uint256 oldAmount,
168
235
  uint256 newAmount
169
236
  ) internal pure returns (bytes memory) {
170
- SwapExecutorDescription memory swapExecutorDescription = abi.decode(
171
- data,
172
- (SwapExecutorDescription)
173
- );
174
- swapExecutorDescription.minTotalAmountOut =
175
- (swapExecutorDescription.minTotalAmountOut * newAmount) /
176
- oldAmount;
237
+ SwapExecutorDescription memory executorDesc = abi.decode(data, (SwapExecutorDescription));
238
+ executorDesc.minTotalAmountOut = (executorDesc.minTotalAmountOut * newAmount) / oldAmount;
239
+ for (uint256 i = 0; i < executorDesc.swapSequences.length; i++) {
240
+ Swap memory swap = executorDesc.swapSequences[i][0];
241
+ bytes4 selector = swap.selector;
177
242
 
178
- uint256 newTotalSwapAmount;
179
- for (uint256 i = 0; i < swapExecutorDescription.swapSequences.length; i++) {
180
- IMultihopRouterEthereum.Swap memory swap = swapExecutorDescription.swapSequences[i][0];
181
- uint8 dexType = uint8(swap.dexOption >> 8);
182
- uint256 value;
183
- if (i == swapExecutorDescription.swapSequences.length - 1)
184
- value = newAmount - newTotalSwapAmount;
185
-
186
- if (dexType == uint8(DexType.UNI)) {
187
- (swap.data, value) = _newUniSwap(swap.data, value, oldAmount, newAmount);
188
- } else if (dexType == uint8(DexType.STABLESWAP) || dexType == uint8(DexType.SADDLE)) {
189
- (swap.data, value) = _newStableSwap(swap.data, value, oldAmount, newAmount);
190
- } else if (dexType == uint8(DexType.CURVE)) {
191
- (swap.data, value) = _newCurveSwap(swap.data, value, oldAmount, newAmount);
192
- } else if (dexType == uint8(DexType.KYBERDMM)) {
193
- (swap.data, value) = _newKyberDMMSwap(swap.data, value, oldAmount, newAmount);
194
- } else if (dexType == uint8(DexType.UNIV3PROMM)) {
195
- (swap.data, value) = _newUniV3ProMMSwap(swap.data, value, oldAmount, newAmount);
196
- } else if (dexType == uint8(DexType.BALANCERV2)) {
197
- (swap.data, value) = _newBalancerV2Swap(swap.data, value, oldAmount, newAmount);
198
- } else if (dexType == uint8(DexType.KYBERRFQ)) {
199
- revert("kyber: can't scale kyberrfq");
200
- } else if (dexType == uint8(DexType.DODO)) {
201
- (swap.data, value) = _newDODOSwap(swap.data, value, oldAmount, newAmount);
202
- } else if (dexType == uint8(DexType.WSTETH)) {
203
- (swap.data, value) = _newWrappedstETHSwap(swap.data, value, oldAmount, newAmount);
204
- } else {
205
- revert("AggregationExecutor: Dex type not supported");
206
- }
207
- newTotalSwapAmount += value;
243
+ if (selector == IExecutorHelperEthereum1.executeUniSwap.selector) {
244
+ swap.data = ScaleDataHelperEthereum1.newUniSwap(swap.data, oldAmount, newAmount);
245
+ } else if (selector == IExecutorHelperEthereum1.executeStableSwap.selector) {
246
+ swap.data = ScaleDataHelperEthereum1.newStableSwap(
247
+ swap.data,
248
+ oldAmount,
249
+ newAmount
250
+ );
251
+ } else if (selector == IExecutorHelperEthereum1.executeCurveSwap.selector) {
252
+ swap.data = ScaleDataHelperEthereum1.newCurveSwap(swap.data, oldAmount, newAmount);
253
+ } else if (selector == IExecutorHelperEthereum1.executeKyberDMMSwap.selector) {
254
+ swap.data = ScaleDataHelperEthereum1.newKyberDMM(swap.data, oldAmount, newAmount);
255
+ } else if (selector == IExecutorHelperEthereum1.executeUniV3ProMMSwap.selector) {
256
+ swap.data = ScaleDataHelperEthereum1.newUniV3ProMM(
257
+ swap.data,
258
+ oldAmount,
259
+ newAmount
260
+ );
261
+ } else if (selector == IExecutorHelperEthereum1.executeRfqSwap.selector) {
262
+ revert("InputScalingHelper: Can not scale RFQ swap");
263
+ } else if (selector == IExecutorHelperEthereum1.executeBalV2Swap.selector) {
264
+ swap.data = ScaleDataHelperEthereum1.newBalancerV2(
265
+ swap.data,
266
+ oldAmount,
267
+ newAmount
268
+ );
269
+ } else if (selector == IExecutorHelperEthereum1.executeDODOSwap.selector) {
270
+ swap.data = ScaleDataHelperEthereum1.newDODO(swap.data, oldAmount, newAmount);
271
+ } else if (selector == IExecutorHelperEthereum1.executeWrappedstETHSwap.selector) {
272
+ swap.data = ScaleDataHelperEthereum1.newWrappedstETHSwap(
273
+ swap.data,
274
+ oldAmount,
275
+ newAmount
276
+ );
277
+ } else if (selector == IExecutorHelperEthereum1.executeSynthetixSwap.selector) {
278
+ swap.data = ScaleDataHelperEthereum1.newSynthetix(swap.data, oldAmount, newAmount);
279
+ } else if (selector == IExecutorHelperEthereum1.executePSMSwap.selector) {
280
+ swap.data = ScaleDataHelperEthereum1.newPSM(swap.data, oldAmount, newAmount);
281
+ } else if (selector == IExecutorHelperEthereum1.executeHashflowSwap.selector) {
282
+ revert("InputScalingHelper: Can not scale RFQ swap");
283
+ } else if (selector == IExecutorHelperEthereum1.executeFraxSwap.selector) {
284
+ swap.data = ScaleDataHelperEthereum1.newFrax(swap.data, oldAmount, newAmount);
285
+ } else revert("AggregationExecutor: Dex type not supported");
208
286
  }
209
- return abi.encode(swapExecutorDescription);
287
+ return abi.encode(executorDesc);
210
288
  }
211
289
 
212
- function _newUniSwap(
213
- bytes memory data,
214
- uint256 value,
215
- uint256 oldAmount,
216
- uint256 newAmount
217
- ) internal pure returns (bytes memory, uint256) {
218
- IMultihopRouterEthereum.UniSwap memory uniSwap = abi.decode(
219
- data,
220
- (IMultihopRouterEthereum.UniSwap)
221
- );
222
- if (value > 0) uniSwap.collectAmount = value;
223
- else uniSwap.collectAmount = (uniSwap.collectAmount * newAmount) / oldAmount;
224
- return (abi.encode(uniSwap), uniSwap.collectAmount);
225
- }
226
-
227
- function _newStableSwap(
228
- bytes memory data,
229
- uint256 value,
290
+ function _scaledSwapDescriptionV2(
291
+ IMetaAggregationRouterV2.SwapDescriptionV2 memory desc,
230
292
  uint256 oldAmount,
231
293
  uint256 newAmount
232
- ) internal pure returns (bytes memory, uint256) {
233
- IMultihopRouterEthereum.StableSwap memory stableSwap = abi.decode(
234
- data,
235
- (IMultihopRouterEthereum.StableSwap)
236
- );
237
- if (value > 0) stableSwap.dx = value;
238
- else stableSwap.dx = (stableSwap.dx * newAmount) / oldAmount;
239
- return (abi.encode(stableSwap), stableSwap.dx);
240
- }
241
-
242
- function _newCurveSwap(
243
- bytes memory data,
244
- uint256 value,
245
- uint256 oldAmount,
246
- uint256 newAmount
247
- ) internal pure returns (bytes memory, uint256) {
248
- IMultihopRouterEthereum.CurveSwap memory curveSwap = abi.decode(
249
- data,
250
- (IMultihopRouterEthereum.CurveSwap)
251
- );
252
- if (value > 0) curveSwap.dx = value;
253
- else curveSwap.dx = (curveSwap.dx * newAmount) / oldAmount;
254
- return (abi.encode(curveSwap), curveSwap.dx);
255
- }
256
-
257
- function _newKyberDMMSwap(
258
- bytes memory data,
259
- uint256 value,
260
- uint256 oldAmount,
261
- uint256 newAmount
262
- ) internal pure returns (bytes memory, uint256) {
263
- IMultihopRouterEthereum.UniSwap memory kyberDMMSwap = abi.decode(
264
- data,
265
- (IMultihopRouterEthereum.UniSwap)
266
- );
267
- if (value > 0) kyberDMMSwap.collectAmount = value;
268
- else kyberDMMSwap.collectAmount = (kyberDMMSwap.collectAmount * newAmount) / oldAmount;
269
- return (abi.encode(kyberDMMSwap), kyberDMMSwap.collectAmount);
270
- }
271
-
272
- function _newUniV3ProMMSwap(
273
- bytes memory data,
274
- uint256 value,
275
- uint256 oldAmount,
276
- uint256 newAmount
277
- ) internal pure returns (bytes memory, uint256) {
278
- IMultihopRouterEthereum.UniSwapV3ProMM memory uniSwapV3ProMM = abi.decode(
279
- data,
280
- (IMultihopRouterEthereum.UniSwapV3ProMM)
281
- );
282
- if (value > 0) uniSwapV3ProMM.swapAmount = value;
283
- else uniSwapV3ProMM.swapAmount = (uniSwapV3ProMM.swapAmount * newAmount) / oldAmount;
284
- return (abi.encode(uniSwapV3ProMM), uniSwapV3ProMM.swapAmount);
285
- }
286
-
287
- function _newBalancerV2Swap(
288
- bytes memory data,
289
- uint256 value,
290
- uint256 oldAmount,
291
- uint256 newAmount
292
- ) internal pure returns (bytes memory, uint256) {
293
- IMultihopRouterEthereum.BalancerV2 memory balancerV2 = abi.decode(
294
- data,
295
- (IMultihopRouterEthereum.BalancerV2)
296
- );
297
- if (value > 0) balancerV2.amount = value;
298
- else balancerV2.amount = (balancerV2.amount * newAmount) / oldAmount;
299
- return (abi.encode(balancerV2, balancerV2.amount), balancerV2.amount);
300
- }
294
+ ) internal pure returns (IMetaAggregationRouterV2.SwapDescriptionV2 memory) {
295
+ uint256 oldMinReturnAmount = desc.minReturnAmount;
296
+ desc.minReturnAmount = (desc.minReturnAmount * newAmount) / oldAmount;
297
+ //newMinReturnAmount should no be 0 if oldMinReturnAmount > 0
298
+ if (oldMinReturnAmount > 0 && desc.minReturnAmount == 0) desc.minReturnAmount = 1;
299
+ desc.amount = newAmount;
300
+ if (desc.srcReceivers.length == 0) {
301
+ return desc;
302
+ }
301
303
 
302
- function _newDODOSwap(
303
- bytes memory data,
304
- uint256 value,
305
- uint256 oldAmount,
306
- uint256 newAmount
307
- ) internal pure returns (bytes memory, uint256) {
308
- IMultihopRouterEthereum.DODO memory dodo = abi.decode(
309
- data,
310
- (IMultihopRouterEthereum.DODO)
311
- );
312
- if (value > 0) dodo.amount = value;
313
- else dodo.amount = (dodo.amount * newAmount) / oldAmount;
314
- return (abi.encode(dodo), dodo.amount);
304
+ uint256 newTotal;
305
+ for (uint256 i = 0; i < desc.srcReceivers.length; i++) {
306
+ if (i == desc.srcReceivers.length - 1) {
307
+ desc.srcAmounts[i] = newAmount - newTotal;
308
+ } else {
309
+ desc.srcAmounts[i] = (desc.srcAmounts[i] * newAmount) / oldAmount;
310
+ }
311
+ newTotal += desc.srcAmounts[i];
312
+ }
313
+ return desc;
315
314
  }
316
315
 
317
- function _newWrappedstETHSwap(
318
- bytes memory data,
319
- uint256 value,
320
- uint256 oldAmount,
321
- uint256 newAmount
322
- ) internal pure returns (bytes memory, uint256) {
323
- IMultihopRouterEthereum.WSTETH memory wstEthData = abi.decode(
324
- data,
325
- (IMultihopRouterEthereum.WSTETH)
326
- );
327
- if (value > 0) wstEthData.amount = value;
328
- else wstEthData.amount = (wstEthData.amount * newAmount) / oldAmount;
329
- return (abi.encode(wstEthData), wstEthData.amount);
316
+ function _flagsChecked(uint256 number, uint256 flag) internal pure returns (bool) {
317
+ return number & flag != 0;
330
318
  }
331
319
  }
@@ -0,0 +1,147 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity 0.8.17;
3
+
4
+ import "./interfaces/IExecutorHelperEthereum1.sol";
5
+
6
+ library ScaleDataHelperEthereum1 {
7
+ function newUniSwap(
8
+ bytes memory data,
9
+ uint256 oldAmount,
10
+ uint256 newAmount
11
+ ) internal pure returns (bytes memory) {
12
+ IExecutorHelperEthereum1.UniSwap memory uniSwap = abi.decode(
13
+ data,
14
+ (IExecutorHelperEthereum1.UniSwap)
15
+ );
16
+ uniSwap.collectAmount = (uniSwap.collectAmount * newAmount) / oldAmount;
17
+ return abi.encode(uniSwap);
18
+ }
19
+
20
+ function newStableSwap(
21
+ bytes memory data,
22
+ uint256 oldAmount,
23
+ uint256 newAmount
24
+ ) internal pure returns (bytes memory) {
25
+ IExecutorHelperEthereum1.StableSwap memory stableSwap = abi.decode(
26
+ data,
27
+ (IExecutorHelperEthereum1.StableSwap)
28
+ );
29
+ stableSwap.dx = (stableSwap.dx * newAmount) / oldAmount;
30
+ return abi.encode(stableSwap);
31
+ }
32
+
33
+ function newCurveSwap(
34
+ bytes memory data,
35
+ uint256 oldAmount,
36
+ uint256 newAmount
37
+ ) internal pure returns (bytes memory) {
38
+ IExecutorHelperEthereum1.CurveSwap memory curveSwap = abi.decode(
39
+ data,
40
+ (IExecutorHelperEthereum1.CurveSwap)
41
+ );
42
+ curveSwap.dx = (curveSwap.dx * newAmount) / oldAmount;
43
+ return abi.encode(curveSwap);
44
+ }
45
+
46
+ function newKyberDMM(
47
+ bytes memory data,
48
+ uint256 oldAmount,
49
+ uint256 newAmount
50
+ ) internal pure returns (bytes memory) {
51
+ IExecutorHelperEthereum1.UniSwap memory kyberDMMSwap = abi.decode(
52
+ data,
53
+ (IExecutorHelperEthereum1.UniSwap)
54
+ );
55
+ kyberDMMSwap.collectAmount = (kyberDMMSwap.collectAmount * newAmount) / oldAmount;
56
+ return abi.encode(kyberDMMSwap);
57
+ }
58
+
59
+ function newUniV3ProMM(
60
+ bytes memory data,
61
+ uint256 oldAmount,
62
+ uint256 newAmount
63
+ ) internal pure returns (bytes memory) {
64
+ IExecutorHelperEthereum1.UniSwapV3ProMM memory uniSwapV3ProMM = abi.decode(
65
+ data,
66
+ (IExecutorHelperEthereum1.UniSwapV3ProMM)
67
+ );
68
+ uniSwapV3ProMM.swapAmount = (uniSwapV3ProMM.swapAmount * newAmount) / oldAmount;
69
+
70
+ return abi.encode(uniSwapV3ProMM);
71
+ }
72
+
73
+ function newBalancerV2(
74
+ bytes memory data,
75
+ uint256 oldAmount,
76
+ uint256 newAmount
77
+ ) internal pure returns (bytes memory) {
78
+ IExecutorHelperEthereum1.BalancerV2 memory balancerV2 = abi.decode(
79
+ data,
80
+ (IExecutorHelperEthereum1.BalancerV2)
81
+ );
82
+ balancerV2.amount = (balancerV2.amount * newAmount) / oldAmount;
83
+ return abi.encode(balancerV2);
84
+ }
85
+
86
+ function newDODO(
87
+ bytes memory data,
88
+ uint256 oldAmount,
89
+ uint256 newAmount
90
+ ) internal pure returns (bytes memory) {
91
+ IExecutorHelperEthereum1.DODO memory dodo = abi.decode(
92
+ data,
93
+ (IExecutorHelperEthereum1.DODO)
94
+ );
95
+ dodo.amount = (dodo.amount * newAmount) / oldAmount;
96
+ return abi.encode(dodo);
97
+ }
98
+
99
+ function newSynthetix(
100
+ bytes memory data,
101
+ uint256 oldAmount,
102
+ uint256 newAmount
103
+ ) internal pure returns (bytes memory) {
104
+ IExecutorHelperEthereum1.Synthetix memory synthetix = abi.decode(
105
+ data,
106
+ (IExecutorHelperEthereum1.Synthetix)
107
+ );
108
+ synthetix.sourceAmount = (synthetix.sourceAmount * newAmount) / oldAmount;
109
+ return abi.encode(synthetix);
110
+ }
111
+
112
+ function newWrappedstETHSwap(
113
+ bytes memory data,
114
+ uint256 oldAmount,
115
+ uint256 newAmount
116
+ ) internal pure returns (bytes memory) {
117
+ IExecutorHelperEthereum1.WSTETH memory wstEthData = abi.decode(
118
+ data,
119
+ (IExecutorHelperEthereum1.WSTETH)
120
+ );
121
+ wstEthData.amount = (wstEthData.amount * newAmount) / oldAmount;
122
+ return abi.encode(wstEthData);
123
+ }
124
+
125
+ function newPSM(
126
+ bytes memory data,
127
+ uint256 oldAmount,
128
+ uint256 newAmount
129
+ ) internal pure returns (bytes memory) {
130
+ IExecutorHelperEthereum1.PSM memory psm = abi.decode(data, (IExecutorHelperEthereum1.PSM));
131
+ psm.amountIn = (psm.amountIn * newAmount) / oldAmount;
132
+ return abi.encode(psm);
133
+ }
134
+
135
+ function newFrax(
136
+ bytes memory data,
137
+ uint256 oldAmount,
138
+ uint256 newAmount
139
+ ) internal pure returns (bytes memory) {
140
+ IExecutorHelperEthereum1.UniSwap memory frax = abi.decode(
141
+ data,
142
+ (IExecutorHelperEthereum1.UniSwap)
143
+ );
144
+ frax.collectAmount = (frax.collectAmount * newAmount) / oldAmount;
145
+ return abi.encode(frax);
146
+ }
147
+ }
@@ -0,0 +1,17 @@
1
+ // SPDX-License-Identifier: MIT
2
+
3
+ pragma solidity >=0.6.12;
4
+
5
+ interface IAggregationExecutor {
6
+ function callBytes(bytes calldata data) external payable; // 0xd9c45357
7
+
8
+ // callbytes per swap sequence
9
+ function swapSingleSequence(bytes calldata data) external;
10
+
11
+ function finalTransactionProcessing(
12
+ address tokenIn,
13
+ address tokenOut,
14
+ address to,
15
+ bytes calldata destTokenFeeData
16
+ ) external;
17
+ }