@pendle/core-v2 0.20.0-testnet → 0.20.2-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 (311) 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 +2 -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/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.json +2 -2
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.json +2 -2
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +2 -2
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +2 -2
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  81. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  83. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  85. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  87. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +39 -2
  90. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +80 -32
  104. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +100 -40
  106. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +40 -16
  108. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +40 -16
  111. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +260 -104
  113. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  115. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  118. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  119. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  120. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  121. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -2
  122. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
  123. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  124. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +2 -2
  125. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  126. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +96 -53
  127. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  128. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
  129. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  130. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +116 -61
  131. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  132. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
  133. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  134. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +44 -25
  135. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  136. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
  137. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  138. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +44 -25
  139. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  140. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  141. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  142. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json +1 -1
  143. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  144. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  145. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  146. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  147. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +4 -0
  148. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +160 -0
  149. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +4 -0
  150. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +10 -0
  151. package/build/artifacts/contracts/router/swap-aggregator/ISwapAggregator.sol/ISwapAggregator.dbg.json +4 -0
  152. package/build/artifacts/contracts/router/swap-aggregator/ISwapAggregator.sol/ISwapAggregator.json +51 -0
  153. package/build/artifacts/contracts/router/swap-aggregator/SwapAggregator.sol/SwapAggregator.dbg.json +4 -0
  154. package/build/artifacts/contracts/router/swap-aggregator/SwapAggregator.sol/SwapAggregator.json +256 -0
  155. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.dbg.json +4 -0
  156. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.json +10 -0
  157. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +4 -0
  158. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.json +10 -0
  159. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
  160. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +65 -0
  161. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +4 -0
  162. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +359 -0
  163. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +4 -0
  164. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.json +101 -0
  165. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouter.sol/IMetaAggregationRouter.dbg.json +4 -0
  166. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouter.sol/IMetaAggregationRouter.json +183 -0
  167. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
  168. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +215 -0
  169. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +7 -9
  170. package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +10 -0
  171. package/contracts/core/StandardizedYield/SYBase.sol +23 -5
  172. package/contracts/core/StandardizedYield/StEthHelper.sol +71 -0
  173. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol +170 -0
  174. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol +162 -0
  175. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol +134 -0
  176. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol +154 -0
  177. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +289 -0
  178. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol +618 -0
  179. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol +68 -0
  180. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol +322 -0
  181. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol +390 -0
  182. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol +329 -0
  183. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol +30 -0
  184. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol +189 -0
  185. package/contracts/core/libraries/ArrayLib.sol +6 -3
  186. package/contracts/core/libraries/Errors.sol +8 -0
  187. package/contracts/interfaces/Balancer/IAsset.sol +4 -0
  188. package/contracts/interfaces/Balancer/IBalancerFees.sol +6 -0
  189. package/contracts/interfaces/Balancer/IBalancerStablePreview.sol +22 -0
  190. package/contracts/interfaces/Balancer/IBasePool.sol +30 -0
  191. package/contracts/interfaces/Balancer/IComposableStable.sol +39 -0
  192. package/contracts/interfaces/Balancer/IGauge.sol +10 -0
  193. package/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol +6 -0
  194. package/contracts/interfaces/Balancer/IMetaStablePool.sol +31 -0
  195. package/contracts/interfaces/Balancer/IRateProvider.sol +6 -0
  196. package/contracts/interfaces/Balancer/IVault.sol +78 -0
  197. package/contracts/interfaces/ConvexCurve/IRewards.sol +5 -0
  198. package/contracts/interfaces/IPActionAddRemoveLiq.sol +1 -1
  199. package/contracts/interfaces/IPActionMintRedeem.sol +2 -3
  200. package/contracts/interfaces/IPActionSwapPT.sol +1 -1
  201. package/contracts/interfaces/IPActionSwapPTYT.sol +1 -1
  202. package/contracts/interfaces/IPActionSwapYT.sol +1 -1
  203. package/contracts/interfaces/IPFeeDistributor.sol +2 -0
  204. package/contracts/offchain-helpers/Multicall2.sol +103 -0
  205. package/contracts/router/ActionAddRemoveLiq.sol +2 -2
  206. package/contracts/router/ActionMintRedeem.sol +7 -9
  207. package/contracts/router/ActionSwapPT.sol +2 -2
  208. package/contracts/router/ActionSwapYT.sol +2 -2
  209. package/contracts/router/base/ActionBaseMintRedeem.sol +51 -14
  210. package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +45 -0
  211. package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +71 -0
  212. package/contracts/router/swap-aggregator/ISwapAggregator.sol +21 -0
  213. package/contracts/router/swap-aggregator/SwapAggregator.sol +62 -0
  214. package/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol +302 -0
  215. package/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol +134 -0
  216. package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol +17 -0
  217. package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol +185 -0
  218. package/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol +30 -0
  219. package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouter.sol +33 -0
  220. package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol +42 -0
  221. package/deployments/43113-core.json +1 -1
  222. package/deployments/80001-core.json +1 -1
  223. package/package.json +6 -6
  224. package/typechain-types/ActionAddRemoveLiq.ts +41 -35
  225. package/typechain-types/ActionBaseMintRedeem.ts +8 -8
  226. package/typechain-types/ActionMintRedeem.ts +45 -42
  227. package/typechain-types/ActionSwapPT.ts +28 -22
  228. package/typechain-types/ActionSwapYT.ts +28 -22
  229. package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
  230. package/typechain-types/IAggregationExecutor.ts +182 -0
  231. package/typechain-types/IExecutorHelperEthereum1.ts +599 -0
  232. package/typechain-types/IHashflow.ts +159 -0
  233. package/typechain-types/IKyberSwapAggregationRouterHelper.ts +109 -0
  234. package/typechain-types/IMetaAggregationRouter.ts +213 -0
  235. package/typechain-types/IMetaAggregationRouterV2.ts +221 -0
  236. package/typechain-types/IPActionAddRemoveLiq.ts +22 -16
  237. package/typechain-types/IPActionMintRedeem.ts +26 -23
  238. package/typechain-types/IPActionSwapPT.ts +20 -14
  239. package/typechain-types/IPActionSwapYT.ts +20 -14
  240. package/typechain-types/IPAllAction.ts +34 -31
  241. package/typechain-types/ISwapAggregator.ts +124 -0
  242. package/typechain-types/SwapAggregator.ts +406 -0
  243. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +99 -56
  244. package/typechain-types/factories/ActionBaseMintRedeem__factory.ts +1 -1
  245. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  246. package/typechain-types/factories/ActionMintRedeem__factory.ts +119 -64
  247. package/typechain-types/factories/ActionMisc__factory.ts +1 -1
  248. package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
  249. package/typechain-types/factories/ActionSwapPT__factory.ts +47 -28
  250. package/typechain-types/factories/ActionSwapYT__factory.ts +47 -28
  251. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  252. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  253. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  254. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  255. package/typechain-types/factories/Errors__factory.ts +38 -1
  256. package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
  257. package/typechain-types/factories/IAggregationExecutor__factory.ts +84 -0
  258. package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +378 -0
  259. package/typechain-types/factories/IHashflow__factory.ts +113 -0
  260. package/typechain-types/factories/IKyberSwapAggregationRouterHelper__factory.ts +56 -0
  261. package/typechain-types/factories/IMetaAggregationRouterV2__factory.ts +234 -0
  262. package/typechain-types/factories/IMetaAggregationRouter__factory.ts +202 -0
  263. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +80 -32
  264. package/typechain-types/factories/IPActionMintRedeem__factory.ts +100 -40
  265. package/typechain-types/factories/IPActionSwapPT__factory.ts +40 -16
  266. package/typechain-types/factories/IPActionSwapYT__factory.ts +40 -16
  267. package/typechain-types/factories/IPAllAction__factory.ts +260 -104
  268. package/typechain-types/factories/ISwapAggregator__factory.ts +66 -0
  269. package/typechain-types/factories/MarketMathStatic__factory.ts +1 -1
  270. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  271. package/typechain-types/factories/PendleAura3EthSY__factory.ts +1 -1
  272. package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1 -1
  273. package/typechain-types/factories/PendleAuraWethRethSY__factory.ts +1 -1
  274. package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1 -1
  275. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  276. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  277. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  278. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  279. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  280. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  281. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  282. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  283. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  284. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  285. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  286. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  287. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  288. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  289. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  290. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  291. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  292. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  293. package/typechain-types/factories/RouterStatic__factory.ts +1 -1
  294. package/typechain-types/factories/SAPE__factory.ts +1 -1
  295. package/typechain-types/factories/SwapAggregator__factory.ts +309 -0
  296. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  297. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  298. package/typechain-types/hardhat.d.ts +56 -20
  299. package/typechain-types/index.ts +16 -8
  300. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +0 -4
  301. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +0 -224
  302. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +0 -4
  303. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +0 -35
  304. package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.dbg.json +0 -4
  305. package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.json +0 -136
  306. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +0 -4
  307. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json +0 -24
  308. package/contracts/router/kyberswap/AggregationRouterHelper.sol +0 -331
  309. package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +0 -10
  310. package/contracts/router/kyberswap/IMultihopRouterEthereum.sol +0 -141
  311. package/contracts/router/kyberswap/KyberSwapHelper.sol +0 -79
@@ -0,0 +1,329 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
+
6
+ import "../../../../../interfaces/Balancer/IVault.sol";
7
+ import "../../../../../interfaces/Balancer/IRateProvider.sol";
8
+ import "../../../../../interfaces/Balancer/IBasePool.sol";
9
+ import "../../../../../interfaces/Balancer/IBalancerStablePreview.sol";
10
+ import "../../../../../interfaces/ConvexCurve/IBooster.sol";
11
+ import "../../../../../interfaces/ConvexCurve/IRewards.sol";
12
+
13
+ import "./StablePoolUserData.sol";
14
+ import "../../../../libraries/ArrayLib.sol";
15
+ import "../../../SYBaseWithRewards.sol";
16
+
17
+ abstract contract PendleAuraBalancerStableLPSY is SYBaseWithRewards {
18
+ using ArrayLib for address[];
19
+
20
+ address public constant BAL_TOKEN = 0xba100000625a3754423978a60c9317c58a424e3D;
21
+ address public constant AURA_TOKEN = 0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF;
22
+ address public constant AURA_BOOSTER = 0xA57b8d98dAE62B26Ec3bcC4a365338157060B234;
23
+ address public constant BALANCER_VAULT = 0xBA12222222228d8Ba445958a75a0704d566BF2C8;
24
+
25
+ address public immutable balLp;
26
+ bytes32 public immutable balPoolId;
27
+
28
+ uint256 public immutable auraPid;
29
+ address public immutable auraRewardManager;
30
+
31
+ IBalancerStablePreview public immutable previewHelper;
32
+
33
+ address[] public extraRewards;
34
+
35
+ constructor(
36
+ string memory _name,
37
+ string memory _symbol,
38
+ address _balLp,
39
+ uint256 _auraPid,
40
+ IBalancerStablePreview _previewHelper
41
+ ) SYBaseWithRewards(_name, _symbol, _balLp) {
42
+ balPoolId = IBasePool(_balLp).getPoolId();
43
+ auraPid = _auraPid;
44
+
45
+ (balLp, auraRewardManager) = _getPoolInfo(_auraPid);
46
+ if (balLp != _balLp) revert Errors.SYBalancerInvalidPid();
47
+
48
+ _safeApproveInf(_balLp, AURA_BOOSTER);
49
+
50
+ address[] memory tokens = _getPoolTokenAddresses();
51
+ for (uint256 i = 0; i < tokens.length; ++i) {
52
+ _safeApproveInf(tokens[i], BALANCER_VAULT);
53
+ }
54
+
55
+ previewHelper = _previewHelper;
56
+ }
57
+
58
+ function _getPoolInfo(uint256 _auraPid)
59
+ internal
60
+ view
61
+ returns (address _auraLp, address _auraRewardManager)
62
+ {
63
+ if (_auraPid > IBooster(AURA_BOOSTER).poolLength()) revert Errors.SYBalancerInvalidPid();
64
+ (_auraLp, , , _auraRewardManager, , ) = IBooster(AURA_BOOSTER).poolInfo(_auraPid);
65
+ }
66
+
67
+ /*///////////////////////////////////////////////////////////////
68
+ DEPOSIT/REDEEM USING BASE TOKENS
69
+ //////////////////////////////////////////////////////////////*/
70
+
71
+ /**
72
+ * @notice Either wraps LP, or also joins pool using exact tokenIn
73
+ */
74
+ function _deposit(address tokenIn, uint256 amount)
75
+ internal
76
+ virtual
77
+ override
78
+ returns (uint256 amountSharesOut)
79
+ {
80
+ if (tokenIn == balLp) {
81
+ amountSharesOut = amount;
82
+ } else {
83
+ amountSharesOut = _depositToBalancer(tokenIn, amount);
84
+ }
85
+ IBooster(AURA_BOOSTER).deposit(auraPid, amountSharesOut, true);
86
+ }
87
+
88
+ /**
89
+ * @notice Either unwraps LP, or also exits pool using exact LP for only `tokenOut`
90
+ */
91
+ function _redeem(
92
+ address receiver,
93
+ address tokenOut,
94
+ uint256 amountSharesToRedeem
95
+ ) internal virtual override returns (uint256 amountTokenOut) {
96
+ IRewards(auraRewardManager).withdrawAndUnwrap(amountSharesToRedeem, false);
97
+
98
+ if (tokenOut == balLp) {
99
+ amountTokenOut = amountSharesToRedeem;
100
+ _transferOut(tokenOut, receiver, amountTokenOut);
101
+ } else {
102
+ amountTokenOut = _redeemFromBalancer(receiver, tokenOut, amountSharesToRedeem);
103
+ }
104
+ }
105
+
106
+ function exchangeRate() external view override returns (uint256) {
107
+ return IRateProvider(balLp).getRate();
108
+ }
109
+
110
+ /*///////////////////////////////////////////////////////////////
111
+ BALANCER-RELATED FUNCTIONS
112
+ //////////////////////////////////////////////////////////////*/
113
+
114
+ function _depositToBalancer(address tokenIn, uint256 amountTokenToDeposit)
115
+ internal
116
+ virtual
117
+ returns (uint256)
118
+ {
119
+ IVault.JoinPoolRequest memory request = _assembleJoinRequest(
120
+ tokenIn,
121
+ amountTokenToDeposit
122
+ );
123
+ IVault(BALANCER_VAULT).joinPool(balPoolId, address(this), address(this), request);
124
+
125
+ // amount shares out = amount LP received
126
+ return _selfBalance(balLp);
127
+ }
128
+
129
+ function _assembleJoinRequest(address tokenIn, uint256 amountTokenToDeposit)
130
+ internal
131
+ view
132
+ virtual
133
+ returns (IVault.JoinPoolRequest memory request)
134
+ {
135
+ // max amounts in
136
+ address[] memory assets = _getPoolTokenAddresses();
137
+
138
+ uint256 amountsLength = _getBPTIndex() < type(uint256).max
139
+ ? assets.length - 1
140
+ : assets.length;
141
+
142
+ uint256[] memory amountsIn = new uint256[](amountsLength);
143
+ uint256[] memory maxAmountsIn = new uint256[](assets.length);
144
+
145
+ uint256 index = assets.find(tokenIn);
146
+ uint256 indexSkipBPT = index > _getBPTIndex() ? index - 1 : index;
147
+ maxAmountsIn[index] = amountsIn[indexSkipBPT] = amountTokenToDeposit;
148
+
149
+ // encode user data
150
+ StablePoolUserData.JoinKind joinKind = StablePoolUserData
151
+ .JoinKind
152
+ .EXACT_TOKENS_IN_FOR_BPT_OUT;
153
+ uint256 minimumBPT = 0;
154
+
155
+ bytes memory userData = abi.encode(joinKind, amountsIn, minimumBPT);
156
+
157
+ // assemble joinpoolrequest
158
+ request = IVault.JoinPoolRequest(assets, maxAmountsIn, userData, false);
159
+ }
160
+
161
+ function _redeemFromBalancer(
162
+ address receiver,
163
+ address tokenOut,
164
+ uint256 amountLpToRedeem
165
+ ) internal virtual returns (uint256) {
166
+ uint256 balanceBefore = IERC20(tokenOut).balanceOf(receiver);
167
+
168
+ IVault.ExitPoolRequest memory request = _assembleExitRequest(tokenOut, amountLpToRedeem);
169
+ IVault(BALANCER_VAULT).exitPool(balPoolId, address(this), payable(receiver), request);
170
+
171
+ // calculate amount of tokens out
172
+ uint256 balanceAfter = IERC20(tokenOut).balanceOf(receiver);
173
+ return balanceAfter - balanceBefore;
174
+ }
175
+
176
+ function _assembleExitRequest(address tokenOut, uint256 amountLpToRedeem)
177
+ internal
178
+ view
179
+ virtual
180
+ returns (IVault.ExitPoolRequest memory request)
181
+ {
182
+ address[] memory assets = _getPoolTokenAddresses();
183
+ uint256[] memory minAmountsOut = new uint256[](assets.length);
184
+
185
+ // encode user data
186
+ StablePoolUserData.ExitKind exitKind = StablePoolUserData
187
+ .ExitKind
188
+ .EXACT_BPT_IN_FOR_ONE_TOKEN_OUT;
189
+ uint256 bptAmountIn = amountLpToRedeem;
190
+ uint256 exitTokenIndex = assets.find(tokenOut);
191
+
192
+ // must drop BPT index as well
193
+ exitTokenIndex = _getBPTIndex() < exitTokenIndex ? exitTokenIndex - 1 : exitTokenIndex;
194
+
195
+ bytes memory userData = abi.encode(exitKind, bptAmountIn, exitTokenIndex);
196
+
197
+ // assemble exitpoolrequest
198
+ request = IVault.ExitPoolRequest(assets, minAmountsOut, userData, false);
199
+ }
200
+
201
+ /// @dev this should return tokens in the same order as `IVault.getPoolTokens()`
202
+ function _getPoolTokenAddresses() internal view virtual returns (address[] memory res);
203
+
204
+ /// @dev should be overriden if and only if BPT is one of the pool tokens
205
+ function _getBPTIndex() internal view virtual returns (uint256) {
206
+ return type(uint256).max;
207
+ }
208
+
209
+ /*///////////////////////////////////////////////////////////////
210
+ PREVIEW FUNCTIONS
211
+ //////////////////////////////////////////////////////////////*/
212
+
213
+ function _previewDeposit(address tokenIn, uint256 amountTokenToDeposit)
214
+ internal
215
+ view
216
+ virtual
217
+ override
218
+ returns (uint256 amountSharesOut)
219
+ {
220
+ if (tokenIn == balLp) {
221
+ amountSharesOut = amountTokenToDeposit;
222
+ } else {
223
+ IVault.JoinPoolRequest memory request = _assembleJoinRequest(
224
+ tokenIn,
225
+ amountTokenToDeposit
226
+ );
227
+ amountSharesOut = previewHelper.joinPoolPreview(
228
+ balPoolId,
229
+ address(this),
230
+ address(this),
231
+ request,
232
+ _getImmutablePoolData()
233
+ );
234
+ }
235
+ }
236
+
237
+ function _previewRedeem(address tokenOut, uint256 amountSharesToRedeem)
238
+ internal
239
+ view
240
+ virtual
241
+ override
242
+ returns (uint256 amountTokenOut)
243
+ {
244
+ if (tokenOut == balLp) {
245
+ amountTokenOut = amountSharesToRedeem;
246
+ } else {
247
+ IVault.ExitPoolRequest memory request = _assembleExitRequest(
248
+ tokenOut,
249
+ amountSharesToRedeem
250
+ );
251
+
252
+ amountTokenOut = previewHelper.exitPoolPreview(
253
+ balPoolId,
254
+ address(this),
255
+ address(this),
256
+ request,
257
+ _getImmutablePoolData()
258
+ );
259
+ }
260
+ }
261
+
262
+ function _getImmutablePoolData() internal view virtual returns (bytes memory);
263
+
264
+ /*///////////////////////////////////////////////////////////////
265
+ REWARDS-RELATED
266
+ //////////////////////////////////////////////////////////////*/
267
+
268
+ /// @notice allows owner to add new reward tokens in in case Aura does so with their pools
269
+ function addRewardTokens(address token) external virtual onlyOwner {
270
+ if (token == BAL_TOKEN || token == AURA_TOKEN || extraRewards.contains(token))
271
+ revert Errors.SYInvalidRewardToken(token);
272
+
273
+ uint256 nRewardsAura = IRewards(auraRewardManager).extraRewardsLength();
274
+ for (uint256 i = 0; i < nRewardsAura; i++) {
275
+ if (token == IRewards(IRewards(auraRewardManager).extraRewards(i)).rewardToken()) {
276
+ extraRewards.push(token);
277
+ return;
278
+ }
279
+ }
280
+
281
+ revert Errors.SYInvalidRewardToken(token);
282
+ }
283
+
284
+ function extraRewardsLength() external view virtual returns (uint256) {
285
+ return extraRewards.length;
286
+ }
287
+
288
+ function _getRewardTokens() internal view virtual override returns (address[] memory res) {
289
+ uint256 extraRewardsLen = extraRewards.length;
290
+ res = new address[](2 + extraRewardsLen);
291
+ res[0] = BAL_TOKEN;
292
+ res[1] = AURA_TOKEN;
293
+ for (uint256 i = 0; i < extraRewardsLen; i++) {
294
+ res[2 + i] = extraRewards[i];
295
+ }
296
+ }
297
+
298
+ /// @dev if there is no extra rewards, we can call getReward with the 2nd arg (_claimExtra) to be false
299
+ /// which helps save even more gas
300
+ function _redeemExternalReward() internal virtual override {
301
+ uint256 extraRewardsLen = extraRewards.length;
302
+ if (extraRewardsLen == 0) IRewards(auraRewardManager).getReward(address(this), false);
303
+ else IRewards(auraRewardManager).getReward(address(this), true);
304
+ }
305
+
306
+ /*///////////////////////////////////////////////////////////////
307
+ MISC FUNCTIONS FOR METADATA
308
+ //////////////////////////////////////////////////////////////*/
309
+
310
+ function getTokensIn() public view virtual override returns (address[] memory res);
311
+
312
+ function getTokensOut() public view virtual override returns (address[] memory res);
313
+
314
+ function isValidTokenIn(address token) public view virtual override returns (bool);
315
+
316
+ function isValidTokenOut(address token) public view virtual override returns (bool);
317
+
318
+ function assetInfo()
319
+ external
320
+ view
321
+ returns (
322
+ AssetType assetType,
323
+ address assetAddress,
324
+ uint8 assetDecimals
325
+ )
326
+ {
327
+ return (AssetType.LIQUIDITY, balLp, IERC20Metadata(balLp).decimals());
328
+ }
329
+ }
@@ -0,0 +1,30 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity ^0.8.17;
3
+
4
+ library StablePoolUserData {
5
+ enum JoinKind {
6
+ INIT,
7
+ EXACT_TOKENS_IN_FOR_BPT_OUT,
8
+ TOKEN_IN_FOR_EXACT_BPT_OUT
9
+ }
10
+ enum ExitKind {
11
+ EXACT_BPT_IN_FOR_ONE_TOKEN_OUT,
12
+ BPT_IN_FOR_EXACT_TOKENS_OUT
13
+ }
14
+
15
+ function exactTokensInForBptOut(bytes memory self)
16
+ internal
17
+ pure
18
+ returns (uint256[] memory amountsIn, uint256 minBPTAmountOut)
19
+ {
20
+ (, amountsIn, minBPTAmountOut) = abi.decode(self, (JoinKind, uint256[], uint256));
21
+ }
22
+
23
+ function exactBptInForTokenOut(bytes memory self)
24
+ internal
25
+ pure
26
+ returns (uint256 bptAmountIn, uint256 tokenIndex)
27
+ {
28
+ (, bptAmountIn, tokenIndex) = abi.decode(self, (ExitKind, uint256, uint256));
29
+ }
30
+ }
@@ -0,0 +1,189 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
+ import "../../../../../interfaces/Balancer/IVault.sol";
6
+ import "../../../../../interfaces/Balancer/IBalancerFees.sol";
7
+ import "../../../../../interfaces/Balancer/IBalancerStablePreview.sol";
8
+
9
+ abstract contract StablePreviewBase is IBalancerStablePreview {
10
+ address internal constant BALANCER_VAULT = 0xBA12222222228d8Ba445958a75a0704d566BF2C8;
11
+ address internal constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
12
+ address internal constant FEE_COLLECTOR = 0xce88686553686DA562CE7Cea497CE749DA109f9F;
13
+
14
+ enum PoolBalanceChangeKind {
15
+ JOIN,
16
+ EXIT
17
+ }
18
+
19
+ struct PoolBalanceChange {
20
+ IAsset[] assets;
21
+ uint256[] limits;
22
+ bytes userData;
23
+ bool useInternalBalance;
24
+ }
25
+
26
+ function joinPoolPreview(
27
+ bytes32 poolId,
28
+ address sender,
29
+ address recipient,
30
+ IVault.JoinPoolRequest memory request,
31
+ bytes memory data
32
+ ) external view returns (uint256 amountBptOut) {
33
+ amountBptOut = _joinOrExit(
34
+ PoolBalanceChangeKind.JOIN,
35
+ poolId,
36
+ sender,
37
+ payable(recipient),
38
+ _toPoolBalanceChange(request),
39
+ data
40
+ );
41
+ }
42
+
43
+ function exitPoolPreview(
44
+ bytes32 poolId,
45
+ address sender,
46
+ address recipient,
47
+ IVault.ExitPoolRequest memory request,
48
+ bytes memory data
49
+ ) external view returns (uint256 amountTokenOut) {
50
+ amountTokenOut = _joinOrExit(
51
+ PoolBalanceChangeKind.EXIT,
52
+ poolId,
53
+ sender,
54
+ recipient,
55
+ _toPoolBalanceChange(request),
56
+ data
57
+ );
58
+ }
59
+
60
+ function _joinOrExit(
61
+ PoolBalanceChangeKind kind,
62
+ bytes32 poolId,
63
+ address sender,
64
+ address recipient,
65
+ PoolBalanceChange memory change,
66
+ bytes memory data
67
+ ) private view returns (uint256 amountBptOrTokensOut) {
68
+ IERC20[] memory tokens = _translateToIERC20(change.assets);
69
+ (uint256[] memory balances, uint256 lastChangeBlock) = _validateTokensAndGetBalances(
70
+ poolId,
71
+ tokens
72
+ );
73
+
74
+ amountBptOrTokensOut = _callPoolBalanceChange(
75
+ kind,
76
+ poolId,
77
+ sender,
78
+ recipient,
79
+ change,
80
+ balances,
81
+ lastChangeBlock,
82
+ data
83
+ );
84
+ }
85
+
86
+ function _callPoolBalanceChange(
87
+ PoolBalanceChangeKind kind,
88
+ bytes32 poolId,
89
+ address sender,
90
+ address recipient,
91
+ PoolBalanceChange memory change,
92
+ uint256[] memory balances,
93
+ uint256 lastChangeBlock,
94
+ bytes memory data
95
+ ) private view returns (uint256 amountsChanged) {
96
+ if (kind == PoolBalanceChangeKind.JOIN) {
97
+ amountsChanged = onJoinPool(
98
+ poolId,
99
+ sender,
100
+ recipient,
101
+ balances,
102
+ lastChangeBlock,
103
+ _getProtocolSwapFeePercentage(),
104
+ change.userData,
105
+ data
106
+ );
107
+ } else {
108
+ amountsChanged = onExitPool(
109
+ poolId,
110
+ sender,
111
+ recipient,
112
+ balances,
113
+ lastChangeBlock,
114
+ _getProtocolSwapFeePercentage(),
115
+ change.userData,
116
+ data
117
+ );
118
+ }
119
+ }
120
+
121
+ function _getProtocolSwapFeePercentage() private view returns (uint256) {
122
+ return IBalancerFees(FEE_COLLECTOR).getSwapFeePercentage();
123
+ }
124
+
125
+ function _validateTokensAndGetBalances(
126
+ bytes32 poolId,
127
+ IERC20[] memory //expectedTokens
128
+ ) private view returns (uint256[] memory, uint256) {
129
+ (, uint256[] memory balances, uint256 lastChangeBlock) = IVault(BALANCER_VAULT)
130
+ .getPoolTokens(poolId);
131
+ return (balances, lastChangeBlock);
132
+ }
133
+
134
+ function _translateToIERC20(IAsset[] memory assets) internal pure returns (IERC20[] memory) {
135
+ IERC20[] memory tokens = new IERC20[](assets.length);
136
+ for (uint256 i = 0; i < assets.length; ++i) {
137
+ tokens[i] = _translateToIERC20(assets[i]);
138
+ }
139
+ return tokens;
140
+ }
141
+
142
+ function _translateToIERC20(IAsset asset) internal pure returns (IERC20) {
143
+ return address(asset) == address(0) ? IERC20(WETH) : IERC20(address(asset));
144
+ }
145
+
146
+ function _toPoolBalanceChange(IVault.JoinPoolRequest memory request)
147
+ private
148
+ pure
149
+ returns (PoolBalanceChange memory change)
150
+ {
151
+ // solhint-disable-next-line no-inline-assembly
152
+ assembly {
153
+ change := request
154
+ }
155
+ }
156
+
157
+ function _toPoolBalanceChange(IVault.ExitPoolRequest memory request)
158
+ private
159
+ pure
160
+ returns (PoolBalanceChange memory change)
161
+ {
162
+ // solhint-disable-next-line no-inline-assembly
163
+ assembly {
164
+ change := request
165
+ }
166
+ }
167
+
168
+ function onJoinPool(
169
+ bytes32 poolId,
170
+ address sender,
171
+ address recipient,
172
+ uint256[] memory balances,
173
+ uint256 lastChangeBlock,
174
+ uint256 protocolSwapFeePercentage,
175
+ bytes memory userData,
176
+ bytes memory data
177
+ ) internal view virtual returns (uint256 bptAmountOut);
178
+
179
+ function onExitPool(
180
+ bytes32 poolId,
181
+ address sender,
182
+ address recipient,
183
+ uint256[] memory balances,
184
+ uint256 lastChangeBlock,
185
+ uint256 protocolSwapFeePercentage,
186
+ bytes memory userData,
187
+ bytes memory data
188
+ ) internal view virtual returns (uint256 amountTokenOut);
189
+ }
@@ -13,13 +13,16 @@ library ArrayLib {
13
13
  return value;
14
14
  }
15
15
 
16
- function max(uint256[] memory input) internal pure returns (uint256 value) {
17
- for (uint256 i = 0; i < input.length; ) {
18
- if (input[i] > value) value = input[i];
16
+ /// @notice return index of the element if found, else return uint256.max
17
+ function find(address[] memory array, address element) internal pure returns (uint256 index) {
18
+ uint256 length = array.length;
19
+ for (uint256 i = 0; i < length; ) {
20
+ if (array[i] == element) return i;
19
21
  unchecked {
20
22
  i++;
21
23
  }
22
24
  }
25
+ return type(uint256).max;
23
26
  }
24
27
 
25
28
  function contains(address[] memory array, address element) internal pure returns (bool) {
@@ -112,6 +112,8 @@ library Errors {
112
112
  error SYCurve3crvPoolNotFound();
113
113
 
114
114
  error SYApeDepositAmountTooSmall(uint256 amountDeposited);
115
+ error SYBalancerInvalidPid();
116
+ error SYInvalidRewardToken(address token);
115
117
 
116
118
  // Liquidity Mining
117
119
  error VCInactivePool(address pool);
@@ -145,6 +147,7 @@ library Errors {
145
147
  error FDInvalidNewFinishedEpoch(uint256 oldFinishedEpoch, uint256 newFinishedEpoch);
146
148
  error FDInvalidStartEpoch(uint256 startEpoch);
147
149
  error FDInvalidWTimeFund(uint256 lastFunded, uint256 wTime);
150
+ error FDFutureFunding(uint256 lastFunded, uint256 currentWTime);
148
151
 
149
152
  error BDInvalidEpoch(uint256 epoch, uint256 startTime);
150
153
 
@@ -160,9 +163,14 @@ library Errors {
160
163
  error ArrayEmpty();
161
164
  error ArrayOutOfBounds();
162
165
  error ZeroAddress();
166
+ error FailedToSendEther();
163
167
 
164
168
  error OnlyLayerZeroEndpoint();
165
169
  error OnlyYT();
166
170
  error OnlyYCFactory();
167
171
  error OnlyWhitelisted();
172
+
173
+ // Swap Aggregator
174
+ error SAInsufficientTokenIn(address tokenIn, uint256 amountExpected, uint256 amountActual);
175
+ error UnsupportedSelector(uint256 aggregatorType, bytes4 selector);
168
176
  }
@@ -0,0 +1,4 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ interface IAsset {}
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ interface IBalancerFees {
5
+ function getSwapFeePercentage() external view returns (uint256);
6
+ }
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "./IVault.sol";
5
+
6
+ interface IBalancerStablePreview {
7
+ function joinPoolPreview(
8
+ bytes32 poolId,
9
+ address sender,
10
+ address recipient,
11
+ IVault.JoinPoolRequest memory request,
12
+ bytes memory data
13
+ ) external view returns (uint256 amountBptOut);
14
+
15
+ function exitPoolPreview(
16
+ bytes32 poolId,
17
+ address sender,
18
+ address recipient,
19
+ IVault.ExitPoolRequest memory request,
20
+ bytes memory data
21
+ ) external view returns (uint256 amountTokenOut);
22
+ }
@@ -0,0 +1,30 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
5
+
6
+ interface IBasePool is IERC20 {
7
+ function onJoinPool(
8
+ bytes32 poolId,
9
+ address sender,
10
+ address recipient,
11
+ uint256[] memory balances,
12
+ uint256 lastChangeBlock,
13
+ uint256 protocolSwapFeePercentage,
14
+ bytes memory userData
15
+ ) external returns (uint256[] memory amountsIn, uint256[] memory dueProtocolFeeAmounts);
16
+
17
+ function onExitPool(
18
+ bytes32 poolId,
19
+ address sender,
20
+ address recipient,
21
+ uint256[] memory balances,
22
+ uint256 lastChangeBlock,
23
+ uint256 protocolSwapFeePercentage,
24
+ bytes memory userData
25
+ ) external returns (uint256[] memory amountsOut, uint256[] memory dueProtocolFeeAmounts);
26
+
27
+ function getPoolId() external view returns (bytes32);
28
+
29
+ function getSwapFeePercentage() external view returns (uint256);
30
+ }