@pendle/core-v2 0.9.4-beta → 0.10.2-testnet

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +2 -2
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.dbg.json +1 -1
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +2 -2
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +2 -2
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.dbg.json +1 -1
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +2 -2
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +1 -1
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +7 -2
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +2 -2
  15. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +1 -1
  16. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +2 -2
  17. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  18. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +2 -2
  19. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultSCY.sol/PendleYearnVaultSCY.dbg.json +4 -0
  20. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/{PendleYearnVaultScy.sol → PendleYearnVaultSCY.sol}/PendleYearnVaultSCY.json +3 -3
  21. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.dbg.json +1 -1
  22. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +2 -2
  23. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  24. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
  26. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.json +67 -5
  27. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
  28. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.json +63 -1
  29. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json +65 -3
  31. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +74 -10
  33. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +79 -15
  35. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +204 -123
  38. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.json +127 -73
  40. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +93 -34
  42. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +90 -14
  44. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.json +14 -1
  46. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +139 -37
  48. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +84 -56
  50. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +122 -11
  53. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  56. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +96 -40
  58. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  60. package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +4 -0
  61. package/build/artifacts/contracts/core/actions/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +1025 -0
  62. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  64. package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +4 -0
  65. package/build/artifacts/contracts/core/actions/ActionMintRedeem.sol/ActionMintRedeem.json +622 -0
  66. package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.dbg.json +4 -0
  67. package/build/artifacts/contracts/core/actions/ActionMisc.sol/ActionMisc.json +35 -0
  68. package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.dbg.json +4 -0
  69. package/build/artifacts/contracts/core/actions/ActionSwapPT.sol/ActionSwapPT.json +459 -0
  70. package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.dbg.json +4 -0
  71. package/build/artifacts/contracts/core/actions/ActionSwapYT.sol/ActionSwapYT.json +459 -0
  72. package/build/artifacts/contracts/core/actions/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +4 -0
  73. package/build/artifacts/contracts/core/actions/base/{ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json → ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json} +2 -2
  74. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.json +24 -0
  80. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +1 -1
  85. package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +4 -0
  87. package/build/artifacts/contracts/interfaces/{IPActionCore.sol/IPActionCore.json → IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json} +141 -912
  88. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +4 -0
  89. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +598 -0
  90. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.dbg.json +4 -0
  91. package/build/artifacts/contracts/interfaces/IPActionMisc.sol/IPActionMisc.json +35 -0
  92. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +4 -0
  93. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +435 -0
  94. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +4 -0
  95. package/build/artifacts/contracts/interfaces/{IPActionYT.sol/IPActionYT.json → IPActionSwapYT.sol/IPActionSwapYT.json} +23 -11
  96. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +323 -47
  98. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +4 -0
  99. package/build/artifacts/contracts/{core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json → interfaces/IPGauge.sol/IPGauge.json} +5 -5
  100. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +72 -29
  106. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +0 -11
  108. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +0 -37
  115. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +1 -1
  119. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  123. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.json +1 -1
  125. package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
  127. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
  129. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  131. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  132. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +1 -1
  133. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  134. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  137. package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.dbg.json +4 -0
  138. package/build/artifacts/contracts/libraries/OracleLib.sol/OracleLib.json +74 -0
  139. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  140. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  141. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  142. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  143. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  144. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  145. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  146. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  147. package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  148. package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.json +2 -2
  149. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  150. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  151. package/build/artifacts/contracts/libraries/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +1 -1
  152. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  153. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  154. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  155. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  156. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  157. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  158. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  159. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  160. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +4 -0
  161. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +93 -0
  162. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  163. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +427 -39
  164. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.dbg.json +4 -0
  165. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeable.json +86 -0
  166. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.dbg.json +4 -0
  167. package/build/artifacts/contracts/periphery/BoringOwnableUpgradeable.sol/BoringOwnableUpgradeableData.json +37 -0
  168. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  169. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  170. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +8 -0
  171. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol +1 -1
  172. package/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol +11 -5
  173. package/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol +0 -1
  174. package/contracts/SuperComposableYield/SCY-implementations/{PendleYearnVaultScy.sol → PendleYearnVaultSCY.sol} +0 -0
  175. package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +1 -0
  176. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +1 -1
  177. package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol +7 -7
  178. package/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol +7 -6
  179. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +4 -5
  180. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +6 -3
  181. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +6 -3
  182. package/contracts/core/LiquidityMining/PendleGauge.sol +3 -2
  183. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +22 -28
  184. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +71 -13
  185. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +7 -4
  186. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +6 -2
  187. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +4 -3
  188. package/contracts/core/Market/PendleMarket.sol +93 -57
  189. package/contracts/core/Market/PendleMarketFactory.sol +18 -33
  190. package/contracts/core/PendleRouter.sol +60 -52
  191. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +12 -12
  192. package/contracts/core/YieldContracts/PendleYieldToken.sol +1 -1
  193. package/contracts/core/actions/ActionAddRemoveLiq.sol +366 -0
  194. package/contracts/core/actions/ActionCallback.sol +6 -6
  195. package/contracts/core/actions/ActionMintRedeem.sol +124 -0
  196. package/contracts/core/actions/ActionMisc.sol +24 -0
  197. package/contracts/core/actions/ActionSwapPT.sol +199 -0
  198. package/contracts/core/actions/{base/ActionSCYAndYTBase.sol → ActionSwapYT.sol} +109 -74
  199. package/contracts/core/actions/base/{ActionSCYAndPYBase.sol → ActionBaseMintRedeem.sol} +9 -8
  200. package/contracts/interfaces/IBenQiComptroller.sol +2 -0
  201. package/contracts/interfaces/IPActionAddRemoveLiq.sol +188 -0
  202. package/contracts/interfaces/IPActionMintRedeem.sol +115 -0
  203. package/contracts/interfaces/IPActionMisc.sol +9 -0
  204. package/contracts/interfaces/IPActionSwapPT.sol +69 -0
  205. package/contracts/interfaces/{IPActionYT.sol → IPActionSwapYT.sol} +12 -10
  206. package/contracts/interfaces/IPAllAction.sol +12 -3
  207. package/contracts/interfaces/IPGauge.sol +6 -0
  208. package/contracts/interfaces/IPGaugeController.sol +0 -2
  209. package/contracts/interfaces/IPMarket.sol +28 -10
  210. package/contracts/interfaces/IPMarketFactory.sol +1 -7
  211. package/contracts/interfaces/IPVeToken.sol +1 -1
  212. package/contracts/interfaces/IPVotingController.sol +0 -2
  213. package/contracts/interfaces/IRewardManager.sol +1 -1
  214. package/contracts/libraries/OracleLib.sol +214 -0
  215. package/contracts/libraries/RewardManagerAbstract.sol +1 -1
  216. package/contracts/libraries/math/MarketApproxLib.sol +227 -14
  217. package/contracts/libraries/math/MarketMathCore.sol +0 -33
  218. package/contracts/offchain-helpers/MarketMathStatic.sol +565 -0
  219. package/contracts/offchain-helpers/RouterStatic.sol +187 -251
  220. package/contracts/periphery/BoringOwnableUpgradeable.sol +62 -0
  221. package/deployments/43113-core.json +7 -8
  222. package/deployments/43113-markets/benqi-market-590025.json +8 -0
  223. package/deployments/43113-markets/benqi-market-c93916.json +8 -0
  224. package/deployments/80001-core.json +6 -7
  225. package/deployments/80001-markets/benqi-market-3b8BD1.json +8 -0
  226. package/deployments/80001-markets/benqi-market-b61e7f.json +8 -0
  227. package/package.json +11 -11
  228. package/typechain-types/ActionAddRemoveLiq.ts +1037 -0
  229. package/typechain-types/ActionBaseMintRedeem.ts +87 -0
  230. package/typechain-types/ActionCore.ts +21 -20
  231. package/typechain-types/ActionMintRedeem.ts +665 -0
  232. package/typechain-types/ActionMisc.ts +105 -0
  233. package/typechain-types/ActionSwapPT.ts +515 -0
  234. package/typechain-types/ActionSwapYT.ts +515 -0
  235. package/typechain-types/ActionYT.ts +5 -4
  236. package/typechain-types/BoringOwnable.ts +194 -0
  237. package/typechain-types/BoringOwnableData.ts +100 -0
  238. package/typechain-types/BoringOwnableUpgradeable.ts +194 -0
  239. package/typechain-types/BoringOwnableUpgradeableData.ts +100 -0
  240. package/typechain-types/CelerReceiverUpg.ts +124 -19
  241. package/typechain-types/CelerSenderUpg.ts +116 -11
  242. package/typechain-types/IBenQiComptroller.ts +39 -0
  243. package/typechain-types/IPActionAddRemoveLiq.ts +1018 -0
  244. package/typechain-types/IPActionCore.ts +21 -20
  245. package/typechain-types/IPActionMintRedeem.ts +646 -0
  246. package/typechain-types/IPActionMisc.ts +105 -0
  247. package/typechain-types/IPActionSwapPT.ts +496 -0
  248. package/typechain-types/IPActionSwapYT.ts +496 -0
  249. package/typechain-types/IPActionYT.ts +5 -4
  250. package/typechain-types/IPAllAction.ts +431 -193
  251. package/typechain-types/IPGauge.ts +87 -0
  252. package/typechain-types/IPMarket.ts +133 -50
  253. package/typechain-types/IPMarketFactory.ts +7 -17
  254. package/typechain-types/IPVeToken.ts +8 -8
  255. package/typechain-types/IPVotingController.ts +0 -20
  256. package/typechain-types/IPYieldToken.ts +3 -3
  257. package/typechain-types/IRewardManager.ts +3 -3
  258. package/typechain-types/MarketMathStatic.ts +198 -0
  259. package/typechain-types/OracleLib.ts +124 -0
  260. package/typechain-types/PendleGaugeControllerBaseUpg.ts +118 -15
  261. package/typechain-types/PendleGaugeControllerMainchainUpg.ts +136 -9
  262. package/typechain-types/PendleGaugeControllerSidechainUpg.ts +138 -11
  263. package/typechain-types/PendleMarket.ts +178 -59
  264. package/typechain-types/PendleMarketFactory.ts +135 -61
  265. package/typechain-types/PendleRouter.ts +201 -31
  266. package/typechain-types/PendleVotingControllerUpg.ts +325 -149
  267. package/typechain-types/PendleYieldContractFactory.ts +144 -21
  268. package/typechain-types/RouterStatic.ts +344 -64
  269. package/typechain-types/VotingControllerStorageUpg.ts +182 -113
  270. package/typechain-types/VotingEscrowPendleMainchain.ts +170 -63
  271. package/typechain-types/VotingEscrowPendleSidechain.ts +163 -17
  272. package/typechain-types/VotingEscrowTokenBase.ts +27 -8
  273. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +1083 -0
  274. package/typechain-types/factories/ActionBaseMintRedeem__factory.ts +43 -0
  275. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  276. package/typechain-types/factories/ActionCore__factory.ts +6 -6
  277. package/typechain-types/factories/ActionMintRedeem__factory.ts +680 -0
  278. package/typechain-types/factories/ActionMisc__factory.ts +85 -0
  279. package/typechain-types/factories/ActionSwapPT__factory.ts +514 -0
  280. package/typechain-types/factories/ActionSwapYT__factory.ts +514 -0
  281. package/typechain-types/factories/ActionYT__factory.ts +2 -2
  282. package/typechain-types/factories/BoringOwnableData__factory.ts +90 -0
  283. package/typechain-types/factories/BoringOwnableUpgradeableData__factory.ts +96 -0
  284. package/typechain-types/factories/BoringOwnableUpgradeable__factory.ts +143 -0
  285. package/typechain-types/factories/BoringOwnable__factory.ts +141 -0
  286. package/typechain-types/factories/CelerReceiverUpg__factory.ts +67 -5
  287. package/typechain-types/factories/CelerSenderUpg__factory.ts +63 -1
  288. package/typechain-types/factories/IBenQiComptroller__factory.ts +24 -0
  289. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +1020 -0
  290. package/typechain-types/factories/IPActionCore__factory.ts +5 -5
  291. package/typechain-types/factories/IPActionMintRedeem__factory.ts +613 -0
  292. package/typechain-types/factories/IPActionMisc__factory.ts +47 -0
  293. package/typechain-types/factories/IPActionSwapPT__factory.ts +450 -0
  294. package/typechain-types/factories/IPActionSwapYT__factory.ts +450 -0
  295. package/typechain-types/factories/IPActionYT__factory.ts +1 -1
  296. package/typechain-types/factories/IPAllAction__factory.ts +323 -47
  297. package/typechain-types/factories/IPGauge__factory.ts +36 -0
  298. package/typechain-types/factories/IPMarketFactory__factory.ts +0 -11
  299. package/typechain-types/factories/IPMarket__factory.ts +72 -29
  300. package/typechain-types/factories/IPVeToken__factory.ts +1 -1
  301. package/typechain-types/factories/IPVotingController__factory.ts +0 -37
  302. package/typechain-types/factories/IPYieldToken__factory.ts +1 -1
  303. package/typechain-types/factories/IRewardManager__factory.ts +1 -1
  304. package/typechain-types/factories/MarketMathStatic__factory.ts +146 -0
  305. package/typechain-types/factories/OracleLib__factory.ts +124 -0
  306. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +1 -1
  307. package/typechain-types/factories/PendleERC4626SCY__factory.ts +1 -1
  308. package/typechain-types/factories/PendleEulerSCY__factory.ts +10 -1
  309. package/typechain-types/factories/PendleGaugeControllerBaseUpg__factory.ts +65 -3
  310. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +73 -13
  311. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +79 -23
  312. package/typechain-types/factories/PendleMarketFactory__factory.ts +84 -86
  313. package/typechain-types/factories/PendleMarket__factory.ts +131 -37
  314. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  315. package/typechain-types/factories/PendleQiSAvaxSCY__factory.ts +1 -1
  316. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +1 -1
  317. package/typechain-types/factories/PendleRouter__factory.ts +141 -22
  318. package/typechain-types/factories/PendleSAvaxSCY__factory.ts +1 -1
  319. package/typechain-types/factories/PendleSJoeSCY__factory.ts +1 -1
  320. package/typechain-types/factories/PendleStargateSCY__factory.ts +1 -1
  321. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +203 -129
  322. package/typechain-types/factories/PendleWstEthSCY__factory.ts +1 -1
  323. package/typechain-types/factories/PendleYearnVaultSCY__factory.ts +1 -1
  324. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +97 -72
  325. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  326. package/typechain-types/factories/RouterStatic__factory.ts +233 -39
  327. package/typechain-types/factories/VotingControllerStorageUpg__factory.ts +126 -72
  328. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +93 -41
  329. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +90 -17
  330. package/typechain-types/factories/VotingEscrowTokenBase__factory.ts +14 -1
  331. package/typechain-types/hardhat.d.ts +162 -0
  332. package/typechain-types/index.ts +36 -0
  333. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +0 -4
  334. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +0 -4
  335. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +0 -1801
  336. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +0 -4
  337. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +0 -447
  338. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +0 -4
  339. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +0 -4
  340. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +0 -4
  341. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +0 -24
  342. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +0 -4
  343. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +0 -4
  344. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +0 -4
  345. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +0 -874
  346. package/contracts/core/actions/ActionCore.sol +0 -382
  347. package/contracts/core/actions/ActionYT.sol +0 -93
  348. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +0 -303
  349. package/contracts/interfaces/IPActionCore.sol +0 -306
  350. package/contracts/interfaces/IPRouterStatic.sol +0 -152
  351. package/deployments/43113-markets/benqi-market-599408.json +0 -7
  352. package/deployments/43113-markets/benqi-market-93bbf0.json +0 -7
  353. package/deployments/43113-markets/benqi-market-95E744.json +0 -7
  354. package/deployments/43113-markets/benqi-market-D91a3F.json +0 -7
  355. package/deployments/80001-markets/benqi-market-007811.json +0 -7
  356. package/deployments/80001-markets/benqi-market-3fe528.json +0 -7
  357. package/typechain-types/FeeDistributorAbstract.ts +0 -164
  358. package/typechain-types/IPVotingControllerStorage.ts +0 -169
  359. package/typechain-types/factories/FeeDistributorAbstract__factory.ts +0 -90
  360. package/typechain-types/factories/IPVotingControllerStorage__factory.ts +0 -107
@@ -4,87 +4,95 @@ pragma solidity 0.8.15;
4
4
  import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
  import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
6
6
  import "@openzeppelin/contracts/proxy/Proxy.sol";
7
- import "../interfaces/IPActionCore.sol";
8
- import "../interfaces/IPActionYT.sol";
9
- import "../interfaces/IPRouterStatic.sol";
7
+ import "../interfaces/IPAllAction.sol";
10
8
  import "../interfaces/IPMarketSwapCallback.sol";
11
- import "../periphery/PermissionsV2Upg.sol";
9
+ import "../periphery/BoringOwnableUpgradeable.sol";
12
10
 
13
11
  /// @dev this contract will be deployed behind an ERC1967 proxy
14
12
  /// calls to the ERC1967 proxy will be resolved at this contract, and proxied again to the
15
13
  /// corresponding implementation contracts
16
14
 
17
15
  // solhint-disable no-empty-blocks
18
- contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, PermissionsV2Upg {
19
- address public immutable ACTION_CORE;
20
- address public immutable ACTION_YT;
16
+ contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, BoringOwnableUpgradeable {
17
+ address public immutable ACTION_MINT_REDEEM;
18
+ address public immutable ACTION_ADD_REMOVE_LIQ;
19
+ address public immutable ACTION_SWAP_PT;
20
+ address public immutable ACTION_SWAP_YT;
21
21
  address public immutable ACTION_CALLBACK;
22
+ address public immutable ACTION_MISC;
22
23
 
23
24
  constructor(
24
- address _ACTION_CORE,
25
- address _ACTION_YT,
25
+ address _ACTION_MINT_REDEEM,
26
+ address _ACTION_ADD_REMOVE_LIQ,
27
+ address _ACTION_SWAP_PT,
28
+ address _ACTION_SWAP_YT,
26
29
  address _ACTION_CALLBACK,
27
- address _governanceManager
28
- ) PermissionsV2Upg(_governanceManager) initializer {
29
- require(
30
- _ACTION_CORE != address(0) &&
31
- _ACTION_YT != address(0) &&
32
- _ACTION_CALLBACK != address(0),
33
- "zero address"
34
- );
35
- ACTION_CORE = _ACTION_CORE;
36
- ACTION_YT = _ACTION_YT;
30
+ address _ACTION_MISC
31
+ ) initializer {
32
+ ACTION_MINT_REDEEM = _ACTION_MINT_REDEEM;
33
+ ACTION_ADD_REMOVE_LIQ = _ACTION_ADD_REMOVE_LIQ;
34
+ ACTION_SWAP_PT = _ACTION_SWAP_PT;
35
+ ACTION_SWAP_YT = _ACTION_SWAP_YT;
37
36
  ACTION_CALLBACK = _ACTION_CALLBACK;
37
+ ACTION_MISC = _ACTION_MISC;
38
38
  }
39
39
 
40
40
  function initialize() external initializer {
41
41
  __UUPSUpgradeable_init();
42
- // no need to initialize PermissionsV2Upg
42
+ __BoringOwnable_init();
43
43
  }
44
44
 
45
45
  function getRouterImplementation(bytes4 sig) public view returns (address) {
46
46
  if (
47
- sig == IPActionCore.mintScyFromToken.selector ||
48
- sig == IPActionCore.redeemScyToToken.selector ||
49
- sig == IPActionCore.mintPyFromToken.selector ||
50
- sig == IPActionCore.redeemPyToToken.selector ||
51
- sig == IPActionCore.mintPyFromScy.selector ||
52
- sig == IPActionCore.redeemPyToScy.selector ||
53
- sig == IPActionCore.addLiquidityDualScyAndPt.selector ||
54
- sig == IPActionCore.addLiquidityDualTokenAndPt.selector ||
55
- sig == IPActionCore.addLiquiditySinglePt.selector ||
56
- sig == IPActionCore.addLiquiditySingleScy.selector ||
57
- sig == IPActionCore.addLiquiditySingleToken.selector ||
58
- sig == IPActionCore.removeLiquidityDualScyAndPt.selector ||
59
- sig == IPActionCore.removeLiquidityDualTokenAndPt.selector ||
60
- sig == IPActionCore.removeLiquiditySinglePt.selector ||
61
- sig == IPActionCore.removeLiquiditySingleScy.selector ||
62
- sig == IPActionCore.removeLiquiditySingleToken.selector ||
63
- sig == IPActionCore.swapExactPtForScy.selector ||
64
- sig == IPActionCore.swapPtForExactScy.selector ||
65
- sig == IPActionCore.swapScyForExactPt.selector ||
66
- sig == IPActionCore.swapExactScyForPt.selector ||
67
- sig == IPActionCore.swapExactTokenForPt.selector ||
68
- sig == IPActionCore.swapExactPtForToken.selector ||
69
- sig == IPActionCore.redeemDueInterestAndRewards.selector
47
+ sig == IPActionMintRedeem.mintScyFromToken.selector ||
48
+ sig == IPActionMintRedeem.redeemScyToToken.selector ||
49
+ sig == IPActionMintRedeem.mintPyFromToken.selector ||
50
+ sig == IPActionMintRedeem.redeemPyToToken.selector ||
51
+ sig == IPActionMintRedeem.mintPyFromScy.selector ||
52
+ sig == IPActionMintRedeem.redeemPyToScy.selector ||
53
+ sig == IPActionMintRedeem.redeemDueInterestAndRewards.selector
70
54
  ) {
71
- return ACTION_CORE;
55
+ return ACTION_MINT_REDEEM;
72
56
  } else if (
73
- sig == IPActionYT.swapExactYtForScy.selector ||
74
- sig == IPActionYT.swapScyForExactYt.selector ||
75
- sig == IPActionYT.swapExactScyForYt.selector ||
76
- sig == IPActionYT.swapExactTokenForYt.selector ||
77
- sig == IPActionYT.swapExactYtForToken.selector ||
78
- sig == IPActionYT.swapYtForExactScy.selector
57
+ sig == IPActionAddRemoveLiq.addLiquidityDualScyAndPt.selector ||
58
+ sig == IPActionAddRemoveLiq.addLiquidityDualTokenAndPt.selector ||
59
+ sig == IPActionAddRemoveLiq.addLiquiditySinglePt.selector ||
60
+ sig == IPActionAddRemoveLiq.addLiquiditySingleScy.selector ||
61
+ sig == IPActionAddRemoveLiq.addLiquiditySingleToken.selector ||
62
+ sig == IPActionAddRemoveLiq.removeLiquidityDualScyAndPt.selector ||
63
+ sig == IPActionAddRemoveLiq.removeLiquidityDualTokenAndPt.selector ||
64
+ sig == IPActionAddRemoveLiq.removeLiquiditySinglePt.selector ||
65
+ sig == IPActionAddRemoveLiq.removeLiquiditySingleScy.selector ||
66
+ sig == IPActionAddRemoveLiq.removeLiquiditySingleToken.selector
79
67
  ) {
80
- return ACTION_YT;
68
+ return ACTION_ADD_REMOVE_LIQ;
69
+ } else if (
70
+ sig == IPActionSwapPT.swapExactPtForScy.selector ||
71
+ sig == IPActionSwapPT.swapPtForExactScy.selector ||
72
+ sig == IPActionSwapPT.swapScyForExactPt.selector ||
73
+ sig == IPActionSwapPT.swapExactScyForPt.selector ||
74
+ sig == IPActionSwapPT.swapExactTokenForPt.selector ||
75
+ sig == IPActionSwapPT.swapExactPtForToken.selector
76
+ ) {
77
+ return ACTION_SWAP_PT;
78
+ } else if (
79
+ sig == IPActionSwapYT.swapExactYtForScy.selector ||
80
+ sig == IPActionSwapYT.swapScyForExactYt.selector ||
81
+ sig == IPActionSwapYT.swapExactScyForYt.selector ||
82
+ sig == IPActionSwapYT.swapExactTokenForYt.selector ||
83
+ sig == IPActionSwapYT.swapExactYtForToken.selector ||
84
+ sig == IPActionSwapYT.swapYtForExactScy.selector
85
+ ) {
86
+ return ACTION_SWAP_YT;
81
87
  } else if (sig == IPMarketSwapCallback.swapCallback.selector) {
82
88
  return ACTION_CALLBACK;
89
+ } else if (sig == IPActionMisc.consult.selector) {
90
+ return ACTION_MISC;
83
91
  }
84
92
  require(false, "invalid market sig");
85
93
  }
86
94
 
87
- function _authorizeUpgrade(address newImplementation) internal override onlyGovernance {}
95
+ function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}
88
96
 
89
97
  function _implementation() internal view override returns (address) {
90
98
  return getRouterImplementation(msg.sig);
@@ -32,13 +32,13 @@ import "../../libraries/helpers/ExpiryUtilsLib.sol";
32
32
  import "../../libraries/helpers/SSTORE2Deployer.sol";
33
33
  import "../../libraries/helpers/MiniHelpers.sol";
34
34
 
35
- import "../../periphery/PermissionsV2Upg.sol";
35
+ import "../../periphery/BoringOwnableUpgradeable.sol";
36
36
 
37
37
  import "./PendlePrincipalToken.sol";
38
38
  import "./PendleYieldToken.sol";
39
39
 
40
40
  /// @dev If this contract is ever made upgradeable, please pay attention to the numContractDeployed variable
41
- contract PendleYieldContractFactory is PermissionsV2Upg, Initializable, IPYieldContractFactory {
41
+ contract PendleYieldContractFactory is BoringOwnableUpgradeable, IPYieldContractFactory {
42
42
  using ExpiryUtils for string;
43
43
 
44
44
  string private constant PT_PREFIX = "PT";
@@ -60,20 +60,20 @@ contract PendleYieldContractFactory is PermissionsV2Upg, Initializable, IPYieldC
60
60
  mapping(address => bool) public isPT;
61
61
  mapping(address => bool) public isYT;
62
62
 
63
- constructor(
63
+ constructor() {}
64
+
65
+ function initialize(
64
66
  uint96 _expiryDivisor,
65
67
  uint128 _interestFeeRate,
66
68
  uint128 _rewardFeeRate,
67
69
  address _treasury,
68
- address _governanceManager
69
- ) PermissionsV2Upg(_governanceManager) {
70
+ bytes memory _pendleYtCreationCode
71
+ ) external initializer {
72
+ __BoringOwnable_init();
70
73
  setExpiryDivisor(_expiryDivisor);
71
74
  setInterestFeeRate(_interestFeeRate);
72
75
  setRewardFeeRate(_rewardFeeRate);
73
76
  setTreasury(_treasury);
74
- }
75
-
76
- function initialize(bytes memory _pendleYtCreationCode) external initializer {
77
77
  pendleYtCreationCodePointer = SSTORE2Deployer.setCreationCode(_pendleYtCreationCode);
78
78
  }
79
79
 
@@ -131,23 +131,23 @@ contract PendleYieldContractFactory is PermissionsV2Upg, Initializable, IPYieldC
131
131
  emit CreateYieldContract(SCY, PT, YT, expiry);
132
132
  }
133
133
 
134
- function setExpiryDivisor(uint96 newExpiryDivisor) public onlyGovernance {
134
+ function setExpiryDivisor(uint96 newExpiryDivisor) public onlyOwner {
135
135
  require(newExpiryDivisor != 0, "zero value");
136
136
  expiryDivisor = newExpiryDivisor;
137
137
  emit SetExpiryDivisor(newExpiryDivisor);
138
138
  }
139
139
 
140
- function setInterestFeeRate(uint128 newInterestFeeRate) public onlyGovernance {
140
+ function setInterestFeeRate(uint128 newInterestFeeRate) public onlyOwner {
141
141
  interestFeeRate = newInterestFeeRate;
142
142
  emit SetInterestFeeRate(newInterestFeeRate);
143
143
  }
144
144
 
145
- function setRewardFeeRate(uint128 newInterestFeeRate) public onlyGovernance {
145
+ function setRewardFeeRate(uint128 newInterestFeeRate) public onlyOwner {
146
146
  rewardFeeRate = newInterestFeeRate;
147
147
  emit SetInterestFeeRate(newInterestFeeRate);
148
148
  }
149
149
 
150
- function setTreasury(address newTreasury) public onlyGovernance {
150
+ function setTreasury(address newTreasury) public onlyOwner {
151
151
  require(newTreasury != address(0), "zero address");
152
152
  treasury = newTreasury;
153
153
  emit SetTreasury(newTreasury);
@@ -17,7 +17,7 @@ import "../PendleERC20.sol";
17
17
  import "./InterestManagerYT.sol";
18
18
 
19
19
  /**
20
- Invariances to maintain:
20
+ Invariance to maintain:
21
21
  - address(0) & address(this) should never have any rewards & activeBalance accounting done. This is
22
22
  guaranteed by address(0) & address(this) check in each updateForTwo function
23
23
  */
@@ -0,0 +1,366 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.15;
3
+
4
+ import "./base/ActionBaseMintRedeem.sol";
5
+ import "../../interfaces/IPActionAddRemoveLiq.sol";
6
+ import "../../interfaces/IPMarket.sol";
7
+
8
+ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
9
+ using Math for uint256;
10
+ using Math for int256;
11
+ using MarketMathCore for MarketState;
12
+ using MarketApproxLib for MarketState;
13
+ using SafeERC20 for IERC20;
14
+ using PYIndexLib for IPYieldToken;
15
+
16
+ /// @dev since this contract will be proxied, it must not contains non-immutable variables
17
+ constructor(address _kyberSwapRouter)
18
+ ActionBaseMintRedeem(_kyberSwapRouter) //solhint-disable-next-line no-empty-blocks
19
+ {}
20
+
21
+ function addLiquidityDualScyAndPt(
22
+ address receiver,
23
+ address market,
24
+ uint256 netScyDesired,
25
+ uint256 netPtDesired,
26
+ uint256 minLpOut
27
+ )
28
+ external
29
+ returns (
30
+ uint256 netLpOut,
31
+ uint256 scyUsed,
32
+ uint256 netPtUsed
33
+ )
34
+ {
35
+ (ISuperComposableYield SCY, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market)
36
+ .readTokens();
37
+
38
+ MarketState memory state = IPMarket(market).readState();
39
+ (, netLpOut, scyUsed, netPtUsed) = state.addLiquidity(
40
+ YT.newIndex(),
41
+ netScyDesired,
42
+ netPtDesired,
43
+ block.timestamp
44
+ );
45
+
46
+ // early-check
47
+ require(netLpOut >= minLpOut, "insufficient lp out");
48
+
49
+ IERC20(SCY).safeTransferFrom(msg.sender, market, scyUsed);
50
+ IERC20(PT).safeTransferFrom(msg.sender, market, netPtUsed);
51
+
52
+ netLpOut = IPMarket(market).mint(receiver);
53
+
54
+ // fail-safe
55
+ require(netLpOut >= minLpOut, "FS insufficient lp out");
56
+ emit AddLiquidityDualScyAndPt(msg.sender, market, receiver, scyUsed, netPtUsed, netLpOut);
57
+ }
58
+
59
+ function addLiquidityDualTokenAndPt(
60
+ address receiver,
61
+ address market,
62
+ address tokenIn,
63
+ uint256 netTokenDesired,
64
+ uint256 netPtDesired,
65
+ uint256 minLpOut
66
+ )
67
+ external
68
+ payable
69
+ returns (
70
+ uint256 netLpOut,
71
+ uint256 netTokenUsed,
72
+ uint256 netPtUsed
73
+ )
74
+ {
75
+ (ISuperComposableYield SCY, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market)
76
+ .readTokens();
77
+
78
+ uint256 netScyDesired = SCY.previewDeposit(tokenIn, netTokenDesired);
79
+ uint256 scyUsed;
80
+
81
+ {
82
+ MarketState memory state = IPMarket(market).readState();
83
+ (, netLpOut, scyUsed, netPtUsed) = state.addLiquidity(
84
+ YT.newIndex(),
85
+ netScyDesired,
86
+ netPtDesired,
87
+ block.timestamp
88
+ );
89
+ }
90
+
91
+ // early-check
92
+ require(netLpOut >= minLpOut, "insufficient lp out");
93
+
94
+ IERC20(PT).safeTransferFrom(msg.sender, market, netPtUsed);
95
+
96
+ // convert tokenIn to SCY to deposit
97
+ netTokenUsed = (netTokenDesired * scyUsed).rawDivUp(netScyDesired);
98
+
99
+ if (tokenIn == NATIVE) {
100
+ _transferIn(tokenIn, msg.sender, netTokenDesired);
101
+ SCY.deposit{ value: netTokenUsed }(market, tokenIn, netTokenUsed, scyUsed);
102
+ _transferOut(tokenIn, msg.sender, netTokenDesired - netTokenUsed);
103
+ } else {
104
+ _transferIn(tokenIn, msg.sender, netTokenUsed);
105
+ _safeApproveInf(tokenIn, address(SCY));
106
+ SCY.deposit(market, tokenIn, netTokenUsed, scyUsed);
107
+ }
108
+
109
+ netLpOut = IPMarket(market).mint(receiver);
110
+ // fail-safe
111
+ require(netLpOut >= minLpOut, "FS insufficient lp out");
112
+
113
+ emit AddLiquidityDualTokenAndPt(
114
+ msg.sender,
115
+ market,
116
+ receiver,
117
+ tokenIn,
118
+ netTokenDesired,
119
+ netPtUsed,
120
+ netLpOut
121
+ );
122
+ }
123
+
124
+ function addLiquiditySinglePt(
125
+ address receiver,
126
+ address market,
127
+ uint256 netPtIn,
128
+ uint256 minLpOut,
129
+ ApproxParams calldata guessPtSwapToScy
130
+ ) external returns (uint256 netLpOut) {
131
+ (, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
132
+
133
+ MarketState memory state = IPMarket(market).readState();
134
+
135
+ (uint256 netPtSwap, , ) = state.approxSwapPtToAddLiquidity(
136
+ YT.newIndex(),
137
+ netPtIn,
138
+ block.timestamp,
139
+ guessPtSwapToScy
140
+ );
141
+
142
+ IERC20(PT).safeTransferFrom(msg.sender, market, netPtIn);
143
+
144
+ IPMarket(market).swapExactPtForScy(market, netPtSwap, EMPTY_BYTES); // ignore return, receiver = market
145
+ netLpOut = IPMarket(market).mint(receiver);
146
+
147
+ require(netLpOut >= minLpOut, "insufficient lp out");
148
+
149
+ emit AddLiquiditySinglePt(msg.sender, market, receiver, netPtIn, netLpOut);
150
+ }
151
+
152
+ function addLiquiditySingleScy(
153
+ address receiver,
154
+ address market,
155
+ uint256 netScyIn,
156
+ uint256 minLpOut,
157
+ ApproxParams calldata guessPtReceivedFromScy
158
+ ) external returns (uint256 netLpOut) {
159
+ (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
160
+ IERC20(SCY).safeTransferFrom(msg.sender, market, netScyIn);
161
+
162
+ netLpOut = _addLiquiditySingleScy(
163
+ receiver,
164
+ market,
165
+ YT,
166
+ netScyIn,
167
+ minLpOut,
168
+ guessPtReceivedFromScy
169
+ );
170
+
171
+ emit AddLiquiditySingleScy(msg.sender, market, receiver, netScyIn, netLpOut);
172
+ }
173
+
174
+ function addLiquiditySingleToken(
175
+ address receiver,
176
+ address market,
177
+ uint256 minLpOut,
178
+ ApproxParams calldata guessPtReceivedFromScy,
179
+ TokenInput calldata input
180
+ ) external payable returns (uint256 netLpOut) {
181
+ (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
182
+
183
+ // all output SCY is transferred directly to the market
184
+ uint256 netScyUsed = _mintScyFromToken(address(market), address(SCY), 1, input);
185
+
186
+ netLpOut = _addLiquiditySingleScy(
187
+ receiver,
188
+ market,
189
+ YT,
190
+ netScyUsed,
191
+ minLpOut,
192
+ guessPtReceivedFromScy
193
+ );
194
+
195
+ emit AddLiquiditySingleToken(
196
+ msg.sender,
197
+ market,
198
+ input.tokenIn,
199
+ receiver,
200
+ input.netTokenIn,
201
+ netLpOut
202
+ );
203
+ }
204
+
205
+ function removeLiquidityDualScyAndPt(
206
+ address receiver,
207
+ address market,
208
+ uint256 netLpToRemove,
209
+ uint256 minScyOut,
210
+ uint256 minPtOut
211
+ ) external returns (uint256 netScyOut, uint256 netPtOut) {
212
+ IERC20(market).safeTransferFrom(msg.sender, market, netLpToRemove);
213
+
214
+ (netScyOut, netPtOut) = IPMarket(market).burn(receiver, receiver);
215
+
216
+ require(netScyOut >= minScyOut, "insufficient SCY out");
217
+ require(netPtOut >= minPtOut, "insufficient PT out");
218
+
219
+ emit RemoveLiquidityDualScyAndPt(
220
+ msg.sender,
221
+ market,
222
+ receiver,
223
+ netLpToRemove,
224
+ netPtOut,
225
+ netScyOut
226
+ );
227
+ }
228
+
229
+ function removeLiquidityDualTokenAndPt(
230
+ address receiver,
231
+ address market,
232
+ uint256 netLpToRemove,
233
+ address tokenOut,
234
+ uint256 minTokenOut,
235
+ uint256 minPtOut
236
+ ) external returns (uint256 netTokenOut, uint256 netPtOut) {
237
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
238
+
239
+ IERC20(market).safeTransferFrom(msg.sender, market, netLpToRemove);
240
+
241
+ (, netPtOut) = IPMarket(market).burn(address(SCY), receiver);
242
+
243
+ netTokenOut = SCY.redeemAfterTransfer(receiver, tokenOut, minTokenOut);
244
+
245
+ require(netPtOut >= minPtOut, "insufficient PT out");
246
+
247
+ emit RemoveLiquidityDualTokenAndPt(
248
+ msg.sender,
249
+ market,
250
+ receiver,
251
+ netLpToRemove,
252
+ netPtOut,
253
+ tokenOut,
254
+ netTokenOut
255
+ );
256
+ }
257
+
258
+ function removeLiquiditySinglePt(
259
+ address receiver,
260
+ address market,
261
+ uint256 netLpToRemove,
262
+ uint256 minPtOut,
263
+ ApproxParams calldata guessPtOut
264
+ ) external returns (uint256 netPtOut) {
265
+ (, , IPYieldToken YT) = IPMarket(market).readTokens();
266
+
267
+ IERC20(market).safeTransferFrom(msg.sender, market, netLpToRemove);
268
+
269
+ MarketState memory state = IPMarket(market).readState();
270
+ (uint256 scyFromBurn, uint256 ptFromBurn) = state.removeLiquidity(netLpToRemove);
271
+ (uint256 ptFromSwap, , ) = state.approxSwapExactScyForPt(
272
+ YT.newIndex(),
273
+ scyFromBurn,
274
+ block.timestamp,
275
+ guessPtOut
276
+ );
277
+
278
+ // early-check
279
+ require(ptFromBurn + ptFromSwap >= minPtOut, "insufficient lp out");
280
+
281
+ (, ptFromBurn) = IPMarket(market).burn(market, receiver);
282
+ IPMarket(market).swapScyForExactPt(receiver, ptFromSwap, EMPTY_BYTES); // ignore return
283
+
284
+ // fail-safe
285
+ require(ptFromBurn + ptFromSwap >= minPtOut, "FS insufficient lp out");
286
+ netPtOut = ptFromBurn + ptFromSwap;
287
+
288
+ emit RemoveLiquiditySinglePt(msg.sender, market, receiver, netLpToRemove, netPtOut);
289
+ }
290
+
291
+ function removeLiquiditySingleScy(
292
+ address receiver,
293
+ address market,
294
+ uint256 netLpToRemove,
295
+ uint256 minScyOut
296
+ ) external returns (uint256 netScyOut) {
297
+ IERC20(market).safeTransferFrom(msg.sender, market, netLpToRemove);
298
+ netScyOut = _removeLiquiditySingleScy(receiver, market, minScyOut);
299
+ emit RemoveLiquiditySingleScy(msg.sender, market, receiver, netLpToRemove, netScyOut);
300
+ }
301
+
302
+ function removeLiquiditySingleToken(
303
+ address receiver,
304
+ address market,
305
+ uint256 netLpToRemove,
306
+ TokenOutput calldata output
307
+ ) external returns (uint256 netTokenOut) {
308
+ (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
309
+
310
+ IERC20(market).safeTransferFrom(msg.sender, market, netLpToRemove);
311
+
312
+ // all output SCY is directly transferred to the SCY contract
313
+ uint256 netScyReceived = _removeLiquiditySingleScy(address(SCY), market, 1);
314
+
315
+ // since all SCY is already at the SCY contract, doPull = false
316
+ netTokenOut = _redeemScyToToken(receiver, address(SCY), netScyReceived, output, false);
317
+
318
+ emit RemoveLiquiditySingleToken(
319
+ msg.sender,
320
+ market,
321
+ output.tokenOut,
322
+ receiver,
323
+ netLpToRemove,
324
+ netTokenOut
325
+ );
326
+ }
327
+
328
+ function _addLiquiditySingleScy(
329
+ address receiver,
330
+ address market,
331
+ IPYieldToken YT,
332
+ uint256 netScyIn,
333
+ uint256 minLpOut,
334
+ ApproxParams calldata guessPtReceivedFromScy
335
+ ) internal returns (uint256 netLpOut) {
336
+ MarketState memory state = IPMarket(market).readState();
337
+
338
+ (uint256 netPtReceived, , ) = state.approxSwapScyToAddLiquidity(
339
+ YT.newIndex(),
340
+ netScyIn,
341
+ block.timestamp,
342
+ guessPtReceivedFromScy
343
+ );
344
+
345
+ IPMarket(market).swapScyForExactPt(market, netPtReceived, EMPTY_BYTES); // ignore return, receiver = market
346
+ netLpOut = IPMarket(market).mint(receiver);
347
+
348
+ require(netLpOut >= minLpOut, "insufficient lp out");
349
+ }
350
+
351
+ function _removeLiquiditySingleScy(
352
+ address receiver,
353
+ address market,
354
+ uint256 minScyOut
355
+ ) internal returns (uint256 netScyOut) {
356
+ (uint256 scyFromBurn, uint256 ptFromBurn) = IPMarket(market).burn(receiver, market);
357
+ (uint256 scyFromSwap, ) = IPMarket(market).swapExactPtForScy(
358
+ receiver,
359
+ ptFromBurn,
360
+ EMPTY_BYTES
361
+ );
362
+
363
+ require(scyFromBurn + scyFromSwap >= minScyOut, "insufficient lp out");
364
+ netScyOut = scyFromBurn + scyFromSwap;
365
+ }
366
+ }
@@ -6,7 +6,7 @@ import "../../interfaces/IPMarket.sol";
6
6
  import "../../interfaces/IPMarketSwapCallback.sol";
7
7
  import "../../libraries/SCY/SCYUtils.sol";
8
8
  import "../../libraries/math/MarketApproxLib.sol";
9
- import "./base/ActionSCYAndPYBase.sol";
9
+ import "./base/ActionBaseMintRedeem.sol";
10
10
  import "./base/CallbackHelper.sol";
11
11
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
12
12
 
@@ -64,10 +64,10 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper {
64
64
  (address receiver, uint256 minYtOut) = _decodeSwapExactScyForYt(data);
65
65
 
66
66
  uint256 ptOwed = ptToAccount.abs();
67
- uint256 amountPYout = YT.mintPY(market, receiver);
67
+ uint256 netPyOut = YT.mintPY(market, receiver);
68
68
 
69
- require(amountPYout >= ptOwed, "insufficient PT to pay");
70
- require(amountPYout >= minYtOut, "insufficient YT out");
69
+ require(netPyOut >= ptOwed, "insufficient PT to pay");
70
+ require(netPyOut >= minYtOut, "insufficient YT out");
71
71
  }
72
72
 
73
73
  struct VarsSwapScyForExactYt {
@@ -108,8 +108,8 @@ contract ActionCallback is IPMarketSwapCallback, CallbackHelper {
108
108
  SCY.safeTransferFrom(vars.payer, address(YT), netScyToPull);
109
109
  }
110
110
 
111
- uint256 amountPYout = YT.mintPY(market, vars.receiver);
112
- require(amountPYout >= ptOwed, "insufficient pt to pay");
111
+ uint256 netPyOut = YT.mintPY(market, vars.receiver);
112
+ require(netPyOut >= ptOwed, "insufficient pt to pay");
113
113
  }
114
114
 
115
115
  /// @dev refer to _swapExactYtForScy or _swapYtForExactScy