@pendle/core-v2 0.6.8 → 0.7.0

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 (519) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +4 -0
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +751 -0
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +4 -0
  4. package/build/artifacts/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol/WadRayMath.json +3 -3
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +4 -0
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +27 -0
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +4 -0
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +761 -0
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +4 -0
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +635 -0
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +4 -0
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +609 -0
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +4 -0
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +653 -0
  15. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +4 -0
  16. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +622 -0
  17. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +4 -0
  18. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +622 -0
  19. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +4 -0
  20. package/build/artifacts/contracts/SuperComposableYield/{ISuperComposableYield.sol/ISuperComposableYield.json → base-implementations/SCYBase.sol/SCYBase.json} +221 -141
  21. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +4 -0
  22. package/build/artifacts/contracts/SuperComposableYield/{implementations → base-implementations}/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +247 -223
  23. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.dbg.json +4 -0
  24. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.json +128 -0
  25. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.dbg.json +4 -0
  26. package/build/artifacts/contracts/{SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.json → core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.json} +29 -33
  27. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.dbg.json +4 -0
  28. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.json +193 -0
  29. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.dbg.json +4 -0
  30. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.json +255 -0
  31. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.dbg.json +4 -0
  32. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.json +318 -0
  33. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +4 -0
  34. package/build/artifacts/contracts/{interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.json → core/LiquidityMining/PendleGauge.sol/PendleGauge.json} +57 -65
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.dbg.json +4 -0
  36. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.json +707 -0
  37. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.dbg.json +4 -0
  38. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.json +342 -0
  39. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +4 -0
  40. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +547 -0
  41. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +4 -0
  42. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +353 -0
  43. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.dbg.json +4 -0
  44. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.json +138 -0
  45. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +4 -0
  46. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +922 -0
  47. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +4 -0
  48. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +345 -0
  49. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +4 -0
  50. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +254 -0
  51. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +4 -0
  52. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +329 -0
  53. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -20
  55. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +4 -0
  56. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +445 -0
  57. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +4 -0
  58. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +344 -0
  59. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +4 -0
  60. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +750 -0
  61. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  63. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +123 -77
  65. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +39 -42
  67. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json +163 -1
  69. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json +0 -13
  71. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +1 -14
  73. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +4 -0
  74. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.json +10 -0
  75. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.json +39 -0
  77. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.json +13 -0
  81. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +4 -0
  82. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.json +74 -0
  83. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +4 -0
  84. package/build/artifacts/contracts/interfaces/{IVePToken.sol/IVePToken.json → ICelerMessageBus.sol/ICelerMessageBus.json} +21 -11
  85. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +4 -0
  86. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.json +45 -0
  87. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +4 -0
  88. package/build/artifacts/contracts/{core/PendleBaseToken.sol/PendleBaseToken.json → interfaces/IERC4626.sol/IERC4626.json} +53 -68
  89. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +4 -0
  92. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.json +962 -0
  93. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +122 -58
  95. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.json +36 -21
  97. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +116 -81
  99. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +4 -0
  100. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.json +109 -0
  101. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +4 -0
  102. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.json +132 -0
  103. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +35 -54
  106. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +31 -0
  109. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.json +5 -5
  113. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +4 -0
  115. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +99 -0
  116. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +4 -0
  117. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +167 -0
  118. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +4 -0
  119. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.json +148 -0
  120. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +85 -83
  123. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +4 -0
  124. package/build/artifacts/contracts/interfaces/{IPBaseToken.sol/IPBaseToken.json → IQiAvax.sol/IQiAvax.json} +106 -15
  125. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.json +117 -0
  127. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.json +117 -0
  129. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +4 -0
  131. package/build/artifacts/contracts/{periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json → interfaces/IRewardManager.sol/IRewardManager.json} +12 -14
  132. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +4 -0
  133. package/build/artifacts/contracts/{SuperComposableYield/implementations/SCYBase.sol/SCYBase.json → interfaces/ISuperComposableYield.sol/ISuperComposableYield.json} +183 -181
  134. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.json +13 -0
  137. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  138. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.json +13 -0
  139. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  140. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.json +13 -0
  141. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +4 -0
  142. package/build/artifacts/contracts/{SuperComposableYield/implementations → libraries}/RewardManager.sol/RewardManager.json +44 -33
  143. package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.dbg.json +4 -0
  144. package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.json +101 -0
  145. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +4 -0
  146. package/build/artifacts/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol}/SCYIndexLib.json +3 -3
  147. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +4 -0
  148. package/build/artifacts/contracts/{SuperComposableYield → libraries/SCY}/SCYUtils.sol/SCYUtils.json +3 -3
  149. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +4 -0
  150. package/build/artifacts/contracts/libraries/{math/MarketMathAux.sol/MarketMathAux.json → VeBalanceLib.sol/VeBalanceLib.json} +4 -4
  151. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +4 -0
  152. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +10 -0
  153. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  154. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
  155. package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.dbg.json +4 -0
  156. package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.json +10 -0
  157. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +4 -0
  158. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +10 -0
  159. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +4 -0
  160. package/build/artifacts/contracts/{core/actions/base/ActionType.sol/ActionType.json → libraries/helpers/TokenHelper.sol/TokenHelper.json} +2 -2
  161. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  162. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
  163. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  164. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  165. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  166. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  167. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  168. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  169. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +4 -0
  170. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +10 -0
  171. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +4 -0
  172. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +10 -0
  173. package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.dbg.json +4 -0
  174. package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.json +10 -0
  175. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +4 -0
  176. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +10 -0
  177. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +4 -0
  178. package/build/artifacts/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol}/JoeLibrary.json +3 -3
  179. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +4 -0
  180. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json +24 -0
  181. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +4 -0
  182. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +862 -0
  183. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  184. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
  185. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  186. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +147 -0
  187. package/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol +1 -1
  188. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +74 -0
  189. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +187 -0
  190. package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +123 -0
  191. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +99 -0
  192. package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +245 -0
  193. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +107 -0
  194. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +120 -0
  195. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +197 -0
  196. package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +131 -0
  197. package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol +47 -0
  198. package/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol +52 -0
  199. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol +141 -0
  200. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol +30 -0
  201. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol +22 -0
  202. package/contracts/core/LiquidityMining/PendleGauge.sol +118 -0
  203. package/contracts/core/LiquidityMining/README.md +63 -0
  204. package/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol +323 -0
  205. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol +224 -0
  206. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +241 -0
  207. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +73 -0
  208. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol +53 -0
  209. package/contracts/core/{PendleMarket.sol → Market/PendleMarket.sol} +139 -103
  210. package/contracts/core/{PendleMarketFactory.sol → Market/PendleMarketFactory.sol} +62 -19
  211. package/contracts/core/PendleERC20.sol +358 -0
  212. package/contracts/core/PendleERC20Permit.sol +84 -0
  213. package/contracts/core/PendleRouter.sol +6 -12
  214. package/contracts/core/YieldContracts/InterestManagerYT.sol +87 -0
  215. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +52 -0
  216. package/contracts/core/{PendleYieldContractFactory.sol → YieldContracts/PendleYieldContractFactory.sol} +46 -25
  217. package/contracts/core/YieldContracts/PendleYieldToken.sol +340 -0
  218. package/contracts/core/actions/ActionCallback.sol +63 -43
  219. package/contracts/core/actions/ActionCore.sol +95 -78
  220. package/contracts/core/actions/ActionYT.sol +35 -86
  221. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +133 -78
  222. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +31 -46
  223. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +127 -45
  224. package/contracts/core/actions/base/CallbackHelper.sol +81 -0
  225. package/contracts/interfaces/IAToken.sol +11 -1
  226. package/contracts/interfaces/IAavePool.sol +1 -1
  227. package/contracts/interfaces/IAaveRewardsController.sol +1 -1
  228. package/contracts/interfaces/IBenQiComptroller.sol +3 -1
  229. package/contracts/interfaces/IBenQiInterestRateModel.sol +16 -0
  230. package/contracts/interfaces/ICelerMessageBus.sol +28 -0
  231. package/contracts/interfaces/ICelerMessageReceiverApp.sol +25 -0
  232. package/contracts/interfaces/IERC4626.sol +39 -0
  233. package/contracts/interfaces/IJoeRouter01.sol +1 -1
  234. package/contracts/interfaces/IJoeRouter02.sol +52 -0
  235. package/contracts/interfaces/IPActionCore.sol +44 -27
  236. package/contracts/interfaces/IPActionYT.sol +12 -9
  237. package/contracts/interfaces/IPAllAction.sol +2 -3
  238. package/contracts/interfaces/IPGaugeController.sol +22 -0
  239. package/contracts/interfaces/IPGaugeControllerMainchain.sol +12 -0
  240. package/contracts/interfaces/IPGovernanceManager.sol +1 -1
  241. package/contracts/interfaces/IPInterestManagerYT.sol +9 -0
  242. package/contracts/interfaces/IPMarket.sol +13 -13
  243. package/contracts/interfaces/IPMarketAddRemoveCallback.sol +3 -3
  244. package/contracts/interfaces/IPMarketFactory.sol +8 -1
  245. package/contracts/interfaces/IPMarketSwapCallback.sol +1 -1
  246. package/contracts/interfaces/IPPermissionsV2Upg.sol +1 -1
  247. package/contracts/interfaces/IPPrincipalToken.sol +9 -5
  248. package/contracts/interfaces/IPRouterStatic.sol +1 -1
  249. package/contracts/interfaces/IPVeToken.sol +10 -5
  250. package/contracts/interfaces/IPVotingController.sol +21 -0
  251. package/contracts/interfaces/IPVotingEscrow.sol +14 -22
  252. package/contracts/interfaces/IPYieldContractFactory.sol +1 -1
  253. package/contracts/interfaces/IPYieldToken.sol +17 -17
  254. package/contracts/interfaces/IQiAvax.sol +31 -0
  255. package/contracts/interfaces/IQiErc20.sol +1 -1
  256. package/contracts/interfaces/IQiToken.sol +22 -1
  257. package/contracts/interfaces/IREDACTEDStaking.sol +1 -1
  258. package/contracts/interfaces/IRewardManager.sol +9 -0
  259. package/contracts/interfaces/ISuperComposableYield.sol +182 -0
  260. package/contracts/interfaces/IWETH.sol +1 -1
  261. package/contracts/interfaces/IWXBTRFLY.sol +3 -1
  262. package/contracts/interfaces/IWstETH.sol +3 -1
  263. package/contracts/interfaces/IYearnVault.sol +3 -1
  264. package/contracts/libraries/RewardManager.sol +78 -0
  265. package/contracts/libraries/RewardManagerAbstract.sol +81 -0
  266. package/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol} +8 -8
  267. package/contracts/libraries/SCY/SCYUtils.sol +18 -0
  268. package/contracts/libraries/VeBalanceLib.sol +114 -0
  269. package/contracts/libraries/helpers/ArrayLib.sol +65 -0
  270. package/contracts/libraries/helpers/ExpiryUtilsLib.sol +1 -1
  271. package/contracts/libraries/helpers/MiniDeployer.sol +23 -0
  272. package/contracts/libraries/helpers/MiniHelpers.sol +15 -0
  273. package/contracts/libraries/helpers/TokenHelper.sol +105 -0
  274. package/contracts/libraries/math/LogExpMath.sol +59 -1
  275. package/contracts/libraries/math/MarketApproxLib.sol +167 -164
  276. package/contracts/libraries/math/MarketMathCore.sol +106 -25
  277. package/contracts/libraries/math/Math.sol +28 -21
  278. package/contracts/libraries/math/WeekMath.sol +19 -0
  279. package/contracts/libraries/solmate/Bytes32AddressLib.sol +14 -0
  280. package/contracts/libraries/solmate/LibRLP.sol +30 -0
  281. package/contracts/libraries/solmate/SSTORE2.sol +99 -0
  282. package/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol} +3 -2
  283. package/contracts/{periphery → libraries/traderjoe}/PendleJoeSwapHelperUpg.sol +8 -10
  284. package/contracts/{core → offchain-helpers}/RouterStatic.sol +24 -19
  285. package/contracts/periphery/PendleGovernanceManager.sol +1 -1
  286. package/contracts/periphery/PermissionsV2Upg.sol +1 -1
  287. package/package.json +1 -1
  288. package/typechain-types/ActionCore.ts +169 -96
  289. package/typechain-types/ActionSCYAndPTBase.ts +210 -0
  290. package/typechain-types/ActionSCYAndPYBase.ts +0 -13
  291. package/typechain-types/ActionSCYAndYTBase.ts +8 -21
  292. package/typechain-types/ActionYT.ts +73 -64
  293. package/typechain-types/BeaconProxy.ts +97 -0
  294. package/typechain-types/CelerReceiver.ts +267 -0
  295. package/typechain-types/CelerSender.ts +197 -0
  296. package/typechain-types/ERC1967Upgrade.ts +97 -0
  297. package/typechain-types/ERC20Permit.ts +521 -0
  298. package/typechain-types/IAToken.ts +55 -0
  299. package/typechain-types/IBeacon.ts +87 -0
  300. package/typechain-types/IBenQiComptroller.ts +13 -0
  301. package/typechain-types/IBenQiInterestRateModel.ts +162 -0
  302. package/typechain-types/ICelerMessageBus.ts +134 -0
  303. package/typechain-types/ICelerMessageReceiverApp.ts +120 -0
  304. package/typechain-types/IERC1822Proxiable.ts +87 -0
  305. package/typechain-types/IERC20Permit.ts +175 -0
  306. package/typechain-types/IERC4626.ts +463 -0
  307. package/typechain-types/IJoeRouter02.ts +1420 -0
  308. package/typechain-types/IPActionCore.ts +169 -83
  309. package/typechain-types/IPActionYT.ts +65 -43
  310. package/typechain-types/IPAllAction.ts +190 -137
  311. package/typechain-types/IPGauge.ts +104 -0
  312. package/typechain-types/IPGaugeController.ts +191 -0
  313. package/typechain-types/IPGaugeControllerMainchain.ts +236 -0
  314. package/typechain-types/IPMarket.ts +73 -74
  315. package/typechain-types/IPMarketFactory.ts +27 -0
  316. package/typechain-types/IPPrincipalToken.ts +8 -20
  317. package/typechain-types/IPVeToken.ts +198 -0
  318. package/typechain-types/IPVotingController.ts +179 -0
  319. package/typechain-types/IPVotingEscrow.ts +217 -0
  320. package/typechain-types/IPVotingEscrowController.ts +154 -0
  321. package/typechain-types/IPYieldToken.ts +176 -213
  322. package/typechain-types/IQiAvax.ts +551 -0
  323. package/typechain-types/IQiErc20.ts +171 -0
  324. package/typechain-types/IQiToken.ts +171 -0
  325. package/typechain-types/IRewardManager.ts +16 -87
  326. package/typechain-types/ISuperComposableYield.ts +283 -269
  327. package/typechain-types/IWXBTRFLY.ts +13 -0
  328. package/typechain-types/IWstETH.ts +13 -0
  329. package/typechain-types/IYearnVault.ts +13 -0
  330. package/typechain-types/PendleAaveV3SCY.ts +382 -477
  331. package/typechain-types/PendleBtrflyScy.ts +287 -348
  332. package/typechain-types/PendleERC20.ts +339 -0
  333. package/typechain-types/PendleERC20Permit.ts +443 -0
  334. package/typechain-types/PendleERC4626SCY.ts +801 -0
  335. package/typechain-types/PendleGauge.ts +276 -0
  336. package/typechain-types/PendleGaugeController.ts +346 -0
  337. package/typechain-types/PendleGaugeControllerMainchain.ts +410 -0
  338. package/typechain-types/PendleGaugeControllerSidechain.ts +524 -0
  339. package/typechain-types/PendleJoeLpSCY.ts +837 -0
  340. package/typechain-types/PendleJoeSwapHelperUpg.ts +0 -13
  341. package/typechain-types/PendleMarket.ts +265 -151
  342. package/typechain-types/PendleMarketFactory.ts +111 -16
  343. package/typechain-types/PendleMarketRewards.ts +1317 -0
  344. package/typechain-types/PendlePrincipalToken.ts +103 -130
  345. package/typechain-types/PendleQiTokenHelper.ts +57 -0
  346. package/typechain-types/PendleQiTokenSCY.ts +991 -0
  347. package/typechain-types/PendleRouter.ts +0 -19
  348. package/typechain-types/PendleVotingController.ts +1042 -0
  349. package/typechain-types/PendleWstEthSCY.ts +813 -0
  350. package/typechain-types/PendleYearnVaultScy.ts +278 -339
  351. package/typechain-types/PendleYieldContractFactory.ts +43 -27
  352. package/typechain-types/PendleYieldToken.ts +297 -428
  353. package/typechain-types/RewardManager.ts +70 -69
  354. package/typechain-types/RewardManagerMini.ts +200 -0
  355. package/typechain-types/SCYBase.ts +276 -335
  356. package/typechain-types/SCYBaseWithRewards.ts +367 -424
  357. package/typechain-types/VotingControllerStorage.ts +507 -0
  358. package/typechain-types/VotingEscrowPendleMainchain.ts +854 -0
  359. package/typechain-types/VotingEscrowPendleSidechain.ts +546 -0
  360. package/typechain-types/VotingEscrowToken.ts +251 -0
  361. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  362. package/typechain-types/factories/ActionCore__factory.ts +122 -80
  363. package/typechain-types/factories/ActionRedeem__factory.ts +1 -1
  364. package/typechain-types/factories/ActionSCYAndPTBase__factory.ts +187 -0
  365. package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +0 -13
  366. package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +1 -14
  367. package/typechain-types/factories/ActionYT__factory.ts +39 -48
  368. package/typechain-types/factories/BeaconProxy__factory.ts +141 -0
  369. package/typechain-types/factories/CelerReceiver__factory.ts +140 -0
  370. package/typechain-types/factories/CelerSender__factory.ts +85 -0
  371. package/typechain-types/factories/ERC1967Upgrade__factory.ts +71 -0
  372. package/typechain-types/factories/ERC20Permit__factory.ts +368 -0
  373. package/typechain-types/factories/ERC20__factory.ts +1 -1
  374. package/typechain-types/factories/IAToken__factory.ts +39 -0
  375. package/typechain-types/factories/IBeacon__factory.ts +36 -0
  376. package/typechain-types/factories/IBenQiComptroller__factory.ts +13 -0
  377. package/typechain-types/factories/IBenQiInterestRateModel__factory.ts +93 -0
  378. package/typechain-types/factories/ICelerMessageBus__factory.ts +68 -0
  379. package/typechain-types/factories/ICelerMessageReceiverApp__factory.ts +64 -0
  380. package/typechain-types/factories/IERC1822Proxiable__factory.ts +39 -0
  381. package/typechain-types/factories/IERC20Permit__factory.ts +98 -0
  382. package/typechain-types/factories/IERC4626__factory.ts +330 -0
  383. package/typechain-types/factories/IJoeRouter02__factory.ts +974 -0
  384. package/typechain-types/factories/IPActionCore__factory.ts +122 -58
  385. package/typechain-types/factories/IPActionYT__factory.ts +36 -21
  386. package/typechain-types/factories/IPAllAction__factory.ts +116 -81
  387. package/typechain-types/factories/IPGaugeControllerMainchain__factory.ts +151 -0
  388. package/typechain-types/factories/IPGaugeController__factory.ts +124 -0
  389. package/typechain-types/factories/IPGauge__factory.ts +42 -0
  390. package/typechain-types/factories/IPMarketFactory__factory.ts +31 -0
  391. package/typechain-types/factories/IPMarket__factory.ts +35 -54
  392. package/typechain-types/factories/IPPrincipalToken__factory.ts +5 -5
  393. package/typechain-types/factories/IPVeToken__factory.ts +111 -0
  394. package/typechain-types/factories/IPVotingController__factory.ts +182 -0
  395. package/typechain-types/factories/IPVotingEscrowController__factory.ts +80 -0
  396. package/typechain-types/factories/IPVotingEscrow__factory.ts +163 -0
  397. package/typechain-types/factories/IPYieldToken__factory.ts +85 -83
  398. package/typechain-types/factories/IQiAvax__factory.ts +362 -0
  399. package/typechain-types/factories/IQiErc20__factory.ts +117 -0
  400. package/typechain-types/factories/IQiToken__factory.ts +117 -0
  401. package/typechain-types/factories/IRewardManager__factory.ts +5 -47
  402. package/typechain-types/factories/ISuperComposableYield__factory.ts +201 -138
  403. package/typechain-types/factories/IWXBTRFLY__factory.ts +13 -0
  404. package/typechain-types/factories/IWstETH__factory.ts +13 -0
  405. package/typechain-types/factories/IYearnVault__factory.ts +13 -0
  406. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +246 -315
  407. package/typechain-types/factories/PendleBtrflyScy__factory.ts +200 -234
  408. package/typechain-types/factories/PendleERC20Permit__factory.ts +405 -0
  409. package/typechain-types/factories/PendleERC20__factory.ts +327 -0
  410. package/typechain-types/factories/PendleERC4626SCY__factory.ts +678 -0
  411. package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +332 -0
  412. package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +391 -0
  413. package/typechain-types/factories/PendleGaugeController__factory.ts +212 -0
  414. package/typechain-types/factories/PendleGauge__factory.ts +171 -0
  415. package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
  416. package/typechain-types/factories/PendleJoeLpSCY__factory.ts +726 -0
  417. package/typechain-types/factories/PendleJoeSwapHelperUpg__factory.ts +0 -13
  418. package/typechain-types/factories/PendleMarketFactory__factory.ts +90 -5
  419. package/typechain-types/factories/PendleMarketRewards__factory.ts +1140 -0
  420. package/typechain-types/factories/PendleMarket__factory.ts +182 -94
  421. package/typechain-types/factories/PendlePrincipalToken__factory.ts +74 -77
  422. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +99 -0
  423. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +845 -0
  424. package/typechain-types/factories/PendleRouter__factory.ts +1 -23
  425. package/typechain-types/factories/PendleVotingController__factory.ts +776 -0
  426. package/typechain-types/factories/PendleWstEthSCY__factory.ts +686 -0
  427. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +218 -243
  428. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +39 -29
  429. package/typechain-types/factories/PendleYieldToken__factory.ts +153 -211
  430. package/typechain-types/factories/RewardManagerMini__factory.ts +116 -0
  431. package/typechain-types/factories/RewardManager__factory.ts +43 -32
  432. package/typechain-types/factories/RouterStatic__factory.ts +1 -1
  433. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +242 -218
  434. package/typechain-types/factories/SCYBase__factory.ts +195 -176
  435. package/typechain-types/factories/VotingControllerStorage__factory.ts +361 -0
  436. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +616 -0
  437. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +415 -0
  438. package/typechain-types/factories/VotingEscrowToken__factory.ts +153 -0
  439. package/typechain-types/hardhat.d.ts +338 -131
  440. package/typechain-types/index.ts +92 -38
  441. package/build/artifacts/contracts/SuperComposableYield/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +0 -4
  442. package/build/artifacts/contracts/SuperComposableYield/SCYUtils.sol/SCYUtils.dbg.json +0 -4
  443. package/build/artifacts/contracts/SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.dbg.json +0 -4
  444. package/build/artifacts/contracts/SuperComposableYield/implementations/RewardManager.sol/RewardManager.dbg.json +0 -4
  445. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBase.sol/SCYBase.dbg.json +0 -4
  446. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +0 -4
  447. package/build/artifacts/contracts/core/PendleBaseToken.sol/PendleBaseToken.dbg.json +0 -4
  448. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.dbg.json +0 -4
  449. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.json +0 -842
  450. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +0 -4
  451. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.json +0 -265
  452. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +0 -4
  453. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.json +0 -452
  454. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +0 -4
  455. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +0 -783
  456. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +0 -4
  457. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.dbg.json +0 -4
  458. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.json +0 -766
  459. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
  460. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -641
  461. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.dbg.json +0 -4
  462. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.json +0 -623
  463. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.dbg.json +0 -4
  464. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.json +0 -623
  465. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +0 -4
  466. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +0 -339
  467. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.dbg.json +0 -4
  468. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.json +0 -808
  469. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.dbg.json +0 -4
  470. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.json +0 -862
  471. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.dbg.json +0 -4
  472. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.json +0 -55
  473. package/build/artifacts/contracts/core/actions/base/ActionType.sol/ActionType.dbg.json +0 -4
  474. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.dbg.json +0 -4
  475. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.json +0 -55
  476. package/build/artifacts/contracts/interfaces/IPBaseToken.sol/IPBaseToken.dbg.json +0 -4
  477. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.dbg.json +0 -4
  478. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.json +0 -113
  479. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.dbg.json +0 -4
  480. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.json +0 -43
  481. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.dbg.json +0 -4
  482. package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
  483. package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.json +0 -61
  484. package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.dbg.json +0 -4
  485. package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.json +0 -113
  486. package/build/artifacts/contracts/interfaces/IVePToken.sol/IVePToken.dbg.json +0 -4
  487. package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
  488. package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.json +0 -61
  489. package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.dbg.json +0 -4
  490. package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.json +0 -167
  491. package/build/artifacts/contracts/libraries/JoeLibrary.sol/JoeLibrary.dbg.json +0 -4
  492. package/build/artifacts/contracts/libraries/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
  493. package/build/artifacts/contracts/libraries/math/MarketMathAux.sol/MarketMathAux.dbg.json +0 -4
  494. package/build/artifacts/contracts/periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +0 -4
  495. package/contracts/SuperComposableYield/ISuperComposableYield.sol +0 -80
  496. package/contracts/SuperComposableYield/SCYUtils.sol +0 -14
  497. package/contracts/SuperComposableYield/implementations/IRewardManager.sol +0 -16
  498. package/contracts/SuperComposableYield/implementations/RewardManager.sol +0 -151
  499. package/contracts/SuperComposableYield/implementations/SCYBase.sol +0 -166
  500. package/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol +0 -88
  501. package/contracts/core/PendleBaseToken.sol +0 -35
  502. package/contracts/core/PendlePrincipalToken.sol +0 -54
  503. package/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol +0 -140
  504. package/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol +0 -133
  505. package/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol +0 -120
  506. package/contracts/core/PendleSCYImpl/PendleStETHSCY.sol +0 -107
  507. package/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol +0 -109
  508. package/contracts/core/PendleYieldToken.sol +0 -340
  509. package/contracts/core/actions/ActionRedeem.sol +0 -36
  510. package/contracts/core/actions/base/ActionType.sol +0 -11
  511. package/contracts/interfaces/IPActionRedeem.sol +0 -17
  512. package/contracts/interfaces/IPBaseToken.sol +0 -9
  513. package/contracts/interfaces/IPGauge.sol +0 -32
  514. package/contracts/interfaces/IPVotingEscrowController.sol +0 -14
  515. package/contracts/interfaces/IPendleGauge.sol +0 -32
  516. package/contracts/interfaces/IVePToken.sol +0 -14
  517. package/contracts/interfaces/IVotingEscrowController.sol +0 -14
  518. package/contracts/interfaces/IVotingEscrowPendle.sol +0 -32
  519. package/contracts/libraries/math/MarketMathAux.sol +0 -101
@@ -0,0 +1,197 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+ import "../../interfaces/ISuperComposableYield.sol";
4
+ import "../../libraries/RewardManager.sol";
5
+ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
6
+ import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
7
+ import "../../libraries/math/Math.sol";
8
+ import "../../libraries/SCY/SCYUtils.sol";
9
+ import "../../libraries/helpers/TokenHelper.sol";
10
+ import "../../../contracts/core/PendleERC20.sol";
11
+
12
+ abstract contract SCYBase is ISuperComposableYield, PendleERC20, TokenHelper {
13
+ using Math for uint256;
14
+
15
+ address public immutable yieldToken;
16
+
17
+ uint256 public yieldTokenReserve;
18
+
19
+ modifier updateYieldReserve() {
20
+ _;
21
+ _updateYieldReserve();
22
+ }
23
+
24
+ constructor(
25
+ string memory _name,
26
+ string memory _symbol,
27
+ address _yieldToken
28
+ ) PendleERC20(_name, _symbol, 18) {
29
+ yieldToken = _yieldToken;
30
+ }
31
+
32
+ // solhint-disable no-empty-blocks
33
+ receive() external payable {}
34
+
35
+ /*///////////////////////////////////////////////////////////////
36
+ DEPOSIT/REDEEM USING BASE TOKENS
37
+ //////////////////////////////////////////////////////////////*/
38
+
39
+ /**
40
+ * @dev See {ISuperComposableYield-deposit}
41
+ */
42
+ function deposit(
43
+ address receiver,
44
+ address tokenIn,
45
+ uint256 amountTokenToPull,
46
+ uint256 minSharesOut
47
+ ) external payable nonReentrant updateYieldReserve returns (uint256 amountSharesOut) {
48
+ require(isValidBaseToken(tokenIn), "SCY: Invalid tokenIn");
49
+
50
+ if (tokenIn == NATIVE) require(amountTokenToPull == 0, "can't pull eth");
51
+ else if (amountTokenToPull != 0) _transferIn(tokenIn, msg.sender, amountTokenToPull);
52
+
53
+ uint256 amountDeposited = _getFloatingAmount(tokenIn);
54
+
55
+ amountSharesOut = _deposit(tokenIn, amountDeposited);
56
+ require(amountSharesOut >= minSharesOut, "insufficient out");
57
+
58
+ _mint(receiver, amountSharesOut);
59
+ emit Deposit(msg.sender, receiver, tokenIn, amountDeposited, amountSharesOut);
60
+ }
61
+
62
+ /**
63
+ * @dev See {ISuperComposableYield-redeem}
64
+ */
65
+ function redeem(
66
+ address receiver,
67
+ uint256 amountSharesToPull,
68
+ address tokenOut,
69
+ uint256 minTokenOut
70
+ ) external nonReentrant updateYieldReserve returns (uint256 amountTokenOut) {
71
+ require(isValidBaseToken(tokenOut), "SCY: invalid tokenOut");
72
+
73
+ if (amountSharesToPull != 0) {
74
+ _transfer(msg.sender, address(this), amountSharesToPull);
75
+ }
76
+
77
+ uint256 amountSharesToRedeem = _getFloatingAmount(address(this));
78
+
79
+ amountTokenOut = _redeem(tokenOut, amountSharesToRedeem);
80
+ require(amountTokenOut >= minTokenOut, "insufficient out");
81
+
82
+ _burn(address(this), amountSharesToRedeem);
83
+ _transferOut(tokenOut, receiver, amountTokenOut);
84
+
85
+ emit Redeem(msg.sender, receiver, tokenOut, amountSharesToRedeem, amountTokenOut);
86
+ }
87
+
88
+ /**
89
+ * @notice mint shares based on the deposited base tokens
90
+ * @param tokenIn base token address used to mint shares
91
+ * @param amountDeposited amount of base tokens deposited
92
+ * @return amountSharesOut amount of shares minted
93
+ */
94
+ function _deposit(address tokenIn, uint256 amountDeposited)
95
+ internal
96
+ virtual
97
+ returns (uint256 amountSharesOut);
98
+
99
+ /**
100
+ * @notice redeems base tokens based on amount of shares to be burned
101
+ * @param tokenOut address of the base token to be redeemed
102
+ * @param amountSharesToRedeem amount of shares to be burned
103
+ * @return amountTokenOut amount of base tokens redeemed
104
+ */
105
+ function _redeem(address tokenOut, uint256 amountSharesToRedeem)
106
+ internal
107
+ virtual
108
+ returns (uint256 amountTokenOut);
109
+
110
+ /**
111
+ * @notice updates the amount of yield token reserves in this contract
112
+ */
113
+ function _updateYieldReserve() internal virtual {
114
+ yieldTokenReserve = _selfBalance(yieldToken);
115
+ }
116
+
117
+ /**
118
+ * @notice returns the amount of unprocessed tokens owned by this contract
119
+ * @param token address of the token to be queried
120
+ */
121
+ function _getFloatingAmount(address token) internal view virtual returns (uint256) {
122
+ if (token != yieldToken) return _selfBalance(token);
123
+ return _selfBalance(token) - yieldTokenReserve;
124
+ }
125
+
126
+ /*///////////////////////////////////////////////////////////////
127
+ EXCHANGE-RATE
128
+ //////////////////////////////////////////////////////////////*/
129
+
130
+ /**
131
+ * @dev See {ISuperComposableYield-exchangeRate}
132
+ */
133
+ function exchangeRate() external view virtual override returns (uint256 res);
134
+
135
+ /*///////////////////////////////////////////////////////////////
136
+ REWARDS-RELATED
137
+ //////////////////////////////////////////////////////////////*/
138
+
139
+ /**
140
+ * @dev See {ISuperComposableYield-claimRewards}
141
+ */
142
+ function claimRewards(
143
+ address /*user*/
144
+ ) external virtual override returns (uint256[] memory rewardAmounts) {
145
+ rewardAmounts = new uint256[](0);
146
+ }
147
+
148
+ /**
149
+ * @dev See {ISuperComposableYield-getRewardTokens}
150
+ */
151
+ function getRewardTokens()
152
+ external
153
+ view
154
+ virtual
155
+ override
156
+ returns (address[] memory rewardTokens)
157
+ {
158
+ rewardTokens = new address[](0);
159
+ }
160
+
161
+ /**
162
+ * @dev See {ISuperComposableYield-accruredRewards}
163
+ */
164
+ function accruedRewards(
165
+ address /*user*/
166
+ ) external view virtual override returns (uint256[] memory rewardAmounts) {
167
+ rewardAmounts = new uint256[](0);
168
+ }
169
+
170
+ function rewardIndexesCurrent() external virtual override returns (uint256[] memory indexes) {
171
+ indexes = new uint256[](0);
172
+ }
173
+
174
+ function rewardIndexesStored()
175
+ external
176
+ view
177
+ virtual
178
+ override
179
+ returns (uint256[] memory indexes)
180
+ {
181
+ indexes = new uint256[](0);
182
+ }
183
+
184
+ /*///////////////////////////////////////////////////////////////
185
+ MISC METADATA FUNCTIONS
186
+ //////////////////////////////////////////////////////////////*/
187
+
188
+ /**
189
+ * @notice See {ISuperComposableYield-getBaseTokens}
190
+ */
191
+ function getBaseTokens() external view virtual override returns (address[] memory res);
192
+
193
+ /**
194
+ * @dev See {ISuperComposableYield-isValidBaseToken}
195
+ */
196
+ function isValidBaseToken(address token) public view virtual override returns (bool);
197
+ }
@@ -0,0 +1,131 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+ import "../../interfaces/ISuperComposableYield.sol";
4
+ import "../../libraries/RewardManager.sol";
5
+ import "./SCYBase.sol";
6
+ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
7
+ import "../../libraries/math/Math.sol";
8
+
9
+ /// This contract makes an important assumption that yieldToken is never a rewardToken
10
+ /// Please make sure that assumption always holds
11
+ abstract contract SCYBaseWithRewards is SCYBase, RewardManager {
12
+ using Math for uint256;
13
+ using ArrayLib for address[];
14
+
15
+ constructor(
16
+ string memory _name,
17
+ string memory _symbol,
18
+ address _yieldToken
19
+ )
20
+ SCYBase(_name, _symbol, _yieldToken) // solhint-disable-next-line no-empty-blocks
21
+ {}
22
+
23
+ function _getFloatingAmount(address token) internal view virtual override returns (uint256) {
24
+ // there are only 2 type of tokens stored in the contract: yieldToken & rewardToken. Since
25
+ // this is not yield, it must be reward
26
+ if (token != yieldToken) return _selfBalance(token) - rewardState[token].lastBalance;
27
+ return _selfBalance(token) - yieldTokenReserve;
28
+ }
29
+
30
+ /*///////////////////////////////////////////////////////////////
31
+ REWARDS-RELATED
32
+ //////////////////////////////////////////////////////////////*/
33
+
34
+ /**
35
+ * @dev See {ISuperComposableYield-claimRewards}
36
+ */
37
+ function claimRewards(address user)
38
+ external
39
+ virtual
40
+ override
41
+ nonReentrant
42
+ returns (uint256[] memory rewardAmounts)
43
+ {
44
+ _updateAndDistributeRewards(user);
45
+ rewardAmounts = _doTransferOutRewards(user, user);
46
+
47
+ emit ClaimRewards(user, _getRewardTokens(), rewardAmounts);
48
+ }
49
+
50
+ /**
51
+ * @dev See {ISuperComposableYield-getRewardTokens}
52
+ */
53
+ function getRewardTokens()
54
+ external
55
+ view
56
+ virtual
57
+ override
58
+ returns (address[] memory rewardTokens)
59
+ {
60
+ rewardTokens = _getRewardTokens();
61
+ }
62
+
63
+ /**
64
+ * @dev See {ISuperComposableYield-accruedRewards}
65
+ */
66
+ function accruedRewards(address user)
67
+ external
68
+ view
69
+ virtual
70
+ override
71
+ returns (uint256[] memory rewardAmounts)
72
+ {
73
+ address[] memory rewardTokens = _getRewardTokens();
74
+ rewardAmounts = new uint256[](rewardTokens.length);
75
+ for (uint256 i = 0; i < rewardTokens.length; ) {
76
+ rewardAmounts[i] = userReward[user][rewardTokens[i]].accrued;
77
+ unchecked {
78
+ i++;
79
+ }
80
+ }
81
+ }
82
+
83
+ function rewardIndexesCurrent() external override returns (uint256[] memory indexes) {
84
+ _updateRewardIndex();
85
+ return rewardIndexesStored();
86
+ }
87
+
88
+ function rewardIndexesStored()
89
+ public
90
+ view
91
+ virtual
92
+ override
93
+ returns (uint256[] memory indexes)
94
+ {
95
+ address[] memory rewardTokens = _getRewardTokens();
96
+ indexes = new uint256[](rewardTokens.length);
97
+ for (uint256 i = 0; i < rewardTokens.length; ) {
98
+ indexes[i] = rewardState[rewardTokens[i]].index;
99
+ unchecked {
100
+ i++;
101
+ }
102
+ }
103
+ }
104
+
105
+ /**
106
+ * @notice returns the total number of reward shares
107
+ * @dev this is simply the total supply of shares, as rewards shares are equivalent to SCY shares
108
+ */
109
+ function _rewardSharesTotal() internal view virtual override returns (uint256) {
110
+ return totalSupply();
111
+ }
112
+
113
+ /**
114
+ * @notice returns the reward shares of (`user`)
115
+ * @dev this is simply the SCY balance of (`user`), as rewards shares are equivalent to SCY shares
116
+ */
117
+ function _rewardSharesUser(address user) internal view virtual override returns (uint256) {
118
+ return balanceOf(user);
119
+ }
120
+
121
+ /*///////////////////////////////////////////////////////////////
122
+ TRANSFER HOOKS
123
+ //////////////////////////////////////////////////////////////*/
124
+ function _beforeTokenTransfer(
125
+ address from,
126
+ address to,
127
+ uint256
128
+ ) internal virtual override {
129
+ _updateAndDistributeRewardsForTwo(from, to);
130
+ }
131
+ }
@@ -0,0 +1,47 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+
4
+ import "../../../interfaces/ICelerMessageReceiverApp.sol";
5
+ import "../../../periphery/PermissionsV2Upg.sol";
6
+
7
+ // solhint-disable no-empty-blocks
8
+ abstract contract CelerReceiver is ICelerMessageReceiverApp, PermissionsV2Upg {
9
+ address public celerMessageBus;
10
+ address public originAddress;
11
+ uint256 public originChainId;
12
+
13
+ constructor(address _governanceManager) PermissionsV2Upg(_governanceManager) {}
14
+
15
+ modifier onlyCelerOrGov() {
16
+ require(
17
+ msg.sender == celerMessageBus || msg.sender == _governance(),
18
+ "only celer message bus or gov"
19
+ );
20
+ _;
21
+ }
22
+
23
+ function setOrigin(address _addr, uint256 _chainId) external onlyGovernance {
24
+ originAddress = _addr;
25
+ originChainId = _chainId;
26
+ }
27
+
28
+ function setCelerMessageBus(address _celerMessageBus) external onlyGovernance {
29
+ celerMessageBus = _celerMessageBus;
30
+ }
31
+
32
+ function executeMessage(
33
+ address _sender,
34
+ uint64 _srcChainId,
35
+ bytes calldata _message,
36
+ address /* executor */
37
+ ) external payable onlyCelerOrGov returns (ExecutionStatus) {
38
+ // if the message sender is not celer bus, there is no harm to have the transcation failed
39
+ if (_sender != originAddress || _srcChainId != originChainId) {
40
+ return ExecutionStatus.Fail;
41
+ }
42
+ _executeMessage(_message);
43
+ return ExecutionStatus.Success;
44
+ }
45
+
46
+ function _executeMessage(bytes memory message) internal virtual;
47
+ }
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+
4
+ import "../../../interfaces/ICelerMessageBus.sol";
5
+ import "../../../periphery/PermissionsV2Upg.sol";
6
+ import "@openzeppelin/contracts/utils/structs/EnumerableMap.sol";
7
+
8
+ // solhint-disable no-empty-blocks
9
+ abstract contract CelerSender is PermissionsV2Upg {
10
+ using EnumerableMap for EnumerableMap.UintToAddressMap;
11
+
12
+ ICelerMessageBus private celerMessageBus;
13
+ EnumerableMap.UintToAddressMap internal sidechainContracts;
14
+
15
+ constructor(address _governanceManager) PermissionsV2Upg(_governanceManager) {}
16
+
17
+ function setCelerMessageBus(address _celerMessageBus) external onlyGovernance {
18
+ celerMessageBus = ICelerMessageBus(_celerMessageBus);
19
+ }
20
+
21
+ function _sendMessage(uint256 chainId, bytes memory message) internal {
22
+ assert(sidechainContracts.contains(chainId));
23
+ address toAddr = sidechainContracts.get(chainId);
24
+ uint256 fee = celerMessageBus.calcFee(message);
25
+ celerMessageBus.sendMessage{ value: fee }(toAddr, chainId, message);
26
+ }
27
+
28
+ function _afterAddSidechainContract(address addr, uint256 chainId) internal virtual {}
29
+
30
+ function addSidechainContract(address _address, uint256 _chainId)
31
+ external
32
+ payable
33
+ onlyGovernance
34
+ {
35
+ sidechainContracts.set(_chainId, _address);
36
+ _afterAddSidechainContract(_address, _chainId);
37
+ }
38
+
39
+ function getAllSidechainContracts()
40
+ public
41
+ view
42
+ returns (uint256[] memory chainIds, address[] memory addrs)
43
+ {
44
+ uint256 length = sidechainContracts.length();
45
+ chainIds = new uint256[](length);
46
+ addrs = new address[](length);
47
+
48
+ for (uint256 i = 0; i < length; ++i) {
49
+ (chainIds[i], addrs[i]) = sidechainContracts.at(i);
50
+ }
51
+ }
52
+ }
@@ -0,0 +1,141 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+
4
+ import "../../../interfaces/IPGaugeController.sol";
5
+ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
6
+ import "../../../libraries/math/Math.sol";
7
+ import "../../../libraries/math/WeekMath.sol";
8
+ import "../../../interfaces/IPGaugeController.sol";
9
+ import "../../../interfaces/IPMarketFactory.sol";
10
+ import "../../../periphery/PermissionsV2Upg.sol";
11
+ import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
12
+
13
+ /**
14
+ * @dev Gauge controller provides no write function to any party other than voting controller
15
+ * @dev Gauge controller will receive (lpTokens[], pendle per sec[]) from voting controller and
16
+ * set it directly to contract state
17
+ *
18
+ * @dev All of the core data in this function will be set to private to prevent unintended assignments
19
+ * on inheritting contracts
20
+ *
21
+ * @dev no more pause
22
+ */
23
+ abstract contract PendleGaugeController is IPGaugeController, PermissionsV2Upg {
24
+ using SafeERC20 for IERC20;
25
+ using Math for uint256;
26
+ using EnumerableSet for EnumerableSet.AddressSet;
27
+
28
+ struct MarketRewardData {
29
+ uint128 pendlePerSec;
30
+ uint128 accumulatedPendle;
31
+ uint128 lastUpdated;
32
+ uint128 incentiveEndsAt;
33
+ }
34
+
35
+ uint128 public constant WEEK = 1 weeks;
36
+
37
+ address public immutable pendle;
38
+ IPMarketFactory public immutable marketFactory;
39
+
40
+ mapping(address => MarketRewardData) public rewardData;
41
+ mapping(uint128 => bool) public epochRewardReceived;
42
+
43
+ modifier onlyPendleMarket() {
44
+ require(marketFactory.isValidMarket(msg.sender), "invalid market");
45
+ _;
46
+ }
47
+
48
+ constructor(address _pendle, address _marketFactory) {
49
+ pendle = _pendle;
50
+ marketFactory = IPMarketFactory(_marketFactory);
51
+ }
52
+
53
+ /**
54
+ * @notice claim the rewards allocated by gaugeController
55
+ * @dev pre-condition: onlyPendleMarket can call it
56
+ * @dev state changes expected:
57
+ - rewardData[market] is updated with the data up to now
58
+ - all accumulatedPendle is transferred out & the accumulatedPendle is set to 0
59
+ */
60
+ function claimMarketReward() external onlyPendleMarket {
61
+ address market = msg.sender;
62
+ rewardData[market] = _getUpdatedMarketReward(market);
63
+
64
+ uint256 amount = rewardData[market].accumulatedPendle;
65
+ if (amount != 0) {
66
+ rewardData[market].accumulatedPendle = 0;
67
+ IERC20(pendle).safeTransfer(market, amount);
68
+ }
69
+
70
+ emit MarketClaimReward(market, amount);
71
+ }
72
+
73
+ function fundPendle(uint256 amount) external {
74
+ IERC20(pendle).safeTransferFrom(msg.sender, address(this), amount);
75
+ }
76
+
77
+ function withdrawPendle(uint256 amount) external onlyGovernance {
78
+ IERC20(pendle).safeTransfer(msg.sender, amount);
79
+ }
80
+
81
+ /**
82
+ * @notice receive voting results from VotingController. Can handle duplicated messages fine by only accepting the first
83
+ message for that timestamp
84
+ * @dev state changes expected:
85
+ - epochRewardReceived is marked as true
86
+ - rewardData is updated for all markets in markets[]
87
+ */
88
+ function _receiveVotingResults(
89
+ uint128 wTime,
90
+ address[] memory markets,
91
+ uint256[] memory pendleAmounts
92
+ ) internal {
93
+ require(markets.length == pendleAmounts.length, "invalid markets length");
94
+
95
+ if (epochRewardReceived[wTime]) return; // only accept the first message for the wTime
96
+ epochRewardReceived[wTime] = true;
97
+
98
+ for (uint256 i = 0; i < markets.length; ++i) {
99
+ _addRewardsToMarket(markets[i], uint128(pendleAmounts[i]));
100
+ }
101
+
102
+ emit ReceiveVotingResults(wTime, markets, pendleAmounts);
103
+ }
104
+
105
+ /**
106
+ * @notice merge the additional rewards with the existing rewards
107
+ * @dev this function will calc the total amount of Pendle that hasn't been factored into accumulatedPendle yet,
108
+ combined them with the additional pendleAmount, then divide them equally over the next one week
109
+ * @dev expected state changes:
110
+ - rewardData of the market is updated
111
+ */
112
+ function _addRewardsToMarket(address market, uint128 pendleAmount) internal {
113
+ MarketRewardData memory rwd = _getUpdatedMarketReward(market);
114
+ uint128 leftover = (rwd.incentiveEndsAt - rwd.lastUpdated) * rwd.pendlePerSec;
115
+ uint128 newSpeed = (leftover + pendleAmount) / WEEK;
116
+
117
+ rewardData[market] = MarketRewardData({
118
+ pendlePerSec: newSpeed,
119
+ accumulatedPendle: rwd.accumulatedPendle,
120
+ lastUpdated: uint128(block.timestamp),
121
+ incentiveEndsAt: uint128(block.timestamp) + WEEK
122
+ });
123
+ }
124
+
125
+ /**
126
+ * @notice get the updated state of the market, to the current time with all the undistributed Pendle distributed to the
127
+ accumulatedPendle
128
+ * @dev expect to update accumulatedPendle & lastUpdated in MarketRewardData
129
+ */
130
+ function _getUpdatedMarketReward(address market)
131
+ internal
132
+ view
133
+ returns (MarketRewardData memory)
134
+ {
135
+ MarketRewardData memory rwd = rewardData[market];
136
+ uint128 newLastUpdated = uint128(Math.min(uint128(block.timestamp), rwd.incentiveEndsAt));
137
+ rwd.accumulatedPendle += rwd.pendlePerSec * (newLastUpdated - rwd.lastUpdated);
138
+ rwd.lastUpdated = newLastUpdated;
139
+ return rwd;
140
+ }
141
+ }
@@ -0,0 +1,30 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+
4
+ import "./PendleGaugeController.sol";
5
+
6
+ contract PendleGaugeControllerMainchain is PendleGaugeController {
7
+ address public immutable votingController;
8
+
9
+ modifier onlyVotingController() {
10
+ require(msg.sender == votingController, "not voting controller");
11
+ _;
12
+ }
13
+
14
+ constructor(
15
+ address _votingController,
16
+ address _pendle,
17
+ address _marketFactory,
18
+ address _governanceManager
19
+ ) PendleGaugeController(_pendle, _marketFactory) PermissionsV2Upg(_governanceManager) {
20
+ votingController = _votingController;
21
+ }
22
+
23
+ function updateVotingResults(
24
+ uint128 wTime,
25
+ address[] memory markets,
26
+ uint256[] memory pendleSpeeds
27
+ ) external onlyVotingController {
28
+ _receiveVotingResults(wTime, markets, pendleSpeeds);
29
+ }
30
+ }
@@ -0,0 +1,22 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+
4
+ import "./PendleGaugeController.sol";
5
+ import "../CelerAbstracts/CelerReceiver.sol";
6
+
7
+ // solhint-disable no-empty-blocks
8
+ contract PendleGaugeControllerSidechain is PendleGaugeController, CelerReceiver {
9
+ constructor(
10
+ address _pendle,
11
+ address _marketFactory,
12
+ address _governanceManager
13
+ ) PendleGaugeController(_pendle, _marketFactory) CelerReceiver(_governanceManager) {}
14
+
15
+ function _executeMessage(bytes memory message) internal virtual override {
16
+ (uint128 wTime, address[] memory markets, uint256[] memory pendleAmounts) = abi.decode(
17
+ message,
18
+ (uint128, address[], uint256[])
19
+ );
20
+ _receiveVotingResults(wTime, markets, pendleAmounts);
21
+ }
22
+ }