@pendle/core-v2 0.7.0 → 0.7.1-beta

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 (396) 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 -39
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.json +2 -2
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  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 -26
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +1 -1
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +2 -2
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +2 -2
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +1 -1
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +2 -2
  15. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  16. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +2 -2
  17. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
  18. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +2 -2
  19. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  20. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  21. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +0 -24
  22. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +4 -0
  23. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/{CelerReceiver.sol/CelerReceiver.json → CelerReceiverUpg.sol/CelerReceiverUpg.json} +2 -2
  24. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +4 -0
  25. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/{CelerSender.sol/CelerSender.json → CelerSenderUpg.sol/CelerSenderUpg.json} +15 -2
  26. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +4 -0
  27. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/{PendleGaugeController.sol/PendleGaugeController.json → PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.json} +2 -2
  28. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.dbg.json +4 -0
  29. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.json +255 -0
  30. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.dbg.json +4 -0
  31. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.json +318 -0
  32. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.json +0 -24
  34. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +4 -0
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +776 -0
  36. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +4 -0
  37. package/build/artifacts/contracts/core/LiquidityMining/VotingController/{VotingControllerStorage.sol/VotingControllerStorage.json → VotingControllerStorageUpg.sol/VotingControllerStorageUpg.json} +16 -49
  38. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +15 -43
  40. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  42. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +4 -0
  43. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/{VotingEscrowToken.sol/VotingEscrowToken.json → VotingEscrowTokenBase.sol/VotingEscrowTokenBase.json} +2 -2
  44. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -26
  46. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +13 -7
  48. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +2 -2
  50. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
  52. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -2
  54. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +4 -0
  55. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.json +35 -0
  56. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +15 -82
  58. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +15 -7
  60. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +77 -95
  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/ActionCore.sol/ActionCore.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +2 -2
  66. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +2 -2
  68. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  85. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.json +26 -0
  88. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.json +26 -0
  90. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +4 -0
  92. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.json +35 -0
  93. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.json +2 -2
  96. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +6 -0
  98. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.json +13 -0
  102. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +91 -43
  109. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.json +7 -2
  115. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  119. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  120. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  121. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.json +0 -24
  122. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +4 -0
  123. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.json +40 -0
  124. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +1 -1
  125. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.json +2 -2
  126. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  127. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.json +2 -2
  128. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  129. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  130. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +4 -0
  131. package/build/artifacts/contracts/libraries/{solmate/LibRLP.sol/LibRLP.json → VeHistoryLib.sol/Checkpoints.json} +4 -4
  132. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  133. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +2 -2
  134. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  135. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
  136. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  137. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +2 -2
  138. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +4 -0
  139. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.json +10 -0
  140. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  141. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  142. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
  143. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  144. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  145. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  146. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  147. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  148. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  149. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  150. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +2 -2
  151. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +1 -1
  152. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +2 -2
  153. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  154. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +2 -2
  155. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +1 -1
  156. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.json +2 -2
  157. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +1 -1
  158. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  159. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +3 -3
  160. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  161. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
  162. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  163. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +1 -1
  164. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol +1 -1
  165. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +1 -1
  166. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +1 -1
  167. package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +1 -1
  168. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +1 -1
  169. package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +1 -1
  170. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +1 -1
  171. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +1 -1
  172. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +1 -1
  173. package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +1 -1
  174. package/contracts/core/LiquidityMining/CelerAbstracts/{CelerReceiver.sol → CelerReceiverUpg.sol} +8 -2
  175. package/contracts/core/LiquidityMining/CelerAbstracts/{CelerSender.sol → CelerSenderUpg.sol} +10 -3
  176. package/contracts/core/LiquidityMining/GaugeController/{PendleGaugeController.sol → PendleGaugeControllerBaseUpg.sol} +9 -4
  177. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol +7 -4
  178. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol +9 -5
  179. package/contracts/core/LiquidityMining/PendleGauge.sol +1 -1
  180. package/contracts/core/LiquidityMining/VotingController/{PendleVotingController.sol → PendleVotingControllerUpg.sol} +19 -6
  181. package/contracts/core/LiquidityMining/VotingController/{VotingControllerStorage.sol → VotingControllerStorageUpg.sol} +14 -10
  182. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +12 -8
  183. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +5 -5
  184. package/contracts/core/LiquidityMining/VotingEscrow/{VotingEscrowToken.sol → VotingEscrowTokenBase.sol} +2 -3
  185. package/contracts/core/Market/PendleMarket.sol +4 -5
  186. package/contracts/core/Market/PendleMarketFactory.sol +17 -20
  187. package/contracts/core/PendleRouter.sol +1 -1
  188. package/contracts/core/YieldContracts/InterestManagerYT.sol +1 -1
  189. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +15 -7
  190. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +18 -19
  191. package/contracts/core/YieldContracts/PendleYieldToken.sol +37 -28
  192. package/contracts/core/actions/ActionCallback.sol +1 -1
  193. package/contracts/core/actions/ActionCore.sol +1 -1
  194. package/contracts/core/actions/ActionYT.sol +1 -1
  195. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +1 -1
  196. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +1 -1
  197. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +1 -1
  198. package/contracts/core/actions/base/CallbackHelper.sol +1 -1
  199. package/contracts/interfaces/IAToken.sol +1 -1
  200. package/contracts/interfaces/IAavePool.sol +1 -1
  201. package/contracts/interfaces/IAaveRewardsController.sol +1 -1
  202. package/contracts/interfaces/IBenQiComptroller.sol +1 -1
  203. package/contracts/interfaces/IBenQiInterestRateModel.sol +1 -1
  204. package/contracts/interfaces/IERC4626.sol +1 -1
  205. package/contracts/interfaces/IJoeRouter01.sol +1 -1
  206. package/contracts/interfaces/IJoeRouter02.sol +1 -1
  207. package/contracts/interfaces/IPActionCore.sol +1 -1
  208. package/contracts/interfaces/IPActionYT.sol +1 -1
  209. package/contracts/interfaces/IPAllAction.sol +1 -1
  210. package/contracts/interfaces/IPGaugeController.sol +7 -1
  211. package/contracts/interfaces/IPGaugeControllerMainchain.sol +1 -1
  212. package/contracts/interfaces/IPGovernanceManager.sol +1 -1
  213. package/contracts/interfaces/IPInterestManagerYT.sol +1 -1
  214. package/contracts/interfaces/IPMarket.sol +1 -1
  215. package/contracts/interfaces/IPMarketAddRemoveCallback.sol +1 -1
  216. package/contracts/interfaces/IPMarketFactory.sol +7 -2
  217. package/contracts/interfaces/IPMarketSwapCallback.sol +1 -1
  218. package/contracts/interfaces/IPPermissionsV2Upg.sol +1 -1
  219. package/contracts/interfaces/IPPrincipalToken.sol +3 -1
  220. package/contracts/interfaces/IPRouterStatic.sol +1 -1
  221. package/contracts/interfaces/IPVeToken.sol +1 -1
  222. package/contracts/interfaces/IPVotingController.sol +1 -1
  223. package/contracts/interfaces/IPVotingEscrow.sol +1 -1
  224. package/contracts/interfaces/IPYieldContractFactory.sol +1 -1
  225. package/contracts/interfaces/IPYieldToken.sol +14 -4
  226. package/contracts/interfaces/IQiAvax.sol +1 -1
  227. package/contracts/interfaces/IQiErc20.sol +1 -1
  228. package/contracts/interfaces/IQiToken.sol +1 -1
  229. package/contracts/interfaces/IREDACTEDStaking.sol +1 -1
  230. package/contracts/interfaces/IRewardManager.sol +1 -1
  231. package/contracts/interfaces/ISuperComposableYield.sol +1 -1
  232. package/contracts/interfaces/IWETH.sol +1 -1
  233. package/contracts/interfaces/IWXBTRFLY.sol +1 -1
  234. package/contracts/interfaces/IWstETH.sol +1 -1
  235. package/contracts/interfaces/IYearnVault.sol +1 -1
  236. package/contracts/libraries/RewardManager.sol +1 -1
  237. package/contracts/libraries/RewardManagerAbstract.sol +6 -2
  238. package/contracts/libraries/SCY/SCYIndex.sol +1 -1
  239. package/contracts/libraries/SCY/SCYUtils.sol +1 -1
  240. package/contracts/libraries/VeBalanceLib.sol +1 -35
  241. package/contracts/libraries/VeHistoryLib.sol +60 -0
  242. package/contracts/libraries/helpers/ExpiryUtilsLib.sol +1 -1
  243. package/contracts/libraries/helpers/MiniHelpers.sol +1 -1
  244. package/contracts/libraries/helpers/SSTORE2Deployer.sol +30 -0
  245. package/contracts/libraries/helpers/TokenHelper.sol +1 -1
  246. package/contracts/libraries/math/LogExpMath.sol +1 -1
  247. package/contracts/libraries/math/MarketApproxLib.sol +1 -1
  248. package/contracts/libraries/math/MarketMathCore.sol +1 -1
  249. package/contracts/libraries/math/Math.sol +1 -1
  250. package/contracts/libraries/math/WeekMath.sol +1 -1
  251. package/contracts/libraries/traderjoe/JoeLibrary.sol +1 -1
  252. package/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol +1 -1
  253. package/contracts/offchain-helpers/RouterStatic.sol +3 -3
  254. package/contracts/periphery/PendleGovernanceManager.sol +1 -1
  255. package/contracts/periphery/PermissionsV2Upg.sol +7 -1
  256. package/deployments/43113-benqi.json +6 -0
  257. package/deployments/43113-core.json +14 -0
  258. package/deployments/43113-markets/benqi-market.json +7 -0
  259. package/deployments/80001-benqi.json +6 -0
  260. package/deployments/80001-core.json +13 -0
  261. package/deployments/80001-markets/benqi-market.json +7 -0
  262. package/package.json +2 -2
  263. package/typechain-types/{CelerReceiver.ts → CelerReceiverUpg.ts} +5 -5
  264. package/typechain-types/{CelerSender.ts → CelerSenderUpg.ts} +24 -5
  265. package/typechain-types/IPGaugeController.ts +63 -0
  266. package/typechain-types/IPGaugeControllerMainchain.ts +62 -0
  267. package/typechain-types/{IVePToken.ts → IPInterestManagerYT.ts} +38 -27
  268. package/typechain-types/IPMarketAddRemoveCallback.ts +10 -10
  269. package/typechain-types/IPMarketFactory.ts +11 -4
  270. package/typechain-types/IPPrincipalToken.ts +25 -0
  271. package/typechain-types/IPYieldToken.ts +106 -106
  272. package/typechain-types/IRewardManager.ts +15 -14
  273. package/typechain-types/{IPGauge.ts → InterestManagerYT.ts} +27 -28
  274. package/typechain-types/PendleAaveV3SCY.ts +0 -70
  275. package/typechain-types/PendleGauge.ts +0 -39
  276. package/typechain-types/{PendleGaugeController.ts → PendleGaugeControllerBaseUpg.ts} +5 -5
  277. package/typechain-types/{PendleGaugeControllerMainchain.ts → PendleGaugeControllerMainchainUpg.ts} +5 -5
  278. package/typechain-types/{PendleGaugeControllerSidechain.ts → PendleGaugeControllerSidechainUpg.ts} +5 -5
  279. package/typechain-types/PendleMarket.ts +0 -39
  280. package/typechain-types/PendleMarketFactory.ts +18 -6
  281. package/typechain-types/PendlePrincipalToken.ts +25 -104
  282. package/typechain-types/PendleQiTokenSCY.ts +0 -39
  283. package/typechain-types/{PendleVotingController.ts → PendleVotingControllerUpg.ts} +165 -62
  284. package/typechain-types/{PendleYearnVaultScy.ts → PendleYearnVaultSCY.ts} +0 -0
  285. package/typechain-types/PendleYieldContractFactory.ts +31 -0
  286. package/typechain-types/PendleYieldToken.ts +84 -177
  287. package/typechain-types/RewardManager.ts +0 -39
  288. package/typechain-types/{IBeacon.ts → RewardManagerAbstract.ts} +38 -17
  289. package/typechain-types/RouterStatic.ts +5 -11
  290. package/typechain-types/SCYBaseWithRewards.ts +0 -39
  291. package/typechain-types/{VotingControllerStorage.ts → VotingControllerStorageUpg.ts} +28 -68
  292. package/typechain-types/VotingEscrowPendleMainchain.ts +19 -54
  293. package/typechain-types/{VotingEscrowToken.ts → VotingEscrowTokenBase.ts} +5 -5
  294. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  295. package/typechain-types/factories/ActionCore__factory.ts +1 -1
  296. package/typechain-types/factories/ActionYT__factory.ts +1 -1
  297. package/typechain-types/factories/{CelerReceiver__factory.ts → CelerReceiverUpg__factory.ts} +9 -6
  298. package/typechain-types/factories/{CelerSender__factory.ts → CelerSenderUpg__factory.ts} +22 -6
  299. package/typechain-types/factories/ERC20__factory.ts +1 -1
  300. package/typechain-types/factories/IPGaugeControllerMainchain__factory.ts +26 -0
  301. package/typechain-types/factories/IPGaugeController__factory.ts +26 -0
  302. package/typechain-types/factories/IPInterestManagerYT__factory.ts +50 -0
  303. package/typechain-types/factories/IPMarketAddRemoveCallback__factory.ts +2 -2
  304. package/typechain-types/factories/IPMarketFactory__factory.ts +6 -0
  305. package/typechain-types/factories/IPPrincipalToken__factory.ts +13 -0
  306. package/typechain-types/factories/IPYieldToken__factory.ts +91 -43
  307. package/typechain-types/factories/IRewardManager__factory.ts +7 -2
  308. package/typechain-types/factories/InterestManagerYT__factory.ts +50 -0
  309. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +1 -38
  310. package/typechain-types/factories/PendleBtrflyScy__factory.ts +1 -1
  311. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  312. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  313. package/typechain-types/factories/PendleERC4626SCY__factory.ts +1 -1
  314. package/typechain-types/factories/{PendleGaugeController__factory.ts → PendleGaugeControllerBaseUpg__factory.ts} +8 -8
  315. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +334 -0
  316. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +393 -0
  317. package/typechain-types/factories/PendleGauge__factory.ts +0 -24
  318. package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
  319. package/typechain-types/factories/PendleJoeLpSCY__factory.ts +1 -1
  320. package/typechain-types/factories/PendleMarketFactory__factory.ts +12 -11
  321. package/typechain-types/factories/PendleMarket__factory.ts +1 -25
  322. package/typechain-types/factories/PendlePrincipalToken__factory.ts +14 -85
  323. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  324. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +1 -25
  325. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  326. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +845 -0
  327. package/typechain-types/factories/PendleWstEthSCY__factory.ts +1 -1
  328. package/typechain-types/factories/PendleYearnVaultSCY__factory.ts +691 -0
  329. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +14 -11
  330. package/typechain-types/factories/PendleYieldToken__factory.ts +76 -94
  331. package/typechain-types/factories/RewardManagerAbstract__factory.ts +59 -0
  332. package/typechain-types/factories/RewardManager__factory.ts +0 -24
  333. package/typechain-types/factories/RouterStatic__factory.ts +2 -2
  334. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +0 -24
  335. package/typechain-types/factories/{VotingControllerStorage__factory.ts → VotingControllerStorageUpg__factory.ts} +22 -55
  336. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +14 -42
  337. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  338. package/typechain-types/factories/{VotingEscrowToken__factory.ts → VotingEscrowTokenBase__factory.ts} +12 -8
  339. package/typechain-types/hardhat.d.ts +54 -72
  340. package/typechain-types/index.ts +22 -26
  341. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.dbg.json +0 -4
  342. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.dbg.json +0 -4
  343. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.dbg.json +0 -4
  344. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.dbg.json +0 -4
  345. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.json +0 -255
  346. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.dbg.json +0 -4
  347. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.json +0 -318
  348. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.dbg.json +0 -4
  349. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.json +0 -707
  350. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.dbg.json +0 -4
  351. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.dbg.json +0 -4
  352. package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.dbg.json +0 -4
  353. package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.json +0 -101
  354. package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.dbg.json +0 -4
  355. package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.json +0 -10
  356. package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.dbg.json +0 -4
  357. package/contracts/libraries/helpers/MiniDeployer.sol +0 -23
  358. package/contracts/libraries/solmate/LibRLP.sol +0 -30
  359. package/deployments/kovan.json +0 -31
  360. package/typechain-types/ActionRedeem.ts +0 -125
  361. package/typechain-types/BeaconProxy.ts +0 -97
  362. package/typechain-types/ERC1967Upgrade.ts +0 -97
  363. package/typechain-types/IERC1822Proxiable.ts +0 -87
  364. package/typechain-types/IPActionRedeem.ts +0 -125
  365. package/typechain-types/IPBaseToken.ts +0 -365
  366. package/typechain-types/IPVotingEscrowController.ts +0 -154
  367. package/typechain-types/IPendleGauge.ts +0 -241
  368. package/typechain-types/IVotingEscrowPendle.ts +0 -297
  369. package/typechain-types/PendleBaseToken.ts +0 -475
  370. package/typechain-types/PendleBenQiErc20SCY.ts +0 -1050
  371. package/typechain-types/PendleMarketRewards.ts +0 -1317
  372. package/typechain-types/PendleStEthSCY.ts +0 -872
  373. package/typechain-types/RewardManagerMini.ts +0 -200
  374. package/typechain-types/VotingEscrowController.ts +0 -154
  375. package/typechain-types/factories/ActionRedeem__factory.ts +0 -105
  376. package/typechain-types/factories/BeaconProxy__factory.ts +0 -141
  377. package/typechain-types/factories/ERC1967Upgrade__factory.ts +0 -71
  378. package/typechain-types/factories/IBeacon__factory.ts +0 -36
  379. package/typechain-types/factories/IERC1822Proxiable__factory.ts +0 -39
  380. package/typechain-types/factories/IPActionRedeem__factory.ts +0 -70
  381. package/typechain-types/factories/IPBaseToken__factory.ts +0 -271
  382. package/typechain-types/factories/IPGauge__factory.ts +0 -42
  383. package/typechain-types/factories/IPVotingEscrowController__factory.ts +0 -80
  384. package/typechain-types/factories/IPendleGauge__factory.ts +0 -125
  385. package/typechain-types/factories/IVePToken__factory.ts +0 -55
  386. package/typechain-types/factories/IVotingEscrowPendle__factory.ts +0 -182
  387. package/typechain-types/factories/PendleBaseToken__factory.ts +0 -348
  388. package/typechain-types/factories/PendleBenQiErc20SCY__factory.ts +0 -871
  389. package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +0 -332
  390. package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +0 -391
  391. package/typechain-types/factories/PendleMarketRewards__factory.ts +0 -1140
  392. package/typechain-types/factories/PendleStEthSCY__factory.ts +0 -716
  393. package/typechain-types/factories/PendleVotingController__factory.ts +0 -776
  394. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +0 -691
  395. package/typechain-types/factories/RewardManagerMini__factory.ts +0 -116
  396. package/typechain-types/factories/VotingEscrowController__factory.ts +0 -80
@@ -21,7 +21,7 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  */
23
23
 
24
- pragma solidity 0.8.13;
24
+ pragma solidity 0.8.15;
25
25
 
26
26
  import "../../interfaces/IPYieldContractFactory.sol";
27
27
 
@@ -29,8 +29,7 @@ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
29
29
  import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
30
30
 
31
31
  import "../../libraries/helpers/ExpiryUtilsLib.sol";
32
- import "../../libraries/solmate/LibRLP.sol";
33
- import "../../libraries/helpers/MiniDeployer.sol";
32
+ import "../../libraries/helpers/SSTORE2Deployer.sol";
34
33
  import "../../libraries/helpers/MiniHelpers.sol";
35
34
 
36
35
  import "../../periphery/PermissionsV2Upg.sol";
@@ -39,13 +38,13 @@ import "./PendlePrincipalToken.sol";
39
38
  import "./PendleYieldToken.sol";
40
39
 
41
40
  /// @dev If this contract is ever made upgradeable, please pay attention to the numContractDeployed variable
42
- contract PendleYieldContractFactory is PermissionsV2Upg, MiniDeployer, IPYieldContractFactory {
41
+ contract PendleYieldContractFactory is PermissionsV2Upg, Initializable, IPYieldContractFactory {
43
42
  using ExpiryUtils for string;
44
43
 
45
44
  string private constant PT_PREFIX = "PT";
46
45
  string private constant YT_PREFIX = "YT";
47
46
 
48
- address public immutable pendleYtCreationCodePointer;
47
+ address public pendleYtCreationCodePointer;
49
48
 
50
49
  uint256 public expiryDivisor;
51
50
  uint256 public interestFeeRate;
@@ -65,16 +64,18 @@ contract PendleYieldContractFactory is PermissionsV2Upg, MiniDeployer, IPYieldCo
65
64
  uint256 _expiryDivisor,
66
65
  uint256 _interestFeeRate,
67
66
  address _treasury,
68
- address _governanceManager,
69
- bytes memory _pendleYtCreationCode
67
+ address _governanceManager
70
68
  ) PermissionsV2Upg(_governanceManager) {
71
69
  setExpiryDivisor(_expiryDivisor);
72
70
  setInterestFeeRate(_interestFeeRate);
73
71
  setTreasury(_treasury);
74
- pendleYtCreationCodePointer = _setCreationCode(_pendleYtCreationCode);
75
72
  numContractDeployed++;
76
73
  }
77
74
 
75
+ function initialize(bytes memory _pendleYtCreationCode) external initializer {
76
+ pendleYtCreationCodePointer = SSTORE2Deployer.setCreationCode(_pendleYtCreationCode);
77
+ }
78
+
78
79
  /**
79
80
  * @notice Create a pair of (PT, YT) from any SCY and valid expiry. Anyone can create a yield contract
80
81
  * @dev It's intentional to make expiry an uint32 to guard against fat fingers. uint32.max is year 2106
@@ -93,13 +94,12 @@ contract PendleYieldContractFactory is PermissionsV2Upg, MiniDeployer, IPYieldCo
93
94
 
94
95
  (, , uint8 assetDecimals) = _SCY.assetInfo();
95
96
 
96
- address predictedPTAddress = LibRLP.computeAddress(address(this), ++numContractDeployed);
97
- address predictedYTAddress = LibRLP.computeAddress(address(this), ++numContractDeployed);
98
-
99
- PT = address(
100
- new PendlePrincipalToken(
97
+ // no need salt since PT (and also YT) existence has been checked before hand
98
+ PT = SSTORE2Deployer.create2(
99
+ type(PendlePrincipalToken).creationCode,
100
+ bytes32(0),
101
+ abi.encode(
101
102
  SCY,
102
- predictedYTAddress,
103
103
  PT_PREFIX.concat(_SCY.name(), expiry, " "),
104
104
  PT_PREFIX.concat(_SCY.symbol(), expiry, "-"),
105
105
  assetDecimals,
@@ -107,13 +107,12 @@ contract PendleYieldContractFactory is PermissionsV2Upg, MiniDeployer, IPYieldCo
107
107
  )
108
108
  );
109
109
 
110
- require(PT == predictedPTAddress, "IE predictedPTAddress");
111
-
112
- YT = _deployWithArgs(
110
+ YT = SSTORE2Deployer.create2(
113
111
  pendleYtCreationCodePointer,
112
+ bytes32(0),
114
113
  abi.encode(
115
114
  SCY,
116
- predictedPTAddress,
115
+ PT,
117
116
  YT_PREFIX.concat(_SCY.name(), expiry, " "),
118
117
  YT_PREFIX.concat(_SCY.symbol(), expiry, "-"),
119
118
  assetDecimals,
@@ -121,7 +120,7 @@ contract PendleYieldContractFactory is PermissionsV2Upg, MiniDeployer, IPYieldCo
121
120
  )
122
121
  );
123
122
 
124
- require(YT == predictedYTAddress, "IE predictedYTAddress");
123
+ IPPrincipalToken(PT).initialize(YT);
125
124
 
126
125
  getPT[SCY][expiry] = PT;
127
126
  getYT[SCY][expiry] = YT;
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "../../interfaces/ISuperComposableYield.sol";
5
5
  import "../../interfaces/IPYieldToken.sol";
@@ -13,7 +13,7 @@ import "../../interfaces/IPYieldContractFactory.sol";
13
13
  import "../../libraries/SCY/SCYUtils.sol";
14
14
  import "../../libraries/helpers/MiniHelpers.sol";
15
15
  import "../../libraries/RewardManagerAbstract.sol";
16
- import "../PendleERC20Permit.sol";
16
+ import "../PendleERC20.sol";
17
17
  import "./InterestManagerYT.sol";
18
18
 
19
19
  /*
@@ -26,7 +26,7 @@ Due to this, it is required to update users' accruedReward STRICTLY BEFORE redee
26
26
  */
27
27
  contract PendleYieldToken is
28
28
  IPYieldToken,
29
- PendleERC20Permit,
29
+ PendleERC20,
30
30
  RewardManagerAbstract,
31
31
  InterestManagerYT
32
32
  {
@@ -45,7 +45,8 @@ contract PendleYieldToken is
45
45
  address public immutable factory;
46
46
  uint256 public immutable expiry;
47
47
 
48
- uint256 public scyReserve;
48
+ uint128 public scyReserve;
49
+ uint128 internal _scyIndexStored;
49
50
 
50
51
  AfterExpiryData public afterExpiry;
51
52
 
@@ -61,17 +62,14 @@ contract PendleYieldToken is
61
62
  string memory _symbol,
62
63
  uint8 __decimals,
63
64
  uint256 _expiry
64
- ) PendleERC20Permit(_name, _symbol, __decimals) {
65
+ ) PendleERC20(_name, _symbol, __decimals) {
65
66
  SCY = _SCY;
66
67
  PT = _PT;
67
68
  expiry = _expiry;
68
69
  factory = msg.sender;
69
70
  }
70
71
 
71
- /**
72
- * @notice this function splits scy into PT + YT of equal qty
73
- * @dev the scy to tokenize has to be pre-transferred to this contract prior to the function call
74
- */
72
+ /// @notice Tokenize SCY into PT + YT of equal qty. Every unit of underlying of SCY will create 1 PT + 1 YT
75
73
  function mintPY(address receiverPT, address receiverYT)
76
74
  external
77
75
  nonReentrant
@@ -87,6 +85,8 @@ contract PendleYieldToken is
87
85
  _mint(receiverYT, amountPYOut);
88
86
 
89
87
  IPPrincipalToken(PT).mintByYT(receiverPT, amountPYOut);
88
+
89
+ emit Mint(msg.sender, receiverPT, receiverYT, amountPYOut);
90
90
  }
91
91
 
92
92
  /// @dev this function converts PY tokens into scy, but interests & rewards are not redeemed at the same time
@@ -101,19 +101,24 @@ contract PendleYieldToken is
101
101
  (receivers[0], amounts[0]) = (receiver, type(uint256).max);
102
102
 
103
103
  (amountScyOut, ) = _redeemPY(receivers, amounts);
104
+
105
+ emit Redeem(msg.sender, receiver, amountScyOut);
104
106
  }
105
107
 
106
- function redeemPY(address[] memory receivers, uint256[] memory amounts)
108
+ /// @dev this function limit how much each receiver will receive. For example, if the totalOut is 100,
109
+ /// and the max are 50 30 INF, the first receiver will receive 50, the second will receive 30, and the third will receive 20.
110
+ /// @dev intended to mostly be used by Pendle router
111
+ function redeemPY(address[] memory receivers, uint256[] memory maxAmountScyOuts)
107
112
  external
108
113
  nonReentrant
109
114
  updateScyReserve
110
- returns (uint256 amountScyOut)
115
+ returns (uint256 totalAmountScyOut)
111
116
  {
112
- (amountScyOut, ) = _redeemPY(receivers, amounts);
117
+ (totalAmountScyOut, ) = _redeemPY(receivers, maxAmountScyOuts);
113
118
  }
114
119
 
115
120
  /**
116
- * @dev as mentioned in doc, updateDueReward should be placed strictly before every redeemDueInterest
121
+ * @dev _updateAndDistributeRewards must be called before every distributeInterest
117
122
  */
118
123
  function redeemDueInterestAndRewards(address user)
119
124
  external
@@ -121,7 +126,6 @@ contract PendleYieldToken is
121
126
  updateScyReserve
122
127
  returns (uint256 interestOut, uint256[] memory rewardsOut)
123
128
  {
124
- // redeemDueRewards before redeemDueInterest
125
129
  _updateAndDistributeRewards(user);
126
130
  _distributeInterest(user);
127
131
  rewardsOut = _doTransferOutRewards(user, user);
@@ -181,20 +185,25 @@ contract PendleYieldToken is
181
185
  function finalizeAfterExpiryData() public {
182
186
  if (!isExpired() || afterExpiry.isFinalized) return;
183
187
  afterExpiry.isFinalized = true;
184
- afterExpiry.firstScyIndex = ISuperComposableYield(SCY).exchangeRate().Uint128();
188
+ afterExpiry.firstScyIndex = scyIndexCurrent().Uint128();
185
189
  (, afterExpiry.firstRewardIndexes) = _updateRewardIndex();
186
190
  }
187
191
 
188
- /// @dev no reentrant & updateScyReserve since this function updates just the lastIndex
189
- function getScyIndex() public view returns (uint256 currentIndex) {
190
- return ISuperComposableYield(SCY).exchangeRate();
192
+ /// @dev maximize the current rate with the previous rate to guarantee non-decreasing rate
193
+ function scyIndexCurrent() public returns (uint256 currentIndex) {
194
+ currentIndex = Math.max(ISuperComposableYield(SCY).exchangeRate(), _scyIndexStored);
195
+ _scyIndexStored = currentIndex.Uint128();
196
+ }
197
+
198
+ function scyIndexStored() public view returns (uint256) {
199
+ return _scyIndexStored;
191
200
  }
192
201
 
193
202
  function isExpired() public view returns (bool) {
194
203
  return MiniHelpers.isCurrentlyExpired(expiry);
195
204
  }
196
205
 
197
- function _redeemPY(address[] memory receivers, uint256[] memory maxScyAmounts)
206
+ function _redeemPY(address[] memory receivers, uint256[] memory maxAmountScyOuts)
198
207
  internal
199
208
  returns (uint256 totalScyToReceivers, uint256 scyInterestAfterExpiry)
200
209
  {
@@ -209,12 +218,12 @@ contract PendleYieldToken is
209
218
  _transferOut(SCY, treasury, scyInterestAfterExpiry);
210
219
  }
211
220
 
212
- _transferOutMaxMulti(SCY, totalScyToReceivers, receivers, maxScyAmounts);
221
+ _transferOutMaxMulti(SCY, totalScyToReceivers, receivers, maxAmountScyOuts);
213
222
  }
214
223
 
215
- function _calcPYToMint(uint256 amountScy) internal view returns (uint256 amountPY) {
224
+ function _calcPYToMint(uint256 amountScy) internal returns (uint256 amountPY) {
216
225
  // doesn't matter before or after expiry, since mintPY is only allowed before expiry
217
- return SCYUtils.scyToAsset(getScyIndex(), amountScy);
226
+ return SCYUtils.scyToAsset(scyIndexCurrent(), amountScy);
218
227
  }
219
228
 
220
229
  function _calcScyRedeemableFromPY(uint256 amountPY)
@@ -224,10 +233,10 @@ contract PendleYieldToken is
224
233
  if (isExpired()) {
225
234
  finalizeAfterExpiryData();
226
235
  uint256 totalScyRedeemable = SCYUtils.assetToScy(afterExpiry.firstScyIndex, amountPY);
227
- scyToUser = SCYUtils.assetToScy(getScyIndex(), amountPY);
236
+ scyToUser = SCYUtils.assetToScy(scyIndexCurrent(), amountPY);
228
237
  scyInterestAfterExpiry = totalScyRedeemable - scyToUser;
229
238
  } else {
230
- scyToUser = SCYUtils.assetToScy(getScyIndex(), amountPY);
239
+ scyToUser = SCYUtils.assetToScy(scyIndexCurrent(), amountPY);
231
240
  }
232
241
  }
233
242
 
@@ -255,7 +264,7 @@ contract PendleYieldToken is
255
264
  finalizeAfterExpiryData();
256
265
  index = afterExpiry.firstScyIndex;
257
266
  } else {
258
- index = ISuperComposableYield(SCY).exchangeRate();
267
+ index = scyIndexCurrent();
259
268
  }
260
269
  }
261
270
 
@@ -291,7 +300,7 @@ contract PendleYieldToken is
291
300
  }
292
301
 
293
302
  function _redeemExternalReward() internal virtual override {
294
- ISuperComposableYield(SCY).claimRewards(address(this)); // ignore return
303
+ ISuperComposableYield(SCY).claimRewards(address(this));
295
304
  }
296
305
 
297
306
  /// @dev effectively returning the amount of SCY generating rewards for this user
@@ -320,11 +329,11 @@ contract PendleYieldToken is
320
329
  // padding to handle the very extreme case of SCY adding reward tokens after expiry
321
330
  indexes = afterExpiry.firstRewardIndexes.padZeroRight(tokens.length);
322
331
  } else {
323
- indexes = ISuperComposableYield(SCY).rewardIndexesCurrent();
332
+ indexes = rewardIndexesCurrent();
324
333
  }
325
334
  }
326
335
 
327
- function rewardIndexesCurrent() external override returns (uint256[] memory) {
336
+ function rewardIndexesCurrent() public override returns (uint256[] memory) {
328
337
  return ISuperComposableYield(SCY).rewardIndexesCurrent();
329
338
  }
330
339
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "../../interfaces/IPMarketFactory.sol";
5
5
  import "../../interfaces/IPMarket.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "./base/ActionSCYAndPTBase.sol";
5
5
  import "./base/ActionSCYAndPYBase.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "./base/ActionSCYAndYTBase.sol";
5
5
  import "../../interfaces/IPPrincipalToken.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "../../../interfaces/IPMarketFactory.sol";
5
5
  import "../../../interfaces/IPMarket.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
5
5
  import "../../../libraries/traderjoe/PendleJoeSwapHelperUpg.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "../../../interfaces/IPMarketFactory.sol";
5
5
  import "../../../interfaces/IPMarket.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  abstract contract CallbackHelper {
5
5
  enum ActionType {
@@ -20,7 +20,7 @@
20
20
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  */
23
- pragma solidity 0.8.13;
23
+ pragma solidity 0.8.15;
24
24
  import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
25
25
 
26
26
  interface IAToken is IERC20 {
@@ -21,7 +21,7 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  */
23
23
 
24
- pragma solidity 0.8.13;
24
+ pragma solidity 0.8.15;
25
25
 
26
26
  interface IAavePool {
27
27
  function supply(
@@ -21,7 +21,7 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  */
23
23
 
24
- pragma solidity 0.8.13;
24
+ pragma solidity 0.8.15;
25
25
 
26
26
  interface IAaveRewardsController {
27
27
  function claimAllRewards(address[] calldata assets, address to)
@@ -20,7 +20,7 @@
20
20
  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  */
23
- pragma solidity 0.8.13;
23
+ pragma solidity 0.8.15;
24
24
 
25
25
  interface IBenQiComptroller {
26
26
  function claimReward(
@@ -1,4 +1,4 @@
1
- pragma solidity 0.8.13;
1
+ pragma solidity 0.8.15;
2
2
 
3
3
  interface IBenQiInterestRateModel {
4
4
  function getBorrowRate(
@@ -21,7 +21,7 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  */
23
23
 
24
- pragma solidity 0.8.13;
24
+ pragma solidity 0.8.15;
25
25
  import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
26
26
 
27
27
  interface IERC4626 is IERC20Metadata {
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
 
3
- pragma solidity 0.8.13;
3
+ pragma solidity 0.8.15;
4
4
 
5
5
  interface IJoeRouter01 {
6
6
  function addLiquidity(
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: GPL-3.0
2
2
 
3
- pragma solidity 0.8.13;
3
+ pragma solidity 0.8.15;
4
4
 
5
5
  import "./IJoeRouter01.sol";
6
6
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "../libraries/math/MarketApproxLib.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "../libraries/math/MarketApproxLib.sol";
5
5
 
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
 
3
- pragma solidity 0.8.13;
3
+ pragma solidity 0.8.15;
4
4
 
5
5
  import "./IPActionCore.sol";
6
6
  import "./IPActionYT.sol";
@@ -1,11 +1,15 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  interface IPGaugeController {
5
5
  event MarketClaimReward(address indexed market, uint256 amount);
6
6
 
7
7
  event ReceiveVotingResults(uint128 wTime, address[] markets, uint256[] pendleAmounts);
8
8
 
9
+ function fundPendle(uint256 amount) external;
10
+
11
+ function withdrawPendle(uint256 amount) external;
12
+
9
13
  function pendle() external returns (address);
10
14
 
11
15
  function claimMarketReward() external;
@@ -19,4 +23,6 @@ interface IPGaugeController {
19
23
  uint128,
20
24
  uint128
21
25
  );
26
+
27
+
22
28
  }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "./IPGaugeController.sol";
5
5
 
@@ -21,7 +21,7 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  */
23
23
 
24
- pragma solidity 0.8.13;
24
+ pragma solidity 0.8.15;
25
25
 
26
26
  interface IPGovernanceManager {
27
27
  function governance() external view returns (address);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  interface IPInterestManagerYT {
5
5
  function userInterest(address user)
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
  import "./IPPrincipalToken.sol";
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  interface IPMarketAddRemoveCallback {
5
5
  function addLiquidityCallback(
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  interface IPMarketFactory {
5
5
  event NewMarketConfig(
@@ -9,7 +9,12 @@ interface IPMarketFactory {
9
9
  uint8 reserveFeePercent
10
10
  );
11
11
 
12
- event CreateNewMarket(address indexed PT, int256 scalarRoot, int256 initialAnchor);
12
+ event CreateNewMarket(
13
+ address indexed market,
14
+ address indexed PT,
15
+ int256 scalarRoot,
16
+ int256 initialAnchor
17
+ );
13
18
 
14
19
  function isValidMarket(address market) external view returns (bool);
15
20
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  interface IPMarketSwapCallback {
5
5
  function swapCallback(
@@ -21,7 +21,7 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  */
23
23
 
24
- pragma solidity 0.8.13;
24
+ pragma solidity 0.8.15;
25
25
 
26
26
  interface IPermissionsV2Upg {
27
27
  function governanceManager() external view returns (address);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
  import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
4
4
 
5
5
  interface IPPrincipalToken is IERC20Metadata {
@@ -7,6 +7,8 @@ interface IPPrincipalToken is IERC20Metadata {
7
7
 
8
8
  function mintByYT(address user, uint256 amount) external;
9
9
 
10
+ function initialize(address _YT) external;
11
+
10
12
  function SCY() external view returns (address);
11
13
 
12
14
  function YT() external view returns (address);
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.13;
2
+ pragma solidity 0.8.15;
3
3
 
4
4
  import "../libraries/math/MarketMathCore.sol";
5
5
 
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
 
3
- pragma solidity 0.8.13;
3
+ pragma solidity 0.8.15;
4
4
 
5
5
  interface IPVeToken {
6
6
  // ============= USER INFO =============
@@ -1,4 +1,4 @@
1
- pragma solidity 0.8.13;
1
+ pragma solidity 0.8.15;
2
2
 
3
3
  import "../libraries/VeBalanceLib.sol";
4
4
 
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
 
3
- pragma solidity 0.8.13;
3
+ pragma solidity 0.8.15;
4
4
 
5
5
  import "./IPVeToken.sol";
6
6
  import "../libraries/VeBalanceLib.sol";
@@ -21,7 +21,7 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  */
23
23
 
24
- pragma solidity 0.8.13;
24
+ pragma solidity 0.8.15;
25
25
 
26
26
  interface IPYieldContractFactory {
27
27
  event CreateYieldContract(address indexed SCY, address PT, address YT, uint256 expiry);