@pendle/core-v2 0.7.1-beta → 0.8.0-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +33 -17
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.json +2 -2
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +33 -17
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +33 -17
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +33 -17
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +33 -17
  15. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  16. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.json +31 -15
  17. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  18. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +31 -15
  19. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
  21. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  22. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  23. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  24. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  26. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.json +0 -26
  28. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  30. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  33. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +125 -111
  38. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  40. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +2 -2
  42. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
  44. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -2
  46. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +77 -2
  49. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +51 -20
  51. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +72 -93
  53. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  55. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +3 -3
  57. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +2 -2
  59. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  63. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  64. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  65. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  66. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  67. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  68. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  69. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  70. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  71. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +48 -83
  85. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  88. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +20 -15
  91. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.json +30 -4
  96. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +8 -92
  98. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.json +31 -2
  105. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  109. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  110. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  111. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +1 -1
  112. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.json +2 -2
  113. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  114. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.json +2 -2
  115. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  116. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  117. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  118. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  119. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  120. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +2 -2
  121. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  122. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
  123. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  124. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +2 -2
  125. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  126. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.json +2 -2
  127. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  128. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  129. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
  130. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  131. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  132. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  133. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  134. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  135. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  136. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  137. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +2 -2
  138. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  139. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +2 -2
  140. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +1 -1
  141. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.json +2 -2
  142. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +1 -1
  143. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  144. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +166 -13
  145. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  146. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
  147. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  148. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +16 -12
  149. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +3 -3
  150. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +20 -0
  151. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +20 -0
  152. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +20 -0
  153. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +29 -2
  154. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +63 -41
  155. package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +0 -7
  156. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +1 -1
  157. package/contracts/core/LiquidityMining/PendleGauge.sol +24 -8
  158. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +47 -96
  159. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +86 -73
  160. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +17 -16
  161. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +1 -1
  162. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +3 -4
  163. package/contracts/core/Market/PendleMarket.sol +32 -62
  164. package/contracts/core/PendleRouter.sol +1 -1
  165. package/contracts/core/YieldContracts/InterestManagerYT.sol +11 -8
  166. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  167. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +18 -12
  168. package/contracts/core/YieldContracts/PendleYieldToken.sol +167 -140
  169. package/contracts/core/actions/ActionCallback.sol +11 -10
  170. package/contracts/core/actions/ActionCore.sol +84 -22
  171. package/contracts/core/actions/ActionYT.sol +33 -15
  172. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +4 -15
  173. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +20 -50
  174. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +2 -12
  175. package/contracts/interfaces/IPActionCore.sol +72 -1
  176. package/contracts/interfaces/IPActionYT.sol +15 -0
  177. package/contracts/interfaces/IPMarket.sol +7 -26
  178. package/contracts/interfaces/IPRouterStatic.sol +67 -47
  179. package/contracts/interfaces/IPVeToken.sol +0 -2
  180. package/contracts/interfaces/IPVotingEscrow.sol +1 -1
  181. package/contracts/interfaces/IPYieldContractFactory.sol +6 -2
  182. package/contracts/interfaces/IPYieldToken.sol +21 -11
  183. package/contracts/interfaces/ISuperComposableYield.sol +22 -28
  184. package/contracts/interfaces/IYearnVault.sol +8 -0
  185. package/contracts/libraries/RewardManager.sol +9 -6
  186. package/contracts/libraries/RewardManagerAbstract.sol +6 -8
  187. package/contracts/libraries/SCY/SCYIndex.sol +10 -0
  188. package/contracts/libraries/VeBalanceLib.sol +0 -1
  189. package/contracts/libraries/helpers/ArrayLib.sol +11 -0
  190. package/contracts/libraries/helpers/TokenHelper.sol +6 -5
  191. package/contracts/libraries/math/MarketApproxLib.sol +91 -36
  192. package/contracts/libraries/math/Math.sol +2 -4
  193. package/contracts/offchain-helpers/RouterStatic.sol +144 -115
  194. package/deployments/43113-core.json +11 -9
  195. package/deployments/43113-markets/benqi-market-0xF3150c14F776c50C9D397054d38979c7B77FC41D.json +7 -0
  196. package/deployments/80001-core.json +10 -8
  197. package/deployments/80001-markets/benqi-market-0x150b6eb90Bf636eC0c4328d13d1e1d4adDBAF904.json +7 -0
  198. package/package.json +2 -2
  199. package/typechain-types/ActionCore.ts +8 -8
  200. package/typechain-types/CelerReceiver.ts +267 -0
  201. package/typechain-types/CelerSender.ts +164 -0
  202. package/typechain-types/IPActionCore.ts +8 -8
  203. package/typechain-types/IPAllAction.ts +8 -8
  204. package/typechain-types/IPMarket.ts +66 -109
  205. package/typechain-types/IPRouterStatic.ts +64 -41
  206. package/typechain-types/IPVotingEscrowController.ts +154 -0
  207. package/typechain-types/IPYieldContractFactory.ts +34 -0
  208. package/typechain-types/IPYieldToken.ts +12 -112
  209. package/typechain-types/ISuperComposableYield.ts +54 -10
  210. package/typechain-types/PendleAaveV3SCY.ts +54 -29
  211. package/typechain-types/PendleBtrflyScy.ts +56 -58
  212. package/typechain-types/PendleERC4626SCY.ts +54 -29
  213. package/typechain-types/PendleGauge.ts +0 -32
  214. package/typechain-types/PendleGaugeController.ts +282 -0
  215. package/typechain-types/PendleGaugeControllerMainchain.ts +346 -0
  216. package/typechain-types/PendleGaugeControllerSidechain.ts +460 -0
  217. package/typechain-types/PendleJoeLpSCY.ts +56 -58
  218. package/typechain-types/PendleMarket.ts +169 -140
  219. package/typechain-types/PendlePrincipalToken.ts +104 -0
  220. package/typechain-types/PendleQiTokenSCY.ts +54 -29
  221. package/typechain-types/PendleVotingController.ts +865 -0
  222. package/typechain-types/PendleWstEthSCY.ts +54 -29
  223. package/typechain-types/PendleYearnVaultSCY.ts +54 -29
  224. package/typechain-types/PendleYieldContractFactory.ts +66 -19
  225. package/typechain-types/PendleYieldToken.ts +122 -158
  226. package/typechain-types/RouterStatic.ts +297 -24
  227. package/typechain-types/SCYBase.ts +54 -29
  228. package/typechain-types/SCYBaseWithRewards.ts +54 -29
  229. package/typechain-types/VotingControllerStorage.ts +410 -0
  230. package/typechain-types/VotingEscrowController.ts +154 -0
  231. package/typechain-types/VotingEscrowToken.ts +335 -0
  232. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  233. package/typechain-types/factories/ActionCore__factory.ts +2 -2
  234. package/typechain-types/factories/ActionYT__factory.ts +1 -1
  235. package/typechain-types/factories/CelerReceiver__factory.ts +140 -0
  236. package/typechain-types/factories/CelerSender__factory.ts +67 -0
  237. package/typechain-types/factories/ERC20__factory.ts +1 -1
  238. package/typechain-types/factories/IPActionCore__factory.ts +1 -1
  239. package/typechain-types/factories/IPAllAction__factory.ts +1 -1
  240. package/typechain-types/factories/IPMarket__factory.ts +48 -83
  241. package/typechain-types/factories/IPRouterStatic__factory.ts +20 -15
  242. package/typechain-types/factories/IPVotingEscrowController__factory.ts +80 -0
  243. package/typechain-types/factories/IPYieldContractFactory__factory.ts +30 -4
  244. package/typechain-types/factories/IPYieldToken__factory.ts +6 -90
  245. package/typechain-types/factories/ISuperComposableYield__factory.ts +31 -2
  246. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +32 -16
  247. package/typechain-types/factories/PendleBtrflyScy__factory.ts +52 -28
  248. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  249. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  250. package/typechain-types/factories/PendleERC4626SCY__factory.ts +32 -16
  251. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  252. package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +269 -0
  253. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  254. package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +328 -0
  255. package/typechain-types/factories/PendleGaugeController__factory.ts +149 -0
  256. package/typechain-types/factories/PendleGauge__factory.ts +0 -26
  257. package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
  258. package/typechain-types/factories/PendleJoeLpSCY__factory.ts +34 -28
  259. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  260. package/typechain-types/factories/PendleMarket__factory.ts +124 -110
  261. package/typechain-types/factories/PendlePrincipalToken__factory.ts +76 -1
  262. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  263. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +32 -16
  264. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  265. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  266. package/typechain-types/factories/PendleVotingController__factory.ts +584 -0
  267. package/typechain-types/factories/PendleWstEthSCY__factory.ts +32 -16
  268. package/typechain-types/factories/PendleYearnVaultSCY__factory.ts +32 -16
  269. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +54 -19
  270. package/typechain-types/factories/PendleYieldToken__factory.ts +70 -91
  271. package/typechain-types/factories/RouterStatic__factory.ts +165 -12
  272. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +31 -15
  273. package/typechain-types/factories/SCYBase__factory.ts +31 -15
  274. package/typechain-types/factories/VotingControllerStorage__factory.ts +298 -0
  275. package/typechain-types/factories/VotingEscrowController__factory.ts +80 -0
  276. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  277. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  278. package/typechain-types/factories/VotingEscrowToken__factory.ts +225 -0
  279. package/typechain-types/hardhat.d.ts +0 -27
  280. package/typechain-types/index.ts +0 -6
  281. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
  282. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -635
  283. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +0 -4
  284. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +0 -653
  285. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +0 -4
  286. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.json +0 -67
  287. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +0 -4
  288. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +0 -10
  289. package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +0 -123
  290. package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +0 -245
  291. package/contracts/interfaces/IPMarketAddRemoveCallback.sol +0 -18
  292. package/contracts/libraries/solmate/Bytes32AddressLib.sol +0 -14
  293. package/deployments/43113-markets/benqi-market.json +0 -7
  294. package/deployments/80001-markets/benqi-market.json +0 -7
@@ -1,24 +1,27 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity 0.8.15;
3
3
 
4
+ import "../PendleERC20.sol";
4
5
  import "../../interfaces/IPPrincipalToken.sol";
5
6
  import "../../interfaces/ISuperComposableYield.sol";
6
7
  import "../../interfaces/IPMarket.sol";
7
8
  import "../../interfaces/IPMarketFactory.sol";
8
9
  import "../../interfaces/IPMarketSwapCallback.sol";
9
- import "../../interfaces/IPMarketAddRemoveCallback.sol";
10
10
 
11
11
  import "../../libraries/math/LogExpMath.sol";
12
12
  import "../../libraries/math/Math.sol";
13
13
  import "../../libraries/helpers/MiniHelpers.sol";
14
14
 
15
15
  import "../LiquidityMining/PendleGauge.sol";
16
- import "../PendleERC20.sol";
16
+ import "../PendleERC20Permit.sol";
17
17
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
18
18
 
19
- // solhint-disable reason-string
20
- /// Invariances to maintain:
21
- /// - Internal balances totalPt & totalScy not interferred by people transferring tokens in directly
19
+ /**
20
+ Invariances to maintain:
21
+ - Internal balances totalPt & totalScy not interferred by people transferring tokens in directly
22
+ - address(0) & address(this) should never have any rewards & activeBalance accounting done. This is
23
+ guaranteed by address(0) & address(this) check in each updateForTwo function
24
+ */
22
25
  contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
23
26
  using Math for uint256;
24
27
  using Math for int256;
@@ -36,9 +39,6 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
36
39
  // 1 SLOT = 224 bits
37
40
  }
38
41
 
39
- uint8 private constant _NOT_ENTERED = 1;
40
- uint8 private constant _ENTERED = 2;
41
-
42
42
  string private constant NAME = "Pendle Market";
43
43
  string private constant SYMBOL = "PENDLE-LPT";
44
44
 
@@ -81,29 +81,24 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
81
81
 
82
82
  /**
83
83
  * @notice PendleMarket allows users to provide in PT & SCY in exchange for LPs, which
84
- * will grant LP holders more exchange fee over time. All the tokens must be transferred to
85
- * this market prior to the call for LP to be minted. There is no flashAdd
86
- * @param data bytes data to be sent in the callback
84
+ * will grant LP holders more exchange fee over time
87
85
  */
88
- function addLiquidity(
89
- address receiver,
90
- uint256 scyDesired,
91
- uint256 ptDesired,
92
- bytes calldata data
93
- )
86
+ function mint(address receiver)
94
87
  external
95
88
  nonReentrant
96
89
  notExpired
97
- returns (
98
- uint256 lpToAccount,
99
- uint256 scyUsed,
100
- uint256 ptUsed
101
- )
90
+ returns (uint256 lpToAccount)
102
91
  {
103
92
  MarketState memory market = readState(true);
104
93
  SCYIndex index = SCY.newIndex();
105
94
 
95
+ uint256 scyDesired = IERC20(SCY).balanceOf(address(this)) - market.totalScy.Uint();
96
+ uint256 ptDesired = IERC20(PT).balanceOf(address(this)) - market.totalPt.Uint();
97
+
106
98
  uint256 lpToReserve;
99
+ uint256 scyUsed;
100
+ uint256 ptUsed;
101
+
107
102
  (lpToReserve, lpToAccount, scyUsed, ptUsed) = market.addLiquidity(
108
103
  index,
109
104
  scyDesired,
@@ -121,39 +116,23 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
121
116
 
122
117
  _writeState(market);
123
118
 
124
- require(market.totalPt.Uint() <= IERC20(PT).balanceOf(address(this)));
125
- require(market.totalScy.Uint() <= IERC20(SCY).balanceOf(address(this)));
126
-
127
- emit AddLiquidity(receiver, lpToAccount, scyUsed, ptUsed);
128
-
129
- // no flashAdd, we only do callback after all the tokens have been provided
130
- if (data.length > 0) {
131
- IPMarketAddRemoveCallback(msg.sender).addLiquidityCallback(
132
- lpToAccount,
133
- scyUsed,
134
- ptUsed,
135
- data
136
- );
137
- }
119
+ emit Mint(receiver, lpToAccount, scyUsed, ptUsed);
138
120
  }
139
121
 
140
122
  /**
141
123
  * @notice LP Holders can burn their LP to receive back SCY & PT proportionally
142
124
  * to their share of market
143
- * @dev steps working of this contract
144
- - SCY & PT will be first transferred out to receiver
145
- - Callback to msg.sender if data.length > 0
146
- - Ensure the corresponding amount of LP has been transferred to this contract
147
- * @param data bytes data to be sent in the callback
148
125
  */
149
- function removeLiquidity(
150
- address receiverScy,
151
- address receiverPt,
152
- uint256 lpToRemove,
153
- bytes calldata data
154
- ) external nonReentrant returns (uint256 scyToAccount, uint256 ptToAccount) {
126
+ function burn(address receiverScy, address receiverPt)
127
+ external
128
+ nonReentrant
129
+ returns (uint256 scyToAccount, uint256 ptToAccount)
130
+ {
155
131
  MarketState memory market = readState(true);
156
132
 
133
+ uint256 lpToRemove = balanceOf(address(this));
134
+ _burn(address(this), lpToRemove);
135
+
157
136
  (scyToAccount, ptToAccount) = market.removeLiquidity(lpToRemove, true);
158
137
 
159
138
  IERC20(SCY).safeTransfer(receiverScy, scyToAccount);
@@ -161,19 +140,7 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
161
140
 
162
141
  _writeState(market);
163
142
 
164
- if (data.length > 0) {
165
- IPMarketAddRemoveCallback(msg.sender).removeLiquidityCallback(
166
- lpToRemove,
167
- scyToAccount,
168
- ptToAccount,
169
- data
170
- );
171
- }
172
-
173
- // this checks enough lp has been transferred in
174
- _burn(address(this), lpToRemove);
175
-
176
- emit RemoveLiquidity(receiverScy, receiverPt, lpToRemove, scyToAccount, ptToAccount);
143
+ emit Burn(receiverScy, receiverPt, lpToRemove, scyToAccount, ptToAccount);
177
144
  }
178
145
 
179
146
  /**
@@ -209,7 +176,7 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
209
176
  }
210
177
 
211
178
  // have received enough PT
212
- require(market.totalPt.Uint() <= IERC20(PT).balanceOf(address(this)));
179
+ require(market.totalPt.Uint() <= IERC20(PT).balanceOf(address(this)), "insufficient PT");
213
180
 
214
181
  emit Swap(receiver, exactPtIn.neg(), netScyOut.Int(), netScyToReserve);
215
182
  }
@@ -246,7 +213,10 @@ contract PendleMarket is PendleERC20, PendleGauge, IPMarket {
246
213
  }
247
214
 
248
215
  // have received enough SCY
249
- require(market.totalScy.Uint() <= IERC20(SCY).balanceOf(address(this)));
216
+ require(
217
+ market.totalScy.Uint() <= IERC20(SCY).balanceOf(address(this)),
218
+ "insufficient SCY"
219
+ );
250
220
 
251
221
  emit Swap(receiver, exactPtOut.Int(), netScyIn.neg(), netScyToReserve);
252
222
  }
@@ -56,7 +56,7 @@ contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, PermissionsV2Upg
56
56
  sig == IPActionCore.swapExactScyForPt.selector ||
57
57
  sig == IPActionCore.swapExactRawTokenForPt.selector ||
58
58
  sig == IPActionCore.swapExactPtForRawToken.selector ||
59
- sig == IPActionCore.redeemDueIncome.selector
59
+ sig == IPActionCore.redeemDueInterestAndRewards.selector
60
60
  ) {
61
61
  return ACTION_CORE;
62
62
  } else if (
@@ -37,10 +37,11 @@ abstract contract InterestManagerYT is TokenHelper, IPInterestManagerYT {
37
37
  }
38
38
 
39
39
  function _distributeInterestForTwo(address user1, address user2) internal {
40
- // no updateRewardIndex since we rely on SCY's rewardIndexes
41
40
  uint256 index = _getInterestIndex();
42
- if (user1 != address(0) && user1 != address(this)) _distributeInterest(user1, index);
43
- if (user2 != address(0) && user2 != address(this)) _distributeInterest(user2, index);
41
+ if (user1 != address(0) && user1 != address(this))
42
+ _distributeInterestPrivate(user1, index);
43
+ if (user2 != address(0) && user2 != address(this))
44
+ _distributeInterestPrivate(user2, index);
44
45
  }
45
46
 
46
47
  function _doTransferOutInterest(
@@ -48,13 +49,12 @@ abstract contract InterestManagerYT is TokenHelper, IPInterestManagerYT {
48
49
  address SCY,
49
50
  address factory
50
51
  ) internal returns (uint256 interestAmount) {
51
- uint256 interestPreFee = userInterest[user].accrued;
52
- userInterest[user].accrued = 0;
53
-
54
52
  address treasury = IPYieldContractFactory(factory).treasury();
55
-
56
53
  uint256 feeRate = IPYieldContractFactory(factory).interestFeeRate();
57
54
 
55
+ uint256 interestPreFee = userInterest[user].accrued;
56
+ userInterest[user].accrued = 0;
57
+
58
58
  uint256 feeAmount = interestPreFee.mulDown(feeRate);
59
59
  interestAmount = interestPreFee - feeAmount;
60
60
 
@@ -62,7 +62,10 @@ abstract contract InterestManagerYT is TokenHelper, IPInterestManagerYT {
62
62
  _transferOut(SCY, user, interestAmount);
63
63
  }
64
64
 
65
- function _distributeInterest(address user, uint256 currentIndex) private {
65
+ // should only be callable from `_distributeInterestForTwo` & make sure user != address(0) && user != address(this)
66
+ function _distributeInterestPrivate(address user, uint256 currentIndex) private {
67
+ assert(user != address(0) && user != address(this));
68
+
66
69
  uint256 prevIndex = userInterest[user].index;
67
70
 
68
71
  if (prevIndex == currentIndex) return;
@@ -4,11 +4,11 @@ pragma solidity 0.8.15;
4
4
  import "../../interfaces/IPPrincipalToken.sol";
5
5
  import "../../interfaces/IPYieldToken.sol";
6
6
 
7
- import "../PendleERC20.sol";
7
+ import "../PendleERC20Permit.sol";
8
8
  import "../../libraries/helpers/MiniHelpers.sol";
9
9
  import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
10
10
 
11
- contract PendlePrincipalToken is PendleERC20, Initializable, IPPrincipalToken {
11
+ contract PendlePrincipalToken is PendleERC20Permit, Initializable, IPPrincipalToken {
12
12
  address public immutable SCY;
13
13
  address public immutable factory;
14
14
  uint256 public immutable expiry;
@@ -30,7 +30,7 @@ contract PendlePrincipalToken is PendleERC20, Initializable, IPPrincipalToken {
30
30
  string memory _symbol,
31
31
  uint8 __decimals,
32
32
  uint256 _expiry
33
- ) PendleERC20(_name, _symbol, __decimals) {
33
+ ) PendleERC20Permit(_name, _symbol, __decimals) {
34
34
  SCY = _SCY;
35
35
  expiry = _expiry;
36
36
  factory = msg.sender;
@@ -46,13 +46,13 @@ contract PendleYieldContractFactory is PermissionsV2Upg, Initializable, IPYieldC
46
46
 
47
47
  address public pendleYtCreationCodePointer;
48
48
 
49
- uint256 public expiryDivisor;
50
- uint256 public interestFeeRate;
51
- address public treasury;
49
+ // 1 SLOT
50
+ uint128 public interestFeeRate; // a fixed point number
51
+ uint128 public rewardFeeRate; // a fixed point number
52
52
 
53
- /// number of contracts that have been deployed from this address
54
- /// must be increased everytime a new contract is deployed
55
- uint256 public numContractDeployed;
53
+ // 1 SLOT
54
+ address public treasury;
55
+ uint96 public expiryDivisor;
56
56
 
57
57
  // SCY => expiry => address
58
58
  mapping(address => mapping(uint256 => address)) public getPT;
@@ -61,15 +61,16 @@ contract PendleYieldContractFactory is PermissionsV2Upg, Initializable, IPYieldC
61
61
  mapping(address => bool) public isYT;
62
62
 
63
63
  constructor(
64
- uint256 _expiryDivisor,
65
- uint256 _interestFeeRate,
64
+ uint96 _expiryDivisor,
65
+ uint128 _interestFeeRate,
66
+ uint128 _rewardFeeRate,
66
67
  address _treasury,
67
68
  address _governanceManager
68
69
  ) PermissionsV2Upg(_governanceManager) {
69
70
  setExpiryDivisor(_expiryDivisor);
70
71
  setInterestFeeRate(_interestFeeRate);
72
+ setRewardFeeRate(_rewardFeeRate);
71
73
  setTreasury(_treasury);
72
- numContractDeployed++;
73
74
  }
74
75
 
75
76
  function initialize(bytes memory _pendleYtCreationCode) external initializer {
@@ -130,20 +131,25 @@ contract PendleYieldContractFactory is PermissionsV2Upg, Initializable, IPYieldC
130
131
  emit CreateYieldContract(SCY, PT, YT, expiry);
131
132
  }
132
133
 
133
- function setExpiryDivisor(uint256 newExpiryDivisor) public onlyGovernance {
134
+ function setExpiryDivisor(uint96 newExpiryDivisor) public onlyGovernance {
134
135
  require(newExpiryDivisor != 0, "zero value");
135
136
  expiryDivisor = newExpiryDivisor;
136
137
  emit SetExpiryDivisor(newExpiryDivisor);
137
138
  }
138
139
 
139
- function setInterestFeeRate(uint256 newInterestFeeRate) public onlyGovernance {
140
+ function setInterestFeeRate(uint128 newInterestFeeRate) public onlyGovernance {
140
141
  interestFeeRate = newInterestFeeRate;
141
142
  emit SetInterestFeeRate(newInterestFeeRate);
142
143
  }
143
144
 
145
+ function setRewardFeeRate(uint128 newInterestFeeRate) public onlyGovernance {
146
+ rewardFeeRate = newInterestFeeRate;
147
+ emit SetInterestFeeRate(newInterestFeeRate);
148
+ }
149
+
144
150
  function setTreasury(address newTreasury) public onlyGovernance {
145
151
  require(newTreasury != address(0), "zero address");
146
152
  treasury = newTreasury;
147
- emit SetTreasury(treasury);
153
+ emit SetTreasury(newTreasury);
148
154
  }
149
155
  }