@pendle/core-v2 0.6.9 → 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 (720) 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/IVotingEscrowPendle.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 +1 -1
  115. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +61 -5
  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 +1 -1
  119. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.json +70 -89
  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 +9 -4
  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/{ActionSCYAndYOBase.ts → ActionSCYAndPTBase.ts} +54 -67
  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/{ERC20Burnable.ts → ERC20Permit.ts} +116 -68
  298. package/typechain-types/IAToken.ts +55 -0
  299. package/typechain-types/{QiDelegationStorage.ts → IBeacon.ts} +11 -6
  300. package/typechain-types/IBenQiComptroller.ts +13 -0
  301. package/typechain-types/{InterestRateModel.ts → IBenQiInterestRateModel.ts} +12 -28
  302. package/typechain-types/ICelerMessageBus.ts +134 -0
  303. package/typechain-types/{IMessageReceiverApp.ts → ICelerMessageReceiverApp.ts} +19 -9
  304. package/typechain-types/{PermissionsV2.ts → IERC1822Proxiable.ts} +13 -13
  305. package/typechain-types/IERC20Permit.ts +175 -0
  306. package/typechain-types/{ERC20Premined.ts → IERC4626.ts} +103 -113
  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 +1 -138
  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 +103 -8
  318. package/typechain-types/IPVotingController.ts +179 -0
  319. package/typechain-types/IPVotingEscrow.ts +100 -180
  320. package/typechain-types/IPYieldToken.ts +176 -213
  321. package/typechain-types/{IPOwnershipToken.ts → IQiAvax.ts} +190 -127
  322. package/typechain-types/IQiErc20.ts +171 -0
  323. package/typechain-types/IQiToken.ts +171 -0
  324. package/typechain-types/IRewardManager.ts +16 -87
  325. package/typechain-types/ISuperComposableYield.ts +283 -269
  326. package/typechain-types/IWXBTRFLY.ts +13 -0
  327. package/typechain-types/IWstETH.ts +13 -0
  328. package/typechain-types/IYearnVault.ts +13 -0
  329. package/typechain-types/PendleAaveV3SCY.ts +382 -477
  330. package/typechain-types/PendleBtrflyScy.ts +287 -348
  331. package/typechain-types/{EIP20Interface.ts → PendleERC20.ts} +39 -37
  332. package/typechain-types/{ERC20PresetFixedSupply.ts → PendleERC20Permit.ts} +100 -130
  333. package/typechain-types/{LYTBaseWithRewards.ts → PendleERC4626SCY.ts} +311 -316
  334. package/typechain-types/PendleGauge.ts +113 -306
  335. package/typechain-types/PendleGaugeController.ts +346 -0
  336. package/typechain-types/PendleGaugeControllerMainchain.ts +410 -0
  337. package/typechain-types/PendleGaugeControllerSidechain.ts +524 -0
  338. package/typechain-types/{PendleYTLYTBenqi.ts → PendleJoeLpSCY.ts} +336 -362
  339. package/typechain-types/PendleJoeSwapHelperUpg.ts +0 -13
  340. package/typechain-types/PendleMarket.ts +265 -151
  341. package/typechain-types/PendleMarketFactory.ts +111 -16
  342. package/typechain-types/PendleMarketRewards.ts +1317 -0
  343. package/typechain-types/PendlePrincipalToken.ts +103 -130
  344. package/typechain-types/{PermlessAbstract.ts → PendleQiTokenHelper.ts} +5 -5
  345. package/typechain-types/{PendleBenQiErc20LYT.ts → PendleQiTokenSCY.ts} +395 -305
  346. package/typechain-types/PendleRouter.ts +0 -19
  347. package/typechain-types/PendleVotingController.ts +1042 -0
  348. package/typechain-types/{PendleAaveV3LYT.ts → PendleWstEthSCY.ts} +325 -320
  349. package/typechain-types/PendleYearnVaultScy.ts +278 -339
  350. package/typechain-types/PendleYieldContractFactory.ts +43 -27
  351. package/typechain-types/PendleYieldToken.ts +297 -428
  352. package/typechain-types/RewardManager.ts +70 -69
  353. package/typechain-types/RewardManagerMini.ts +200 -0
  354. package/typechain-types/SCYBase.ts +276 -335
  355. package/typechain-types/SCYBaseWithRewards.ts +367 -424
  356. package/typechain-types/VotingControllerStorage.ts +507 -0
  357. package/typechain-types/VotingEscrowPendleMainchain.ts +854 -0
  358. package/typechain-types/VotingEscrowPendleSidechain.ts +546 -0
  359. package/typechain-types/VotingEscrowToken.ts +251 -0
  360. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  361. package/typechain-types/factories/ActionCore__factory.ts +122 -80
  362. package/typechain-types/factories/ActionRedeem__factory.ts +1 -1
  363. package/typechain-types/factories/{ActionSCYAndYOBase__factory.ts → ActionSCYAndPTBase__factory.ts} +20 -33
  364. package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +0 -13
  365. package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +1 -14
  366. package/typechain-types/factories/ActionYT__factory.ts +39 -48
  367. package/typechain-types/factories/BeaconProxy__factory.ts +141 -0
  368. package/typechain-types/factories/{CrosschainReceiver__factory.ts → CelerReceiver__factory.ts} +37 -84
  369. package/typechain-types/factories/CelerSender__factory.ts +85 -0
  370. package/typechain-types/factories/{IRainbowBridge__factory.ts → ERC1967Upgrade__factory.ts} +27 -32
  371. package/typechain-types/factories/{IPOwnershipToken__factory.ts → ERC20Permit__factory.ts} +83 -64
  372. package/typechain-types/factories/ERC20__factory.ts +1 -1
  373. package/typechain-types/factories/IAToken__factory.ts +39 -0
  374. package/typechain-types/factories/{PermissionsV2__factory.ts → IBeacon__factory.ts} +7 -7
  375. package/typechain-types/factories/IBenQiComptroller__factory.ts +13 -0
  376. package/typechain-types/factories/{InterestRateModel__factory.ts → IBenQiInterestRateModel__factory.ts} +12 -27
  377. package/typechain-types/factories/{PendleRouterBase__factory.ts → ICelerMessageBus__factory.ts} +29 -29
  378. package/typechain-types/factories/{IMessageReceiverApp__factory.ts → ICelerMessageReceiverApp__factory.ts} +19 -10
  379. package/typechain-types/factories/{IPermissionsV2__factory.ts → IERC1822Proxiable__factory.ts} +11 -11
  380. package/typechain-types/factories/IERC20Permit__factory.ts +98 -0
  381. package/typechain-types/factories/{ERC20Burnable__factory.ts → IERC4626__factory.ts} +55 -49
  382. package/typechain-types/factories/IJoeRouter02__factory.ts +974 -0
  383. package/typechain-types/factories/IPActionCore__factory.ts +122 -58
  384. package/typechain-types/factories/IPActionYT__factory.ts +36 -21
  385. package/typechain-types/factories/IPAllAction__factory.ts +116 -81
  386. package/typechain-types/factories/IPGaugeControllerMainchain__factory.ts +151 -0
  387. package/typechain-types/factories/IPGaugeController__factory.ts +124 -0
  388. package/typechain-types/factories/IPGauge__factory.ts +3 -86
  389. package/typechain-types/factories/IPMarketFactory__factory.ts +31 -0
  390. package/typechain-types/factories/IPMarket__factory.ts +35 -54
  391. package/typechain-types/factories/IPPrincipalToken__factory.ts +5 -5
  392. package/typechain-types/factories/IPVeToken__factory.ts +61 -5
  393. package/typechain-types/factories/IPVotingController__factory.ts +182 -0
  394. package/typechain-types/factories/IPVotingEscrow__factory.ts +68 -87
  395. package/typechain-types/factories/IPYieldToken__factory.ts +85 -83
  396. package/typechain-types/factories/{ILiquidYieldToken__factory.ts → IQiAvax__factory.ts} +58 -125
  397. package/typechain-types/factories/IQiErc20__factory.ts +117 -0
  398. package/typechain-types/factories/IQiToken__factory.ts +117 -0
  399. package/typechain-types/factories/IRewardManager__factory.ts +5 -47
  400. package/typechain-types/factories/ISuperComposableYield__factory.ts +201 -138
  401. package/typechain-types/factories/IWXBTRFLY__factory.ts +13 -0
  402. package/typechain-types/factories/IWstETH__factory.ts +13 -0
  403. package/typechain-types/factories/IYearnVault__factory.ts +13 -0
  404. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +246 -315
  405. package/typechain-types/factories/PendleBtrflyScy__factory.ts +200 -234
  406. package/typechain-types/factories/PendleERC20Permit__factory.ts +405 -0
  407. package/typechain-types/factories/PendleERC20__factory.ts +327 -0
  408. package/typechain-types/factories/PendleERC4626SCY__factory.ts +678 -0
  409. package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +332 -0
  410. package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +391 -0
  411. package/typechain-types/factories/{EIP20NonStandardInterface__factory.ts → PendleGaugeController__factory.ts} +90 -91
  412. package/typechain-types/factories/PendleGauge__factory.ts +42 -254
  413. package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
  414. package/typechain-types/factories/PendleJoeLpSCY__factory.ts +726 -0
  415. package/typechain-types/factories/PendleJoeSwapHelperUpg__factory.ts +0 -13
  416. package/typechain-types/factories/PendleMarketFactory__factory.ts +90 -5
  417. package/typechain-types/factories/PendleMarketRewards__factory.ts +1140 -0
  418. package/typechain-types/factories/PendleMarket__factory.ts +182 -94
  419. package/typechain-types/factories/PendlePrincipalToken__factory.ts +74 -77
  420. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +99 -0
  421. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +845 -0
  422. package/typechain-types/factories/PendleRouter__factory.ts +1 -23
  423. package/typechain-types/factories/PendleVotingController__factory.ts +776 -0
  424. package/typechain-types/factories/PendleWstEthSCY__factory.ts +686 -0
  425. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +218 -243
  426. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +39 -29
  427. package/typechain-types/factories/PendleYieldToken__factory.ts +153 -211
  428. package/typechain-types/factories/RewardManagerMini__factory.ts +116 -0
  429. package/typechain-types/factories/RewardManager__factory.ts +43 -32
  430. package/typechain-types/factories/RouterStatic__factory.ts +1 -1
  431. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +242 -218
  432. package/typechain-types/factories/SCYBase__factory.ts +195 -176
  433. package/typechain-types/factories/VotingControllerStorage__factory.ts +361 -0
  434. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +616 -0
  435. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +415 -0
  436. package/typechain-types/factories/VotingEscrowToken__factory.ts +153 -0
  437. package/typechain-types/hardhat.d.ts +327 -156
  438. package/typechain-types/index.ts +88 -50
  439. package/build/artifacts/contracts/SuperComposableYield/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +0 -4
  440. package/build/artifacts/contracts/SuperComposableYield/SCYUtils.sol/SCYUtils.dbg.json +0 -4
  441. package/build/artifacts/contracts/SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.dbg.json +0 -4
  442. package/build/artifacts/contracts/SuperComposableYield/implementations/RewardManager.sol/RewardManager.dbg.json +0 -4
  443. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBase.sol/SCYBase.dbg.json +0 -4
  444. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +0 -4
  445. package/build/artifacts/contracts/core/PendleBaseToken.sol/PendleBaseToken.dbg.json +0 -4
  446. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.dbg.json +0 -4
  447. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.json +0 -842
  448. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +0 -4
  449. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.json +0 -265
  450. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +0 -4
  451. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.json +0 -452
  452. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +0 -4
  453. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +0 -783
  454. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +0 -4
  455. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.dbg.json +0 -4
  456. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.json +0 -766
  457. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
  458. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -641
  459. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.dbg.json +0 -4
  460. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.json +0 -623
  461. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.dbg.json +0 -4
  462. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.json +0 -623
  463. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +0 -4
  464. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +0 -339
  465. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.dbg.json +0 -4
  466. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.json +0 -808
  467. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.dbg.json +0 -4
  468. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.json +0 -862
  469. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.dbg.json +0 -4
  470. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.json +0 -55
  471. package/build/artifacts/contracts/core/actions/base/ActionType.sol/ActionType.dbg.json +0 -4
  472. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.dbg.json +0 -4
  473. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.json +0 -55
  474. package/build/artifacts/contracts/interfaces/IPBaseToken.sol/IPBaseToken.dbg.json +0 -4
  475. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +0 -4
  476. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.json +0 -113
  477. package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/IPVotingEscrowController.dbg.json +0 -4
  478. package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/IPVotingEscrowController.json +0 -61
  479. package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.dbg.json +0 -4
  480. package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.json +0 -113
  481. package/build/artifacts/contracts/interfaces/IVePToken.sol/IVePToken.dbg.json +0 -4
  482. package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
  483. package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.json +0 -61
  484. package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.dbg.json +0 -4
  485. package/build/artifacts/contracts/libraries/JoeLibrary.sol/JoeLibrary.dbg.json +0 -4
  486. package/build/artifacts/contracts/libraries/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
  487. package/build/artifacts/contracts/libraries/math/MarketMathAux.sol/MarketMathAux.dbg.json +0 -4
  488. package/build/artifacts/contracts/periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +0 -4
  489. package/contracts/SuperComposableYield/ISuperComposableYield.sol +0 -80
  490. package/contracts/SuperComposableYield/SCYUtils.sol +0 -14
  491. package/contracts/SuperComposableYield/implementations/IRewardManager.sol +0 -16
  492. package/contracts/SuperComposableYield/implementations/RewardManager.sol +0 -151
  493. package/contracts/SuperComposableYield/implementations/SCYBase.sol +0 -166
  494. package/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol +0 -88
  495. package/contracts/core/PendleBaseToken.sol +0 -35
  496. package/contracts/core/PendlePrincipalToken.sol +0 -54
  497. package/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol +0 -140
  498. package/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol +0 -133
  499. package/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol +0 -120
  500. package/contracts/core/PendleSCYImpl/PendleStETHSCY.sol +0 -107
  501. package/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol +0 -109
  502. package/contracts/core/PendleYieldToken.sol +0 -340
  503. package/contracts/core/actions/ActionRedeem.sol +0 -36
  504. package/contracts/core/actions/base/ActionType.sol +0 -11
  505. package/contracts/interfaces/IPActionRedeem.sol +0 -17
  506. package/contracts/interfaces/IPBaseToken.sol +0 -9
  507. package/contracts/interfaces/IPGauge.sol +0 -32
  508. package/contracts/interfaces/IPVotingEscrowController.sol +0 -14
  509. package/contracts/interfaces/IPendleGauge.sol +0 -32
  510. package/contracts/interfaces/IVePToken.sol +0 -14
  511. package/contracts/interfaces/IVotingEscrowController.sol +0 -14
  512. package/contracts/interfaces/IVotingEscrowPendle.sol +0 -32
  513. package/contracts/libraries/math/MarketMathAux.sol +0 -101
  514. package/typechain-types/AggregatorV2V3Interface.ts +0 -380
  515. package/typechain-types/BenqiChainlinkOracle.ts +0 -362
  516. package/typechain-types/BoringOwnable.ts +0 -194
  517. package/typechain-types/BoringOwnableData.ts +0 -100
  518. package/typechain-types/BoringOwnableUpg.ts +0 -194
  519. package/typechain-types/BoringOwnableUpgData.ts +0 -100
  520. package/typechain-types/Comptroller.ts +0 -2860
  521. package/typechain-types/ComptrollerErrorReporter.ts +0 -70
  522. package/typechain-types/ComptrollerInterface.ts +0 -881
  523. package/typechain-types/ComptrollerVXStorage.ts +0 -781
  524. package/typechain-types/CrosschainContract.ts +0 -113
  525. package/typechain-types/CrosschainReceiver.ts +0 -347
  526. package/typechain-types/CrosschainSender.ts +0 -210
  527. package/typechain-types/EIP20NonStandardInterface.ts +0 -298
  528. package/typechain-types/ERC20Locker.ts +0 -91
  529. package/typechain-types/EpochController.ts +0 -195
  530. package/typechain-types/FundKeeper.ts +0 -347
  531. package/typechain-types/GaugeTypeControllerAbstract.ts +0 -546
  532. package/typechain-types/GaugeTypeControllerCrosschain.ts +0 -733
  533. package/typechain-types/GaugeTypeControllerMainchain.ts +0 -604
  534. package/typechain-types/IGaugeController.ts +0 -99
  535. package/typechain-types/ILiquidYieldToken.ts +0 -639
  536. package/typechain-types/ILiquidYieldTokenWrap.ts +0 -790
  537. package/typechain-types/IMessageBus.ts +0 -543
  538. package/typechain-types/IPFlashCallback.ts +0 -115
  539. package/typechain-types/IPLiquidYieldToken.ts +0 -641
  540. package/typechain-types/IPMarketCallback.ts +0 -107
  541. package/typechain-types/IPRouterCore.ts +0 -769
  542. package/typechain-types/IPRouterRedeem.ts +0 -155
  543. package/typechain-types/IPRouterYT.ts +0 -489
  544. package/typechain-types/IPermissionsV2.ts +0 -87
  545. package/typechain-types/IRainbowBridge.ts +0 -91
  546. package/typechain-types/ISCYRewardIndex.ts +0 -695
  547. package/typechain-types/IVEPendleToken.ts +0 -121
  548. package/typechain-types/IXPendle.ts +0 -114
  549. package/typechain-types/JumpRateModel.ts +0 -347
  550. package/typechain-types/LYTBase.ts +0 -721
  551. package/typechain-types/LYTWrap.ts +0 -872
  552. package/typechain-types/LYTWrapWithRewards.ts +0 -979
  553. package/typechain-types/LiquidityMining.ts +0 -468
  554. package/typechain-types/Maximillion.ts +0 -145
  555. package/typechain-types/Ownable.ts +0 -160
  556. package/typechain-types/PendleBenqiLiquidYieldToken.ts +0 -1013
  557. package/typechain-types/PendleBtrflyLYT.ts +0 -781
  558. package/typechain-types/PendleJoeSwapHelper.ts +0 -92
  559. package/typechain-types/PendleLYTMockYT.ts +0 -894
  560. package/typechain-types/PendleLiquidYieldToken.ts +0 -814
  561. package/typechain-types/PendleLiquidYieldTokenBase.ts +0 -941
  562. package/typechain-types/PendleOwnershipToken.ts +0 -598
  563. package/typechain-types/PendleRouter01.ts +0 -184
  564. package/typechain-types/PendleRouter02.ts +0 -564
  565. package/typechain-types/PendleRouter03.ts +0 -224
  566. package/typechain-types/PendleRouterBase.ts +0 -126
  567. package/typechain-types/PendleRouterCore.ts +0 -328
  568. package/typechain-types/PendleRouterCoreUpg.ts +0 -798
  569. package/typechain-types/PendleRouterLytAndForge.ts +0 -331
  570. package/typechain-types/PendleRouterMarketBase.ts +0 -82
  571. package/typechain-types/PendleRouterOT.ts +0 -463
  572. package/typechain-types/PendleRouterProxy.ts +0 -335
  573. package/typechain-types/PendleRouterRawTokenOT.ts +0 -865
  574. package/typechain-types/PendleRouterRawTokenYT.ts +0 -520
  575. package/typechain-types/PendleRouterRedeemUpg.ts +0 -125
  576. package/typechain-types/PendleRouterSCYAndForgeBaseUpg.ts +0 -98
  577. package/typechain-types/PendleRouterStaticUpg.ts +0 -399
  578. package/typechain-types/PendleRouterYT.ts +0 -227
  579. package/typechain-types/PendleRouterYTBaseUpg.ts +0 -134
  580. package/typechain-types/PendleRouterYTUpg.ts +0 -537
  581. package/typechain-types/PendleYearnVaultLYT.ts +0 -723
  582. package/typechain-types/PglStakingContract.ts +0 -662
  583. package/typechain-types/PglStakingContractProxy.ts +0 -256
  584. package/typechain-types/PglStakingContractProxyStorage.ts +0 -136
  585. package/typechain-types/PglStakingContractStorage.ts +0 -397
  586. package/typechain-types/PriceOracle.ts +0 -116
  587. package/typechain-types/ProtocolFakeUser.ts +0 -105
  588. package/typechain-types/Qi.ts +0 -760
  589. package/typechain-types/QiAvax.ts +0 -1720
  590. package/typechain-types/QiDelegateInterface.ts +0 -145
  591. package/typechain-types/QiDelegatorInterface.ts +0 -149
  592. package/typechain-types/QiErc20.ts +0 -1846
  593. package/typechain-types/QiErc20Delegate.ts +0 -1926
  594. package/typechain-types/QiErc20Delegator.ts +0 -1885
  595. package/typechain-types/QiErc20Interface.ts +0 -382
  596. package/typechain-types/QiErc20Storage.ts +0 -79
  597. package/typechain-types/QiToken.ts +0 -1475
  598. package/typechain-types/QiTokenInterface.ts +0 -1419
  599. package/typechain-types/QiTokenSaleDistributor.ts +0 -771
  600. package/typechain-types/QiTokenSaleDistributorProxy.ts +0 -256
  601. package/typechain-types/QiTokenSaleDistributorProxyStorage.ts +0 -136
  602. package/typechain-types/QiTokenSaleDistributorStorage.ts +0 -401
  603. package/typechain-types/QiTokenStorage.ts +0 -311
  604. package/typechain-types/ReentrancyGuard.ts +0 -52
  605. package/typechain-types/SingleGaugeTypeController.ts +0 -478
  606. package/typechain-types/TokenErrorReporter.ts +0 -70
  607. package/typechain-types/Unitroller.ts +0 -356
  608. package/typechain-types/UnitrollerAdminStorage.ts +0 -143
  609. package/typechain-types/VePendle.ts +0 -1156
  610. package/typechain-types/VePendleCrosschain.ts +0 -969
  611. package/typechain-types/VePendleToken.ts +0 -688
  612. package/typechain-types/VotingController.ts +0 -883
  613. package/typechain-types/WETH9.ts +0 -414
  614. package/typechain-types/WhitePaperInterestRateModel.ts +0 -304
  615. package/typechain-types/XPendle.ts +0 -618
  616. package/typechain-types/factories/AggregatorV2V3Interface__factory.ts +0 -288
  617. package/typechain-types/factories/BenqiChainlinkOracle__factory.ts +0 -311
  618. package/typechain-types/factories/BoringOwnableData__factory.ts +0 -90
  619. package/typechain-types/factories/BoringOwnableUpgData__factory.ts +0 -94
  620. package/typechain-types/factories/BoringOwnableUpg__factory.ts +0 -139
  621. package/typechain-types/factories/BoringOwnable__factory.ts +0 -149
  622. package/typechain-types/factories/ComptrollerErrorReporter__factory.ts +0 -93
  623. package/typechain-types/factories/ComptrollerInterface__factory.ts +0 -595
  624. package/typechain-types/factories/ComptrollerVXStorage__factory.ts +0 -610
  625. package/typechain-types/factories/Comptroller__factory.ts +0 -2189
  626. package/typechain-types/factories/CrosschainContract__factory.ts +0 -52
  627. package/typechain-types/factories/CrosschainSender__factory.ts +0 -104
  628. package/typechain-types/factories/EIP20Interface__factory.ts +0 -248
  629. package/typechain-types/factories/ERC20Locker__factory.ts +0 -73
  630. package/typechain-types/factories/ERC20Premined__factory.ts +0 -393
  631. package/typechain-types/factories/ERC20PresetFixedSupply__factory.ts +0 -422
  632. package/typechain-types/factories/EpochController__factory.ts +0 -170
  633. package/typechain-types/factories/FundKeeper__factory.ts +0 -212
  634. package/typechain-types/factories/GaugeTypeControllerAbstract__factory.ts +0 -387
  635. package/typechain-types/factories/GaugeTypeControllerCrosschain__factory.ts +0 -522
  636. package/typechain-types/factories/GaugeTypeControllerMainchain__factory.ts +0 -431
  637. package/typechain-types/factories/IGaugeController__factory.ts +0 -45
  638. package/typechain-types/factories/ILiquidYieldTokenWrap__factory.ts +0 -533
  639. package/typechain-types/factories/IMessageBus__factory.ts +0 -396
  640. package/typechain-types/factories/IPFlashCallback__factory.ts +0 -49
  641. package/typechain-types/factories/IPLiquidYieldToken__factory.ts +0 -433
  642. package/typechain-types/factories/IPMarketCallback__factory.ts +0 -55
  643. package/typechain-types/factories/IPRouterCore__factory.ts +0 -531
  644. package/typechain-types/factories/IPRouterRedeem__factory.ts +0 -72
  645. package/typechain-types/factories/IPRouterYT__factory.ts +0 -305
  646. package/typechain-types/factories/ISCYRewardIndex__factory.ts +0 -465
  647. package/typechain-types/factories/IVEPendleToken__factory.ts +0 -71
  648. package/typechain-types/factories/IXPendle__factory.ts +0 -61
  649. package/typechain-types/factories/JumpRateModel__factory.ts +0 -334
  650. package/typechain-types/factories/LYTBaseWithRewards__factory.ts +0 -530
  651. package/typechain-types/factories/LYTBase__factory.ts +0 -474
  652. package/typechain-types/factories/LYTWrapWithRewards__factory.ts +0 -643
  653. package/typechain-types/factories/LYTWrap__factory.ts +0 -574
  654. package/typechain-types/factories/LiquidityMining__factory.ts +0 -367
  655. package/typechain-types/factories/Maximillion__factory.ts +0 -125
  656. package/typechain-types/factories/Ownable__factory.ts +0 -75
  657. package/typechain-types/factories/PendleAaveV3LYT__factory.ts +0 -657
  658. package/typechain-types/factories/PendleBenQiErc20LYT__factory.ts +0 -748
  659. package/typechain-types/factories/PendleBenqiLiquidYieldToken__factory.ts +0 -785
  660. package/typechain-types/factories/PendleBtrflyLYT__factory.ts +0 -647
  661. package/typechain-types/factories/PendleJoeSwapHelper__factory.ts +0 -52
  662. package/typechain-types/factories/PendleLYTMockYT__factory.ts +0 -732
  663. package/typechain-types/factories/PendleLiquidYieldTokenBase__factory.ts +0 -603
  664. package/typechain-types/factories/PendleLiquidYieldToken__factory.ts +0 -510
  665. package/typechain-types/factories/PendleOwnershipToken__factory.ts +0 -527
  666. package/typechain-types/factories/PendleRouter01__factory.ts +0 -152
  667. package/typechain-types/factories/PendleRouter02__factory.ts +0 -438
  668. package/typechain-types/factories/PendleRouter03__factory.ts +0 -190
  669. package/typechain-types/factories/PendleRouterCoreUpg__factory.ts +0 -635
  670. package/typechain-types/factories/PendleRouterCore__factory.ts +0 -268
  671. package/typechain-types/factories/PendleRouterLytAndForge__factory.ts +0 -294
  672. package/typechain-types/factories/PendleRouterMarketBase__factory.ts +0 -43
  673. package/typechain-types/factories/PendleRouterOT__factory.ts +0 -372
  674. package/typechain-types/factories/PendleRouterProxy__factory.ts +0 -285
  675. package/typechain-types/factories/PendleRouterRawTokenOT__factory.ts +0 -697
  676. package/typechain-types/factories/PendleRouterRawTokenYT__factory.ts +0 -431
  677. package/typechain-types/factories/PendleRouterRedeemUpg__factory.ts +0 -112
  678. package/typechain-types/factories/PendleRouterSCYAndForgeBaseUpg__factory.ts +0 -56
  679. package/typechain-types/factories/PendleRouterStaticUpg__factory.ts +0 -315
  680. package/typechain-types/factories/PendleRouterYTBaseUpg__factory.ts +0 -66
  681. package/typechain-types/factories/PendleRouterYTUpg__factory.ts +0 -422
  682. package/typechain-types/factories/PendleRouterYT__factory.ts +0 -184
  683. package/typechain-types/factories/PendleYTLYTBenqi__factory.ts +0 -713
  684. package/typechain-types/factories/PendleYearnVaultLYT__factory.ts +0 -586
  685. package/typechain-types/factories/PermlessAbstract__factory.ts +0 -30
  686. package/typechain-types/factories/PglStakingContractProxyStorage__factory.ts +0 -130
  687. package/typechain-types/factories/PglStakingContractProxy__factory.ts +0 -187
  688. package/typechain-types/factories/PglStakingContractStorage__factory.ts +0 -309
  689. package/typechain-types/factories/PglStakingContract__factory.ts +0 -446
  690. package/typechain-types/factories/PriceOracle__factory.ts +0 -59
  691. package/typechain-types/factories/ProtocolFakeUser__factory.ts +0 -87
  692. package/typechain-types/factories/QiAvax__factory.ts +0 -1471
  693. package/typechain-types/factories/QiDelegateInterface__factory.ts +0 -65
  694. package/typechain-types/factories/QiDelegationStorage__factory.ts +0 -79
  695. package/typechain-types/factories/QiDelegatorInterface__factory.ts +0 -89
  696. package/typechain-types/factories/QiErc20Delegate__factory.ts +0 -1563
  697. package/typechain-types/factories/QiErc20Delegator__factory.ts +0 -1648
  698. package/typechain-types/factories/QiErc20Interface__factory.ts +0 -239
  699. package/typechain-types/factories/QiErc20Storage__factory.ts +0 -79
  700. package/typechain-types/factories/QiErc20__factory.ts +0 -1515
  701. package/typechain-types/factories/QiTokenInterface__factory.ts +0 -1182
  702. package/typechain-types/factories/QiTokenSaleDistributorProxyStorage__factory.ts +0 -124
  703. package/typechain-types/factories/QiTokenSaleDistributorProxy__factory.ts +0 -171
  704. package/typechain-types/factories/QiTokenSaleDistributorStorage__factory.ts +0 -289
  705. package/typechain-types/factories/QiTokenSaleDistributor__factory.ts +0 -480
  706. package/typechain-types/factories/QiTokenStorage__factory.ts +0 -274
  707. package/typechain-types/factories/QiToken__factory.ts +0 -1219
  708. package/typechain-types/factories/Qi__factory.ts +0 -648
  709. package/typechain-types/factories/ReentrancyGuard__factory.ts +0 -69
  710. package/typechain-types/factories/SingleGaugeTypeController__factory.ts +0 -341
  711. package/typechain-types/factories/TokenErrorReporter__factory.ts +0 -89
  712. package/typechain-types/factories/UnitrollerAdminStorage__factory.ts +0 -128
  713. package/typechain-types/factories/Unitroller__factory.ts +0 -305
  714. package/typechain-types/factories/VePendleCrosschain__factory.ts +0 -727
  715. package/typechain-types/factories/VePendleToken__factory.ts +0 -494
  716. package/typechain-types/factories/VePendle__factory.ts +0 -800
  717. package/typechain-types/factories/VotingController__factory.ts +0 -610
  718. package/typechain-types/factories/WETH9__factory.ts +0 -342
  719. package/typechain-types/factories/WhitePaperInterestRateModel__factory.ts +0 -281
  720. package/typechain-types/factories/XPendle__factory.ts +0 -473
@@ -0,0 +1,224 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+
4
+ import "../../../interfaces/IPVeToken.sol";
5
+ import "../../../libraries/VeBalanceLib.sol";
6
+ import "../../../libraries/math/WeekMath.sol";
7
+ import "../../../libraries/helpers/MiniHelpers.sol";
8
+ import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
9
+
10
+ // no reentracy protection yet?
11
+ // Should VotingController and stuff become upgradeable?
12
+ abstract contract VotingControllerStorage {
13
+ using VeBalanceLib for VeBalance;
14
+ using EnumerableSet for EnumerableSet.AddressSet;
15
+
16
+ struct PoolInfo {
17
+ uint64 chainId;
18
+ uint128 lastUpdated;
19
+ VeBalance vote;
20
+ // wTime => slopeChange value
21
+ mapping(uint128 => uint128) slopeChanges;
22
+ }
23
+
24
+ struct UserPoolInfo {
25
+ uint64 weight;
26
+ VeBalance vote;
27
+ }
28
+
29
+ struct UserData {
30
+ uint64 totalVotedWeight;
31
+ mapping(address => UserPoolInfo) voteForPools;
32
+ }
33
+
34
+ struct WeekData {
35
+ uint128 totalVotes;
36
+ mapping(address => uint128) poolVotes;
37
+ }
38
+
39
+ uint128 internal constant MAX_LOCK_TIME = 104 weeks;
40
+ uint64 public constant USER_VOTE_MAX_WEIGHT = 10**18;
41
+ uint128 public constant WEEK = 1 weeks;
42
+ uint128 public constant GOVERNANCE_PENDLE_VOTE = 10**24;
43
+
44
+ IPVeToken public immutable vePendle;
45
+
46
+ uint128 public pendlePerSec;
47
+
48
+ uint128 public immutable deployedWTime; // divisible by WEEK
49
+
50
+ EnumerableSet.AddressSet internal allPools;
51
+
52
+ // [chainId] => [pool]
53
+ mapping(uint64 => EnumerableSet.AddressSet) internal chainPools;
54
+
55
+ // [poolAddress] -> PoolInfo
56
+ mapping(address => PoolInfo) public poolInfo;
57
+
58
+ // [wTime] => WeekData
59
+ mapping(uint128 => WeekData) public weekData;
60
+
61
+ // user voting info
62
+ mapping(address => UserData) public userData;
63
+
64
+ // wTime => bool
65
+ mapping(uint128 => bool) public isEpochFinalized;
66
+
67
+ // [user][pool] => checkpoint
68
+ mapping(address => mapping(address => Checkpoint[])) public userPoolCheckpoints;
69
+
70
+ constructor(address _vePendle) {
71
+ vePendle = IPVeToken(_vePendle);
72
+ deployedWTime = WeekMath.getCurrentWeekStart();
73
+ }
74
+
75
+ /*///////////////////////////////////////////////////////////////
76
+ VIEW FUNCTIONS
77
+ //////////////////////////////////////////////////////////////*/
78
+
79
+ /// @dev trivial view function
80
+ function getAllPools() external view returns (address[] memory) {
81
+ return allPools.values();
82
+ }
83
+
84
+ /// @dev trivial view function
85
+ function getChainPools(uint64 chainId) external view returns (address[] memory) {
86
+ return chainPools[chainId].values();
87
+ }
88
+
89
+ /// @dev trivial view function
90
+ function getUserPoolVote(address user, address pool)
91
+ external
92
+ view
93
+ returns (UserPoolInfo memory)
94
+ {
95
+ return userData[user].voteForPools[pool];
96
+ }
97
+
98
+ /**
99
+ * @dev binary search to get the vote of an user on a pool at a specific timestamp
100
+ * @param timestamp can be any time, not necessary divisible by week
101
+ */
102
+ function getUserPoolVoteAt(
103
+ address user,
104
+ address pool,
105
+ uint128 timestamp
106
+ ) external view returns (uint128) {
107
+ return VeBalanceLib.getCheckpointValueAt(userPoolCheckpoints[user][pool], timestamp);
108
+ }
109
+
110
+ /*///////////////////////////////////////////////////////////////
111
+ INTERNAL DATA MANIPULATION FUNCTIONS
112
+ //////////////////////////////////////////////////////////////*/
113
+
114
+ /**
115
+ * @dev expected behavior:
116
+ - add to allPools, chainPools
117
+ - set params in poolInfo
118
+ */
119
+ function _addPool(uint64 chainId, address pool) internal {
120
+ poolInfo[pool].chainId = chainId;
121
+ poolInfo[pool].lastUpdated = WeekMath.getCurrentWeekStart();
122
+ require(chainPools[chainId].add(pool), "IE: chainPools duplicated");
123
+ require(allPools.add(pool), "IE: allPools duplicated");
124
+ }
125
+
126
+ /**
127
+ * @dev expected behavior:
128
+ - remove from allPools, chainPools
129
+ - clear all params in poolInfo
130
+ */
131
+ function _removePool(address pool) internal {
132
+ uint64 chainId = poolInfo[pool].chainId;
133
+ require(chainPools[chainId].remove(pool), "IE: chainPools removal failed");
134
+ require(allPools.remove(pool), "IE: allPools removal failed");
135
+ delete poolInfo[pool];
136
+ }
137
+
138
+ /**
139
+ * @notice set the final pool vote for weekData
140
+ * @dev assumption: weekData[wTime].poolVotes[pool] == 0
141
+ */
142
+ function _setFinalPoolVoteForWeek(
143
+ address pool,
144
+ uint128 wTime,
145
+ uint128 vote
146
+ ) internal {
147
+ weekData[wTime].totalVotes += vote;
148
+ weekData[wTime].poolVotes[pool] = vote;
149
+ }
150
+
151
+ function _setNewVotePoolInfo(
152
+ address pool,
153
+ VeBalance memory vote,
154
+ uint128 wTime
155
+ ) internal {
156
+ poolInfo[pool].vote = vote;
157
+ poolInfo[pool].lastUpdated = wTime;
158
+ }
159
+
160
+ /// @dev only applicable for current pool, hence no changes for weekData
161
+ function _subtractVotePoolInfo(address pool, VeBalance memory vote) internal {
162
+ PoolInfo storage pInfo = poolInfo[pool];
163
+ pInfo.vote = poolInfo[pool].vote.sub(vote);
164
+ pInfo.slopeChanges[vote.getExpiry()] -= vote.slope;
165
+ }
166
+
167
+ /// @dev only applicable for current pool, hence no changes for weekData
168
+ function _addVotePoolInfo(address pool, VeBalance memory vote) internal {
169
+ PoolInfo storage pInfo = poolInfo[pool];
170
+ pInfo.vote = poolInfo[pool].vote.add(vote);
171
+ pInfo.slopeChanges[vote.getExpiry()] += vote.slope;
172
+ }
173
+
174
+ function _unsetVoteUserData(address user, address pool) internal {
175
+ UserData storage uData = userData[user];
176
+ uData.totalVotedWeight -= uData.voteForPools[pool].weight;
177
+ delete uData.voteForPools[pool];
178
+ }
179
+
180
+ /// @dev assumption: uData.voteForPools[pool] hasn't been set before
181
+ /// @dev post-condition: totalVotedWeight <= USER_VOTE_MAX_WEIGHT
182
+ function _setVoteUserData(
183
+ address user,
184
+ address pool,
185
+ uint64 weight,
186
+ VeBalance memory vote
187
+ ) internal {
188
+ UserData storage uData = userData[user];
189
+ uData.totalVotedWeight += weight;
190
+ require(uData.totalVotedWeight <= USER_VOTE_MAX_WEIGHT, "exceeded max weight");
191
+
192
+ uData.voteForPools[pool] = UserPoolInfo({ weight: weight, vote: vote });
193
+ }
194
+
195
+ /// @dev post-condition: timestamp is in increasing order (for binary search)
196
+ function _addUserPoolCheckpoint(
197
+ address user,
198
+ address pool,
199
+ VeBalance memory vote
200
+ ) internal {
201
+ userPoolCheckpoints[user][pool].push(
202
+ Checkpoint({ balance: vote, timestamp: uint128(block.timestamp) })
203
+ );
204
+ }
205
+
206
+ function _setAllPastEpochsAsFinalized() internal {
207
+ uint128 wTime = WeekMath.getCurrentWeekStart();
208
+ while (wTime >= deployedWTime && isEpochFinalized[wTime] == false) {
209
+ isEpochFinalized[wTime] = true;
210
+ wTime -= WEEK;
211
+ }
212
+ }
213
+
214
+ /// @notice check if a pool is votable on by checking the lastUpdated time
215
+ function _isPoolVotable(address pool) internal view returns (bool) {
216
+ return poolInfo[pool].lastUpdated != 0;
217
+ }
218
+
219
+ /// @notice check if a vote still counts by checking if the vote is not (x,0) (in case the
220
+ /// weight of the vote is too small) & the expiry is after the current time
221
+ function _isVoteActive(VeBalance memory vote) internal view returns (bool) {
222
+ return vote.slope != 0 && !MiniHelpers.isCurrentlyExpired(vote.getExpiry());
223
+ }
224
+ }
@@ -0,0 +1,241 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+ import "../../../interfaces/IPVotingEscrow.sol";
4
+ import "../../../libraries/helpers/MiniHelpers.sol";
5
+ import "./VotingEscrowToken.sol";
6
+ import "../CelerAbstracts/CelerSender.sol";
7
+ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
+ import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
9
+
10
+ contract VotingEscrowPendleMainchain is VotingEscrowToken, IPVotingEscrow, CelerSender {
11
+ using SafeERC20 for IERC20;
12
+ using VeBalanceLib for VeBalance;
13
+ using VeBalanceLib for LockedPosition;
14
+ using EnumerableMap for EnumerableMap.UintToAddressMap;
15
+
16
+ bytes private constant EMPTY_BYTES = abi.encode();
17
+
18
+ IERC20 public immutable pendle;
19
+
20
+ // [wTime] => slopeChanges
21
+ mapping(uint128 => uint128) public slopeChanges;
22
+
23
+ // Saving totalSupply checkpoint for each week, later can be used for reward accounting
24
+ // [wTime] => totalSupply
25
+ mapping(uint128 => uint128) public totalSupplyAt;
26
+
27
+ // Saving VeBalance checkpoint for users of each week, can later use binary search
28
+ // to ask for their vePendle balance at any wTime
29
+ mapping(address => Checkpoint[]) public userCheckpoints;
30
+
31
+ constructor(IERC20 _pendle, address _governanceManager) CelerSender(_governanceManager) {
32
+ pendle = _pendle;
33
+ }
34
+
35
+ /// @notice basically a proxy function to call increaseLockPosition & broadcastUserPosition at the same time
36
+ function increaseLockPositionAndBroadcast(
37
+ uint128 additionalAmountToLock,
38
+ uint128 newExpiry,
39
+ uint256[] calldata chainIds
40
+ ) external payable returns (uint128 newVeBalance) {
41
+ newVeBalance = increaseLockPosition(additionalAmountToLock, newExpiry);
42
+ broadcastUserPosition(msg.sender, chainIds);
43
+ }
44
+
45
+ /**
46
+ * @notice increase the lock position of an user. Applicable even when user has no position or the
47
+ current position has expired
48
+ * @dev expected state changes:
49
+ - a new lock with amount = amountToPull + amountExpired, expiry = expiry is created for msg.sender in positionData
50
+ - pendle is taken in if necessary
51
+ - _totalSupply, lastSupplyUpdatedAt, slopeChanges, totalSupplyAt is updated
52
+ - a checkpoint is added
53
+ * @dev broadcast is not bundled since it can be done anytime after
54
+ */
55
+ function increaseLockPosition(uint128 additionalAmountToLock, uint128 newExpiry)
56
+ public
57
+ returns (uint128 newVeBalance)
58
+ {
59
+ address user = msg.sender;
60
+ require(
61
+ WeekMath.isValidWTime(newExpiry) && !MiniHelpers.isTimeInThePast(newExpiry),
62
+ "invalid newExpiry"
63
+ );
64
+
65
+ require(newExpiry <= block.timestamp + MAX_LOCK_TIME, "max lock time exceeded");
66
+
67
+ uint128 newTotalAmountLocked = additionalAmountToLock + positionData[user].amount;
68
+ require(newTotalAmountLocked > 0, "zero total amount locked");
69
+
70
+ uint128 additionalDurationToLock = newExpiry - positionData[user].expiry;
71
+
72
+ if (additionalAmountToLock > 0) {
73
+ pendle.safeTransferFrom(user, address(this), additionalAmountToLock);
74
+ }
75
+
76
+ newVeBalance = _increasePosition(user, additionalDurationToLock, additionalAmountToLock);
77
+
78
+ emit NewLockPosition(user, newTotalAmountLocked, newExpiry);
79
+ }
80
+
81
+ /**
82
+ * @notice withdraw an expired lock position, get back all locked PENDLE
83
+ * @dev expected state changes:
84
+ - positionData is cleared
85
+ - pendle is transferred out
86
+ - _totalSupply, lastSupplyUpdatedAt, slopeChanges, totalSupplyAt all doesn't need to be updated
87
+ since these data will automatically hold true when _updateTotalSupply() is called
88
+ - no checkpoint is added
89
+ * @dev broadcast is not bundled since it can be done anytime after
90
+ */
91
+ function withdraw(address user) external returns (uint128 amount) {
92
+ require(isPositionExpired(user), "position not expired");
93
+ amount = positionData[user].amount;
94
+
95
+ require(amount > 0, "zero position");
96
+
97
+ delete positionData[user];
98
+
99
+ pendle.safeTransfer(user, amount);
100
+
101
+ emit Withdraw(user, amount);
102
+ }
103
+
104
+ /**
105
+ * @notice update & return the current totalSupply
106
+ * @dev state changes expected:
107
+ - _totalSupply & lastSupplyUpdatedAt is updated
108
+ */
109
+ function totalSupplyCurrent() external virtual override returns (uint128) {
110
+ (VeBalance memory supply, ) = _updateTotalSupply();
111
+ return supply.getCurrentValue();
112
+ }
113
+
114
+ /**
115
+ * @notice broadcast the totalSupply to different chains
116
+ * @dev state changes expected:
117
+ - all chains in chainIds receive the new totalSupply
118
+ */
119
+ function broadcastTotalSupply(uint256[] calldata chainIds) public payable {
120
+ _broadcastPosition(address(0), chainIds);
121
+ }
122
+
123
+ /**
124
+ * @notice broadcast the position of users to different chains
125
+ * @dev state changes expected:
126
+ - all chains in chainIds receive the new totalSupply & user's new position
127
+ */
128
+ function broadcastUserPosition(address user, uint256[] calldata chainIds) public payable {
129
+ require(user != address(0), "zero address user");
130
+ _broadcastPosition(user, chainIds);
131
+ }
132
+
133
+ /// @notice binary search to find balance at a timestamp. This timestamp does not need to be divisible by week
134
+ function getUserVeBalanceAt(address user, uint128 timestamp) external view returns (uint128) {
135
+ return VeBalanceLib.getCheckpointValueAt(userCheckpoints[user], timestamp);
136
+ }
137
+
138
+ /**
139
+ * @notice increase the locking position of the user
140
+ * @dev it works by simply removing the old position from all relevant data (as if the user has never locked) and
141
+ then add in the new position
142
+ * @dev expected state changes:
143
+ - a new lock with the amount & expiry increase accordingly
144
+ - pendle is taken in if necessary
145
+ - _totalSupply, lastSupplyUpdatedAt, slopeChanges, totalSupplyAt is updated
146
+ - a checkpoint is added
147
+ */
148
+ function _increasePosition(
149
+ address user,
150
+ uint128 durationToIncrease,
151
+ uint128 amountToIncrease
152
+ ) internal returns (uint128) {
153
+ LockedPosition memory oldPosition = positionData[user];
154
+
155
+ (VeBalance memory newSupply, ) = _updateTotalSupply();
156
+
157
+ if (!MiniHelpers.isCurrentlyExpired(oldPosition.expiry)) {
158
+ // remove old position not yet expired
159
+ VeBalance memory oldBalance = oldPosition.convertToVeBalance();
160
+ newSupply = newSupply.sub(oldBalance);
161
+ slopeChanges[oldPosition.expiry] -= oldBalance.slope;
162
+ }
163
+
164
+ LockedPosition memory newPosition = LockedPosition(
165
+ oldPosition.amount + amountToIncrease,
166
+ oldPosition.expiry + durationToIncrease
167
+ );
168
+
169
+ VeBalance memory newBalance = newPosition.convertToVeBalance();
170
+ // add new position
171
+ newSupply = newSupply.add(newBalance);
172
+ slopeChanges[newPosition.expiry] += newBalance.slope;
173
+
174
+ _totalSupply = newSupply;
175
+ positionData[user] = newPosition;
176
+ userCheckpoints[user].push(Checkpoint(newBalance, uint128(block.timestamp)));
177
+ return newBalance.getCurrentValue();
178
+ }
179
+
180
+ /**
181
+ * @notice update the totalSupply, processing all slope changes of past weeks. At the same time, set the finalized
182
+ totalSupplyAt
183
+ * @dev state changes expected:
184
+ - _totalSupply, lastSupplyUpdatedAt, totalSupplyAt is updated
185
+ */
186
+ function _updateTotalSupply() internal returns (VeBalance memory, uint128) {
187
+ VeBalance memory supply = _totalSupply;
188
+ uint128 wTime = lastSupplyUpdatedAt;
189
+ uint128 currentWeekStart = WeekMath.getCurrentWeekStart();
190
+
191
+ if (wTime >= currentWeekStart) {
192
+ return (supply, wTime);
193
+ }
194
+
195
+ while (wTime < currentWeekStart) {
196
+ wTime += WEEK;
197
+ supply = supply.sub(slopeChanges[wTime], wTime);
198
+ totalSupplyAt[wTime] = supply.getValueAt(wTime);
199
+ }
200
+
201
+ _totalSupply = supply;
202
+ lastSupplyUpdatedAt = wTime;
203
+
204
+ return (supply, lastSupplyUpdatedAt);
205
+ }
206
+
207
+ /// @notice broadcast position to all chains in chainIds
208
+ function _broadcastPosition(address user, uint256[] calldata chainIds) public payable {
209
+ require(chainIds.length != 0, "empty chainIds");
210
+
211
+ (VeBalance memory supply, uint256 wTime) = _updateTotalSupply();
212
+
213
+ bytes memory userData = (
214
+ user == address(0) ? EMPTY_BYTES : abi.encode(user, positionData[user])
215
+ );
216
+
217
+ for (uint256 i = 0; i < chainIds.length; ++i) {
218
+ require(sidechainContracts.contains(chainIds[i]), "not supported chain");
219
+ _broadcast(chainIds[i], wTime, supply, userData);
220
+ if (user != address(0)) {
221
+ emit BroadcastUserPosition(user, chainIds);
222
+ }
223
+ }
224
+
225
+ emit BroadcastTotalSupply(supply, chainIds);
226
+ }
227
+
228
+ function _afterAddSidechainContract(address, uint256 chainId) internal virtual override {
229
+ (VeBalance memory supply, uint256 wTime) = _updateTotalSupply();
230
+ _broadcast(chainId, wTime, supply, EMPTY_BYTES);
231
+ }
232
+
233
+ function _broadcast(
234
+ uint256 chainId,
235
+ uint256 wTime,
236
+ VeBalance memory supply,
237
+ bytes memory userData
238
+ ) internal {
239
+ _sendMessage(chainId, abi.encode(wTime, supply, userData));
240
+ }
241
+ }
@@ -0,0 +1,73 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+
3
+ pragma solidity 0.8.13;
4
+
5
+ import "../../../libraries/VeBalanceLib.sol";
6
+ import "../../../libraries/math/WeekMath.sol";
7
+ import "./VotingEscrowToken.sol";
8
+ import "../CelerAbstracts/CelerReceiver.sol";
9
+
10
+ // solhint-disable no-empty-blocks
11
+ contract VotingEscrowPendleSidechain is VotingEscrowToken, CelerReceiver {
12
+ mapping(address => address) internal delegatorOf;
13
+
14
+ event SetNewDelegator(address delegator, address receiver);
15
+
16
+ event SetNewTotalSupply(VeBalance totalSupply);
17
+
18
+ event SetNewUserPosition(LockedPosition position);
19
+
20
+ constructor(address _governanceManager) CelerReceiver(_governanceManager) {}
21
+
22
+ function totalSupplyCurrent() external view virtual override returns (uint128) {
23
+ return totalSupplyStored();
24
+ }
25
+
26
+ /**
27
+ * @dev The mechanism of delegating is for governance to support protocol to build on top
28
+ * This way, it is more gas efficient and does not affect the crosschain messaging cost
29
+ */
30
+ function setDelegatorFor(address receiver, address delegator) external onlyGovernance {
31
+ delegatorOf[receiver] = delegator;
32
+ emit SetNewDelegator(delegator, receiver);
33
+ }
34
+
35
+ /**
36
+ * @dev Both two types of message will contain VeBalance supply & wTime
37
+ * @dev If the message also contains some users' position, we should update it
38
+ */
39
+ function _executeMessage(bytes memory message) internal virtual override {
40
+ (uint128 wTime, VeBalance memory supply, bytes memory userData) = abi.decode(
41
+ message,
42
+ (uint128, VeBalance, bytes)
43
+ );
44
+ _setNewTotalSupply(wTime, supply);
45
+ if (userData.length > 0) {
46
+ _setNewUserPosition(userData);
47
+ }
48
+ }
49
+
50
+ function _setNewUserPosition(bytes memory userData) internal {
51
+ (address userAddr, LockedPosition memory position) = abi.decode(
52
+ userData,
53
+ (address, LockedPosition)
54
+ );
55
+ positionData[userAddr] = position;
56
+ emit SetNewUserPosition(position);
57
+ }
58
+
59
+ function _setNewTotalSupply(uint128 wTime, VeBalance memory supply) internal {
60
+ assert(wTime == WeekMath.getWeekStartTimestamp(wTime));
61
+ lastSupplyUpdatedAt = wTime;
62
+ _totalSupply = supply;
63
+ emit SetNewTotalSupply(supply);
64
+ }
65
+
66
+ function balanceOf(address user) public view virtual override returns (uint128) {
67
+ address delegator = delegatorOf[user];
68
+ if (delegatorOf[user] == address(0)) {
69
+ return super.balanceOf(user);
70
+ }
71
+ return super.balanceOf(delegator);
72
+ }
73
+ }
@@ -0,0 +1,53 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+
4
+ import "../../../interfaces/IPVeToken.sol";
5
+ import "../../../libraries/VeBalanceLib.sol";
6
+ import "../../../libraries/math/WeekMath.sol";
7
+ import "../../../libraries/helpers/MiniHelpers.sol";
8
+
9
+ /**
10
+ * @dev this contract is an abstract for its mainchain and sidechain variant
11
+ * PRINCIPLE:
12
+ * - All functions implemented in this contract should be either view or pure
13
+ * to ensure that no writing logic is inheritted by sidechain version
14
+ * - Mainchain version will handle the logic which are:
15
+ * + Deposit, withdraw, increase lock, increase amount
16
+ * + Mainchain logic will be ensured to have _totalSupply = linear sum of
17
+ * all users' veBalance such that their locks are not yet expired
18
+ * + Mainchain contract reserves 100% the right to write on sidechain
19
+ * + No other transaction is allowed to write on sidechain storage
20
+ */
21
+
22
+ abstract contract VotingEscrowToken is IPVeToken {
23
+ // wrong name, should be VotingEscrowPendle
24
+ using VeBalanceLib for VeBalance;
25
+ using VeBalanceLib for LockedPosition;
26
+
27
+ uint128 public constant WEEK = 1 weeks;
28
+ uint128 public constant MAX_LOCK_TIME = 104 weeks;
29
+
30
+ VeBalance internal _totalSupply;
31
+ uint128 public lastSupplyUpdatedAt;
32
+
33
+ mapping(address => LockedPosition) public positionData;
34
+
35
+ constructor() {
36
+ lastSupplyUpdatedAt = WeekMath.getCurrentWeekStart();
37
+ }
38
+
39
+ function balanceOf(address user) public view virtual returns (uint128) {
40
+ if (isPositionExpired(user)) return 0;
41
+ return positionData[user].convertToVeBalance().getCurrentValue();
42
+ }
43
+
44
+ function totalSupplyStored() public view virtual returns (uint128) {
45
+ return _totalSupply.getCurrentValue();
46
+ }
47
+
48
+ function totalSupplyCurrent() external virtual returns (uint128);
49
+
50
+ function isPositionExpired(address user) public view returns (bool) {
51
+ return MiniHelpers.isCurrentlyExpired(positionData[user].expiry);
52
+ }
53
+ }