@pendle/core-v2 0.16.5-testnet → 0.17.0-daily

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 (349) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/EpochResultManager.sol/EpochResultManager.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/FeeDistributor/PendleFeeDistributorFactory.sol/PendleFeeDistributorFactory.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  15. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.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 +16 -5
  24. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.json +0 -13
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  28. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  29. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  30. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  31. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  32. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.dbg.json +1 -1
  33. package/build/artifacts/contracts/LiquidityMining/libraries/WeekMath.sol/WeekMath.json +2 -2
  34. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +7 -54
  36. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +27 -2
  38. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  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 +25 -13
  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 +221 -50
  49. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.json +2 -2
  51. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.json +141 -0
  53. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.json +141 -0
  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 +143 -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 +1144 -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 +1209 -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 +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.json +3 -82
  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 +142 -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 +997 -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 +143 -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 +2 -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 +83 -10
  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 +35 -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/BoringOwnableUpgradeableData.dbg.json +1 -1
  92. package/build/artifacts/contracts/core/libraries/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +2 -2
  93. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  94. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +131 -31
  95. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/ConvexCurve/IBooster.sol/IBooster.json +1 -1
  97. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/Curve/ICrvPool.sol/ICrvPool.json +14 -7
  99. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.dbg.json +4 -0
  100. package/build/artifacts/contracts/interfaces/Curve/ITriCrvPool.sol/ITriCrvPool.json +213 -0
  101. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.json +1 -1
  103. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.dbg.json +4 -0
  104. package/build/artifacts/contracts/interfaces/ILooksFeeSharing.sol/ILooksFeeSharing.json +30 -0
  105. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.dbg.json +4 -0
  106. package/build/artifacts/contracts/interfaces/ILooksStaking.sol/ILooksStaking.json +76 -0
  107. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +8 -8
  109. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +18 -18
  111. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +2 -2
  115. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +28 -28
  117. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.json +0 -38
  119. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/IPBulkSellerFactory.sol/IPBulkSellerFactory.json +25 -0
  121. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +17 -5
  123. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +50 -19
  125. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/IPMsgSendEndpoint.sol/IPMsgSendEndpoint.json +1 -1
  127. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  129. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.json +7 -7
  131. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  132. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +13 -0
  133. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  134. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.dbg.json +1 -1
  135. package/build/artifacts/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol/BaseSplitCodeFactoryContract.json +2 -2
  136. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  137. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +71 -13
  138. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  139. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +28 -46
  140. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  141. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +138 -62
  142. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  143. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +37 -11
  144. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  145. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
  146. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  147. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +20 -20
  148. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  149. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
  150. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  151. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +28 -2
  152. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  153. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +29 -3
  154. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  155. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +30 -4
  156. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  157. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -186
  158. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  159. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  160. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  161. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  162. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  163. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +1 -1
  164. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +2 -2
  165. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  166. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol +1 -1
  167. package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +1 -1
  168. package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +3 -6
  169. package/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +1 -1
  170. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +7 -4
  171. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +10 -5
  172. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +3 -6
  173. package/contracts/LiquidityMining/libraries/VeHistoryLib.sol +0 -5
  174. package/contracts/LiquidityMining/libraries/WeekMath.sol +1 -1
  175. package/contracts/core/BulkSeller/BulkSeller.sol +0 -15
  176. package/contracts/core/BulkSeller/BulkSellerFactory.sol +7 -6
  177. package/contracts/core/Market/MarketMathCore.sol +52 -11
  178. package/contracts/core/Market/PendleMarket.sol +35 -22
  179. package/contracts/core/Market/PendleMarketFactory.sol +67 -35
  180. package/contracts/core/StandardizedYield/SYBase.sol +26 -3
  181. package/contracts/core/StandardizedYield/SYBaseWithRewards.sol +3 -1
  182. package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol +102 -0
  183. package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol +160 -0
  184. package/contracts/core/StandardizedYield/implementations/Convex/README.md +29 -0
  185. package/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol +215 -0
  186. package/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol +46 -26
  187. package/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol +152 -0
  188. package/contracts/core/StandardizedYield/implementations/Convex/{ConvexCurveLP → base}/PendleConvexLPSY.sol +0 -0
  189. package/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol +128 -0
  190. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  191. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +30 -12
  192. package/contracts/core/YieldContracts/PendleYieldToken.sol +79 -22
  193. package/contracts/core/erc20/PendleERC20.sol +4 -7
  194. package/contracts/core/libraries/BaseSplitCodeFactory.sol +1 -1
  195. package/contracts/core/libraries/BoringOwnableUpgradeable.sol +1 -1
  196. package/contracts/core/libraries/Errors.sol +18 -2
  197. package/contracts/interfaces/ConvexCurve/IBooster.sol +1 -1
  198. package/contracts/interfaces/Curve/ICrvPool.sol +3 -4
  199. package/contracts/interfaces/Curve/ITriCrvPool.sol +41 -0
  200. package/contracts/interfaces/IERC4626.sol +1 -1
  201. package/contracts/interfaces/ILooksFeeSharing.sol +5 -0
  202. package/contracts/interfaces/ILooksStaking.sol +13 -0
  203. package/contracts/interfaces/IPActionAddRemoveLiq.sol +4 -4
  204. package/contracts/interfaces/IPActionMintRedeem.sol +8 -8
  205. package/contracts/interfaces/IPActionSwapYT.sol +2 -2
  206. package/contracts/interfaces/IPBulkSeller.sol +0 -4
  207. package/contracts/interfaces/IPMarket.sol +20 -4
  208. package/contracts/interfaces/IPMarketFactory.sol +15 -5
  209. package/contracts/interfaces/IPMsgSendEndpoint.sol +1 -1
  210. package/contracts/interfaces/IPYieldContractFactory.sol +2 -2
  211. package/contracts/interfaces/IPYieldToken.sol +2 -0
  212. package/contracts/interfaces/IStandardizedYield.sol +15 -10
  213. package/contracts/offchain-helpers/BulkSellerOffchain.sol +17 -8
  214. package/contracts/offchain-helpers/MarketMathStatic.sol +35 -96
  215. package/contracts/offchain-helpers/RouterStatic.sol +49 -9
  216. package/contracts/router/ActionAddRemoveLiq.sol +102 -10
  217. package/contracts/router/ActionMintRedeem.sol +44 -4
  218. package/contracts/router/ActionSwapPT.sol +41 -11
  219. package/contracts/router/ActionSwapPTYT.sol +32 -7
  220. package/contracts/router/ActionSwapYT.sol +49 -33
  221. package/contracts/router/PendleRouter.sol +3 -11
  222. package/contracts/router/base/MarketApproxLib.sol +65 -22
  223. package/deployments/43113-core.json +19 -14
  224. package/deployments/43113-markets/WETH-FEB-2ND.json +10 -0
  225. package/package.json +7 -7
  226. package/typechain-types/AccessControlUpgradeable.ts +369 -0
  227. package/typechain-types/ActionAddRemoveLiq.ts +18 -18
  228. package/typechain-types/ActionMintRedeem.ts +30 -30
  229. package/typechain-types/ActionSwapPTYT.ts +5 -5
  230. package/typechain-types/ActionSwapYT.ts +5 -5
  231. package/typechain-types/BulkSeller.ts +5 -91
  232. package/typechain-types/BulkSellerFactory.ts +21 -0
  233. package/typechain-types/BulkSellerOffchain.ts +134 -0
  234. package/typechain-types/ContextUpgradeable.ts +68 -0
  235. package/typechain-types/ERC165Upgradeable.ts +113 -0
  236. package/typechain-types/IAccessControlUpgradeable.ts +305 -0
  237. package/typechain-types/IBooster.ts +9 -3
  238. package/typechain-types/ICrvPool.ts +4 -9
  239. package/typechain-types/IERC165Upgradeable.ts +102 -0
  240. package/typechain-types/IERC4626.ts +5 -5
  241. package/typechain-types/ILooksStaking.ts +27 -0
  242. package/typechain-types/IPActionAddRemoveLiq.ts +13 -13
  243. package/typechain-types/IPActionMintRedeem.ts +30 -30
  244. package/typechain-types/IPActionSwapYT.ts +5 -5
  245. package/typechain-types/IPAllAction.ts +48 -48
  246. package/typechain-types/IPBulkSeller.ts +0 -68
  247. package/typechain-types/IPBulkSellerFactory.ts +21 -0
  248. package/typechain-types/IPMarket.ts +26 -16
  249. package/typechain-types/IPMarketFactory.ts +70 -37
  250. package/typechain-types/IPMsgSendEndpoint.ts +1 -1
  251. package/typechain-types/IPYieldContractFactory.ts +11 -11
  252. package/typechain-types/IPYieldToken.ts +21 -0
  253. package/typechain-types/MarketMathStatic.ts +0 -67
  254. package/typechain-types/Pausable.ts +101 -0
  255. package/typechain-types/PendleConvexLPSY.ts +204 -0
  256. package/typechain-types/PendleCurveFraxUsdcSY.ts +204 -0
  257. package/typechain-types/PendleCurveUsdd3CrvSY.ts +204 -0
  258. package/typechain-types/PendleLooksStakingSY.ts +1256 -0
  259. package/typechain-types/PendleMarket.ts +26 -16
  260. package/typechain-types/PendleMarketFactory.ts +316 -92
  261. package/typechain-types/PendleQiTokenSY.ts +204 -0
  262. package/typechain-types/PendleRouter.ts +3 -287
  263. package/typechain-types/PendleWstEthSY.ts +204 -0
  264. package/typechain-types/PendleYieldContractFactory.ts +63 -18
  265. package/typechain-types/PendleYieldToken.ts +42 -0
  266. package/typechain-types/RouterStatic.ts +65 -7
  267. package/typechain-types/SYBase.ts +204 -0
  268. package/typechain-types/SYBaseWithRewards.ts +204 -0
  269. package/typechain-types/VotingEscrowPendleSidechain.ts +8 -8
  270. package/typechain-types/VotingEscrowTokenBase.ts +0 -21
  271. package/typechain-types/factories/AccessControlUpgradeable__factory.ts +247 -0
  272. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +36 -10
  273. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  274. package/typechain-types/factories/ActionMintRedeem__factory.ts +19 -19
  275. package/typechain-types/factories/ActionMisc__factory.ts +1 -1
  276. package/typechain-types/factories/ActionSwapPTYT__factory.ts +28 -2
  277. package/typechain-types/factories/ActionSwapPT__factory.ts +27 -1
  278. package/typechain-types/factories/ActionSwapYT__factory.ts +29 -3
  279. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  280. package/typechain-types/factories/BaseSplitCodeFactoryContract__factory.ts +1 -1
  281. package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +1 -1
  282. package/typechain-types/factories/BulkSellerFactory__factory.ts +26 -1
  283. package/typechain-types/factories/BulkSellerOffchain__factory.ts +70 -12
  284. package/typechain-types/factories/BulkSeller__factory.ts +6 -53
  285. package/typechain-types/factories/ContextUpgradeable__factory.ts +39 -0
  286. package/typechain-types/factories/ERC165Upgradeable__factory.ts +58 -0
  287. package/typechain-types/factories/Errors__factory.ts +130 -30
  288. package/typechain-types/factories/IAccessControlUpgradeable__factory.ts +202 -0
  289. package/typechain-types/factories/IBooster__factory.ts +1 -1
  290. package/typechain-types/factories/ICrvPool__factory.ts +14 -7
  291. package/typechain-types/factories/IERC165Upgradeable__factory.ts +45 -0
  292. package/typechain-types/factories/IERC4626__factory.ts +1 -1
  293. package/typechain-types/factories/ILooksStaking__factory.ts +7 -0
  294. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +8 -8
  295. package/typechain-types/factories/IPActionMintRedeem__factory.ts +18 -18
  296. package/typechain-types/factories/IPActionSwapYT__factory.ts +2 -2
  297. package/typechain-types/factories/IPAllAction__factory.ts +28 -28
  298. package/typechain-types/factories/IPBulkSellerFactory__factory.ts +25 -0
  299. package/typechain-types/factories/IPBulkSeller__factory.ts +0 -38
  300. package/typechain-types/factories/IPMarketFactory__factory.ts +50 -19
  301. package/typechain-types/factories/IPMarket__factory.ts +17 -5
  302. package/typechain-types/factories/IPMsgSendEndpoint__factory.ts +1 -1
  303. package/typechain-types/factories/IPYieldContractFactory__factory.ts +7 -7
  304. package/typechain-types/factories/IPYieldToken__factory.ts +13 -0
  305. package/typechain-types/factories/ImplicitSwapfeeContract__factory.ts +1 -1
  306. package/typechain-types/factories/MarketMathStatic__factory.ts +27 -45
  307. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  308. package/typechain-types/factories/Pausable__factory.ts +62 -0
  309. package/typechain-types/factories/PendleConvexLPSY__factory.ts +141 -0
  310. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +142 -1
  311. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +145 -39
  312. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  313. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  314. package/typechain-types/factories/PendleFeeDistributorFactory__factory.ts +1 -1
  315. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  316. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  317. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  318. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1078 -0
  319. package/typechain-types/factories/PendleMarketFactory__factory.ts +220 -49
  320. package/typechain-types/factories/PendleMarket__factory.ts +18 -6
  321. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  322. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  323. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  324. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  325. package/typechain-types/factories/PendleQiTokenSY__factory.ts +142 -1
  326. package/typechain-types/factories/PendleRouter__factory.ts +1 -185
  327. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  328. package/typechain-types/factories/PendleWstEthSY__factory.ts +142 -1
  329. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +82 -9
  330. package/typechain-types/factories/PendleYieldToken__factory.ts +38 -3
  331. package/typechain-types/factories/RouterStatic__factory.ts +79 -3
  332. package/typechain-types/factories/SYBaseWithRewards__factory.ts +141 -0
  333. package/typechain-types/factories/SYBase__factory.ts +141 -0
  334. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  335. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +15 -4
  336. package/typechain-types/factories/VotingEscrowTokenBase__factory.ts +0 -13
  337. package/typechain-types/hardhat.d.ts +107 -26
  338. package/typechain-types/index.ts +24 -6
  339. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/ConvexCurveLP/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +0 -4
  340. package/build/artifacts/contracts/offchain-helpers/ImplicitSwapfeeContract.sol/ImplicitSwapfeeContract.dbg.json +0 -4
  341. package/build/artifacts/contracts/offchain-helpers/ImplicitSwapfeeContract.sol/ImplicitSwapfeeContract.json +0 -182
  342. package/contracts/offchain-helpers/ImplicitSwapfeeContract.sol +0 -30
  343. package/deployments/43113-markets/benqi-market-QI-AVAX-FEB-2ND.json +0 -9
  344. package/deployments/43113-markets/benqi-market-QI-USDC-FEB-2ND.json +0 -8
  345. package/deployments/43113-markets/benqi-market-QI-WETH-DEC-1ST.json +0 -9
  346. package/deployments/80001-core.json +0 -16
  347. package/deployments/80001-markets/benqi-market-QI-USDC-FEB-2ND.json +0 -8
  348. package/deployments/80001-markets/benqi-market-QI-WETH-DEC-1ST.json +0 -8
  349. package/deployments/80001-testenv.json +0 -22
@@ -5,6 +5,7 @@ import "../interfaces/IPActionSwapPTYT.sol";
5
5
  import "../interfaces/IPMarket.sol";
6
6
  import "./base/CallbackHelper.sol";
7
7
 
8
+ /// @dev All swap actions will revert if market is expired
8
9
  contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper, TokenHelper {
9
10
  using MarketMathCore for MarketState;
10
11
  using MarketApproxPtInLib for MarketState;
@@ -19,6 +20,18 @@ contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper, TokenHelper {
19
20
 
20
21
  }
21
22
 
23
+ /**
24
+ * @notice swap exact PT to YT with the help of flashswaps & YT tokenization / redemption
25
+ * @dev inner working of this function:
26
+ - `exactPtIn` PT is transferred to market contract
27
+ - `market.swapExactPtForSy` is called, which will transfer SY directly to YT contract & callback is invoked.
28
+ Note that we will owe PT, the amount before is not sufficient
29
+ - in callback, all SY in YT contract is used to mint PT + YT, with PT used to pay the rest of the loan, and YT
30
+ transferred to the receiver
31
+ * @param exactPtIn will always consume this amount of PT for as much YT as possible
32
+ * @param guessTotalPtToSwap approximation data for PT used for the PT-to-SY flashswap
33
+ * @dev this function works in conjunction with ActionCallback
34
+ */
22
35
  function swapExactPtForYt(
23
36
  address receiver,
24
37
  address market,
@@ -27,7 +40,7 @@ contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper, TokenHelper {
27
40
  ApproxParams calldata guessTotalPtToSwap
28
41
  ) external returns (uint256 netYtOut, uint256 netSyFee) {
29
42
  (, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
30
- MarketState memory state = IPMarket(market).readState();
43
+ MarketState memory state = IPMarket(market).readState(address(this));
31
44
 
32
45
  _transferFrom(IERC20(PT), msg.sender, market, exactPtIn);
33
46
 
@@ -50,31 +63,43 @@ contract ActionSwapPTYT is IPActionSwapPTYT, CallbackHelper, TokenHelper {
50
63
  emit SwapPtAndYt(msg.sender, market, receiver, exactPtIn.neg(), netYtOut.Int());
51
64
  }
52
65
 
66
+ /**
67
+ * @notice swap exact YT to PT with the help of flashswaps & YT tokenization / redemption
68
+ * @dev inner working of this function:
69
+ - `exactYtIn` YT is transferred to yield contract
70
+ - `market.swapSyForExactPt` is called, which will transfer PT directly to this contract & callback is invoked.
71
+ Note that we now owe SY
72
+ - in callback, a portion of PT + YT is used to redeem SY, which is then used to payback the loan. The rest of
73
+ of the PT is transferred to `receiver`
74
+ * @param exactYtIn will always consume this amount of YT for as much PT as possible
75
+ * @param guessTotalPtFromSwap approximation data for PT output of the SY-to-PT flashswap
76
+ * @dev this function works in conjunction with ActionCallback
77
+ */
53
78
  function swapExactYtForPt(
54
79
  address receiver,
55
80
  address market,
56
81
  uint256 exactYtIn,
57
82
  uint256 minPtOut,
58
- ApproxParams calldata guessTotalPtSwapped
83
+ ApproxParams calldata guessTotalPtFromSwap
59
84
  ) external returns (uint256 netPtOut, uint256 netSyFee) {
60
85
  (, , IPYieldToken YT) = IPMarket(market).readTokens();
61
- MarketState memory state = IPMarket(market).readState();
86
+ MarketState memory state = IPMarket(market).readState(address(this));
62
87
 
63
88
  _transferFrom(IERC20(YT), msg.sender, address(YT), exactYtIn);
64
89
 
65
- uint256 totalPtSwapped;
66
- (netPtOut, totalPtSwapped, netSyFee) = state.approxSwapExactYtForPt(
90
+ uint256 totalPtFromSwap;
91
+ (netPtOut, totalPtFromSwap, netSyFee) = state.approxSwapExactYtForPt(
67
92
  YT.newIndex(),
68
93
  exactYtIn,
69
94
  block.timestamp,
70
- guessTotalPtSwapped
95
+ guessTotalPtFromSwap
71
96
  );
72
97
 
73
98
  if (netPtOut < minPtOut) revert Errors.RouterInsufficientPtOut(netPtOut, minPtOut);
74
99
 
75
100
  IPMarket(market).swapSyForExactPt(
76
101
  address(this),
77
- totalPtSwapped,
102
+ totalPtFromSwap,
78
103
  _encodeSwapExactYtForPt(receiver, exactYtIn, minPtOut)
79
104
  );
80
105
 
@@ -7,6 +7,7 @@ import "../interfaces/IPActionSwapYT.sol";
7
7
  import "../interfaces/IPMarket.sol";
8
8
  import "../core/libraries/Errors.sol";
9
9
 
10
+ /// @dev All swap actions will revert if market is expired
10
11
  contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
11
12
  using Math for uint256;
12
13
  using Math for int256;
@@ -21,14 +22,16 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
21
22
  {}
22
23
 
23
24
  /**
24
- * @notice swap exact SY to YT with the help of flashswaps & YT tokenization / redemption
25
- * @dev inner working of this function:
25
+ * @notice swap exact SY to YT with the help of flashswaps & YT tokenization / redemption
26
+ * @dev inner working of this function:
26
27
  - `exactSyIn` SY is transferred to YT contract
27
- - `market.swapExactPtForSy` is called, which will transfer SY directly to YT contract & callback is invoked.
28
- Note that now we owe PT
29
- - in callback, all SY in YT contract is used to mint PT + YT, with PT used to pay back the loan, and YT
30
- transferred to the receiver
31
- * @dev this function works in conjunction with ActionCallback
28
+ - `market.swapExactPtForSy` is called, which will transfer more SY directly to YT contract &
29
+ callback is invoked. Note that now we owe PT
30
+ - in callback, all SY in YT contract is used to mint PT + YT, with all PT used to pay back the
31
+ loan, and all YT transferred to the receiver
32
+ * @param exactSyIn will always consume this amount of SY for as much YT as possible
33
+ * @param guessYtOut approximation data for total YT output
34
+ * @dev this function works in conjunction with ActionCallback
32
35
  */
33
36
  function swapExactSyForYt(
34
37
  address receiver,
@@ -54,14 +57,15 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
54
57
  }
55
58
 
56
59
  /**
57
- * @notice swap exact YT to SY with the help of flashswaps & YT tokenization / redemption
58
- * @dev inner working of this function:
60
+ * @notice swap exact YT to SY with the help of flashswaps & YT tokenization / redemption
61
+ * @dev inner working of this function:
59
62
  - `exactYtIn` YT is transferred to YT contract
60
- - `market.swapSyForExactPt` is called, which will transfer PT directly to YT contract & callback is invoked.
61
- Note that now we owe SY
62
- - in callback, all PT + YT in YT contract is used to redeem SY. A portion of SY is used to payback the loan,
63
- the rest is transferred to the `receiver`
64
- * @dev this function works in conjunction with ActionCallback
63
+ - `market.swapSyForExactPt` is called, which will transfer PT directly to YT contract &
64
+ callback is invoked. Note that now we owe SY.
65
+ - In callback, all PT + YT in YT contract is used to redeem SY. A portion of SY is used to
66
+ payback the loan, the rest is transferred to the `receiver`
67
+ * @param exactYtIn will consume exactly this much YT for as much SY as possible
68
+ * @dev this function works in conjunction with ActionCallback
65
69
  */
66
70
  function swapExactYtForSy(
67
71
  address receiver,
@@ -79,13 +83,14 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
79
83
  }
80
84
 
81
85
  /**
82
- * @notice swap SY to exact YT with the help of flashswaps & YT tokenization / redemption
83
- * @dev inner working of this function:
84
- - `market.swapExactPtForSy` is called, which will transfer SY directly to YT contract & callback is invoked.
85
- Note that now we owe PT
86
- - in callback, we will pull in more SY as needed & mint all SY to PT + YT. PT is then used to payback the loan
87
- while YT is transferred to the user
88
- * @dev this function works in conjunction with ActionCallback
86
+ * @notice swap SY to exact YT with the help of flashswaps & YT tokenization / redemption
87
+ * @dev inner working of this function:
88
+ - `market.swapExactPtForSy` is called, which will transfer SY directly to YT contract &
89
+ callback is invoked. Note that now we owe PT
90
+ - In callback, we will pull in more SY as needed from caller & mint all SY to PT + YT. PT is
91
+ then used to payback the loan, while YT is transferred to `receiver`
92
+ * @param exactYtOut will output exactly this amount of YT, no approximation is used
93
+ * @dev this function works in conjunction with ActionCallback
89
94
  */
90
95
  function swapSyForExactYt(
91
96
  address receiver,
@@ -109,14 +114,15 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
109
114
  }
110
115
 
111
116
  /**
112
- * @notice swap YT to exact SY with the help of flashswaps & YT tokenization / redemption
113
- * @dev inner working of this function:
114
- - transfer netYtIn (received from approx function) to YT contract
115
- - `market.swapSyForExactPt` is called, which will transfer PT directly to YT contract & callback is invoked.
116
- Note that now we owe SY
117
- - in callback, we will redeem all PT + YT to get SY. A portion of it is used to payback the loan. The rest is
118
- transferred to `receiver`
119
- * @dev this function works in conjunction with ActionCallback
117
+ * @notice swap YT to exact SY with the help of flashswaps & YT tokenization / redemption
118
+ * @dev inner working of this function:
119
+ - Approximates `netYtIn` using the data from `guessYtIn`
120
+ - Pulls `netYtIn` amount of YT from caller
121
+ - `market.swapSyForExactPt` is called, which will transfer PT directly to YT contract &
122
+ callback is invoked. Note that now we owe SY
123
+ - In callback, we will redeem all PT + YT to get SY. A portion of it is used to payback the
124
+ loan. The rest is transferred to `receiver`
125
+ * @dev this function works in conjunction with ActionCallback
120
126
  */
121
127
  function swapYtForExactSy(
122
128
  address receiver,
@@ -125,7 +131,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
125
131
  uint256 maxYtIn,
126
132
  ApproxParams memory guessYtIn
127
133
  ) external returns (uint256 netYtIn, uint256 netSyFee) {
128
- MarketState memory state = IPMarket(market).readState();
134
+ MarketState memory state = IPMarket(market).readState(address(this));
129
135
  (, , IPYieldToken YT) = IPMarket(market).readTokens();
130
136
 
131
137
  (netYtIn, , ) = state.approxSwapYtForExactSy(
@@ -148,6 +154,11 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
148
154
  emit SwapYtAndSy(msg.sender, market, receiver, netYtIn.neg(), exactSyOut.Int());
149
155
  }
150
156
 
157
+ /**
158
+ * @notice swaps any token to YT
159
+ * @dev this function swaps token for SY-mintable token first through Kyberswap, then mints SY
160
+ * from such, finally swaps SY to YT (see `swapSyForExactYt()`)
161
+ */
151
162
  function swapExactTokenForYt(
152
163
  address receiver,
153
164
  address market,
@@ -171,13 +182,18 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
171
182
  emit SwapYtAndToken(
172
183
  msg.sender,
173
184
  market,
174
- receiver,
175
185
  input.tokenIn,
186
+ receiver,
176
187
  netYtOut.Int(),
177
188
  input.netTokenIn.neg()
178
189
  );
179
190
  }
180
191
 
192
+ /**
193
+ * @notice swaps YT to a given token
194
+ * @dev the function first swaps YT to SY (see `swapExactYtForSy()`), then redeems SY,
195
+ * finally swaps resulting tokens to desired output token using Kyberswap
196
+ */
181
197
  function swapExactYtForToken(
182
198
  address receiver,
183
199
  address market,
@@ -204,8 +220,8 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
204
220
  emit SwapYtAndToken(
205
221
  msg.sender,
206
222
  market,
207
- receiver,
208
223
  output.tokenOut,
224
+ receiver,
209
225
  netYtIn.neg(),
210
226
  netTokenOut.Int()
211
227
  );
@@ -219,7 +235,7 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
219
235
  uint256 minYtOut,
220
236
  ApproxParams memory guessYtOut
221
237
  ) internal returns (uint256 netYtOut, uint256 netSyFee) {
222
- MarketState memory state = IPMarket(market).readState();
238
+ MarketState memory state = IPMarket(market).readState(address(this));
223
239
 
224
240
  (netYtOut, ) = state.approxSwapExactSyForYt(
225
241
  YT.newIndex(),
@@ -5,7 +5,6 @@ import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
5
5
  import "@openzeppelin/contracts/proxy/Proxy.sol";
6
6
  import "../interfaces/IPAllAction.sol";
7
7
  import "../interfaces/IPMarketSwapCallback.sol";
8
- import "../core/libraries/BoringOwnableUpgradeable.sol";
9
8
  import "../core/libraries/Errors.sol";
10
9
 
11
10
  /// @dev this contract will be deployed behind an ERC1967 proxy
@@ -13,7 +12,7 @@ import "../core/libraries/Errors.sol";
13
12
  /// corresponding implementation contracts
14
13
 
15
14
  // solhint-disable no-empty-blocks
16
- contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, BoringOwnableUpgradeable {
15
+ contract PendleRouter is Proxy {
17
16
  address public immutable ACTION_MINT_REDEEM;
18
17
  address public immutable ACTION_ADD_REMOVE_LIQ;
19
18
  address public immutable ACTION_SWAP_PT;
@@ -30,7 +29,7 @@ contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, BoringOwnableUpg
30
29
  address _ACTION_SWAP_PTYT,
31
30
  address _ACTION_CALLBACK,
32
31
  address _ACTION_MISC
33
- ) initializer {
32
+ ) {
34
33
  ACTION_MINT_REDEEM = _ACTION_MINT_REDEEM;
35
34
  ACTION_ADD_REMOVE_LIQ = _ACTION_ADD_REMOVE_LIQ;
36
35
  ACTION_SWAP_PT = _ACTION_SWAP_PT;
@@ -40,12 +39,7 @@ contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, BoringOwnableUpg
40
39
  ACTION_MISC = _ACTION_MISC;
41
40
  }
42
41
 
43
- receive() external payable virtual override {
44
- }
45
-
46
- function initialize() external initializer {
47
- __BoringOwnable_init();
48
- }
42
+ receive() external payable virtual override {}
49
43
 
50
44
  function getRouterImplementation(bytes4 sig) public view returns (address) {
51
45
  if (
@@ -103,8 +97,6 @@ contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, BoringOwnableUpg
103
97
  revert Errors.RouterInvalidAction(sig);
104
98
  }
105
99
 
106
- function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}
107
-
108
100
  function _implementation() internal view override returns (address) {
109
101
  return getRouterImplementation(msg.sig);
110
102
  }
@@ -24,7 +24,8 @@ struct ApproxParams {
24
24
 
25
25
  /// for guessOffchain, this is to provide a shortcut to guessing. The offchain SDK can precalculate the exact result
26
26
  /// before the tx is sent. When the tx reaches the contract, the guessOffchain will be checked first, and if it satisfies the
27
- /// approximation, it will be used (and save all the guessing).
27
+ /// approximation, it will be used (and save all the guessing). It's expected that this shortcut will be used in most cases
28
+ /// except in cases that there is a trade in the same market right before the tx
28
29
  }
29
30
 
30
31
  library MarketApproxPtInLib {
@@ -84,7 +85,7 @@ library MarketApproxPtInLib {
84
85
  continue;
85
86
  }
86
87
 
87
- (uint256 netSyOut, uint256 netSyFee) = calcSyOut(a.market, comp, a.index, guess);
88
+ (uint256 netSyOut, uint256 netSyFee, ) = calcSyOut(a.market, comp, a.index, guess);
88
89
 
89
90
  if (netSyOut >= a.minSyOut) {
90
91
  p.guessMax = guess;
@@ -146,7 +147,7 @@ library MarketApproxPtInLib {
146
147
  continue;
147
148
  }
148
149
 
149
- (uint256 netSyOut, uint256 netSyFee) = calcSyOut(a.market, comp, a.index, guess);
150
+ (uint256 netSyOut, uint256 netSyFee, ) = calcSyOut(a.market, comp, a.index, guess);
150
151
 
151
152
  uint256 maxPtPayable = a.index.syToAsset(netSyOut + a.exactSyIn);
152
153
 
@@ -155,7 +156,7 @@ library MarketApproxPtInLib {
155
156
  bool isAnswerAccepted = Math.isASmallerApproxB(guess, maxPtPayable, p.eps);
156
157
  if (isAnswerAccepted) return (guess, netSyFee);
157
158
  } else {
158
- p.guessMax = guess;
159
+ p.guessMax = guess - 1;
159
160
  }
160
161
  }
161
162
  revert Errors.ApproxFail();
@@ -211,14 +212,18 @@ library MarketApproxPtInLib {
211
212
  continue;
212
213
  }
213
214
 
214
- (uint256 netSyOut, uint256 netSyFee) = calcSyOut(a.market, comp, a.index, guess);
215
+ (uint256 netSyOut, uint256 netSyFee, uint256 netSyToReserve) = calcSyOut(
216
+ a.market,
217
+ comp,
218
+ a.index,
219
+ guess
220
+ );
215
221
 
216
222
  uint256 syNumerator;
217
223
  uint256 ptNumerator;
218
224
  {
219
225
  uint256 newTotalPt = a.market.totalPt.Uint() + guess;
220
- uint256 netPtRemaining = a.totalPtIn - guess;
221
- uint256 newTotalSy = (a.market.totalSy.Uint() - netSyOut - netSyFee);
226
+ uint256 newTotalSy = (a.market.totalSy.Uint() - netSyOut - netSyToReserve);
222
227
 
223
228
  // it is desired that
224
229
  // netSyOut / newTotalSy = netPtRemaining / newTotalPt
@@ -226,7 +231,7 @@ library MarketApproxPtInLib {
226
231
  // netSyOut * newTotalPt = netPtRemaining * newTotalSy
227
232
 
228
233
  syNumerator = netSyOut * newTotalPt;
229
- ptNumerator = netPtRemaining * newTotalSy;
234
+ ptNumerator = (a.totalPtIn - guess) * newTotalSy;
230
235
  }
231
236
 
232
237
  if (Math.isAApproxB(syNumerator, ptNumerator, p.eps)) {
@@ -292,7 +297,7 @@ library MarketApproxPtInLib {
292
297
  continue;
293
298
  }
294
299
 
295
- (uint256 netSyOut, uint256 netSyFee) = calcSyOut(a.market, comp, a.index, guess);
300
+ (uint256 netSyOut, uint256 netSyFee, ) = calcSyOut(a.market, comp, a.index, guess);
296
301
 
297
302
  uint256 netAssetOut = a.index.syToAsset(netSyOut);
298
303
 
@@ -316,10 +321,23 @@ library MarketApproxPtInLib {
316
321
  MarketPreCompute memory comp,
317
322
  PYIndex index,
318
323
  uint256 netPtIn
319
- ) internal pure returns (uint256 netSyOut, uint256 netSyFee) {
320
- (int256 _netSyOut, int256 _netSyFee) = market.calcTrade(comp, index, netPtIn.neg());
324
+ )
325
+ internal
326
+ pure
327
+ returns (
328
+ uint256 netSyOut,
329
+ uint256 netSyFee,
330
+ uint256 netSyToReserve
331
+ )
332
+ {
333
+ (int256 _netSyOut, int256 _netSyFee, int256 _netSyToReserve) = market.calcTrade(
334
+ comp,
335
+ index,
336
+ netPtIn.neg()
337
+ );
321
338
  netSyOut = _netSyOut.Uint();
322
339
  netSyFee = _netSyFee.Uint();
340
+ netSyToReserve = _netSyToReserve.Uint();
323
341
  }
324
342
 
325
343
  function newApproxParamsPtIn(
@@ -447,7 +465,7 @@ library MarketApproxPtOutLib {
447
465
  for (uint256 iter = 0; iter < p.maxIteration; ++iter) {
448
466
  uint256 guess = nextGuess(p, iter);
449
467
 
450
- (uint256 netSyIn, uint256 netSyFee) = calcSyIn(a.market, comp, a.index, guess);
468
+ (uint256 netSyIn, uint256 netSyFee, ) = calcSyIn(a.market, comp, a.index, guess);
451
469
 
452
470
  if (netSyIn <= a.exactSyIn) {
453
471
  p.guessMin = guess;
@@ -502,7 +520,7 @@ library MarketApproxPtOutLib {
502
520
  for (uint256 iter = 0; iter < p.maxIteration; ++iter) {
503
521
  uint256 guess = nextGuess(p, iter);
504
522
 
505
- (uint256 netSyOwed, uint256 netSyFee) = calcSyIn(a.market, comp, a.index, guess);
523
+ (uint256 netSyOwed, uint256 netSyFee, ) = calcSyIn(a.market, comp, a.index, guess);
506
524
 
507
525
  uint256 netAssetToRepay = a.index.syToAssetUp(netSyOwed);
508
526
  uint256 netSyOut = a.index.assetToSy(guess - netAssetToRepay);
@@ -562,7 +580,12 @@ library MarketApproxPtOutLib {
562
580
  for (uint256 iter = 0; iter < p.maxIteration; ++iter) {
563
581
  uint256 guess = nextGuess(p, iter);
564
582
 
565
- (uint256 netSyIn, uint256 netSyFee) = calcSyIn(a.market, comp, a.index, guess);
583
+ (uint256 netSyIn, uint256 netSyFee, uint256 netSyToReserve) = calcSyIn(
584
+ a.market,
585
+ comp,
586
+ a.index,
587
+ guess
588
+ );
566
589
 
567
590
  if (netSyIn > a.totalSyIn) {
568
591
  p.guessMax = guess - 1;
@@ -573,9 +596,8 @@ library MarketApproxPtOutLib {
573
596
  uint256 ptNumerator;
574
597
 
575
598
  {
576
- uint256 netSyRemaining = a.totalSyIn - netSyIn;
577
599
  uint256 newTotalPt = a.market.totalPt.Uint() - guess;
578
- uint256 netTotalSy = a.market.totalSy.Uint() + netSyIn - netSyFee;
600
+ uint256 netTotalSy = a.market.totalSy.Uint() + netSyIn - netSyToReserve;
579
601
 
580
602
  // it is desired that
581
603
  // netPtFromSwap / newTotalPt = netSyRemaining / netTotalSy
@@ -583,7 +605,7 @@ library MarketApproxPtOutLib {
583
605
  // netPtFromSwap * netTotalSy = netSyRemaining * newTotalPt
584
606
 
585
607
  ptNumerator = guess * netTotalSy;
586
- syNumerator = netSyRemaining * newTotalPt;
608
+ syNumerator = (a.totalSyIn - netSyIn) * newTotalPt;
587
609
  }
588
610
 
589
611
  if (Math.isAApproxB(ptNumerator, syNumerator, p.eps)) {
@@ -650,7 +672,7 @@ library MarketApproxPtOutLib {
650
672
  for (uint256 iter = 0; iter < p.maxIteration; ++iter) {
651
673
  uint256 guess = nextGuess(p, iter);
652
674
 
653
- (uint256 netSyOwed, uint256 netSyFee) = calcSyIn(a.market, comp, a.index, guess);
675
+ (uint256 netSyOwed, uint256 netSyFee, ) = calcSyIn(a.market, comp, a.index, guess);
654
676
 
655
677
  if (netSyOwed <= a.maxSyPayable) {
656
678
  p.guessMin = guess;
@@ -671,11 +693,24 @@ library MarketApproxPtOutLib {
671
693
  MarketPreCompute memory comp,
672
694
  PYIndex index,
673
695
  uint256 netPtOut
674
- ) internal pure returns (uint256 netSyIn, uint256 netSyFee) {
675
- (int256 _netSyIn, int256 _netSyFee) = market.calcTrade(comp, index, netPtOut.Int());
696
+ )
697
+ internal
698
+ pure
699
+ returns (
700
+ uint256 netSyIn,
701
+ uint256 netSyFee,
702
+ uint256 netSyToReserve
703
+ )
704
+ {
705
+ (int256 _netSyIn, int256 _netSyFee, int256 _netSyToReserve) = market.calcTrade(
706
+ comp,
707
+ index,
708
+ netPtOut.Int()
709
+ );
676
710
 
677
711
  netSyIn = _netSyIn.abs();
678
712
  netSyFee = _netSyFee.Uint();
713
+ netSyToReserve = _netSyToReserve.Uint();
679
714
  }
680
715
 
681
716
  function newApproxParamsPtOut(
@@ -683,11 +718,19 @@ library MarketApproxPtOutLib {
683
718
  uint256 minGuessMin,
684
719
  uint256 maxGuessMax
685
720
  ) internal pure returns (ApproxParamsPtOut memory res) {
721
+ if (_approx.guessMin > _approx.guessMax || _approx.eps > Math.ONE)
722
+ revert Errors.ApproxParamsInvalid(_approx.guessMin, _approx.guessMax, _approx.eps);
723
+
686
724
  res.guessMin = Math.max(_approx.guessMin, minGuessMin);
687
725
  res.guessMax = Math.min(_approx.guessMax, maxGuessMax);
688
726
 
689
- if (res.guessMin > res.guessMax || _approx.eps > Math.ONE)
690
- revert Errors.ApproxParamsInvalid(_approx.guessMin, _approx.guessMax, _approx.eps);
727
+ if (res.guessMin > res.guessMax)
728
+ revert Errors.ApproxBinarySearchInputInvalid(
729
+ _approx.guessMin,
730
+ _approx.guessMax,
731
+ minGuessMin,
732
+ maxGuessMax
733
+ );
691
734
 
692
735
  res.guessOffchain = _approx.guessOffchain;
693
736
  res.maxIteration = _approx.maxIteration;
@@ -1,17 +1,22 @@
1
1
  {
2
2
  "deployer": "0x1FcCC097db89A86Bfc474A1028F93958295b1Fb7",
3
- "network": 43113,
4
- "splitter": "0x81357A3D4F023745a518E4F07b8714e141f84E0a",
5
- "lzEndpoint": "0x93f54D755A063cE7bB9e6Ac47Eccc8e33411d706",
6
- "treasury": "0x243b7CFD29AcAF9cDe98C1958902FAA3B1F095D5",
7
- "PENDLE": "0xB7609dec1C926204c3B67345cbCd54bc4aa7a940",
8
- "yieldContractFactory": "0xC39Efc7bb273B75B75471167Cb0EB4D3D41398a8",
9
- "marketFactory": "0xa28B2445C8e1751733e75e6794971AEEA4806F45",
10
- "bulkSellerFactory": "0x9f45D5A34CC9Bcb3AB4ee464bE768E30B5e627f8",
11
- "router": "0x129be7922B733b0F06cb4f0f47B6b4a12710a312",
12
- "routerStatic": "0x699665c3fA37FF59cACd913EAaB56CEFA66C339E",
13
- "vePendle": "0x74E578b27aD53f23387b9Dcb7902F7Def6D4dB7c",
14
- "senderEndpoint": "0xa87c479d77040d1c5433b9cD3b88b2B562A7cb10",
15
- "votingController": "0x0b24c845feF83f8403EEF3922F3B53a05182512A",
16
- "gaugeController": "0xf0cFb8781F17d51523922Ace5eB69a4b42e35a15"
3
+ "network": {
4
+ "chainId": 43113,
5
+ "treasury": "0x243b7CFD29AcAF9cDe98C1958902FAA3B1F095D5",
6
+ "governance": "0x1FcCC097db89A86Bfc474A1028F93958295b1Fb7",
7
+ "pendle": "0x808507121b80c02388fad14726482e061b8da827",
8
+ "lzEndpoint": "0x93f54D755A063cE7bB9e6Ac47Eccc8e33411d706",
9
+ "wrappedNative": "0xe43a7aD7C09d8fAE3ADe7361f0b847b23adD5094"
10
+ },
11
+ "splitter": "0x4B3B9f8f65E1c3fde4073874c2C93a1760F11035",
12
+ "PENDLE": "0x808507121b80c02388fad14726482e061b8da827",
13
+ "yieldContractFactory": "0xD3DC187247539380C3AAbFdb2D09c341910fFE83",
14
+ "marketFactory": "0x74D8b7eC36C0ff4157bD359B6D3Ab82a5d741B8E",
15
+ "bulkSellerFactory": "0x640bDc3daF9cFDb33CC67e46180A4E6c0495D0f4",
16
+ "router": "0x5334471de92CDBeB4245d3a3B1aF93b4DfDa8cC9",
17
+ "routerStatic": "0xd1dCaC6f75361A7C734863BC17B126EcB873192C",
18
+ "vePendle": "0x2d7e1Ab594E218eBd473bBE3aF57fAD5541F10f9",
19
+ "senderEndpoint": "0x33D7a94070A697E5CAe134A409ef42cfDba4F3b1",
20
+ "votingController": "0xdc8D6a5Db65287af491199244459e5C57d62f3f8",
21
+ "gaugeController": "0xd7D67E0b7DcF4665222809868512cAf6ac99C736"
17
22
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "SY Benqi WETH",
3
+ "SY": "0x5C90c945C0f7Ad4D8C3d1746185262bB9499eCF0",
4
+ "YT": "0xe85DFab309ED388d75E4C3665a77C73C6C0BA630",
5
+ "PT": "0x27DaeA7A12A9499F8065631756FEE5A9ACbd105a",
6
+ "market": "0x096206b71CA3610724F780B9af6c2D47938A345C",
7
+ "expiry": 1675382400,
8
+ "scalarRoot": "62000000000000000000",
9
+ "initAnchor": "1012600000000000000"
10
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pendle/core-v2",
3
3
  "description": "Core smart contracts of Pendle Protocol.",
4
4
  "license": "BUSL-1.1",
5
- "version": "0.16.5-testnet",
5
+ "version": "0.17.0-daily",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",
@@ -25,16 +25,16 @@
25
25
  "devDependencies": {
26
26
  "@typechain/ethers-v5": "^9.0.0",
27
27
  "@typechain/hardhat": "^4.0.0",
28
- "hardhat": "^2.12.0",
28
+ "hardhat": "^2.12.2",
29
29
  "hardhat-contract-sizer": "^2.6.1",
30
30
  "hardhat-storage-layout-diff": "^0.0.4",
31
31
  "prettier": "^2.7.1",
32
- "prettier-plugin-solidity": "^1.0.0-beta.24",
32
+ "prettier-plugin-solidity": "^1.0.0-rc.1",
33
33
  "solc": "^0.8.17",
34
34
  "solhint": "^3.3.7",
35
35
  "ts-node": "^10.9.1",
36
- "typechain": "^8.1.0",
37
- "typescript": "^4.8.4"
36
+ "typechain": "^8.1.1",
37
+ "typescript": "^4.9.3"
38
38
  },
39
39
  "scripts": {
40
40
  "compile": "yarn hardhat compile",
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "packageManager": "yarn@3.2.2",
46
46
  "dependencies": {
47
- "@openzeppelin/contracts": "^4.7.3",
48
- "@openzeppelin/contracts-upgradeable": "^4.7.3"
47
+ "@openzeppelin/contracts": "4.7.3",
48
+ "@openzeppelin/contracts-upgradeable": "4.7.3"
49
49
  }
50
50
  }