@pendle/core-v2 0.15.1-mainnet → 0.15.3-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 (403) 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 +15 -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 +15 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.json +13 -0
  8. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +15 -2
  11. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +15 -2
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +13 -0
  15. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +15 -2
  17. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +15 -2
  19. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +15 -2
  21. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +15 -2
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +15 -2
  26. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  31. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  32. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  33. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +4 -0
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +699 -0
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +4 -0
  37. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +515 -0
  38. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +4 -0
  39. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +10 -0
  40. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  42. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  44. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  47. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +77 -17
  49. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.json +2 -2
  53. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +4 -0
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +1003 -0
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +4 -0
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +1068 -0
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +4 -0
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.json +10 -0
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +4 -0
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.json +10 -0
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +4 -0
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.json +10 -0
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +4 -0
  70. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/{ConvexCurveLP → base}/PendleConvexLPSY.sol/PendleConvexLPSY.json +1 -1
  71. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +4 -0
  72. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +856 -0
  73. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  74. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  75. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  76. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +15 -2
  78. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  79. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +85 -4
  80. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  81. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +17 -4
  82. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/erc20/PendleERC20.sol/PendleERC20.json +2 -2
  84. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/erc20/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
  86. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/BaseSplitCodeFactory.json +3 -38
  88. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/libraries/BaseSplitCodeFactory.sol/CodeDeployer.json +2 -2
  90. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.json +13 -0
  92. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +1 -1
  93. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +2 -2
  94. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  95. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +284 -31
  96. package/build/artifacts/contracts/core/libraries/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.json +1 -1
  99. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.json +39 -85
  101. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +4 -0
  102. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.json +213 -0
  103. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +4 -0
  106. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.json +30 -0
  107. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +4 -0
  108. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.json +76 -0
  109. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +91 -17
  111. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +50 -0
  113. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +20 -0
  115. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +20 -0
  118. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  119. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +181 -17
  120. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +4 -0
  121. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.json +173 -0
  122. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +4 -0
  123. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.json +86 -0
  124. package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.dbg.json +4 -0
  125. package/build/artifacts/contracts/interfaces/IPBulkSellerSYCallback.sol/IPBulkSellerCallback.json +34 -0
  126. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  127. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +2 -2
  129. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  131. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  132. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  133. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.json +1 -1
  134. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  137. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  138. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
  139. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  140. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.json +45 -0
  141. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  142. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +1 -1
  143. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  144. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  145. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.json +15 -2
  146. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +4 -0
  147. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +35 -0
  148. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  149. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -80
  150. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  151. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +271 -61
  152. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  153. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +102 -41
  154. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  155. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
  156. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  157. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +61 -24
  158. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  159. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
  160. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  161. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +31 -24
  162. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  163. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
  164. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  165. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +31 -24
  166. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  167. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +15 -2
  168. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  169. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json +1 -1
  170. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  171. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  172. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  173. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  174. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
  175. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +191 -2
  176. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +4 -0
  177. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +35 -0
  178. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  179. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json +1 -1
  180. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol +58 -27
  181. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol +46 -12
  182. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol +31 -7
  183. package/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol +133 -0
  184. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +27 -0
  185. package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +9 -10
  186. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +9 -23
  187. package/contracts/core/BulkSeller/BulkSeller.sol +259 -0
  188. package/contracts/core/BulkSeller/BulkSellerFactory.sol +88 -0
  189. package/contracts/core/BulkSeller/BulkSellerMathCore.sol +143 -0
  190. package/contracts/core/Market/PendleMarket.sol +18 -7
  191. package/contracts/core/Market/PendleMarketFactory.sol +15 -5
  192. package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol +102 -0
  193. package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol +160 -0
  194. package/contracts/core/StandardizedYield/implementations/Convex/README.md +29 -0
  195. package/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol +215 -0
  196. package/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol +127 -0
  197. package/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol +152 -0
  198. package/contracts/core/StandardizedYield/implementations/Convex/{ConvexCurveLP → base}/PendleConvexLPSY.sol +2 -4
  199. package/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol +122 -0
  200. package/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol +17 -8
  201. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  202. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +38 -11
  203. package/contracts/core/YieldContracts/PendleYieldToken.sol +54 -21
  204. package/contracts/core/erc20/PendleERC20.sol +4 -7
  205. package/contracts/core/libraries/BaseSplitCodeFactory.sol +1 -1
  206. package/contracts/core/libraries/BoringOwnableUpgradeable.sol +1 -1
  207. package/contracts/core/libraries/Errors.sol +32 -4
  208. package/contracts/core/libraries/StringLib.sol +782 -0
  209. package/contracts/core/libraries/TokenHelper.sol +9 -0
  210. package/contracts/interfaces/ConvexCurve/IBooster.sol +1 -1
  211. package/contracts/interfaces/Curve/ICrvPool.sol +12 -31
  212. package/contracts/interfaces/Curve/ITriCrvPool.sol +41 -0
  213. package/contracts/interfaces/ILayerZeroEndpoint.sol +39 -0
  214. package/contracts/interfaces/ILayerZeroReceiver.sol +12 -0
  215. package/contracts/interfaces/ILooksFeeSharing.sol +5 -0
  216. package/contracts/interfaces/ILooksStaking.sol +13 -0
  217. package/contracts/interfaces/IPActionAddRemoveLiq.sol +3 -5
  218. package/contracts/interfaces/IPActionMintRedeem.sol +2 -0
  219. package/contracts/interfaces/IPBulkSeller.sol +28 -0
  220. package/contracts/interfaces/IPBulkSellerFactory.sol +12 -0
  221. package/contracts/interfaces/IPBulkSellerSYCallback.sol +10 -0
  222. package/contracts/interfaces/IPMarketFactory.sol +1 -1
  223. package/contracts/interfaces/IPMsgSendEndpoint.sol +4 -2
  224. package/contracts/interfaces/IPYieldContractFactory.sol +1 -1
  225. package/contracts/interfaces/IStETH.sol +6 -0
  226. package/contracts/interfaces/IStandardizedYield.sol +15 -10
  227. package/contracts/offchain-helpers/BulkSellerOffchain.sol +43 -0
  228. package/contracts/offchain-helpers/MarketMathStatic.sol +0 -173
  229. package/contracts/offchain-helpers/RouterStatic.sol +189 -50
  230. package/contracts/router/ActionAddRemoveLiq.sol +71 -52
  231. package/contracts/router/ActionCallback.sol +4 -8
  232. package/contracts/router/ActionMintRedeem.sol +27 -18
  233. package/contracts/router/ActionSwapPT.sol +8 -9
  234. package/contracts/router/ActionSwapPTYT.sol +3 -7
  235. package/contracts/router/ActionSwapYT.sol +15 -10
  236. package/contracts/router/PendleRouter.sol +3 -0
  237. package/contracts/router/base/ActionBaseMintRedeem.sol +78 -83
  238. package/contracts/router/base/MarketApproxLib.sol +1 -1
  239. package/contracts/router/kyberswap/AggregationRouterHelper.sol +17 -1
  240. package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +10 -0
  241. package/contracts/router/kyberswap/KyberSwapHelper.sol +21 -8
  242. package/deployments/1-core.json +1 -0
  243. package/deployments/1-markets/FRAX_30_MAR_23.json +9 -0
  244. package/deployments/1-markets/LOOKS_30_MAR_23.json +8 -0
  245. package/deployments/1-markets/USDD_MARCH_30.json +9 -0
  246. package/deployments/1-offchain-helper.json +3 -0
  247. package/package.json +3 -2
  248. package/typechain-types/AccessControl.ts +360 -0
  249. package/typechain-types/AccessControlUpgradeable.ts +369 -0
  250. package/typechain-types/ActionAddRemoveLiq.ts +64 -52
  251. package/typechain-types/ActionBaseMintRedeem.ts +8 -8
  252. package/typechain-types/ActionMintRedeem.ts +48 -16
  253. package/typechain-types/ActionSwapPT.ts +34 -12
  254. package/typechain-types/ActionSwapYT.ts +34 -12
  255. package/typechain-types/AggregationRouterHelper.ts +287 -3
  256. package/typechain-types/BaseSplitCodeFactoryContract.ts +9 -0
  257. package/typechain-types/BeaconProxy.ts +97 -0
  258. package/typechain-types/BoringOwnableUpgradeable.ts +9 -0
  259. package/typechain-types/BulkSeller.ts +777 -0
  260. package/typechain-types/BulkSellerFactory.ts +707 -0
  261. package/typechain-types/BulkSellerOffchain.ts +117 -0
  262. package/typechain-types/ContextUpgradeable.ts +68 -0
  263. package/typechain-types/Curve3CrvPoolHelper.ts +236 -0
  264. package/typechain-types/CurveFraxUsdcPoolHelper.ts +158 -0
  265. package/typechain-types/CurveUsdd3CrvPoolHelper.ts +184 -0
  266. package/typechain-types/ERC165.ts +102 -0
  267. package/typechain-types/ERC165Upgradeable.ts +113 -0
  268. package/typechain-types/IAccessControl.ts +305 -0
  269. package/typechain-types/IAccessControlUpgradeable.ts +305 -0
  270. package/typechain-types/IAggregationRouterHelper.ts +108 -0
  271. package/typechain-types/IBooster.ts +9 -3
  272. package/typechain-types/ICrvPool.ts +69 -172
  273. package/typechain-types/IERC165.ts +102 -0
  274. package/typechain-types/IERC165Upgradeable.ts +102 -0
  275. package/typechain-types/ILooksStaking.ts +27 -0
  276. package/typechain-types/IPActionAddRemoveLiq.ts +56 -44
  277. package/typechain-types/IPActionMintRedeem.ts +40 -8
  278. package/typechain-types/IPActionSwapPT.ts +26 -4
  279. package/typechain-types/IPActionSwapYT.ts +26 -4
  280. package/typechain-types/IPAllAction.ts +76 -54
  281. package/typechain-types/IPBulkSeller.ts +290 -0
  282. package/typechain-types/IPBulkSellerCallback.ts +115 -0
  283. package/typechain-types/IPBulkSellerFactory.ts +147 -0
  284. package/typechain-types/IPMarketFactory.ts +2 -2
  285. package/typechain-types/IPYieldContractFactory.ts +3 -3
  286. package/typechain-types/IStETH.ts +56 -0
  287. package/typechain-types/ITriCrvPool.ts +345 -0
  288. package/typechain-types/Initializable.ts +68 -0
  289. package/typechain-types/KyberSwapHelper.ts +8 -8
  290. package/typechain-types/MarketMathStatic.ts +0 -117
  291. package/typechain-types/PendleCurveFraxUsdcSY.ts +1228 -0
  292. package/typechain-types/PendleCurveUsdd3CrvSY.ts +1299 -0
  293. package/typechain-types/PendleFeeDistributor.ts +9 -0
  294. package/typechain-types/PendleFeeDistributorFactory.ts +9 -0
  295. package/typechain-types/PendleGaugeControllerBaseUpg.ts +9 -0
  296. package/typechain-types/PendleGaugeControllerMainchainUpg.ts +9 -0
  297. package/typechain-types/PendleGaugeControllerSidechainUpg.ts +9 -0
  298. package/typechain-types/PendleLooksStakingSY.ts +1052 -0
  299. package/typechain-types/PendleMarketFactory.ts +51 -2
  300. package/typechain-types/PendleMsgReceiveEndpointUpg.ts +9 -0
  301. package/typechain-types/PendleMsgSendEndpointUpg.ts +9 -0
  302. package/typechain-types/PendleMsgSenderAppUpg.ts +9 -0
  303. package/typechain-types/PendlePrincipalToken.ts +9 -0
  304. package/typechain-types/PendleRouter.ts +9 -0
  305. package/typechain-types/PendleVotingControllerUpg.ts +9 -0
  306. package/typechain-types/PendleYieldContractFactory.ts +57 -8
  307. package/typechain-types/PendleYieldToken.ts +21 -0
  308. package/typechain-types/ReentrancyGuardUpgradeable.ts +68 -0
  309. package/typechain-types/RouterStatic.ts +260 -22
  310. package/typechain-types/VotingEscrowPendleMainchain.ts +9 -0
  311. package/typechain-types/VotingEscrowPendleSidechain.ts +9 -0
  312. package/typechain-types/factories/AccessControlUpgradeable__factory.ts +247 -0
  313. package/typechain-types/factories/AccessControl__factory.ts +227 -0
  314. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +106 -59
  315. package/typechain-types/factories/ActionBaseMintRedeem__factory.ts +1 -1
  316. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  317. package/typechain-types/factories/ActionMintRedeem__factory.ts +65 -42
  318. package/typechain-types/factories/ActionMisc__factory.ts +1 -1
  319. package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
  320. package/typechain-types/factories/ActionSwapPT__factory.ts +35 -42
  321. package/typechain-types/factories/ActionSwapYT__factory.ts +35 -42
  322. package/typechain-types/factories/AggregationRouterHelper__factory.ts +190 -1
  323. package/typechain-types/factories/BaseSplitCodeFactoryContract__factory.ts +14 -1
  324. package/typechain-types/factories/BaseSplitCodeFactory__factory.ts +1 -1
  325. package/typechain-types/factories/BeaconProxy__factory.ts +141 -0
  326. package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +1 -1
  327. package/typechain-types/factories/BoringOwnableUpgradeable__factory.ts +13 -0
  328. package/typechain-types/factories/BulkSellerFactory__factory.ts +568 -0
  329. package/typechain-types/factories/BulkSellerOffchain__factory.ts +88 -0
  330. package/typechain-types/factories/BulkSeller__factory.ts +749 -0
  331. package/typechain-types/factories/ContextUpgradeable__factory.ts +39 -0
  332. package/typechain-types/factories/Curve3CrvPoolHelper__factory.ts +220 -0
  333. package/typechain-types/factories/CurveFraxUsdcPoolHelper__factory.ts +146 -0
  334. package/typechain-types/factories/CurveUsdd3CrvPoolHelper__factory.ts +172 -0
  335. package/typechain-types/factories/ERC165Upgradeable__factory.ts +58 -0
  336. package/typechain-types/factories/ERC165__factory.ts +39 -0
  337. package/typechain-types/factories/ERC20__factory.ts +1 -1
  338. package/typechain-types/factories/Errors__factory.ts +283 -30
  339. package/typechain-types/factories/IAccessControlUpgradeable__factory.ts +202 -0
  340. package/typechain-types/factories/IAccessControl__factory.ts +198 -0
  341. package/typechain-types/factories/IAggregationRouterHelper__factory.ts +54 -0
  342. package/typechain-types/factories/IBooster__factory.ts +1 -1
  343. package/typechain-types/factories/ICrvPool__factory.ts +39 -85
  344. package/typechain-types/factories/IERC165Upgradeable__factory.ts +45 -0
  345. package/typechain-types/factories/IERC165__factory.ts +42 -0
  346. package/typechain-types/factories/ILooksStaking__factory.ts +7 -0
  347. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +91 -17
  348. package/typechain-types/factories/IPActionMintRedeem__factory.ts +50 -0
  349. package/typechain-types/factories/IPActionSwapPT__factory.ts +20 -0
  350. package/typechain-types/factories/IPActionSwapYT__factory.ts +20 -0
  351. package/typechain-types/factories/IPAllAction__factory.ts +181 -17
  352. package/typechain-types/factories/IPBulkSellerCallback__factory.ts +53 -0
  353. package/typechain-types/factories/IPBulkSellerFactory__factory.ts +101 -0
  354. package/typechain-types/factories/IPBulkSeller__factory.ts +185 -0
  355. package/typechain-types/factories/IPMarketFactory__factory.ts +2 -2
  356. package/typechain-types/factories/IPYieldContractFactory__factory.ts +1 -1
  357. package/typechain-types/factories/IStETH__factory.ts +45 -0
  358. package/typechain-types/factories/ITriCrvPool__factory.ts +225 -0
  359. package/typechain-types/factories/ImplicitSwapfeeContract__factory.ts +1 -1
  360. package/typechain-types/factories/Initializable__factory.ts +36 -0
  361. package/typechain-types/factories/KyberSwapHelper__factory.ts +1 -1
  362. package/typechain-types/factories/MarketMathStatic__factory.ts +1 -79
  363. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  364. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1068 -0
  365. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1133 -0
  366. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  367. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  368. package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +14 -1
  369. package/typechain-types/factories/PendleFeeDistributor__factory.ts +14 -1
  370. package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +13 -0
  371. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +14 -1
  372. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +14 -1
  373. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +937 -0
  374. package/typechain-types/factories/PendleMarketFactory__factory.ts +76 -16
  375. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  376. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +14 -1
  377. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +14 -1
  378. package/typechain-types/factories/PendleMsgSenderAppUpg__factory.ts +13 -0
  379. package/typechain-types/factories/PendlePrincipalToken__factory.ts +14 -1
  380. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  381. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  382. package/typechain-types/factories/PendleRouter__factory.ts +14 -1
  383. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +14 -1
  384. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  385. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +84 -3
  386. package/typechain-types/factories/PendleYieldToken__factory.ts +16 -3
  387. package/typechain-types/factories/ReentrancyGuardUpgradeable__factory.ts +43 -0
  388. package/typechain-types/factories/RouterStatic__factory.ts +216 -2
  389. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +14 -1
  390. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +14 -1
  391. package/typechain-types/hardhat.d.ts +233 -17
  392. package/typechain-types/index.ts +50 -6
  393. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSY.sol/Pendle3CrvAndTokenSY.dbg.json +0 -4
  394. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSY.sol/Pendle3CrvAndTokenSY.json +0 -1018
  395. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +0 -4
  396. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.dbg.json +0 -4
  397. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/Pendle3CrvHelper.sol/Pendle3CrvHelper.json +0 -76
  398. package/build/artifacts/contracts/offchain-helpers/ImplicitSwapfeeContract.sol/ImplicitSwapfeeContract.dbg.json +0 -4
  399. package/build/artifacts/contracts/offchain-helpers/ImplicitSwapfeeContract.sol/ImplicitSwapfeeContract.json +0 -182
  400. package/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/Pendle3CrvAndTokenSY.sol +0 -167
  401. package/contracts/core/StandardizedYield/implementations/Convex/Pendle3CrvHelper.sol +0 -83
  402. package/contracts/interfaces/ICelerMessageBus.sol +0 -28
  403. package/contracts/interfaces/ICelerMessageReceiverApp.sol +0 -25
@@ -2,12 +2,18 @@
2
2
  pragma solidity 0.8.17;
3
3
 
4
4
  import "../../interfaces/IPMsgSendEndpoint.sol";
5
- import "../../interfaces/ICelerMessageBus.sol";
5
+ import "../../interfaces/ILayerZeroEndpoint.sol";
6
6
  import "../../core/libraries/BoringOwnableUpgradeable.sol";
7
7
  import "../../core/libraries/Errors.sol";
8
+ import "./libraries/LayerZeroHelper.sol";
8
9
  import "@openzeppelin/contracts/utils/structs/EnumerableMap.sol";
9
10
  import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
10
11
 
12
+ /**
13
+ * @dev Initially, currently we will use layer zero's default send and receive version (which is most updated)
14
+ * So we can leave the configuration unset.
15
+ */
16
+
11
17
  contract PendleMsgSendEndpointUpg is
12
18
  IPMsgSendEndpoint,
13
19
  Initializable,
@@ -16,7 +22,9 @@ contract PendleMsgSendEndpointUpg is
16
22
  {
17
23
  using EnumerableMap for EnumerableMap.UintToAddressMap;
18
24
 
19
- ICelerMessageBus public immutable celerMessageBus;
25
+ address payable public immutable refundAddress;
26
+ ILayerZeroEndpoint public immutable lzEndpoint;
27
+
20
28
  EnumerableMap.UintToAddressMap internal receiveEndpoints;
21
29
  mapping(address => bool) public isWhitelisted;
22
30
 
@@ -25,8 +33,9 @@ contract PendleMsgSendEndpointUpg is
25
33
  _;
26
34
  }
27
35
 
28
- constructor(ICelerMessageBus _celerMessageBus) initializer {
29
- celerMessageBus = _celerMessageBus;
36
+ constructor(address _refundAddress, ILayerZeroEndpoint _lzEndpoint) initializer {
37
+ refundAddress = payable(_refundAddress);
38
+ lzEndpoint = _lzEndpoint;
30
39
  }
31
40
 
32
41
  function initialize() external initializer {
@@ -35,21 +44,36 @@ contract PendleMsgSendEndpointUpg is
35
44
 
36
45
  function calcFee(
37
46
  address dstAddress,
38
- uint256, /*dstChainId*/
39
- bytes memory message
40
- ) external view returns (uint256) {
41
- return celerMessageBus.calcFee(abi.encode(dstAddress, message));
47
+ uint256 dstChainId,
48
+ bytes memory payload,
49
+ uint256 estimatedGasAmount
50
+ ) external view returns (uint256 fee) {
51
+ (fee, ) = lzEndpoint.estimateFees(
52
+ LayerZeroHelper._getLayerZeroChainIds(dstChainId),
53
+ receiveEndpoints.get(dstChainId),
54
+ abi.encode(dstAddress, payload),
55
+ false,
56
+ _getAdapterParams(estimatedGasAmount)
57
+ );
42
58
  }
43
59
 
44
60
  function sendMessage(
45
61
  address dstAddress,
46
62
  uint256 dstChainId,
47
- bytes calldata message
63
+ bytes calldata payload,
64
+ uint256 estimatedGasAmount
48
65
  ) external payable onlyWhitelisted {
49
- celerMessageBus.sendMessage{ value: msg.value }(
66
+ bytes memory path = abi.encodePacked(
50
67
  receiveEndpoints.get(dstChainId),
51
- dstChainId,
52
- abi.encode(dstAddress, message)
68
+ address(this)
69
+ );
70
+ lzEndpoint.send{ value: msg.value }(
71
+ LayerZeroHelper._getLayerZeroChainIds(dstChainId),
72
+ path,
73
+ abi.encode(dstAddress, payload),
74
+ refundAddress,
75
+ address(0),
76
+ _getAdapterParams(estimatedGasAmount)
53
77
  );
54
78
  }
55
79
 
@@ -65,6 +89,10 @@ contract PendleMsgSendEndpointUpg is
65
89
  isWhitelisted[addr] = status;
66
90
  }
67
91
 
92
+ function setLzSendVersion(uint16 _newVersion) external onlyOwner {
93
+ ILayerZeroEndpoint(lzEndpoint).setSendVersion(_newVersion);
94
+ }
95
+
68
96
  function getAllReceiveEndpoints()
69
97
  external
70
98
  view
@@ -80,4 +108,10 @@ contract PendleMsgSendEndpointUpg is
80
108
  }
81
109
 
82
110
  function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}
111
+
112
+ function _getAdapterParams(uint256 estimatedGasAmount) internal pure returns (bytes memory adapterParams) {
113
+ // this is more like "type" rather than version
114
+ // It is the type of adapter params you want to pass to relayer
115
+ adapterParams = abi.encodePacked(uint16(1), estimatedGasAmount);
116
+ }
83
117
  }
@@ -8,12 +8,14 @@ import "@openzeppelin/contracts/utils/structs/EnumerableMap.sol";
8
8
 
9
9
  // solhint-disable no-empty-blocks
10
10
  /// This contract is upgradable because
11
- /// - its constructor only sets immutable variables
11
+ /// - its constructor only sets immutable varia\bles
12
12
  /// - it has storage gaps for safe addition of future variables
13
13
  /// - it inherits only upgradable contract
14
14
  abstract contract PendleMsgSenderAppUpg is BoringOwnableUpgradeable {
15
15
  using EnumerableMap for EnumerableMap.UintToAddressMap;
16
16
 
17
+ uint256 public approxDstExecutionGas;
18
+
17
19
  IPMsgSendEndpoint public immutable pendleMsgSendEndpoint;
18
20
 
19
21
  // destinationContracts mapping contains one address for each chainId only
@@ -24,22 +26,29 @@ abstract contract PendleMsgSenderAppUpg is BoringOwnableUpgradeable {
24
26
  modifier refundUnusedEth() {
25
27
  _;
26
28
  if (address(this).balance > 0) {
27
- Address.sendValue(payable(msg.sender), address(this).balance);
29
+ AddressUpgradeable.sendValue(payable(msg.sender), address(this).balance);
28
30
  }
29
31
  }
30
32
 
31
- constructor(address _pendleMsgSendEndpoint) {
33
+ constructor(address _pendleMsgSendEndpoint, uint256 _approxDstExecutionGas) {
32
34
  pendleMsgSendEndpoint = IPMsgSendEndpoint(_pendleMsgSendEndpoint);
35
+ approxDstExecutionGas = _approxDstExecutionGas;
33
36
  }
34
37
 
35
38
  function _sendMessage(uint256 chainId, bytes memory message) internal {
36
39
  assert(destinationContracts.contains(chainId));
37
40
  address toAddr = destinationContracts.get(chainId);
38
- uint256 fee = pendleMsgSendEndpoint.calcFee(toAddr, chainId, message);
41
+ uint256 estimatedGasAmount = approxDstExecutionGas;
42
+ uint256 fee = pendleMsgSendEndpoint.calcFee(toAddr, chainId, message, estimatedGasAmount);
39
43
  // LM contracts won't hold ETH on its own so this is fine
40
44
  if (address(this).balance < fee)
41
45
  revert Errors.InsufficientFeeToSendMsg(address(this).balance, fee);
42
- pendleMsgSendEndpoint.sendMessage{ value: fee }(toAddr, chainId, message);
46
+ pendleMsgSendEndpoint.sendMessage{ value: fee }(
47
+ toAddr,
48
+ chainId,
49
+ message,
50
+ estimatedGasAmount
51
+ );
43
52
  }
44
53
 
45
54
  function addDestinationContract(address _address, uint256 _chainId)
@@ -48,7 +57,10 @@ abstract contract PendleMsgSenderAppUpg is BoringOwnableUpgradeable {
48
57
  onlyOwner
49
58
  {
50
59
  destinationContracts.set(_chainId, _address);
51
- _afterAddDestinationContract(_address, _chainId);
60
+ }
61
+
62
+ function setApproxDstExecutionGas(uint256 gas) external onlyOwner {
63
+ approxDstExecutionGas = gas;
52
64
  }
53
65
 
54
66
  function getAllDestinationContracts()
@@ -65,5 +77,17 @@ abstract contract PendleMsgSenderAppUpg is BoringOwnableUpgradeable {
65
77
  }
66
78
  }
67
79
 
68
- function _afterAddDestinationContract(address addr, uint256 chainId) internal virtual {}
80
+ function _getSendMessageFee(uint256 chainId, bytes memory message)
81
+ internal
82
+ view
83
+ returns (uint256)
84
+ {
85
+ return
86
+ pendleMsgSendEndpoint.calcFee(
87
+ destinationContracts.get(chainId),
88
+ chainId,
89
+ message,
90
+ approxDstExecutionGas
91
+ );
92
+ }
69
93
  }
@@ -0,0 +1,133 @@
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+ pragma solidity >=0.7.6;
3
+
4
+ library ExcessivelySafeCall {
5
+ uint256 constant LOW_28_MASK =
6
+ 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff;
7
+
8
+ /// @notice Use when you _really_ really _really_ don't trust the called
9
+ /// contract. This prevents the called contract from causing reversion of
10
+ /// the caller in as many ways as we can.
11
+ /// @dev The main difference between this and a solidity low-level call is
12
+ /// that we limit the number of bytes that the callee can cause to be
13
+ /// copied to caller memory. This prevents stupid things like malicious
14
+ /// contracts returning 10,000,000 bytes causing a local OOG when copying
15
+ /// to memory.
16
+ /// @param _target The address to call
17
+ /// @param _gas The amount of gas to forward to the remote contract
18
+ /// @param _maxCopy The maximum number of bytes of returndata to copy
19
+ /// to memory.
20
+ /// @param _calldata The data to send to the remote contract
21
+ /// @return success and returndata, as `.call()`. Returndata is capped to
22
+ /// `_maxCopy` bytes.
23
+ function excessivelySafeCall(
24
+ address _target,
25
+ uint256 _gas,
26
+ uint16 _maxCopy,
27
+ bytes memory _calldata
28
+ ) internal returns (bool, bytes memory) {
29
+ // set up for assembly call
30
+ uint256 _toCopy;
31
+ bool _success;
32
+ bytes memory _returnData = new bytes(_maxCopy);
33
+ // dispatch message to recipient
34
+ // by assembly calling "handle" function
35
+ // we call via assembly to avoid memcopying a very large returndata
36
+ // returned by a malicious contract
37
+ assembly {
38
+ _success := call(
39
+ _gas, // gas
40
+ _target, // recipient
41
+ 0, // ether value
42
+ add(_calldata, 0x20), // inloc
43
+ mload(_calldata), // inlen
44
+ 0, // outloc
45
+ 0 // outlen
46
+ )
47
+ // limit our copy to 256 bytes
48
+ _toCopy := returndatasize()
49
+ if gt(_toCopy, _maxCopy) {
50
+ _toCopy := _maxCopy
51
+ }
52
+ // Store the length of the copied bytes
53
+ mstore(_returnData, _toCopy)
54
+ // copy the bytes from returndata[0:_toCopy]
55
+ returndatacopy(add(_returnData, 0x20), 0, _toCopy)
56
+ }
57
+ return (_success, _returnData);
58
+ }
59
+
60
+ /// @notice Use when you _really_ really _really_ don't trust the called
61
+ /// contract. This prevents the called contract from causing reversion of
62
+ /// the caller in as many ways as we can.
63
+ /// @dev The main difference between this and a solidity low-level call is
64
+ /// that we limit the number of bytes that the callee can cause to be
65
+ /// copied to caller memory. This prevents stupid things like malicious
66
+ /// contracts returning 10,000,000 bytes causing a local OOG when copying
67
+ /// to memory.
68
+ /// @param _target The address to call
69
+ /// @param _gas The amount of gas to forward to the remote contract
70
+ /// @param _maxCopy The maximum number of bytes of returndata to copy
71
+ /// to memory.
72
+ /// @param _calldata The data to send to the remote contract
73
+ /// @return success and returndata, as `.call()`. Returndata is capped to
74
+ /// `_maxCopy` bytes.
75
+ function excessivelySafeStaticCall(
76
+ address _target,
77
+ uint256 _gas,
78
+ uint16 _maxCopy,
79
+ bytes memory _calldata
80
+ ) internal view returns (bool, bytes memory) {
81
+ // set up for assembly call
82
+ uint256 _toCopy;
83
+ bool _success;
84
+ bytes memory _returnData = new bytes(_maxCopy);
85
+ // dispatch message to recipient
86
+ // by assembly calling "handle" function
87
+ // we call via assembly to avoid memcopying a very large returndata
88
+ // returned by a malicious contract
89
+ assembly {
90
+ _success := staticcall(
91
+ _gas, // gas
92
+ _target, // recipient
93
+ add(_calldata, 0x20), // inloc
94
+ mload(_calldata), // inlen
95
+ 0, // outloc
96
+ 0 // outlen
97
+ )
98
+ // limit our copy to 256 bytes
99
+ _toCopy := returndatasize()
100
+ if gt(_toCopy, _maxCopy) {
101
+ _toCopy := _maxCopy
102
+ }
103
+ // Store the length of the copied bytes
104
+ mstore(_returnData, _toCopy)
105
+ // copy the bytes from returndata[0:_toCopy]
106
+ returndatacopy(add(_returnData, 0x20), 0, _toCopy)
107
+ }
108
+ return (_success, _returnData);
109
+ }
110
+
111
+ /**
112
+ * @notice Swaps function selectors in encoded contract calls
113
+ * @dev Allows reuse of encoded calldata for functions with identical
114
+ * argument types but different names. It simply swaps out the first 4 bytes
115
+ * for the new selector. This function modifies memory in place, and should
116
+ * only be used with caution.
117
+ * @param _newSelector The new 4-byte selector
118
+ * @param _buf The encoded contract args
119
+ */
120
+ function swapSelector(bytes4 _newSelector, bytes memory _buf) internal pure {
121
+ require(_buf.length >= 4);
122
+ uint256 _mask = LOW_28_MASK;
123
+ assembly {
124
+ // load the first word of
125
+ let _word := mload(add(_buf, 0x20))
126
+ // mask out the top 4 bytes
127
+ // /x
128
+ _word := and(_word, _mask)
129
+ _word := or(_newSelector, _word)
130
+ mstore(add(_buf, 0x20), _word)
131
+ }
132
+ }
133
+ }
@@ -0,0 +1,27 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.17;
3
+
4
+
5
+ library LayerZeroHelper {
6
+ uint256 constant EVM_ADDRESS_SIZE = 20;
7
+
8
+ function _getLayerZeroChainIds(uint256 chainId) internal pure returns (uint16) {
9
+ if (chainId == 43113) return 10106; // fuji testnet
10
+ else if (chainId == 80001) return 10109; // mumbai testnet
11
+ else if (chainId == 43114) return 106; // avax mainnet
12
+ assert(false);
13
+ }
14
+
15
+ function _getOriginalChainIds(uint16 chainId) internal pure returns (uint256) {
16
+ if (chainId == 10106) return 43113; // fuji testnet
17
+ else if (chainId == 10109) return 80001; // mumbai testnet
18
+ else if (chainId == 106) return 43114; // avax mainnet
19
+ assert(false);
20
+ }
21
+
22
+ function _getFirstAddressFromPath(bytes memory path) internal pure returns (address dst) {
23
+ assembly {
24
+ dst := mload(add(add(path, EVM_ADDRESS_SIZE), 0))
25
+ }
26
+ }
27
+ }
@@ -21,7 +21,7 @@ Voting accounting:
21
21
  will receive both of the reward pack
22
22
  - Each pack of money will has it own id as timestamp, a gauge controller does not
23
23
  receive a pack of money with the same id twice, this allow governance to rebroadcast
24
- in case the last message was corrupted by Celer
24
+ in case the last message was corrupted by LayerZero
25
25
 
26
26
  Pros:
27
27
  - If governance does not forget broadcasting the reward on the early of the week,
@@ -47,9 +47,13 @@ contract PendleVotingControllerUpg is
47
47
  using EnumerableMap for EnumerableMap.UintToAddressMap;
48
48
  using EnumerableSet for EnumerableSet.AddressSet;
49
49
 
50
- constructor(address _vePendle, address _pendleMsgSendEndpoint)
50
+ constructor(
51
+ address _vePendle,
52
+ address _pendleMsgSendEndpoint,
53
+ uint256 initialApproxDestinationGas
54
+ )
51
55
  VotingControllerStorageUpg(_vePendle)
52
- PendleMsgSenderAppUpg(_pendleMsgSendEndpoint) // constructor only set immutable variables
56
+ PendleMsgSenderAppUpg(_pendleMsgSendEndpoint, initialApproxDestinationGas) // constructor only set immutable variables
53
57
  initializer
54
58
  //solhint-disable-next-line
55
59
  {
@@ -196,7 +200,7 @@ contract PendleVotingControllerUpg is
196
200
  }
197
201
 
198
202
  /**
199
- * @notice use the gov-privilege to force broadcast a message in case there are issues with Celer
203
+ * @notice use the gov-privilege to force broadcast a message in case there are issues with LayerZero
200
204
  * @dev it's intentional for this function to have minimal checks since we assume gov has done the
201
205
  due diligence
202
206
  * @dev gov should always call finalizeEpoch beforehand
@@ -232,12 +236,7 @@ contract PendleVotingControllerUpg is
232
236
  address[] memory pools = new address[](length);
233
237
  uint256[] memory totalPendleAmounts = new uint256[](length);
234
238
 
235
- return
236
- pendleMsgSendEndpoint.calcFee(
237
- destinationContracts.get(chainId),
238
- chainId,
239
- abi.encode(uint128(0), pools, totalPendleAmounts)
240
- );
239
+ return _getSendMessageFee(chainId, abi.encode(uint128(0), pools, totalPendleAmounts));
241
240
  }
242
241
 
243
242
  /*///////////////////////////////////////////////////////////////
@@ -43,10 +43,11 @@ contract VotingEscrowPendleMainchain is
43
43
  // to ask for their vePendle balance at any wTime
44
44
  mapping(address => Checkpoints.History) internal userHistory;
45
45
 
46
- constructor(IERC20 _pendle, address _pendleMsgSendEndpoint)
47
- initializer
48
- PendleMsgSenderAppUpg(_pendleMsgSendEndpoint)
49
- {
46
+ constructor(
47
+ IERC20 _pendle,
48
+ address _pendleMsgSendEndpoint,
49
+ uint256 initialApproxDestinationGas
50
+ ) initializer PendleMsgSenderAppUpg(_pendleMsgSendEndpoint, initialApproxDestinationGas) {
50
51
  pendle = _pendle;
51
52
  __BoringOwnable_init();
52
53
  }
@@ -177,30 +178,20 @@ contract VotingEscrowPendleMainchain is
177
178
  function getBroadcastSupplyFee(uint256[] calldata chainIds)
178
179
  external
179
180
  view
180
- returns (uint256[] memory fees)
181
+ returns (uint256 fee)
181
182
  {
182
- fees = new uint256[](chainIds.length);
183
183
  for (uint256 i = 0; i < chainIds.length; i++) {
184
- fees[i] = pendleMsgSendEndpoint.calcFee(
185
- destinationContracts.get(chainIds[i]),
186
- chainIds[i],
187
- SAMPLE_SUPPLY_UPDATE_MESSAGE
188
- );
184
+ fee += _getSendMessageFee(chainIds[i], SAMPLE_SUPPLY_UPDATE_MESSAGE);
189
185
  }
190
186
  }
191
187
 
192
188
  function getBroadcastPositionFee(uint256[] calldata chainIds)
193
189
  external
194
190
  view
195
- returns (uint256[] memory fees)
191
+ returns (uint256 fee)
196
192
  {
197
- fees = new uint256[](chainIds.length);
198
193
  for (uint256 i = 0; i < chainIds.length; i++) {
199
- fees[i] = pendleMsgSendEndpoint.calcFee(
200
- destinationContracts.get(chainIds[i]),
201
- chainIds[i],
202
- SAMPLE_POSITION_UPDATE_MESSAGE
203
- );
194
+ fee += _getSendMessageFee(chainIds[i], SAMPLE_POSITION_UPDATE_MESSAGE);
204
195
  }
205
196
  }
206
197
 
@@ -295,11 +286,6 @@ contract VotingEscrowPendleMainchain is
295
286
  emit BroadcastTotalSupply(supply, chainIds);
296
287
  }
297
288
 
298
- function _afterAddDestinationContract(address, uint256 chainId) internal virtual override {
299
- (VeBalance memory supply, uint128 wTime) = _applySlopeChange();
300
- _broadcast(chainId, wTime, supply, EMPTY_BYTES);
301
- }
302
-
303
289
  function _broadcast(
304
290
  uint256 chainId,
305
291
  uint128 wTime,