@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
@@ -1,15 +1,21 @@
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/ICelerMessageReceiverApp.sol";
5
5
  import "../../../periphery/PermissionsV2Upg.sol";
6
6
 
7
7
  // solhint-disable no-empty-blocks
8
- abstract contract CelerReceiver is ICelerMessageReceiverApp, PermissionsV2Upg {
8
+ /// This contract is upgradable because
9
+ /// - its constructor only sets immutable variables
10
+ /// - it has storage gaps for safe addition of future variables
11
+ /// - it inherits only upgradable contract
12
+ abstract contract CelerReceiverUpg is ICelerMessageReceiverApp, PermissionsV2Upg {
9
13
  address public celerMessageBus;
10
14
  address public originAddress;
11
15
  uint256 public originChainId;
12
16
 
17
+ uint256[100] private __gap;
18
+
13
19
  constructor(address _governanceManager) PermissionsV2Upg(_governanceManager) {}
14
20
 
15
21
  modifier onlyCelerOrGov() {
@@ -1,17 +1,24 @@
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/ICelerMessageBus.sol";
5
5
  import "../../../periphery/PermissionsV2Upg.sol";
6
6
  import "@openzeppelin/contracts/utils/structs/EnumerableMap.sol";
7
7
 
8
8
  // solhint-disable no-empty-blocks
9
- abstract contract CelerSender is PermissionsV2Upg {
9
+ /// This contract is upgradable because
10
+ /// - its constructor only sets immutable variables
11
+ /// - it has storage gaps for safe addition of future variables
12
+ /// - it inherits only upgradable contract
13
+ abstract contract CelerSenderUpg is PermissionsV2Upg {
10
14
  using EnumerableMap for EnumerableMap.UintToAddressMap;
11
15
 
12
- ICelerMessageBus private celerMessageBus;
16
+ ICelerMessageBus public celerMessageBus;
17
+
13
18
  EnumerableMap.UintToAddressMap internal sidechainContracts;
14
19
 
20
+ uint256[100] private __gap;
21
+
15
22
  constructor(address _governanceManager) PermissionsV2Upg(_governanceManager) {}
16
23
 
17
24
  function setCelerMessageBus(address _celerMessageBus) external onlyGovernance {
@@ -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/IPGaugeController.sol";
5
5
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
@@ -17,10 +17,13 @@ import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
17
17
  *
18
18
  * @dev All of the core data in this function will be set to private to prevent unintended assignments
19
19
  * on inheritting contracts
20
- *
21
- * @dev no more pause
22
20
  */
23
- abstract contract PendleGaugeController is IPGaugeController, PermissionsV2Upg {
21
+
22
+ /// This contract is upgradable because
23
+ /// - its constructor only sets immutable variables
24
+ /// - it has storage gaps for safe addition of future variables
25
+ /// - it inherits only upgradable contract
26
+ abstract contract PendleGaugeControllerBaseUpg is IPGaugeController, PermissionsV2Upg {
24
27
  using SafeERC20 for IERC20;
25
28
  using Math for uint256;
26
29
  using EnumerableSet for EnumerableSet.AddressSet;
@@ -40,6 +43,8 @@ abstract contract PendleGaugeController is IPGaugeController, PermissionsV2Upg {
40
43
  mapping(address => MarketRewardData) public rewardData;
41
44
  mapping(uint128 => bool) public epochRewardReceived;
42
45
 
46
+ uint256[100] private __gap;
47
+
43
48
  modifier onlyPendleMarket() {
44
49
  require(marketFactory.isValidMarket(msg.sender), "invalid market");
45
50
  _;
@@ -1,9 +1,12 @@
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
- import "./PendleGaugeController.sol";
4
+ import "./PendleGaugeControllerBaseUpg.sol";
5
5
 
6
- contract PendleGaugeControllerMainchain is PendleGaugeController {
6
+ /// This contract is upgradable because
7
+ /// - its constructor only sets immutable variables
8
+ /// - it inherits only upgradable contract
9
+ contract PendleGaugeControllerMainchainUpg is PendleGaugeControllerBaseUpg {
7
10
  address public immutable votingController;
8
11
 
9
12
  modifier onlyVotingController() {
@@ -16,7 +19,7 @@ contract PendleGaugeControllerMainchain is PendleGaugeController {
16
19
  address _pendle,
17
20
  address _marketFactory,
18
21
  address _governanceManager
19
- ) PendleGaugeController(_pendle, _marketFactory) PermissionsV2Upg(_governanceManager) {
22
+ ) PendleGaugeControllerBaseUpg(_pendle, _marketFactory) PermissionsV2Upg(_governanceManager) {
20
23
  votingController = _votingController;
21
24
  }
22
25
 
@@ -1,16 +1,20 @@
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
- import "./PendleGaugeController.sol";
5
- import "../CelerAbstracts/CelerReceiver.sol";
4
+ import "./PendleGaugeControllerBaseUpg.sol";
5
+ import "../CelerAbstracts/CelerReceiverUpg.sol";
6
6
 
7
7
  // solhint-disable no-empty-blocks
8
- contract PendleGaugeControllerSidechain is PendleGaugeController, CelerReceiver {
8
+
9
+ /// This contract is upgradable because
10
+ /// - its constructor only sets immutable variables
11
+ /// - it inherits only upgradable contract
12
+ contract PendleGaugeControllerSidechainUpg is PendleGaugeControllerBaseUpg, CelerReceiverUpg {
9
13
  constructor(
10
14
  address _pendle,
11
15
  address _marketFactory,
12
16
  address _governanceManager
13
- ) PendleGaugeController(_pendle, _marketFactory) CelerReceiver(_governanceManager) {}
17
+ ) PendleGaugeControllerBaseUpg(_pendle, _marketFactory) CelerReceiverUpg(_governanceManager) {}
14
18
 
15
19
  function _executeMessage(bytes memory message) internal virtual override {
16
20
  (uint128 wTime, address[] memory markets, uint256[] memory pendleAmounts) = abi.decode(
@@ -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/IPGaugeController.sol";
5
5
  import "../../interfaces/IPVeToken.sol";
@@ -1,12 +1,14 @@
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
- import "./VotingControllerStorage.sol";
5
- import "../CelerAbstracts/CelerSender.sol";
4
+ import "./VotingControllerStorageUpg.sol";
5
+ import "../CelerAbstracts/CelerSenderUpg.sol";
6
6
  import "../../../libraries/VeBalanceLib.sol";
7
7
  import "../../../libraries/math/Math.sol";
8
8
  import "../../../interfaces/IPGaugeControllerMainchain.sol";
9
9
  import "../../../interfaces/IPVotingController.sol";
10
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
11
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
10
12
 
11
13
  /*
12
14
  Voting accounting:
@@ -31,7 +33,16 @@ Cons:
31
33
  - Does not guarantee the reward will be distributed on epoch start and end
32
34
  */
33
35
 
34
- contract PendleVotingController is CelerSender, VotingControllerStorage, IPVotingController {
36
+ /// This contract is upgradable because
37
+ /// - its constructor only sets immutable variables
38
+ /// - it has storage gaps for safe addition of future variables
39
+ /// - it inherits only upgradable contract
40
+ contract PendleVotingControllerUpg is
41
+ CelerSenderUpg,
42
+ VotingControllerStorageUpg,
43
+ UUPSUpgradeable,
44
+ IPVotingController
45
+ {
35
46
  using VeBalanceLib for VeBalance;
36
47
  using Math for uint256;
37
48
  using Math for int256;
@@ -39,8 +50,8 @@ contract PendleVotingController is CelerSender, VotingControllerStorage, IPVotin
39
50
  using EnumerableSet for EnumerableSet.AddressSet;
40
51
 
41
52
  constructor(address _vePendle, address _governanceManager)
42
- VotingControllerStorage(_vePendle)
43
- CelerSender(_governanceManager)
53
+ VotingControllerStorageUpg(_vePendle) // constructor only set immutable variables
54
+ CelerSenderUpg(_governanceManager) // constructor only set immutable variables
44
55
  {}
45
56
 
46
57
  /*///////////////////////////////////////////////////////////////
@@ -320,4 +331,6 @@ contract PendleVotingController is CelerSender, VotingControllerStorage, IPVotin
320
331
  expiry
321
332
  );
322
333
  }
334
+
335
+ function _authorizeUpgrade(address newImplementation) internal override onlyGovernance {}
323
336
  }
@@ -1,17 +1,21 @@
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/IPVeToken.sol";
5
5
  import "../../../libraries/VeBalanceLib.sol";
6
6
  import "../../../libraries/math/WeekMath.sol";
7
7
  import "../../../libraries/helpers/MiniHelpers.sol";
8
+ import "../../../libraries/VeHistoryLib.sol";
8
9
  import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
9
10
 
10
- // no reentracy protection yet?
11
- // Should VotingController and stuff become upgradeable?
12
- abstract contract VotingControllerStorage {
11
+ /// This contract is upgradable because
12
+ /// - its constructor only sets immutable variables
13
+ /// - it has storage gaps for safe addition of future variables
14
+ /// - it inherits only upgradable contract
15
+ abstract contract VotingControllerStorageUpg {
13
16
  using VeBalanceLib for VeBalance;
14
17
  using EnumerableSet for EnumerableSet.AddressSet;
18
+ using Checkpoints for Checkpoints.History;
15
19
 
16
20
  struct PoolInfo {
17
21
  uint64 chainId;
@@ -36,7 +40,7 @@ abstract contract VotingControllerStorage {
36
40
  mapping(address => uint128) poolVotes;
37
41
  }
38
42
 
39
- uint128 internal constant MAX_LOCK_TIME = 104 weeks;
43
+ uint128 public constant MAX_LOCK_TIME = 104 weeks;
40
44
  uint64 public constant USER_VOTE_MAX_WEIGHT = 10**18;
41
45
  uint128 public constant WEEK = 1 weeks;
42
46
  uint128 public constant GOVERNANCE_PENDLE_VOTE = 10**24;
@@ -65,7 +69,9 @@ abstract contract VotingControllerStorage {
65
69
  mapping(uint128 => bool) public isEpochFinalized;
66
70
 
67
71
  // [user][pool] => checkpoint
68
- mapping(address => mapping(address => Checkpoint[])) public userPoolCheckpoints;
72
+ mapping(address => mapping(address => Checkpoints.History)) internal userPoolHistory;
73
+
74
+ uint256[100] private __gap;
69
75
 
70
76
  constructor(address _vePendle) {
71
77
  vePendle = IPVeToken(_vePendle);
@@ -104,7 +110,7 @@ abstract contract VotingControllerStorage {
104
110
  address pool,
105
111
  uint128 timestamp
106
112
  ) external view returns (uint128) {
107
- return VeBalanceLib.getCheckpointValueAt(userPoolCheckpoints[user][pool], timestamp);
113
+ return userPoolHistory[user][pool].getAtTimestamp(timestamp);
108
114
  }
109
115
 
110
116
  /*///////////////////////////////////////////////////////////////
@@ -198,9 +204,7 @@ abstract contract VotingControllerStorage {
198
204
  address pool,
199
205
  VeBalance memory vote
200
206
  ) internal {
201
- userPoolCheckpoints[user][pool].push(
202
- Checkpoint({ balance: vote, timestamp: uint128(block.timestamp) })
203
- );
207
+ userPoolHistory[user][pool].push(vote);
204
208
  }
205
209
 
206
210
  function _setAllPastEpochsAsFinalized() internal {
@@ -1,16 +1,18 @@
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 "../../../interfaces/IPVotingEscrow.sol";
4
4
  import "../../../libraries/helpers/MiniHelpers.sol";
5
- import "./VotingEscrowToken.sol";
6
- import "../CelerAbstracts/CelerSender.sol";
5
+ import "./VotingEscrowTokenBase.sol";
6
+ import "../CelerAbstracts/CelerSenderUpg.sol";
7
+ import "../../../libraries/VeHistoryLib.sol";
7
8
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
9
  import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
9
10
 
10
- contract VotingEscrowPendleMainchain is VotingEscrowToken, IPVotingEscrow, CelerSender {
11
+ contract VotingEscrowPendleMainchain is IPVotingEscrow, VotingEscrowTokenBase, CelerSenderUpg {
11
12
  using SafeERC20 for IERC20;
12
13
  using VeBalanceLib for VeBalance;
13
14
  using VeBalanceLib for LockedPosition;
15
+ using Checkpoints for Checkpoints.History;
14
16
  using EnumerableMap for EnumerableMap.UintToAddressMap;
15
17
 
16
18
  bytes private constant EMPTY_BYTES = abi.encode();
@@ -26,9 +28,11 @@ contract VotingEscrowPendleMainchain is VotingEscrowToken, IPVotingEscrow, Celer
26
28
 
27
29
  // Saving VeBalance checkpoint for users of each week, can later use binary search
28
30
  // to ask for their vePendle balance at any wTime
29
- mapping(address => Checkpoint[]) public userCheckpoints;
31
+ mapping(address => Checkpoints.History) internal userHistory;
30
32
 
31
- constructor(IERC20 _pendle, address _governanceManager) CelerSender(_governanceManager) {
33
+ constructor(IERC20 _pendle, address _governanceManager)
34
+ CelerSenderUpg(_governanceManager) // only sets immutable variables
35
+ {
32
36
  pendle = _pendle;
33
37
  }
34
38
 
@@ -132,7 +136,7 @@ contract VotingEscrowPendleMainchain is VotingEscrowToken, IPVotingEscrow, Celer
132
136
 
133
137
  /// @notice binary search to find balance at a timestamp. This timestamp does not need to be divisible by week
134
138
  function getUserVeBalanceAt(address user, uint128 timestamp) external view returns (uint128) {
135
- return VeBalanceLib.getCheckpointValueAt(userCheckpoints[user], timestamp);
139
+ return userHistory[user].getAtTimestamp(timestamp);
136
140
  }
137
141
 
138
142
  /**
@@ -173,7 +177,7 @@ contract VotingEscrowPendleMainchain is VotingEscrowToken, IPVotingEscrow, Celer
173
177
 
174
178
  _totalSupply = newSupply;
175
179
  positionData[user] = newPosition;
176
- userCheckpoints[user].push(Checkpoint(newBalance, uint128(block.timestamp)));
180
+ userHistory[user].push(newBalance);
177
181
  return newBalance.getCurrentValue();
178
182
  }
179
183
 
@@ -1,14 +1,14 @@
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 "../../../libraries/VeBalanceLib.sol";
6
6
  import "../../../libraries/math/WeekMath.sol";
7
- import "./VotingEscrowToken.sol";
8
- import "../CelerAbstracts/CelerReceiver.sol";
7
+ import "./VotingEscrowTokenBase.sol";
8
+ import "../CelerAbstracts/CelerReceiverUpg.sol";
9
9
 
10
10
  // solhint-disable no-empty-blocks
11
- contract VotingEscrowPendleSidechain is VotingEscrowToken, CelerReceiver {
11
+ contract VotingEscrowPendleSidechain is VotingEscrowTokenBase, CelerReceiverUpg {
12
12
  mapping(address => address) internal delegatorOf;
13
13
 
14
14
  event SetNewDelegator(address delegator, address receiver);
@@ -17,7 +17,7 @@ contract VotingEscrowPendleSidechain is VotingEscrowToken, CelerReceiver {
17
17
 
18
18
  event SetNewUserPosition(LockedPosition position);
19
19
 
20
- constructor(address _governanceManager) CelerReceiver(_governanceManager) {}
20
+ constructor(address _governanceManager) CelerReceiverUpg(_governanceManager) {}
21
21
 
22
22
  function totalSupplyCurrent() external view virtual override returns (uint128) {
23
23
  return totalSupplyStored();
@@ -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/IPVeToken.sol";
5
5
  import "../../../libraries/VeBalanceLib.sol";
@@ -19,8 +19,7 @@ import "../../../libraries/helpers/MiniHelpers.sol";
19
19
  * + No other transaction is allowed to write on sidechain storage
20
20
  */
21
21
 
22
- abstract contract VotingEscrowToken is IPVeToken {
23
- // wrong name, should be VotingEscrowPendle
22
+ abstract contract VotingEscrowTokenBase is IPVeToken {
24
23
  using VeBalanceLib for VeBalance;
25
24
  using VeBalanceLib for LockedPosition;
26
25
 
@@ -1,7 +1,6 @@
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
- import "../PendleERC20.sol";
5
4
  import "../../interfaces/IPPrincipalToken.sol";
6
5
  import "../../interfaces/ISuperComposableYield.sol";
7
6
  import "../../interfaces/IPMarket.sol";
@@ -14,13 +13,13 @@ import "../../libraries/math/Math.sol";
14
13
  import "../../libraries/helpers/MiniHelpers.sol";
15
14
 
16
15
  import "../LiquidityMining/PendleGauge.sol";
17
- import "../PendleERC20Permit.sol";
16
+ import "../PendleERC20.sol";
18
17
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
19
18
 
20
19
  // solhint-disable reason-string
21
20
  /// Invariances to maintain:
22
21
  /// - Internal balances totalPt & totalScy not interferred by people transferring tokens in directly
23
- contract PendleMarket is PendleERC20Permit, PendleGauge, IPMarket {
22
+ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
24
23
  using Math for uint256;
25
24
  using Math for int256;
26
25
  using MarketMathCore for MarketState;
@@ -66,7 +65,7 @@ contract PendleMarket is PendleERC20Permit, PendleGauge, IPMarket {
66
65
  address _vePendle,
67
66
  address _gaugeController
68
67
  )
69
- PendleERC20Permit(NAME, SYMBOL, 18)
68
+ PendleERC20(NAME, SYMBOL, 18)
70
69
  PendleGauge(IPPrincipalToken(_PT).SCY(), _vePendle, _gaugeController)
71
70
  {
72
71
  PT = IPPrincipalToken(_PT);
@@ -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/utils/structs/EnumerableSet.sol";
4
4
  import "@openzeppelin/contracts/proxy/utils/Initializable.sol";
5
5
 
@@ -7,13 +7,13 @@ import "../../interfaces/IPMarket.sol";
7
7
  import "../../interfaces/IPYieldContractFactory.sol";
8
8
  import "../../interfaces/IPMarketFactory.sol";
9
9
 
10
- import "../../libraries/helpers/MiniDeployer.sol";
10
+ import "../../libraries/helpers/SSTORE2Deployer.sol";
11
11
  import "../../periphery/PermissionsV2Upg.sol";
12
12
 
13
13
  import "./PendleMarket.sol";
14
14
  import "../LiquidityMining/PendleGauge.sol";
15
15
 
16
- contract PendleMarketFactory is PermissionsV2Upg, MiniDeployer, Initializable, IPMarketFactory {
16
+ contract PendleMarketFactory is PermissionsV2Upg, Initializable, IPMarketFactory {
17
17
  using EnumerableSet for EnumerableSet.AddressSet;
18
18
 
19
19
  struct MarketConfig {
@@ -28,7 +28,7 @@ contract PendleMarketFactory is PermissionsV2Upg, MiniDeployer, Initializable, I
28
28
  uint256 private constant MIN_RATE_ORACLE_TIME_WINDOW = 300 seconds;
29
29
 
30
30
  address public immutable yieldContractFactory;
31
- address public immutable marketCreationCodePointer;
31
+ address public marketCreationCodePointer;
32
32
  uint256 public immutable maxLnFeeRateRoot;
33
33
 
34
34
  // PT -> scalarRoot -> initialAnchor
@@ -46,8 +46,7 @@ contract PendleMarketFactory is PermissionsV2Upg, MiniDeployer, Initializable, I
46
46
  address _treasury,
47
47
  uint96 _lnFeeRateRoot,
48
48
  uint32 _rateOracleTimeWindow,
49
- uint8 _reserveFeePercent,
50
- bytes memory _marketCreationCode
49
+ uint8 _reserveFeePercent
51
50
  ) PermissionsV2Upg(_governanceManager) {
52
51
  require(_yieldContractFactory != address(0), "zero address");
53
52
  yieldContractFactory = _yieldContractFactory;
@@ -57,17 +56,17 @@ contract PendleMarketFactory is PermissionsV2Upg, MiniDeployer, Initializable, I
57
56
  setlnFeeRateRoot(_lnFeeRateRoot);
58
57
  setRateOracleTimeWindow(_rateOracleTimeWindow);
59
58
  setReserveFeePercent(_reserveFeePercent);
60
- marketCreationCodePointer = _setCreationCode(_marketCreationCode);
61
59
  }
62
60
 
63
- function initialize(address newVePendle, address newGaugeController)
64
- external
65
- onlyGovernance
66
- initializer
67
- {
61
+ function initialize(
62
+ address newVePendle,
63
+ address newGaugeController,
64
+ bytes memory _marketCreationCode
65
+ ) external onlyGovernance initializer {
68
66
  require(newVePendle != address(0) && newGaugeController != address(0), "zero address");
69
67
  vePendle = newVePendle;
70
68
  gaugeController = newGaugeController;
69
+ marketCreationCodePointer = SSTORE2Deployer.setCreationCode(_marketCreationCode);
71
70
  }
72
71
 
73
72
  /**
@@ -80,24 +79,22 @@ contract PendleMarketFactory is PermissionsV2Upg, MiniDeployer, Initializable, I
80
79
  int256 initialAnchor
81
80
  ) external returns (address market) {
82
81
  require(IPYieldContractFactory(yieldContractFactory).isPT(PT), "Invalid PT");
83
- require(vePendle != address(0), "vePendle unset");
84
- require(gaugeController != address(0), "gaugeController unset");
85
- require(
86
- markets[PT][scalarRoot][initialAnchor] == address(0),
87
- "duplicated creation params"
88
- );
82
+ require(markets[PT][scalarRoot][initialAnchor] == address(0), "market already created");
89
83
 
90
- market = _deployWithArgs(
84
+ // no need salt since market's existence has been checked before hand
85
+ market = SSTORE2Deployer.create2(
91
86
  marketCreationCodePointer,
87
+ bytes32(0),
92
88
  abi.encode(PT, scalarRoot, initialAnchor, vePendle, gaugeController)
93
89
  );
94
90
 
95
91
  markets[PT][scalarRoot][initialAnchor] = market;
96
92
  require(allMarkets.add(market), "IE market can't be added");
97
93
 
98
- emit CreateNewMarket(PT, scalarRoot, initialAnchor);
94
+ emit CreateNewMarket(market, PT, scalarRoot, initialAnchor);
99
95
  }
100
96
 
97
+ /// @dev for gas-efficient verification of market
101
98
  function isValidMarket(address market) external view returns (bool) {
102
99
  return allMarkets.contains(market);
103
100
  }
@@ -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-upgradeable/proxy/utils/Initializable.sol";
5
5
  import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.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/IPYieldToken.sol";
5
5
  import "../../interfaces/IPPrincipalToken.sol";
@@ -1,37 +1,45 @@
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/IPPrincipalToken.sol";
5
5
  import "../../interfaces/IPYieldToken.sol";
6
6
 
7
- import "../PendleERC20Permit.sol";
7
+ import "../PendleERC20.sol";
8
8
  import "../../libraries/helpers/MiniHelpers.sol";
9
+ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
9
10
 
10
- contract PendlePrincipalToken is PendleERC20Permit, IPPrincipalToken {
11
+ contract PendlePrincipalToken is PendleERC20, Initializable, IPPrincipalToken {
11
12
  address public immutable SCY;
12
- address public immutable YT;
13
13
  address public immutable factory;
14
14
  uint256 public immutable expiry;
15
+ address public YT;
15
16
 
16
17
  modifier onlyYT() {
17
18
  require(msg.sender == address(YT), "ONLY_YT");
18
19
  _;
19
20
  }
20
21
 
22
+ modifier onlyFactory() {
23
+ require(msg.sender == factory, "ONLY_FACTORY");
24
+ _;
25
+ }
26
+
21
27
  constructor(
22
28
  address _SCY,
23
- address _YT,
24
29
  string memory _name,
25
30
  string memory _symbol,
26
31
  uint8 __decimals,
27
32
  uint256 _expiry
28
- ) PendleERC20Permit(_name, _symbol, __decimals) {
33
+ ) PendleERC20(_name, _symbol, __decimals) {
29
34
  SCY = _SCY;
30
- YT = _YT;
31
35
  expiry = _expiry;
32
36
  factory = msg.sender;
33
37
  }
34
38
 
39
+ function initialize(address _YT) external initializer onlyFactory {
40
+ YT = _YT;
41
+ }
42
+
35
43
  /**
36
44
  * @dev only callable by the YT correspond to this PT
37
45
  */