@pendle/core-v2 1.3.0-mainnet → 2.0.0-mainnet

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 (413) 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/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  7. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +3 -3
  15. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  17. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  19. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +3 -3
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  31. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  37. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  39. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  41. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  44. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  46. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.json +1 -41
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.json +2 -41
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.json +2 -41
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +2 -2
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +2 -41
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  76. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  78. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.dbg.json +4 -0
  80. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol/GLPPreviewHelper.json +50 -0
  81. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +4 -0
  82. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.json +1163 -0
  83. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  85. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  87. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  90. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  92. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  93. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  94. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +4 -0
  95. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.json +66 -0
  96. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +4 -0
  97. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.json +476 -0
  98. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +4 -0
  99. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.json +590 -0
  100. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +4 -0
  101. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.json +1017 -0
  102. package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  103. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  104. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +50 -2
  105. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
  115. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.dbg.json +4 -0
  118. package/build/artifacts/contracts/interfaces/GMX/IGMXVault.sol/IGMXVault.json +308 -0
  119. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.dbg.json +4 -0
  120. package/build/artifacts/contracts/interfaces/GMX/IGlpManager.sol/IGlpManager.json +43 -0
  121. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.dbg.json +4 -0
  122. package/build/artifacts/contracts/interfaces/GMX/IRewardRouterV2.sol/IRewardRouterV2.json +201 -0
  123. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.dbg.json +4 -0
  124. package/build/artifacts/contracts/interfaces/GMX/IVaultPriceFeed.sol/IVaultPriceFeed.json +45 -0
  125. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.dbg.json +4 -0
  126. package/build/artifacts/contracts/interfaces/IAddressProvider.sol/IAddressProvider.json +48 -0
  127. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.dbg.json +4 -0
  129. package/build/artifacts/contracts/interfaces/IDiamondCut.sol/IDiamondCut.json +93 -0
  130. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.dbg.json +4 -0
  131. package/build/artifacts/contracts/interfaces/IDiamondLoupe.sol/IDiamondLoupe.json +87 -0
  132. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  133. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +338 -16
  134. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +105 -224
  136. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +1 -1
  137. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.json +56 -12
  138. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  139. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +52 -8
  140. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  141. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +231 -8
  142. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  143. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +675 -241
  144. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  145. package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
  146. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.dbg.json +4 -0
  147. package/build/artifacts/contracts/interfaces/IPInterestManagerYTV2.sol/IPInterestManagerYTV2.json +40 -0
  148. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  149. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.dbg.json +1 -1
  150. package/build/artifacts/contracts/interfaces/IPMsgReceiverApp.sol/IPMsgReceiverApp.json +1 -1
  151. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  152. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  153. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.dbg.json +4 -0
  154. package/build/artifacts/contracts/interfaces/IPYieldTokenV2.sol/IPYieldTokenV2.json +679 -0
  155. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.dbg.json +4 -0
  156. package/build/artifacts/contracts/offchain-helpers/AddressProvider.sol/AddressProvider.json +143 -0
  157. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  158. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  159. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  160. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -28
  161. package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
  162. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.dbg.json +4 -0
  163. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.json +47 -0
  164. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  165. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +144 -60
  166. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  167. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +345 -62
  168. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  169. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +107 -260
  170. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  171. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +57 -18
  172. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  173. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +54 -65
  174. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  175. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +342 -44
  176. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  177. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +76 -67
  178. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +4 -0
  179. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.json +141 -0
  180. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  181. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json +1 -15
  182. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  183. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  184. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  185. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  186. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  187. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +4 -0
  188. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +160 -0
  189. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +4 -0
  190. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +10 -0
  191. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.dbg.json +4 -0
  192. package/build/artifacts/contracts/router/swap-aggregator/IPSwapAggregator.sol/IPSwapAggregator.json +56 -0
  193. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.dbg.json +4 -0
  194. package/build/artifacts/contracts/router/swap-aggregator/PendleSwapAggregator.sol/PendleSwapAggregator.json +72 -0
  195. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.dbg.json +4 -0
  196. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.json +10 -0
  197. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +4 -0
  198. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.json +10 -0
  199. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
  200. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +65 -0
  201. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +4 -0
  202. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +388 -0
  203. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +4 -0
  204. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.json +101 -0
  205. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
  206. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +215 -0
  207. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol +0 -1
  208. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +7 -9
  209. package/contracts/core/StandardizedYield/StEthHelper.sol +4 -4
  210. package/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol +142 -0
  211. package/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol +222 -0
  212. package/contracts/core/StandardizedYield/implementations/GLP/README.md +61 -0
  213. package/contracts/core/YieldContractsV2/InterestManagerYTV2.sol +114 -0
  214. package/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol +63 -0
  215. package/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol +200 -0
  216. package/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol +485 -0
  217. package/contracts/core/libraries/Errors.sol +5 -0
  218. package/contracts/core/libraries/TokenHelper.sol +10 -0
  219. package/contracts/interfaces/GMX/IGMXVault.sol +47 -0
  220. package/contracts/interfaces/GMX/IGlpManager.sol +8 -0
  221. package/contracts/interfaces/GMX/IRewardRouterV2.sol +43 -0
  222. package/contracts/interfaces/GMX/IVaultPriceFeed.sol +11 -0
  223. package/contracts/interfaces/IAddressProvider.sol +7 -0
  224. package/contracts/interfaces/IDiamondCut.sol +36 -0
  225. package/contracts/interfaces/IDiamondLoupe.sol +38 -0
  226. package/contracts/interfaces/IPActionAddRemoveLiq.sol +36 -1
  227. package/contracts/interfaces/IPActionMintRedeem.sol +2 -55
  228. package/contracts/interfaces/IPActionMisc.sol +18 -4
  229. package/contracts/interfaces/IPActionSwapPT.sol +1 -1
  230. package/contracts/interfaces/IPActionSwapYT.sol +28 -4
  231. package/contracts/interfaces/IPAllAction.sol +5 -3
  232. package/contracts/interfaces/IPInterestManagerYTV2.sol +13 -0
  233. package/contracts/interfaces/IPMsgReceiverApp.sol +1 -1
  234. package/contracts/interfaces/IPYieldTokenV2.sol +66 -0
  235. package/contracts/offchain-helpers/AddressProvider.sol +16 -0
  236. package/contracts/offchain-helpers/MarketMathStatic.sol +15 -0
  237. package/contracts/offchain-helpers/PendleMulticall.sol +26 -0
  238. package/contracts/offchain-helpers/RouterStatic.sol +22 -0
  239. package/contracts/router/ActionAddRemoveLiq.sol +116 -6
  240. package/contracts/router/ActionMintRedeem.sol +12 -202
  241. package/contracts/router/ActionMisc.sol +45 -19
  242. package/contracts/router/ActionSwapPT.sol +0 -5
  243. package/contracts/router/ActionSwapYT.sol +103 -13
  244. package/contracts/router/PendleRouter.sol +211 -72
  245. package/contracts/router/{ActionCallback.sol → base/ActionBaseCallback.sol} +47 -47
  246. package/contracts/router/base/ActionBaseMintRedeem.sol +105 -60
  247. package/contracts/router/base/CallbackHelper.sol +137 -44
  248. package/contracts/router/base/MarketApproxLib.sol +227 -350
  249. package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +45 -0
  250. package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +69 -0
  251. package/contracts/router/swap-aggregator/IPSwapAggregator.sol +25 -0
  252. package/contracts/router/swap-aggregator/PendleSwapAggregator.sol +47 -0
  253. package/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol +214 -0
  254. package/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol +147 -0
  255. package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol +17 -0
  256. package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol +191 -0
  257. package/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol +30 -0
  258. package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol +42 -0
  259. package/deployments/1-core.json +2 -1
  260. package/deployments/1-markets/BALANCER-LP-AURA-WSTETH-WETH-JUN272024.json +11 -0
  261. package/deployments/1-offchain-helper.json +4 -0
  262. package/deployments/42161-core.json +26 -0
  263. package/deployments/42161-markets/GLP-28MARCH2024.json +10 -0
  264. package/deployments/42161-offchain-helper.json +4 -0
  265. package/package.json +1 -1
  266. package/typechain-types/ActionAddRemoveLiq.ts +203 -23
  267. package/typechain-types/ActionBaseCallback.ts +115 -0
  268. package/typechain-types/ActionMintRedeem.ts +29 -230
  269. package/typechain-types/ActionMisc.ts +77 -27
  270. package/typechain-types/ActionSwapPT.ts +26 -31
  271. package/typechain-types/ActionSwapYT.ts +202 -21
  272. package/typechain-types/AddressProvider.ts +280 -0
  273. package/typechain-types/GLPPreviewHelper.ts +121 -0
  274. package/typechain-types/GMXPreviewHelper.ts +121 -0
  275. package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
  276. package/typechain-types/IAddressProvider.ts +123 -0
  277. package/typechain-types/IAggregationExecutor.ts +182 -0
  278. package/typechain-types/IDiamondCut.ts +152 -0
  279. package/typechain-types/IDiamondLoupe.ts +190 -0
  280. package/typechain-types/IExecutorHelperEthereum1.ts +643 -0
  281. package/typechain-types/IGMXVault.ts +494 -0
  282. package/typechain-types/IGlpManager.ts +115 -0
  283. package/typechain-types/IHashflow.ts +159 -0
  284. package/typechain-types/IKyberSwapAggregationRouterHelper.ts +109 -0
  285. package/typechain-types/IMetaAggregationRouter.ts +213 -0
  286. package/typechain-types/IMetaAggregationRouterV2.ts +221 -0
  287. package/typechain-types/IPActionAddRemoveLiq.ts +213 -14
  288. package/typechain-types/IPActionMintRedeem.ts +29 -211
  289. package/typechain-types/IPActionMisc.ts +77 -27
  290. package/typechain-types/IPActionSwapPT.ts +26 -12
  291. package/typechain-types/IPActionSwapYT.ts +168 -12
  292. package/typechain-types/IPAllAction.ts +445 -227
  293. package/typechain-types/IPInterestManagerYTV2.ts +117 -0
  294. package/typechain-types/IPMsgReceiverApp.ts +5 -5
  295. package/typechain-types/IPSwapAggregator.ts +126 -0
  296. package/typechain-types/IPYieldTokenV2.ts +901 -0
  297. package/typechain-types/IRewardRouterV2.ts +346 -0
  298. package/typechain-types/ISwapAggregator.ts +124 -0
  299. package/typechain-types/IVaultPriceFeed.ts +114 -0
  300. package/typechain-types/InterestManagerYTV2.ts +157 -0
  301. package/typechain-types/PendleAura3EthSY.ts +0 -39
  302. package/typechain-types/PendleAuraCbethWstethSY.ts +0 -39
  303. package/typechain-types/PendleAuraWethWstethSY.ts +0 -39
  304. package/typechain-types/PendleGaugeControllerSidechainUpg.ts +4 -4
  305. package/typechain-types/PendleGlpSY.ts +1463 -0
  306. package/typechain-types/PendleMsgReceiverAppUpg.ts +5 -5
  307. package/typechain-types/PendleMulticall.ts +110 -0
  308. package/typechain-types/PendlePrincipalTokenV2.ts +614 -0
  309. package/typechain-types/PendleRouter.ts +109 -131
  310. package/typechain-types/PendleSwapAggregator.ts +126 -0
  311. package/typechain-types/PendleYieldContractFactoryV2.ts +801 -0
  312. package/typechain-types/PendleYieldTokenV2.ts +1298 -0
  313. package/typechain-types/RouterStatic.ts +92 -0
  314. package/typechain-types/SwapAggregator.ts +406 -0
  315. package/typechain-types/VotingEscrowPendleSidechain.ts +4 -5
  316. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +346 -68
  317. package/typechain-types/factories/ActionBaseCallback__factory.ts +156 -0
  318. package/typechain-types/factories/ActionMintRedeem__factory.ts +108 -266
  319. package/typechain-types/factories/ActionMisc__factory.ts +56 -17
  320. package/typechain-types/factories/ActionSwapPT__factory.ts +55 -71
  321. package/typechain-types/factories/ActionSwapYT__factory.ts +356 -48
  322. package/typechain-types/factories/AddressProvider__factory.ts +196 -0
  323. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  324. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  325. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  326. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  327. package/typechain-types/factories/Errors__factory.ts +49 -1
  328. package/typechain-types/factories/GLPPreviewHelper__factory.ts +65 -0
  329. package/typechain-types/factories/GMXPreviewHelper__factory.ts +65 -0
  330. package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
  331. package/typechain-types/factories/IAddressProvider__factory.ts +63 -0
  332. package/typechain-types/factories/IAggregationExecutor__factory.ts +84 -0
  333. package/typechain-types/factories/IDiamondCut__factory.ts +105 -0
  334. package/typechain-types/factories/IDiamondLoupe__factory.ts +99 -0
  335. package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +407 -0
  336. package/typechain-types/factories/IGMXVault__factory.ts +320 -0
  337. package/typechain-types/factories/IGlpManager__factory.ts +55 -0
  338. package/typechain-types/factories/IHashflow__factory.ts +113 -0
  339. package/typechain-types/factories/IKyberSwapAggregationRouterHelper__factory.ts +56 -0
  340. package/typechain-types/factories/IMetaAggregationRouterV2__factory.ts +234 -0
  341. package/typechain-types/factories/IMetaAggregationRouter__factory.ts +202 -0
  342. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +338 -16
  343. package/typechain-types/factories/IPActionMintRedeem__factory.ts +105 -224
  344. package/typechain-types/factories/IPActionMisc__factory.ts +55 -11
  345. package/typechain-types/factories/IPActionSwapPT__factory.ts +52 -8
  346. package/typechain-types/factories/IPActionSwapYT__factory.ts +231 -8
  347. package/typechain-types/factories/IPAllAction__factory.ts +675 -241
  348. package/typechain-types/factories/IPInterestManagerYTV2__factory.ts +59 -0
  349. package/typechain-types/factories/IPMsgReceiverApp__factory.ts +1 -1
  350. package/typechain-types/factories/IPSwapAggregator__factory.ts +71 -0
  351. package/typechain-types/factories/IPYieldTokenV2__factory.ts +694 -0
  352. package/typechain-types/factories/IRewardRouterV2__factory.ts +216 -0
  353. package/typechain-types/factories/ISwapAggregator__factory.ts +66 -0
  354. package/typechain-types/factories/IVaultPriceFeed__factory.ts +60 -0
  355. package/typechain-types/factories/InterestManagerYTV2__factory.ts +81 -0
  356. package/typechain-types/factories/MarketMathStatic__factory.ts +1 -27
  357. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  358. package/typechain-types/factories/PendleAura3EthSY__factory.ts +1 -40
  359. package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1 -40
  360. package/typechain-types/factories/PendleAuraWethRethSY__factory.ts +1 -1
  361. package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1 -40
  362. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  363. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  364. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  365. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  366. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +2 -2
  367. package/typechain-types/factories/PendleGlpSY__factory.ts +1249 -0
  368. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  369. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  370. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  371. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  372. package/typechain-types/factories/PendleMsgReceiverAppUpg__factory.ts +1 -1
  373. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  374. package/typechain-types/factories/PendleMulticall__factory.ts +100 -0
  375. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +564 -0
  376. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  377. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  378. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  379. package/typechain-types/factories/PendleRouter__factory.ts +75 -74
  380. package/typechain-types/factories/PendleSwapAggregator__factory.ts +129 -0
  381. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  382. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  383. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +674 -0
  384. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  385. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1109 -0
  386. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  387. package/typechain-types/factories/RouterStatic__factory.ts +69 -1
  388. package/typechain-types/factories/SAPE__factory.ts +1 -1
  389. package/typechain-types/factories/SwapAggregator__factory.ts +309 -0
  390. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  391. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +2 -2
  392. package/typechain-types/hardhat.d.ts +203 -59
  393. package/typechain-types/index.ts +50 -18
  394. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +0 -4
  395. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.json +0 -190
  396. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +0 -4
  397. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +0 -165
  398. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +0 -4
  399. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +0 -343
  400. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +0 -4
  401. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +0 -224
  402. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +0 -4
  403. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +0 -35
  404. package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.dbg.json +0 -4
  405. package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.json +0 -136
  406. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +0 -4
  407. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json +0 -24
  408. package/contracts/interfaces/IPActionSwapPTYT.sol +0 -31
  409. package/contracts/router/ActionSwapPTYT.sol +0 -108
  410. package/contracts/router/kyberswap/AggregationRouterHelper.sol +0 -341
  411. package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +0 -10
  412. package/contracts/router/kyberswap/IMultihopRouterEthereum.sol +0 -141
  413. package/contracts/router/kyberswap/KyberSwapHelper.sol +0 -79
@@ -1,53 +1,92 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity 0.8.17;
3
3
 
4
- import "../kyberswap/KyberSwapHelper.sol";
5
4
  import "../../core/libraries/TokenHelper.sol";
6
5
  import "../../interfaces/IStandardizedYield.sol";
7
6
  import "../../interfaces/IPYieldToken.sol";
8
7
  import "../../interfaces/IPBulkSeller.sol";
8
+
9
9
  import "../../core/libraries/Errors.sol";
10
+ import "../swap-aggregator/IPSwapAggregator.sol";
11
+
12
+ struct TokenInput {
13
+ // Token/Sy data
14
+ address tokenIn;
15
+ uint256 netTokenIn;
16
+ address tokenMintSy;
17
+ address bulk;
18
+ // aggregator data
19
+ address pendleSwap;
20
+ SwapData swapData;
21
+ }
22
+
23
+ struct TokenOutput {
24
+ // Token/Sy data
25
+ address tokenOut;
26
+ uint256 minTokenOut;
27
+ address tokenRedeemSy;
28
+ address bulk;
29
+ // aggregator data
30
+ address pendleSwap;
31
+ SwapData swapData;
32
+ }
10
33
 
11
34
  // solhint-disable no-empty-blocks
12
- abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
35
+ abstract contract ActionBaseMintRedeem is TokenHelper {
13
36
  bytes internal constant EMPTY_BYTES = abi.encode();
14
37
 
15
- /// @dev since this contract will be proxied, it must not contains non-immutable variables
16
- constructor(address _kyberScalingLib) KyberSwapHelper(_kyberScalingLib) {}
17
-
18
38
  function _mintSyFromToken(
19
39
  address receiver,
20
40
  address SY,
21
41
  uint256 minSyOut,
22
- TokenInput calldata input
42
+ TokenInput calldata inp
23
43
  ) internal returns (uint256 netSyOut) {
24
- _transferIn(input.tokenIn, msg.sender, input.netTokenIn);
25
-
26
- bool requireSwap = input.tokenIn != input.tokenMintSy;
44
+ SwapType swapType = inp.swapData.swapType;
27
45
 
28
46
  uint256 netTokenMintSy;
29
47
 
30
- if (requireSwap) {
31
- _kyberswap(input.tokenIn, input.netTokenIn, input.kyberRouter, input.kybercall);
32
- netTokenMintSy = _selfBalance(input.tokenMintSy);
48
+ if (swapType == SwapType.NONE) {
49
+ _transferIn(inp.tokenIn, msg.sender, inp.netTokenIn);
50
+ netTokenMintSy = inp.netTokenIn;
51
+ } else if (swapType == SwapType.ETH_WETH) {
52
+ _transferIn(inp.tokenIn, msg.sender, inp.netTokenIn);
53
+ _wrap_unwrap_ETH(inp.tokenIn, inp.tokenMintSy, inp.netTokenIn);
54
+ netTokenMintSy = inp.netTokenIn;
33
55
  } else {
34
- netTokenMintSy = input.netTokenIn;
56
+ if (inp.tokenIn == NATIVE) _transferIn(NATIVE, msg.sender, inp.netTokenIn);
57
+ else _transferFrom(IERC20(inp.tokenIn), msg.sender, inp.pendleSwap, inp.netTokenIn);
58
+
59
+ IPSwapAggregator(inp.pendleSwap).swap{
60
+ value: inp.tokenIn == NATIVE ? inp.netTokenIn : 0
61
+ }(inp.tokenIn, inp.netTokenIn, inp.swapData);
62
+ netTokenMintSy = _selfBalance(inp.tokenMintSy);
35
63
  }
36
64
 
37
- uint256 netNative = input.tokenMintSy == NATIVE ? netTokenMintSy : 0;
65
+ // outcome of all branches: satisfy pre-condition of __mintSy
66
+
67
+ netSyOut = __mintSy(receiver, SY, netTokenMintSy, minSyOut, inp);
68
+ }
69
+
70
+ /// @dev pre-condition: having netTokenMintSy of tokens in this contract
71
+ function __mintSy(
72
+ address receiver,
73
+ address SY,
74
+ uint256 netTokenMintSy,
75
+ uint256 minSyOut,
76
+ TokenInput calldata inp
77
+ ) private returns (uint256 netSyOut) {
78
+ uint256 netNative = inp.tokenMintSy == NATIVE ? netTokenMintSy : 0;
38
79
 
39
- if (input.bulk != address(0)) {
40
- _safeApproveInf(input.tokenMintSy, input.bulk);
41
- netSyOut = IPBulkSeller(input.bulk).swapExactTokenForSy{ value: netNative }(
80
+ if (inp.bulk != address(0)) {
81
+ netSyOut = IPBulkSeller(inp.bulk).swapExactTokenForSy{ value: netNative }(
42
82
  receiver,
43
83
  netTokenMintSy,
44
84
  minSyOut
45
85
  );
46
86
  } else {
47
- _safeApproveInf(input.tokenMintSy, SY);
48
87
  netSyOut = IStandardizedYield(SY).deposit{ value: netNative }(
49
88
  receiver,
50
- input.tokenMintSy,
89
+ inp.tokenMintSy,
51
90
  netTokenMintSy,
52
91
  minSyOut
53
92
  );
@@ -58,63 +97,77 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
58
97
  address receiver,
59
98
  address SY,
60
99
  uint256 netSyIn,
61
- TokenOutput memory output,
100
+ TokenOutput calldata out,
62
101
  bool doPull
63
102
  ) internal returns (uint256 netTokenOut) {
64
- if (doPull) {
65
- _transferFrom(IERC20(SY), msg.sender, _syOrBulk(SY, output), netSyIn);
103
+ SwapType swapType = out.swapData.swapType;
104
+
105
+ if (swapType == SwapType.NONE) {
106
+ netTokenOut = __redeemSy(receiver, SY, netSyIn, out, doPull);
107
+ } else if (swapType == SwapType.ETH_WETH) {
108
+ netTokenOut = __redeemSy(address(this), SY, netSyIn, out, doPull); // ETH:WETH is 1:1
109
+
110
+ _wrap_unwrap_ETH(out.tokenRedeemSy, out.tokenOut, netTokenOut);
111
+
112
+ _transferOut(out.tokenOut, receiver, netTokenOut);
113
+ } else {
114
+ uint256 netTokenRedeemed = __redeemSy(out.pendleSwap, SY, netSyIn, out, doPull);
115
+
116
+ IPSwapAggregator(out.pendleSwap).swap(
117
+ out.tokenRedeemSy,
118
+ netTokenRedeemed,
119
+ out.swapData
120
+ );
121
+
122
+ netTokenOut = _selfBalance(out.tokenOut);
123
+
124
+ _transferOut(out.tokenOut, receiver, netTokenOut);
125
+ }
126
+
127
+ // outcome of all branches: netTokenOut of tokens goes back to receiver
128
+
129
+ if (netTokenOut < out.minTokenOut) {
130
+ revert Errors.RouterInsufficientTokenOut(netTokenOut, out.minTokenOut);
66
131
  }
132
+ }
67
133
 
68
- bool requireSwap = output.tokenRedeemSy != output.tokenOut;
69
- address receiverRedeemSy = requireSwap ? address(this) : receiver;
70
- uint256 netTokenRedeemed;
134
+ function __redeemSy(
135
+ address receiver,
136
+ address SY,
137
+ uint256 netSyIn,
138
+ TokenOutput calldata out,
139
+ bool doPull
140
+ ) private returns (uint256 netTokenRedeemed) {
141
+ if (doPull) {
142
+ _transferFrom(IERC20(SY), msg.sender, _syOrBulk(SY, out), netSyIn);
143
+ }
71
144
 
72
- if (output.bulk != address(0)) {
73
- netTokenRedeemed = IPBulkSeller(output.bulk).swapExactSyForToken(
74
- receiverRedeemSy,
145
+ if (out.bulk != address(0)) {
146
+ netTokenRedeemed = IPBulkSeller(out.bulk).swapExactSyForToken(
147
+ receiver,
75
148
  netSyIn,
76
149
  0,
77
150
  true
78
151
  );
79
152
  } else {
80
153
  netTokenRedeemed = IStandardizedYield(SY).redeem(
81
- receiverRedeemSy,
154
+ receiver,
82
155
  netSyIn,
83
- output.tokenRedeemSy,
156
+ out.tokenRedeemSy,
84
157
  0,
85
158
  true
86
159
  );
87
160
  }
88
-
89
- if (requireSwap) {
90
- _kyberswap(
91
- output.tokenRedeemSy,
92
- netTokenRedeemed,
93
- output.kyberRouter,
94
- output.kybercall
95
- );
96
-
97
- netTokenOut = _selfBalance(output.tokenOut);
98
-
99
- _transferOut(output.tokenOut, receiver, netTokenOut);
100
- } else {
101
- netTokenOut = netTokenRedeemed;
102
- }
103
-
104
- if (netTokenOut < output.minTokenOut) {
105
- revert Errors.RouterInsufficientTokenOut(netTokenOut, output.minTokenOut);
106
- }
107
161
  }
108
162
 
109
163
  function _mintPyFromSy(
110
164
  address receiver,
165
+ address SY,
111
166
  address YT,
112
167
  uint256 netSyIn,
113
168
  uint256 minPyOut,
114
169
  bool doPull
115
170
  ) internal returns (uint256 netPyOut) {
116
- address SY = IPYieldToken(YT).SY();
117
-
118
171
  if (doPull) {
119
172
  _transferFrom(IERC20(SY), msg.sender, YT, netSyIn);
120
173
  }
@@ -140,19 +193,11 @@ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
140
193
  if (netSyOut < minSyOut) revert Errors.RouterInsufficientSyOut(netSyOut, minSyOut);
141
194
  }
142
195
 
143
- function _syOrBulk(address SY, TokenOutput memory output)
196
+ function _syOrBulk(address SY, TokenOutput calldata output)
144
197
  internal
145
198
  pure
146
199
  returns (address addr)
147
200
  {
148
201
  return output.bulk != address(0) ? output.bulk : SY;
149
202
  }
150
-
151
- function _wrapTokenOutput(
152
- address tokenOut,
153
- uint256 minTokenOut,
154
- address bulk
155
- ) internal pure returns (TokenOutput memory) {
156
- return TokenOutput(tokenOut, minTokenOut, tokenOut, bulk, address(0), EMPTY_BYTES);
157
- }
158
203
  }
@@ -1,6 +1,10 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity 0.8.17;
3
3
 
4
+ import "../../interfaces/IPYieldToken.sol";
5
+ import "../../interfaces/IPPrincipalToken.sol";
6
+ import "../../interfaces/IStandardizedYield.sol";
7
+
4
8
  abstract contract CallbackHelper {
5
9
  enum ActionType {
6
10
  SwapSyForExactYt,
@@ -14,20 +18,37 @@ abstract contract CallbackHelper {
14
18
  /// SwapExactSyForYt
15
19
  /// ------------------------------------------------------------
16
20
 
17
- function _encodeSwapExactSyForYt(address receiver, uint256 minYtOut)
18
- internal
19
- pure
20
- returns (bytes memory)
21
- {
22
- return abi.encode(ActionType.SwapExactSyForYt, receiver, minYtOut);
21
+ function _encodeSwapExactSyForYt(
22
+ address receiver,
23
+ uint256 minYtOut,
24
+ IPYieldToken YT
25
+ ) internal pure returns (bytes memory res) {
26
+ res = new bytes(128);
27
+ uint256 actionType = uint256(ActionType.SwapExactSyForYt);
28
+
29
+ assembly {
30
+ mstore(add(res, 32), actionType)
31
+ mstore(add(res, 64), receiver)
32
+ mstore(add(res, 96), minYtOut)
33
+ mstore(add(res, 128), YT)
34
+ }
23
35
  }
24
36
 
25
- function _decodeSwapExactSyForYt(bytes memory data)
37
+ function _decodeSwapExactSyForYt(bytes calldata data)
26
38
  internal
27
39
  pure
28
- returns (address receiver, uint256 minYtOut)
40
+ returns (
41
+ address receiver,
42
+ uint256 minYtOut,
43
+ IPYieldToken YT
44
+ )
29
45
  {
30
- (, receiver, minYtOut) = abi.decode(data, (ActionType, address, uint256));
46
+ assembly {
47
+ // first 32 bytes is ActionType
48
+ receiver := calldataload(add(data.offset, 32))
49
+ minYtOut := calldataload(add(data.offset, 64))
50
+ YT := calldataload(add(data.offset, 96))
51
+ }
31
52
  }
32
53
 
33
54
  /// ------------------------------------------------------------
@@ -37,93 +58,165 @@ abstract contract CallbackHelper {
37
58
  function _encodeSwapSyForExactYt(
38
59
  address payer,
39
60
  address receiver,
40
- uint256 maxSyIn
41
- ) internal pure returns (bytes memory) {
42
- return abi.encode(ActionType.SwapSyForExactYt, payer, receiver, maxSyIn);
61
+ uint256 maxSyIn,
62
+ IStandardizedYield SY,
63
+ IPYieldToken YT
64
+ ) internal pure returns (bytes memory res) {
65
+ res = new bytes(192);
66
+ uint256 actionType = uint256(ActionType.SwapSyForExactYt);
67
+
68
+ assembly {
69
+ mstore(add(res, 32), actionType)
70
+ mstore(add(res, 64), payer)
71
+ mstore(add(res, 96), receiver)
72
+ mstore(add(res, 128), maxSyIn)
73
+ mstore(add(res, 160), SY)
74
+ mstore(add(res, 192), YT)
75
+ }
43
76
  }
44
77
 
45
- function _decodeSwapSyForExactYt(bytes memory data)
78
+ function _decodeSwapSyForExactYt(bytes calldata data)
46
79
  internal
47
80
  pure
48
81
  returns (
49
82
  address payer,
50
83
  address receiver,
51
- uint256 maxSyIn
84
+ uint256 maxSyIn,
85
+ IStandardizedYield SY,
86
+ IPYieldToken YT
52
87
  )
53
88
  {
54
- (, payer, receiver, maxSyIn) = abi.decode(data, (ActionType, address, address, uint256));
89
+ assembly {
90
+ // first 32 bytes is ActionType
91
+ payer := calldataload(add(data.offset, 32))
92
+ receiver := calldataload(add(data.offset, 64))
93
+ maxSyIn := calldataload(add(data.offset, 96))
94
+ SY := calldataload(add(data.offset, 128))
95
+ YT := calldataload(add(data.offset, 160))
96
+ }
55
97
  }
56
98
 
57
99
  /// ------------------------------------------------------------
58
100
  /// SwapYtForSy (common encode & decode)
59
101
  /// ------------------------------------------------------------
60
102
 
61
- function _encodeSwapYtForSy(address receiver, uint256 minSyOut)
62
- internal
63
- pure
64
- returns (bytes memory)
65
- {
66
- return abi.encode(ActionType.SwapYtForSy, receiver, minSyOut);
103
+ function _encodeSwapYtForSy(
104
+ address receiver,
105
+ uint256 minSyOut,
106
+ IPYieldToken YT
107
+ ) internal pure returns (bytes memory res) {
108
+ res = new bytes(128);
109
+ uint256 actionType = uint256(ActionType.SwapYtForSy);
110
+
111
+ assembly {
112
+ mstore(add(res, 32), actionType)
113
+ mstore(add(res, 64), receiver)
114
+ mstore(add(res, 96), minSyOut)
115
+ mstore(add(res, 128), YT)
116
+ }
67
117
  }
68
118
 
69
- function _decodeSwapYtForSy(bytes memory data)
119
+ function _decodeSwapYtForSy(bytes calldata data)
70
120
  internal
71
121
  pure
72
- returns (address receiver, uint256 minSyOut)
122
+ returns (
123
+ address receiver,
124
+ uint256 minSyOut,
125
+ IPYieldToken YT
126
+ )
73
127
  {
74
- (, receiver, minSyOut) = abi.decode(data, (ActionType, address, uint256));
128
+ assembly {
129
+ // first 32 bytes is ActionType
130
+ receiver := calldataload(add(data.offset, 32))
131
+ minSyOut := calldataload(add(data.offset, 64))
132
+ YT := calldataload(add(data.offset, 96))
133
+ }
75
134
  }
76
135
 
77
136
  function _encodeSwapExactYtForPt(
78
137
  address receiver,
79
138
  uint256 exactYtIn,
80
- uint256 minPtOut
81
- ) internal pure returns (bytes memory) {
82
- return abi.encode(ActionType.SwapExactYtForPt, receiver, exactYtIn, minPtOut);
139
+ uint256 minPtOut,
140
+ IPPrincipalToken PT,
141
+ IPYieldToken YT
142
+ ) internal pure returns (bytes memory res) {
143
+ res = new bytes(192);
144
+ uint256 actionType = uint256(ActionType.SwapExactYtForPt);
145
+
146
+ assembly {
147
+ mstore(add(res, 32), actionType)
148
+ mstore(add(res, 64), receiver)
149
+ mstore(add(res, 96), exactYtIn)
150
+ mstore(add(res, 128), minPtOut)
151
+ mstore(add(res, 160), PT)
152
+ mstore(add(res, 192), YT)
153
+ }
83
154
  }
84
155
 
85
- function _decodeSwapExactYtForPt(bytes memory data)
156
+ function _decodeSwapExactYtForPt(bytes calldata data)
86
157
  internal
87
158
  pure
88
159
  returns (
89
160
  address receiver,
90
161
  uint256 exactYtIn,
91
- uint256 minPtOut
162
+ uint256 minPtOut,
163
+ IPPrincipalToken PT,
164
+ IPYieldToken YT
92
165
  )
93
166
  {
94
- (, receiver, exactYtIn, minPtOut) = abi.decode(
95
- data,
96
- (ActionType, address, uint256, uint256)
97
- );
167
+ assembly {
168
+ // first 32 bytes is ActionType
169
+ receiver := calldataload(add(data.offset, 32))
170
+ exactYtIn := calldataload(add(data.offset, 64))
171
+ minPtOut := calldataload(add(data.offset, 96))
172
+ PT := calldataload(add(data.offset, 128))
173
+ YT := calldataload(add(data.offset, 160))
174
+ }
98
175
  }
99
176
 
100
177
  function _encodeSwapExactPtForYt(
101
178
  address receiver,
102
179
  uint256 exactPtIn,
103
- uint256 minYtOut
104
- ) internal pure returns (bytes memory) {
105
- return abi.encode(ActionType.SwapExactPtForYt, receiver, exactPtIn, minYtOut);
180
+ uint256 minYtOut,
181
+ IPYieldToken YT
182
+ ) internal pure returns (bytes memory res) {
183
+ res = new bytes(160);
184
+ uint256 actionType = uint256(ActionType.SwapExactPtForYt);
185
+
186
+ assembly {
187
+ mstore(add(res, 32), actionType)
188
+ mstore(add(res, 64), receiver)
189
+ mstore(add(res, 96), exactPtIn)
190
+ mstore(add(res, 128), minYtOut)
191
+ mstore(add(res, 160), YT)
192
+ }
106
193
  }
107
194
 
108
- function _decodeSwapExactPtForYt(bytes memory data)
195
+ function _decodeSwapExactPtForYt(bytes calldata data)
109
196
  internal
110
197
  pure
111
198
  returns (
112
199
  address receiver,
113
200
  uint256 exactPtIn,
114
- uint256 minYtOut
201
+ uint256 minYtOut,
202
+ IPYieldToken YT
115
203
  )
116
204
  {
117
- (, receiver, exactPtIn, minYtOut) = abi.decode(
118
- data,
119
- (ActionType, address, uint256, uint256)
120
- );
205
+ assembly {
206
+ // first 32 bytes is ActionType
207
+ receiver := calldataload(add(data.offset, 32))
208
+ exactPtIn := calldataload(add(data.offset, 64))
209
+ minYtOut := calldataload(add(data.offset, 96))
210
+ YT := calldataload(add(data.offset, 128))
211
+ }
121
212
  }
122
213
 
123
214
  /// ------------------------------------------------------------
124
215
  /// Misc functions
125
216
  /// ------------------------------------------------------------
126
- function _getActionType(bytes memory data) internal pure returns (ActionType actionType) {
127
- actionType = abi.decode(data, (ActionType));
217
+ function _getActionType(bytes calldata data) internal pure returns (ActionType actionType) {
218
+ assembly {
219
+ actionType := calldataload(data.offset)
220
+ }
128
221
  }
129
222
  }