@pendle/core-v2 0.6.8 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (519) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +4 -0
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +751 -0
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +4 -0
  4. package/build/artifacts/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol/WadRayMath.json +3 -3
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +4 -0
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +27 -0
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +4 -0
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +761 -0
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +4 -0
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +635 -0
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +4 -0
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +609 -0
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +4 -0
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +653 -0
  15. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +4 -0
  16. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +622 -0
  17. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +4 -0
  18. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +622 -0
  19. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +4 -0
  20. package/build/artifacts/contracts/SuperComposableYield/{ISuperComposableYield.sol/ISuperComposableYield.json → base-implementations/SCYBase.sol/SCYBase.json} +221 -141
  21. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +4 -0
  22. package/build/artifacts/contracts/SuperComposableYield/{implementations → base-implementations}/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +247 -223
  23. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.dbg.json +4 -0
  24. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol/CelerReceiver.json +128 -0
  25. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.dbg.json +4 -0
  26. package/build/artifacts/contracts/{SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.json → core/LiquidityMining/CelerAbstracts/CelerSender.sol/CelerSender.json} +29 -33
  27. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.dbg.json +4 -0
  28. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol/PendleGaugeController.json +193 -0
  29. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.dbg.json +4 -0
  30. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchain.json +255 -0
  31. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.dbg.json +4 -0
  32. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechain.json +318 -0
  33. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +4 -0
  34. package/build/artifacts/contracts/{interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.json → core/LiquidityMining/PendleGauge.sol/PendleGauge.json} +57 -65
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.dbg.json +4 -0
  36. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol/PendleVotingController.json +707 -0
  37. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.dbg.json +4 -0
  38. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol/VotingControllerStorage.json +342 -0
  39. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +4 -0
  40. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +547 -0
  41. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +4 -0
  42. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +353 -0
  43. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.dbg.json +4 -0
  44. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol/VotingEscrowToken.json +138 -0
  45. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +4 -0
  46. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +922 -0
  47. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +4 -0
  48. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +345 -0
  49. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +4 -0
  50. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +254 -0
  51. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +4 -0
  52. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +329 -0
  53. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -20
  55. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +4 -0
  56. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +445 -0
  57. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +4 -0
  58. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +344 -0
  59. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +4 -0
  60. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +750 -0
  61. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  63. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +123 -77
  65. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +39 -42
  67. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json +163 -1
  69. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  70. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json +0 -13
  71. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  72. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +1 -14
  73. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +4 -0
  74. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.json +10 -0
  75. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.json +39 -0
  77. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.json +13 -0
  81. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +4 -0
  82. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.json +74 -0
  83. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +4 -0
  84. package/build/artifacts/contracts/interfaces/{IVePToken.sol/IVePToken.json → ICelerMessageBus.sol/ICelerMessageBus.json} +21 -11
  85. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +4 -0
  86. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.json +45 -0
  87. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +4 -0
  88. package/build/artifacts/contracts/{core/PendleBaseToken.sol/PendleBaseToken.json → interfaces/IERC4626.sol/IERC4626.json} +53 -68
  89. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +4 -0
  92. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.json +962 -0
  93. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +122 -58
  95. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.json +36 -21
  97. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +116 -81
  99. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +4 -0
  100. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.json +109 -0
  101. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +4 -0
  102. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.json +132 -0
  103. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +35 -54
  106. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.json +31 -0
  109. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.json +5 -5
  113. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +4 -0
  115. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +99 -0
  116. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +4 -0
  117. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.json +167 -0
  118. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +4 -0
  119. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.json +148 -0
  120. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +85 -83
  123. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +4 -0
  124. package/build/artifacts/contracts/interfaces/{IPBaseToken.sol/IPBaseToken.json → IQiAvax.sol/IQiAvax.json} +106 -15
  125. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  126. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.json +117 -0
  127. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  128. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.json +117 -0
  129. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  130. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +4 -0
  131. package/build/artifacts/contracts/{periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json → interfaces/IRewardManager.sol/IRewardManager.json} +12 -14
  132. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +4 -0
  133. package/build/artifacts/contracts/{SuperComposableYield/implementations/SCYBase.sol/SCYBase.json → interfaces/ISuperComposableYield.sol/ISuperComposableYield.json} +183 -181
  134. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  135. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  136. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.json +13 -0
  137. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  138. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.json +13 -0
  139. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  140. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.json +13 -0
  141. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +4 -0
  142. package/build/artifacts/contracts/{SuperComposableYield/implementations → libraries}/RewardManager.sol/RewardManager.json +44 -33
  143. package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.dbg.json +4 -0
  144. package/build/artifacts/contracts/libraries/RewardManagerMini.sol/RewardManagerMini.json +101 -0
  145. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +4 -0
  146. package/build/artifacts/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol}/SCYIndexLib.json +3 -3
  147. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +4 -0
  148. package/build/artifacts/contracts/{SuperComposableYield → libraries/SCY}/SCYUtils.sol/SCYUtils.json +3 -3
  149. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +4 -0
  150. package/build/artifacts/contracts/libraries/{math/MarketMathAux.sol/MarketMathAux.json → VeBalanceLib.sol/VeBalanceLib.json} +4 -4
  151. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +4 -0
  152. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +10 -0
  153. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  154. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
  155. package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.dbg.json +4 -0
  156. package/build/artifacts/contracts/libraries/helpers/MiniDeployer.sol/MiniDeployer.json +10 -0
  157. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +4 -0
  158. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +10 -0
  159. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +4 -0
  160. package/build/artifacts/contracts/{core/actions/base/ActionType.sol/ActionType.json → libraries/helpers/TokenHelper.sol/TokenHelper.json} +2 -2
  161. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  162. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
  163. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  164. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  165. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  166. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  167. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  168. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  169. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +4 -0
  170. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +10 -0
  171. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +4 -0
  172. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +10 -0
  173. package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.dbg.json +4 -0
  174. package/build/artifacts/contracts/libraries/solmate/LibRLP.sol/LibRLP.json +10 -0
  175. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +4 -0
  176. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +10 -0
  177. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +4 -0
  178. package/build/artifacts/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol}/JoeLibrary.json +3 -3
  179. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +4 -0
  180. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json +24 -0
  181. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +4 -0
  182. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +862 -0
  183. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  184. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
  185. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  186. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +147 -0
  187. package/contracts/{core/PendleSCYImpl → SuperComposableYield/SCY-implementations}/AaveV3/WadRayMath.sol +1 -1
  188. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +74 -0
  189. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +187 -0
  190. package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +123 -0
  191. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +99 -0
  192. package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +245 -0
  193. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +107 -0
  194. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +120 -0
  195. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +197 -0
  196. package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +131 -0
  197. package/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiver.sol +47 -0
  198. package/contracts/core/LiquidityMining/CelerAbstracts/CelerSender.sol +52 -0
  199. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeController.sol +141 -0
  200. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol +30 -0
  201. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol +22 -0
  202. package/contracts/core/LiquidityMining/PendleGauge.sol +118 -0
  203. package/contracts/core/LiquidityMining/README.md +63 -0
  204. package/contracts/core/LiquidityMining/VotingController/PendleVotingController.sol +323 -0
  205. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorage.sol +224 -0
  206. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +241 -0
  207. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +73 -0
  208. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowToken.sol +53 -0
  209. package/contracts/core/{PendleMarket.sol → Market/PendleMarket.sol} +139 -103
  210. package/contracts/core/{PendleMarketFactory.sol → Market/PendleMarketFactory.sol} +62 -19
  211. package/contracts/core/PendleERC20.sol +358 -0
  212. package/contracts/core/PendleERC20Permit.sol +84 -0
  213. package/contracts/core/PendleRouter.sol +6 -12
  214. package/contracts/core/YieldContracts/InterestManagerYT.sol +87 -0
  215. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +52 -0
  216. package/contracts/core/{PendleYieldContractFactory.sol → YieldContracts/PendleYieldContractFactory.sol} +46 -25
  217. package/contracts/core/YieldContracts/PendleYieldToken.sol +340 -0
  218. package/contracts/core/actions/ActionCallback.sol +63 -43
  219. package/contracts/core/actions/ActionCore.sol +95 -78
  220. package/contracts/core/actions/ActionYT.sol +35 -86
  221. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +133 -78
  222. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +31 -46
  223. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +127 -45
  224. package/contracts/core/actions/base/CallbackHelper.sol +81 -0
  225. package/contracts/interfaces/IAToken.sol +11 -1
  226. package/contracts/interfaces/IAavePool.sol +1 -1
  227. package/contracts/interfaces/IAaveRewardsController.sol +1 -1
  228. package/contracts/interfaces/IBenQiComptroller.sol +3 -1
  229. package/contracts/interfaces/IBenQiInterestRateModel.sol +16 -0
  230. package/contracts/interfaces/ICelerMessageBus.sol +28 -0
  231. package/contracts/interfaces/ICelerMessageReceiverApp.sol +25 -0
  232. package/contracts/interfaces/IERC4626.sol +39 -0
  233. package/contracts/interfaces/IJoeRouter01.sol +1 -1
  234. package/contracts/interfaces/IJoeRouter02.sol +52 -0
  235. package/contracts/interfaces/IPActionCore.sol +44 -27
  236. package/contracts/interfaces/IPActionYT.sol +12 -9
  237. package/contracts/interfaces/IPAllAction.sol +2 -3
  238. package/contracts/interfaces/IPGaugeController.sol +22 -0
  239. package/contracts/interfaces/IPGaugeControllerMainchain.sol +12 -0
  240. package/contracts/interfaces/IPGovernanceManager.sol +1 -1
  241. package/contracts/interfaces/IPInterestManagerYT.sol +9 -0
  242. package/contracts/interfaces/IPMarket.sol +13 -13
  243. package/contracts/interfaces/IPMarketAddRemoveCallback.sol +3 -3
  244. package/contracts/interfaces/IPMarketFactory.sol +8 -1
  245. package/contracts/interfaces/IPMarketSwapCallback.sol +1 -1
  246. package/contracts/interfaces/IPPermissionsV2Upg.sol +1 -1
  247. package/contracts/interfaces/IPPrincipalToken.sol +9 -5
  248. package/contracts/interfaces/IPRouterStatic.sol +1 -1
  249. package/contracts/interfaces/IPVeToken.sol +10 -5
  250. package/contracts/interfaces/IPVotingController.sol +21 -0
  251. package/contracts/interfaces/IPVotingEscrow.sol +14 -22
  252. package/contracts/interfaces/IPYieldContractFactory.sol +1 -1
  253. package/contracts/interfaces/IPYieldToken.sol +17 -17
  254. package/contracts/interfaces/IQiAvax.sol +31 -0
  255. package/contracts/interfaces/IQiErc20.sol +1 -1
  256. package/contracts/interfaces/IQiToken.sol +22 -1
  257. package/contracts/interfaces/IREDACTEDStaking.sol +1 -1
  258. package/contracts/interfaces/IRewardManager.sol +9 -0
  259. package/contracts/interfaces/ISuperComposableYield.sol +182 -0
  260. package/contracts/interfaces/IWETH.sol +1 -1
  261. package/contracts/interfaces/IWXBTRFLY.sol +3 -1
  262. package/contracts/interfaces/IWstETH.sol +3 -1
  263. package/contracts/interfaces/IYearnVault.sol +3 -1
  264. package/contracts/libraries/RewardManager.sol +78 -0
  265. package/contracts/libraries/RewardManagerAbstract.sol +81 -0
  266. package/contracts/libraries/{SCYIndex.sol → SCY/SCYIndex.sol} +8 -8
  267. package/contracts/libraries/SCY/SCYUtils.sol +18 -0
  268. package/contracts/libraries/VeBalanceLib.sol +114 -0
  269. package/contracts/libraries/helpers/ArrayLib.sol +65 -0
  270. package/contracts/libraries/helpers/ExpiryUtilsLib.sol +1 -1
  271. package/contracts/libraries/helpers/MiniDeployer.sol +23 -0
  272. package/contracts/libraries/helpers/MiniHelpers.sol +15 -0
  273. package/contracts/libraries/helpers/TokenHelper.sol +105 -0
  274. package/contracts/libraries/math/LogExpMath.sol +59 -1
  275. package/contracts/libraries/math/MarketApproxLib.sol +167 -164
  276. package/contracts/libraries/math/MarketMathCore.sol +106 -25
  277. package/contracts/libraries/math/Math.sol +28 -21
  278. package/contracts/libraries/math/WeekMath.sol +19 -0
  279. package/contracts/libraries/solmate/Bytes32AddressLib.sol +14 -0
  280. package/contracts/libraries/solmate/LibRLP.sol +30 -0
  281. package/contracts/libraries/solmate/SSTORE2.sol +99 -0
  282. package/contracts/libraries/{JoeLibrary.sol → traderjoe/JoeLibrary.sol} +3 -2
  283. package/contracts/{periphery → libraries/traderjoe}/PendleJoeSwapHelperUpg.sol +8 -10
  284. package/contracts/{core → offchain-helpers}/RouterStatic.sol +24 -19
  285. package/contracts/periphery/PendleGovernanceManager.sol +1 -1
  286. package/contracts/periphery/PermissionsV2Upg.sol +1 -1
  287. package/package.json +1 -1
  288. package/typechain-types/ActionCore.ts +169 -96
  289. package/typechain-types/ActionSCYAndPTBase.ts +210 -0
  290. package/typechain-types/ActionSCYAndPYBase.ts +0 -13
  291. package/typechain-types/ActionSCYAndYTBase.ts +8 -21
  292. package/typechain-types/ActionYT.ts +73 -64
  293. package/typechain-types/BeaconProxy.ts +97 -0
  294. package/typechain-types/CelerReceiver.ts +267 -0
  295. package/typechain-types/CelerSender.ts +197 -0
  296. package/typechain-types/ERC1967Upgrade.ts +97 -0
  297. package/typechain-types/ERC20Permit.ts +521 -0
  298. package/typechain-types/IAToken.ts +55 -0
  299. package/typechain-types/IBeacon.ts +87 -0
  300. package/typechain-types/IBenQiComptroller.ts +13 -0
  301. package/typechain-types/IBenQiInterestRateModel.ts +162 -0
  302. package/typechain-types/ICelerMessageBus.ts +134 -0
  303. package/typechain-types/ICelerMessageReceiverApp.ts +120 -0
  304. package/typechain-types/IERC1822Proxiable.ts +87 -0
  305. package/typechain-types/IERC20Permit.ts +175 -0
  306. package/typechain-types/IERC4626.ts +463 -0
  307. package/typechain-types/IJoeRouter02.ts +1420 -0
  308. package/typechain-types/IPActionCore.ts +169 -83
  309. package/typechain-types/IPActionYT.ts +65 -43
  310. package/typechain-types/IPAllAction.ts +190 -137
  311. package/typechain-types/IPGauge.ts +104 -0
  312. package/typechain-types/IPGaugeController.ts +191 -0
  313. package/typechain-types/IPGaugeControllerMainchain.ts +236 -0
  314. package/typechain-types/IPMarket.ts +73 -74
  315. package/typechain-types/IPMarketFactory.ts +27 -0
  316. package/typechain-types/IPPrincipalToken.ts +8 -20
  317. package/typechain-types/IPVeToken.ts +198 -0
  318. package/typechain-types/IPVotingController.ts +179 -0
  319. package/typechain-types/IPVotingEscrow.ts +217 -0
  320. package/typechain-types/IPVotingEscrowController.ts +154 -0
  321. package/typechain-types/IPYieldToken.ts +176 -213
  322. package/typechain-types/IQiAvax.ts +551 -0
  323. package/typechain-types/IQiErc20.ts +171 -0
  324. package/typechain-types/IQiToken.ts +171 -0
  325. package/typechain-types/IRewardManager.ts +16 -87
  326. package/typechain-types/ISuperComposableYield.ts +283 -269
  327. package/typechain-types/IWXBTRFLY.ts +13 -0
  328. package/typechain-types/IWstETH.ts +13 -0
  329. package/typechain-types/IYearnVault.ts +13 -0
  330. package/typechain-types/PendleAaveV3SCY.ts +382 -477
  331. package/typechain-types/PendleBtrflyScy.ts +287 -348
  332. package/typechain-types/PendleERC20.ts +339 -0
  333. package/typechain-types/PendleERC20Permit.ts +443 -0
  334. package/typechain-types/PendleERC4626SCY.ts +801 -0
  335. package/typechain-types/PendleGauge.ts +276 -0
  336. package/typechain-types/PendleGaugeController.ts +346 -0
  337. package/typechain-types/PendleGaugeControllerMainchain.ts +410 -0
  338. package/typechain-types/PendleGaugeControllerSidechain.ts +524 -0
  339. package/typechain-types/PendleJoeLpSCY.ts +837 -0
  340. package/typechain-types/PendleJoeSwapHelperUpg.ts +0 -13
  341. package/typechain-types/PendleMarket.ts +265 -151
  342. package/typechain-types/PendleMarketFactory.ts +111 -16
  343. package/typechain-types/PendleMarketRewards.ts +1317 -0
  344. package/typechain-types/PendlePrincipalToken.ts +103 -130
  345. package/typechain-types/PendleQiTokenHelper.ts +57 -0
  346. package/typechain-types/PendleQiTokenSCY.ts +991 -0
  347. package/typechain-types/PendleRouter.ts +0 -19
  348. package/typechain-types/PendleVotingController.ts +1042 -0
  349. package/typechain-types/PendleWstEthSCY.ts +813 -0
  350. package/typechain-types/PendleYearnVaultScy.ts +278 -339
  351. package/typechain-types/PendleYieldContractFactory.ts +43 -27
  352. package/typechain-types/PendleYieldToken.ts +297 -428
  353. package/typechain-types/RewardManager.ts +70 -69
  354. package/typechain-types/RewardManagerMini.ts +200 -0
  355. package/typechain-types/SCYBase.ts +276 -335
  356. package/typechain-types/SCYBaseWithRewards.ts +367 -424
  357. package/typechain-types/VotingControllerStorage.ts +507 -0
  358. package/typechain-types/VotingEscrowPendleMainchain.ts +854 -0
  359. package/typechain-types/VotingEscrowPendleSidechain.ts +546 -0
  360. package/typechain-types/VotingEscrowToken.ts +251 -0
  361. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  362. package/typechain-types/factories/ActionCore__factory.ts +122 -80
  363. package/typechain-types/factories/ActionRedeem__factory.ts +1 -1
  364. package/typechain-types/factories/ActionSCYAndPTBase__factory.ts +187 -0
  365. package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +0 -13
  366. package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +1 -14
  367. package/typechain-types/factories/ActionYT__factory.ts +39 -48
  368. package/typechain-types/factories/BeaconProxy__factory.ts +141 -0
  369. package/typechain-types/factories/CelerReceiver__factory.ts +140 -0
  370. package/typechain-types/factories/CelerSender__factory.ts +85 -0
  371. package/typechain-types/factories/ERC1967Upgrade__factory.ts +71 -0
  372. package/typechain-types/factories/ERC20Permit__factory.ts +368 -0
  373. package/typechain-types/factories/ERC20__factory.ts +1 -1
  374. package/typechain-types/factories/IAToken__factory.ts +39 -0
  375. package/typechain-types/factories/IBeacon__factory.ts +36 -0
  376. package/typechain-types/factories/IBenQiComptroller__factory.ts +13 -0
  377. package/typechain-types/factories/IBenQiInterestRateModel__factory.ts +93 -0
  378. package/typechain-types/factories/ICelerMessageBus__factory.ts +68 -0
  379. package/typechain-types/factories/ICelerMessageReceiverApp__factory.ts +64 -0
  380. package/typechain-types/factories/IERC1822Proxiable__factory.ts +39 -0
  381. package/typechain-types/factories/IERC20Permit__factory.ts +98 -0
  382. package/typechain-types/factories/IERC4626__factory.ts +330 -0
  383. package/typechain-types/factories/IJoeRouter02__factory.ts +974 -0
  384. package/typechain-types/factories/IPActionCore__factory.ts +122 -58
  385. package/typechain-types/factories/IPActionYT__factory.ts +36 -21
  386. package/typechain-types/factories/IPAllAction__factory.ts +116 -81
  387. package/typechain-types/factories/IPGaugeControllerMainchain__factory.ts +151 -0
  388. package/typechain-types/factories/IPGaugeController__factory.ts +124 -0
  389. package/typechain-types/factories/IPGauge__factory.ts +42 -0
  390. package/typechain-types/factories/IPMarketFactory__factory.ts +31 -0
  391. package/typechain-types/factories/IPMarket__factory.ts +35 -54
  392. package/typechain-types/factories/IPPrincipalToken__factory.ts +5 -5
  393. package/typechain-types/factories/IPVeToken__factory.ts +111 -0
  394. package/typechain-types/factories/IPVotingController__factory.ts +182 -0
  395. package/typechain-types/factories/IPVotingEscrowController__factory.ts +80 -0
  396. package/typechain-types/factories/IPVotingEscrow__factory.ts +163 -0
  397. package/typechain-types/factories/IPYieldToken__factory.ts +85 -83
  398. package/typechain-types/factories/IQiAvax__factory.ts +362 -0
  399. package/typechain-types/factories/IQiErc20__factory.ts +117 -0
  400. package/typechain-types/factories/IQiToken__factory.ts +117 -0
  401. package/typechain-types/factories/IRewardManager__factory.ts +5 -47
  402. package/typechain-types/factories/ISuperComposableYield__factory.ts +201 -138
  403. package/typechain-types/factories/IWXBTRFLY__factory.ts +13 -0
  404. package/typechain-types/factories/IWstETH__factory.ts +13 -0
  405. package/typechain-types/factories/IYearnVault__factory.ts +13 -0
  406. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +246 -315
  407. package/typechain-types/factories/PendleBtrflyScy__factory.ts +200 -234
  408. package/typechain-types/factories/PendleERC20Permit__factory.ts +405 -0
  409. package/typechain-types/factories/PendleERC20__factory.ts +327 -0
  410. package/typechain-types/factories/PendleERC4626SCY__factory.ts +678 -0
  411. package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +332 -0
  412. package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +391 -0
  413. package/typechain-types/factories/PendleGaugeController__factory.ts +212 -0
  414. package/typechain-types/factories/PendleGauge__factory.ts +171 -0
  415. package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
  416. package/typechain-types/factories/PendleJoeLpSCY__factory.ts +726 -0
  417. package/typechain-types/factories/PendleJoeSwapHelperUpg__factory.ts +0 -13
  418. package/typechain-types/factories/PendleMarketFactory__factory.ts +90 -5
  419. package/typechain-types/factories/PendleMarketRewards__factory.ts +1140 -0
  420. package/typechain-types/factories/PendleMarket__factory.ts +182 -94
  421. package/typechain-types/factories/PendlePrincipalToken__factory.ts +74 -77
  422. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +99 -0
  423. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +845 -0
  424. package/typechain-types/factories/PendleRouter__factory.ts +1 -23
  425. package/typechain-types/factories/PendleVotingController__factory.ts +776 -0
  426. package/typechain-types/factories/PendleWstEthSCY__factory.ts +686 -0
  427. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +218 -243
  428. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +39 -29
  429. package/typechain-types/factories/PendleYieldToken__factory.ts +153 -211
  430. package/typechain-types/factories/RewardManagerMini__factory.ts +116 -0
  431. package/typechain-types/factories/RewardManager__factory.ts +43 -32
  432. package/typechain-types/factories/RouterStatic__factory.ts +1 -1
  433. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +242 -218
  434. package/typechain-types/factories/SCYBase__factory.ts +195 -176
  435. package/typechain-types/factories/VotingControllerStorage__factory.ts +361 -0
  436. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +616 -0
  437. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +415 -0
  438. package/typechain-types/factories/VotingEscrowToken__factory.ts +153 -0
  439. package/typechain-types/hardhat.d.ts +338 -131
  440. package/typechain-types/index.ts +92 -38
  441. package/build/artifacts/contracts/SuperComposableYield/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +0 -4
  442. package/build/artifacts/contracts/SuperComposableYield/SCYUtils.sol/SCYUtils.dbg.json +0 -4
  443. package/build/artifacts/contracts/SuperComposableYield/implementations/IRewardManager.sol/IRewardManager.dbg.json +0 -4
  444. package/build/artifacts/contracts/SuperComposableYield/implementations/RewardManager.sol/RewardManager.dbg.json +0 -4
  445. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBase.sol/SCYBase.dbg.json +0 -4
  446. package/build/artifacts/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +0 -4
  447. package/build/artifacts/contracts/core/PendleBaseToken.sol/PendleBaseToken.dbg.json +0 -4
  448. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.dbg.json +0 -4
  449. package/build/artifacts/contracts/core/PendleMarket.sol/PendleMarket.json +0 -842
  450. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +0 -4
  451. package/build/artifacts/contracts/core/PendleMarketFactory.sol/PendleMarketFactory.json +0 -265
  452. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +0 -4
  453. package/build/artifacts/contracts/core/PendlePrincipalToken.sol/PendlePrincipalToken.json +0 -452
  454. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +0 -4
  455. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +0 -783
  456. package/build/artifacts/contracts/core/PendleSCYImpl/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +0 -4
  457. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.dbg.json +0 -4
  458. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol/PendleBenQiErc20SCY.json +0 -766
  459. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
  460. package/build/artifacts/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -641
  461. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.dbg.json +0 -4
  462. package/build/artifacts/contracts/core/PendleSCYImpl/PendleStETHSCY.sol/PendleStEthSCY.json +0 -623
  463. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.dbg.json +0 -4
  464. package/build/artifacts/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol/PendleYearnVaultScy.json +0 -623
  465. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +0 -4
  466. package/build/artifacts/contracts/core/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +0 -339
  467. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.dbg.json +0 -4
  468. package/build/artifacts/contracts/core/PendleYieldToken.sol/PendleYieldToken.json +0 -808
  469. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.dbg.json +0 -4
  470. package/build/artifacts/contracts/core/RouterStatic.sol/RouterStatic.json +0 -862
  471. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.dbg.json +0 -4
  472. package/build/artifacts/contracts/core/actions/ActionRedeem.sol/ActionRedeem.json +0 -55
  473. package/build/artifacts/contracts/core/actions/base/ActionType.sol/ActionType.dbg.json +0 -4
  474. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.dbg.json +0 -4
  475. package/build/artifacts/contracts/interfaces/IPActionRedeem.sol/IPActionRedeem.json +0 -55
  476. package/build/artifacts/contracts/interfaces/IPBaseToken.sol/IPBaseToken.dbg.json +0 -4
  477. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.dbg.json +0 -4
  478. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPendleGauge.json +0 -113
  479. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.dbg.json +0 -4
  480. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IVePToken.json +0 -43
  481. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IVotingEscrowPendle.dbg.json +0 -4
  482. package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
  483. package/build/artifacts/contracts/interfaces/IPVotingEscrowController.sol/VotingEscrowController.json +0 -61
  484. package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.dbg.json +0 -4
  485. package/build/artifacts/contracts/interfaces/IPendleGauge.sol/IPendleGauge.json +0 -113
  486. package/build/artifacts/contracts/interfaces/IVePToken.sol/IVePToken.dbg.json +0 -4
  487. package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.dbg.json +0 -4
  488. package/build/artifacts/contracts/interfaces/IVotingEscrowController.sol/VotingEscrowController.json +0 -61
  489. package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.dbg.json +0 -4
  490. package/build/artifacts/contracts/interfaces/IVotingEscrowPendle.sol/IVotingEscrowPendle.json +0 -167
  491. package/build/artifacts/contracts/libraries/JoeLibrary.sol/JoeLibrary.dbg.json +0 -4
  492. package/build/artifacts/contracts/libraries/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
  493. package/build/artifacts/contracts/libraries/math/MarketMathAux.sol/MarketMathAux.dbg.json +0 -4
  494. package/build/artifacts/contracts/periphery/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +0 -4
  495. package/contracts/SuperComposableYield/ISuperComposableYield.sol +0 -80
  496. package/contracts/SuperComposableYield/SCYUtils.sol +0 -14
  497. package/contracts/SuperComposableYield/implementations/IRewardManager.sol +0 -16
  498. package/contracts/SuperComposableYield/implementations/RewardManager.sol +0 -151
  499. package/contracts/SuperComposableYield/implementations/SCYBase.sol +0 -166
  500. package/contracts/SuperComposableYield/implementations/SCYBaseWithRewards.sol +0 -88
  501. package/contracts/core/PendleBaseToken.sol +0 -35
  502. package/contracts/core/PendlePrincipalToken.sol +0 -54
  503. package/contracts/core/PendleSCYImpl/AaveV3/PendleAaveV3SCY.sol +0 -140
  504. package/contracts/core/PendleSCYImpl/PendleBenQiErc20SCY.sol +0 -133
  505. package/contracts/core/PendleSCYImpl/PendleBtrflySCY.sol +0 -120
  506. package/contracts/core/PendleSCYImpl/PendleStETHSCY.sol +0 -107
  507. package/contracts/core/PendleSCYImpl/PendleYearnVaultSCY.sol +0 -109
  508. package/contracts/core/PendleYieldToken.sol +0 -340
  509. package/contracts/core/actions/ActionRedeem.sol +0 -36
  510. package/contracts/core/actions/base/ActionType.sol +0 -11
  511. package/contracts/interfaces/IPActionRedeem.sol +0 -17
  512. package/contracts/interfaces/IPBaseToken.sol +0 -9
  513. package/contracts/interfaces/IPGauge.sol +0 -32
  514. package/contracts/interfaces/IPVotingEscrowController.sol +0 -14
  515. package/contracts/interfaces/IPendleGauge.sol +0 -32
  516. package/contracts/interfaces/IVePToken.sol +0 -14
  517. package/contracts/interfaces/IVotingEscrowController.sol +0 -14
  518. package/contracts/interfaces/IVotingEscrowPendle.sol +0 -32
  519. package/contracts/libraries/math/MarketMathAux.sol +0 -101
@@ -0,0 +1,358 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
7
+ import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
8
+ import "@openzeppelin/contracts/utils/Context.sol";
9
+
10
+ /**
11
+ * @dev Pendle's ERC20 implementation, modified from @openzeppelin implementation
12
+ * Changes are:
13
+ * - comes with built-in reentrancy protection, storage-packed with totalSupply variable
14
+ * - delete increaseAllowance / decreaseAllowance
15
+ * - add nonReentrancy protection to transfer / transferFrom functions
16
+ * - allow decimals to by passed in
17
+ * - block self-transfer by default
18
+ */
19
+ // solhint-disable
20
+ contract PendleERC20 is Context, IERC20, IERC20Metadata {
21
+ uint8 private constant _NOT_ENTERED = 1;
22
+ uint8 private constant _ENTERED = 2;
23
+
24
+ mapping(address => uint256) private _balances;
25
+
26
+ mapping(address => mapping(address => uint256)) private _allowances;
27
+
28
+ uint248 private _totalSupply;
29
+ uint8 private _status;
30
+
31
+ string private _name;
32
+ string private _symbol;
33
+ uint8 public immutable decimals;
34
+
35
+ /**
36
+ * @dev Prevents a contract from calling itself, directly or indirectly.
37
+ * Calling a `nonReentrant` function from another `nonReentrant`
38
+ * function is not supported. It is possible to prevent this from happening
39
+ * by making the `nonReentrant` function external, and making it call a
40
+ * `private` function that does the actual work.
41
+ */
42
+ modifier nonReentrant() {
43
+ // On the first call to nonReentrant, _notEntered will be true
44
+ require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
45
+
46
+ // Any calls to nonReentrant after this point will fail
47
+ _status = _ENTERED;
48
+
49
+ _;
50
+
51
+ // By storing the original value once again, a refund is triggered (see
52
+ // https://eips.ethereum.org/EIPS/eip-2200)
53
+ _status = _NOT_ENTERED;
54
+ }
55
+
56
+ /**
57
+ * @dev Sets the values for {name} and {symbol}.
58
+ *
59
+ * The default value of {decimals} is 18. To select a different value for
60
+ * {decimals} you should overload it.
61
+ *
62
+ * All two of these values are immutable: they can only be set once during
63
+ * construction.
64
+ */
65
+ constructor(
66
+ string memory name_,
67
+ string memory symbol_,
68
+ uint8 decimals_
69
+ ) {
70
+ _name = name_;
71
+ _symbol = symbol_;
72
+ decimals = decimals_;
73
+ _status = _NOT_ENTERED;
74
+ }
75
+
76
+ /**
77
+ * @dev Returns the name of the token.
78
+ */
79
+ function name() public view virtual override returns (string memory) {
80
+ return _name;
81
+ }
82
+
83
+ /**
84
+ * @dev Returns the symbol of the token, usually a shorter version of the
85
+ * name.
86
+ */
87
+ function symbol() public view virtual override returns (string memory) {
88
+ return _symbol;
89
+ }
90
+
91
+ /**
92
+ * @dev See {IERC20-totalSupply}.
93
+ */
94
+ function totalSupply() public view virtual override returns (uint256) {
95
+ return _totalSupply;
96
+ }
97
+
98
+ /**
99
+ * @dev See {IERC20-balanceOf}.
100
+ */
101
+ function balanceOf(address account) public view virtual override returns (uint256) {
102
+ return _balances[account];
103
+ }
104
+
105
+ /**
106
+ * @dev See {IERC20-transfer}.
107
+ *
108
+ * Requirements:
109
+ *
110
+ * - `to` cannot be the zero address.
111
+ * - the caller must have a balance of at least `amount`.
112
+ */
113
+ function transfer(address to, uint256 amount)
114
+ external
115
+ virtual
116
+ override
117
+ nonReentrant
118
+ returns (bool)
119
+ {
120
+ address owner = _msgSender();
121
+ _transfer(owner, to, amount);
122
+ return true;
123
+ }
124
+
125
+ /**
126
+ * @dev See {IERC20-allowance}.
127
+ */
128
+ function allowance(address owner, address spender)
129
+ public
130
+ view
131
+ virtual
132
+ override
133
+ returns (uint256)
134
+ {
135
+ return _allowances[owner][spender];
136
+ }
137
+
138
+ /**
139
+ * @dev See {IERC20-approve}.
140
+ *
141
+ * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
142
+ * `transferFrom`. This is semantically equivalent to an infinite approval.
143
+ *
144
+ * Requirements:
145
+ *
146
+ * - `spender` cannot be the zero address.
147
+ */
148
+ function approve(address spender, uint256 amount) external virtual override returns (bool) {
149
+ address owner = _msgSender();
150
+ _approve(owner, spender, amount);
151
+ return true;
152
+ }
153
+
154
+ /**
155
+ * @dev See {IERC20-transferFrom}.
156
+ *
157
+ * Emits an {Approval} event indicating the updated allowance. This is not
158
+ * required by the EIP. See the note at the beginning of {ERC20}.
159
+ *
160
+ * NOTE: Does not update the allowance if the current allowance
161
+ * is the maximum `uint256`.
162
+ *
163
+ * Requirements:
164
+ *
165
+ * - `from` and `to` cannot be the zero address.
166
+ * - `from` must have a balance of at least `amount`.
167
+ * - the caller must have allowance for ``from``'s tokens of at least
168
+ * `amount`.
169
+ */
170
+ function transferFrom(
171
+ address from,
172
+ address to,
173
+ uint256 amount
174
+ ) external virtual override nonReentrant returns (bool) {
175
+ address spender = _msgSender();
176
+ _spendAllowance(from, spender, amount);
177
+ _transfer(from, to, amount);
178
+ return true;
179
+ }
180
+
181
+ /**
182
+ * @dev Moves `amount` of tokens from `sender` to `recipient`.
183
+ *
184
+ * This internal function is equivalent to {transfer}, and can be used to
185
+ * e.g. implement automatic token fees, slashing mechanisms, etc.
186
+ *
187
+ * Emits a {Transfer} event.
188
+ *
189
+ * Requirements:
190
+ *
191
+ * - `from` cannot be the zero address.
192
+ * - `to` cannot be the zero address.
193
+ * - `from` must have a balance of at least `amount`.
194
+ */
195
+ function _transfer(
196
+ address from,
197
+ address to,
198
+ uint256 amount
199
+ ) internal virtual {
200
+ require(from != address(0), "ERC20: transfer from the zero address");
201
+ require(to != address(0), "ERC20: transfer to the zero address");
202
+ require(from != to, "ERC20: transfer to self");
203
+
204
+ _beforeTokenTransfer(from, to, amount);
205
+
206
+ uint256 fromBalance = _balances[from];
207
+ require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
208
+ unchecked {
209
+ _balances[from] = fromBalance - amount;
210
+ }
211
+ _balances[to] += amount;
212
+
213
+ emit Transfer(from, to, amount);
214
+
215
+ _afterTokenTransfer(from, to, amount);
216
+ }
217
+
218
+ /** @dev Creates `amount` tokens and assigns them to `account`, increasing
219
+ * the total supply.
220
+ *
221
+ * Emits a {Transfer} event with `from` set to the zero address.
222
+ *
223
+ * Requirements:
224
+ *
225
+ * - `account` cannot be the zero address.
226
+ */
227
+ function _mint(address account, uint256 amount) internal virtual {
228
+ require(account != address(0), "ERC20: mint to the zero address");
229
+
230
+ _beforeTokenTransfer(address(0), account, amount);
231
+
232
+ _totalSupply += toUint248(amount);
233
+ _balances[account] += amount;
234
+ emit Transfer(address(0), account, amount);
235
+
236
+ _afterTokenTransfer(address(0), account, amount);
237
+ }
238
+
239
+ /**
240
+ * @dev Destroys `amount` tokens from `account`, reducing the
241
+ * total supply.
242
+ *
243
+ * Emits a {Transfer} event with `to` set to the zero address.
244
+ *
245
+ * Requirements:
246
+ *
247
+ * - `account` cannot be the zero address.
248
+ * - `account` must have at least `amount` tokens.
249
+ */
250
+ function _burn(address account, uint256 amount) internal virtual {
251
+ require(account != address(0), "ERC20: burn from the zero address");
252
+
253
+ _beforeTokenTransfer(account, address(0), amount);
254
+
255
+ uint256 accountBalance = _balances[account];
256
+ require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
257
+ unchecked {
258
+ _balances[account] = accountBalance - amount;
259
+ }
260
+ _totalSupply -= toUint248(amount);
261
+
262
+ emit Transfer(account, address(0), amount);
263
+
264
+ _afterTokenTransfer(account, address(0), amount);
265
+ }
266
+
267
+ /**
268
+ * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
269
+ *
270
+ * This internal function is equivalent to `approve`, and can be used to
271
+ * e.g. set automatic allowances for certain subsystems, etc.
272
+ *
273
+ * Emits an {Approval} event.
274
+ *
275
+ * Requirements:
276
+ *
277
+ * - `owner` cannot be the zero address.
278
+ * - `spender` cannot be the zero address.
279
+ */
280
+ function _approve(
281
+ address owner,
282
+ address spender,
283
+ uint256 amount
284
+ ) internal virtual {
285
+ require(owner != address(0), "ERC20: approve from the zero address");
286
+ require(spender != address(0), "ERC20: approve to the zero address");
287
+
288
+ _allowances[owner][spender] = amount;
289
+ emit Approval(owner, spender, amount);
290
+ }
291
+
292
+ /**
293
+ * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
294
+ *
295
+ * Does not update the allowance amount in case of infinite allowance.
296
+ * Revert if not enough allowance is available.
297
+ *
298
+ * Might emit an {Approval} event.
299
+ */
300
+ function _spendAllowance(
301
+ address owner,
302
+ address spender,
303
+ uint256 amount
304
+ ) internal virtual {
305
+ uint256 currentAllowance = allowance(owner, spender);
306
+ if (currentAllowance != type(uint256).max) {
307
+ require(currentAllowance >= amount, "ERC20: insufficient allowance");
308
+ unchecked {
309
+ _approve(owner, spender, currentAllowance - amount);
310
+ }
311
+ }
312
+ }
313
+
314
+ /**
315
+ * @dev Hook that is called before any transfer of tokens. This includes
316
+ * minting and burning.
317
+ *
318
+ * Calling conditions:
319
+ *
320
+ * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
321
+ * will be transferred to `to`.
322
+ * - when `from` is zero, `amount` tokens will be minted for `to`.
323
+ * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
324
+ * - `from` and `to` are never both zero.
325
+ *
326
+ * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
327
+ */
328
+ function _beforeTokenTransfer(
329
+ address from,
330
+ address to,
331
+ uint256 amount
332
+ ) internal virtual {}
333
+
334
+ /**
335
+ * @dev Hook that is called after any transfer of tokens. This includes
336
+ * minting and burning.
337
+ *
338
+ * Calling conditions:
339
+ *
340
+ * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
341
+ * has been transferred to `to`.
342
+ * - when `from` is zero, `amount` tokens have been minted for `to`.
343
+ * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
344
+ * - `from` and `to` are never both zero.
345
+ *
346
+ * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
347
+ */
348
+ function _afterTokenTransfer(
349
+ address from,
350
+ address to,
351
+ uint256 amount
352
+ ) internal virtual {}
353
+
354
+ function toUint248(uint256 x) internal virtual returns (uint248) {
355
+ require(x < (1 << 248)); // signed, lim = bit-1
356
+ return uint248(x);
357
+ }
358
+ }
@@ -0,0 +1,84 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/ERC20.sol)
3
+
4
+ pragma solidity ^0.8.0;
5
+
6
+ import "./PendleERC20.sol";
7
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
8
+ import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
9
+ import "@openzeppelin/contracts/utils/Context.sol";
10
+ import "@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol";
11
+ import "@openzeppelin/contracts/utils/cryptography/draft-EIP712.sol";
12
+ import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
13
+ import "@openzeppelin/contracts/utils/Counters.sol";
14
+
15
+ /// @dev forked from OZ's ERC20Permit
16
+ contract PendleERC20Permit is PendleERC20, IERC20Permit, EIP712 {
17
+ using Counters for Counters.Counter;
18
+
19
+ mapping(address => Counters.Counter) private _nonces;
20
+
21
+ // solhint-disable-next-line var-name-mixedcase
22
+ bytes32 private immutable _PERMIT_TYPEHASH =
23
+ keccak256(
24
+ "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
25
+ );
26
+
27
+ constructor(
28
+ string memory name_,
29
+ string memory symbol_,
30
+ uint8 decimals_
31
+ ) PendleERC20(name_, symbol_, decimals) EIP712(name_, "1") {}
32
+
33
+ /**
34
+ * @dev See {IERC20Permit-permit}.
35
+ */
36
+ function permit(
37
+ address owner,
38
+ address spender,
39
+ uint256 value,
40
+ uint256 deadline,
41
+ uint8 v,
42
+ bytes32 r,
43
+ bytes32 s
44
+ ) public virtual override {
45
+ require(block.timestamp <= deadline, "ERC20Permit: expired deadline");
46
+
47
+ bytes32 structHash = keccak256(
48
+ abi.encode(_PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline)
49
+ );
50
+
51
+ bytes32 hash = _hashTypedDataV4(structHash);
52
+
53
+ address signer = ECDSA.recover(hash, v, r, s);
54
+ require(signer == owner, "ERC20Permit: invalid signature");
55
+
56
+ _approve(owner, spender, value);
57
+ }
58
+
59
+ /**
60
+ * @dev See {IERC20Permit-nonces}.
61
+ */
62
+ function nonces(address owner) public view virtual override returns (uint256) {
63
+ return _nonces[owner].current();
64
+ }
65
+
66
+ /**
67
+ * @dev See {IERC20Permit-DOMAIN_SEPARATOR}.
68
+ */
69
+ // solhint-disable-next-line func-name-mixedcase
70
+ function DOMAIN_SEPARATOR() external view override returns (bytes32) {
71
+ return _domainSeparatorV4();
72
+ }
73
+
74
+ /**
75
+ * @dev "Consume a nonce": return the current value and increment.
76
+ *
77
+ * _Available since v4.1._
78
+ */
79
+ function _useNonce(address owner) internal virtual returns (uint256 current) {
80
+ Counters.Counter storage nonce = _nonces[owner];
81
+ current = nonce.current();
82
+ nonce.increment();
83
+ }
84
+ }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.9;
2
+ pragma solidity 0.8.13;
3
3
 
4
4
  import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
  import "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol";
@@ -8,7 +8,6 @@ import "../interfaces/IPActionCore.sol";
8
8
  import "../interfaces/IPActionYT.sol";
9
9
  import "../interfaces/IPRouterStatic.sol";
10
10
  import "../interfaces/IPMarketSwapCallback.sol";
11
- import "../interfaces/IPActionRedeem.sol";
12
11
  import "../periphery/PermissionsV2Upg.sol";
13
12
 
14
13
  /// @dev this contract will be deployed behind an ERC1967 proxy
@@ -20,26 +19,22 @@ contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, PermissionsV2Upg
20
19
  address public immutable ACTION_CORE;
21
20
  address public immutable ACTION_YT;
22
21
  address public immutable ACTION_CALLBACK;
23
- address public immutable ACTION_REDEEM;
24
22
 
25
23
  constructor(
26
24
  address _ACTION_CORE,
27
25
  address _ACTION_YT,
28
26
  address _ACTION_CALLBACK,
29
- address _ACTION_REDEEM,
30
27
  address _governanceManager
31
28
  ) PermissionsV2Upg(_governanceManager) initializer {
32
29
  require(
33
30
  _ACTION_CORE != address(0) &&
34
31
  _ACTION_YT != address(0) &&
35
- _ACTION_CALLBACK != address(0) &&
36
- _ACTION_REDEEM != address(0),
32
+ _ACTION_CALLBACK != address(0),
37
33
  "zero address"
38
34
  );
39
35
  ACTION_CORE = _ACTION_CORE;
40
36
  ACTION_YT = _ACTION_YT;
41
37
  ACTION_CALLBACK = _ACTION_CALLBACK;
42
- ACTION_REDEEM = _ACTION_REDEEM;
43
38
  }
44
39
 
45
40
  function initialize() external initializer {
@@ -60,7 +55,8 @@ contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, PermissionsV2Upg
60
55
  sig == IPActionCore.swapScyForExactPt.selector ||
61
56
  sig == IPActionCore.swapExactScyForPt.selector ||
62
57
  sig == IPActionCore.swapExactRawTokenForPt.selector ||
63
- sig == IPActionCore.swapExactPtForRawToken.selector
58
+ sig == IPActionCore.swapExactPtForRawToken.selector ||
59
+ sig == IPActionCore.redeemDueIncome.selector
64
60
  ) {
65
61
  return ACTION_CORE;
66
62
  } else if (
@@ -72,17 +68,15 @@ contract PendleRouter is Proxy, Initializable, UUPSUpgradeable, PermissionsV2Upg
72
68
  sig == IPActionYT.swapYtForExactScy.selector
73
69
  ) {
74
70
  return ACTION_YT;
75
- } else if (sig == IPActionRedeem.redeemDueIncome.selector) {
76
- return ACTION_REDEEM;
77
71
  } else if (sig == IPMarketSwapCallback.swapCallback.selector) {
78
72
  return ACTION_CALLBACK;
79
73
  }
80
74
  require(false, "invalid market sig");
81
75
  }
82
76
 
77
+ function _authorizeUpgrade(address newImplementation) internal override onlyGovernance {}
78
+
83
79
  function _implementation() internal view override returns (address) {
84
80
  return getRouterImplementation(msg.sig);
85
81
  }
86
-
87
- function _authorizeUpgrade(address newImplementation) internal override onlyGovernance {}
88
82
  }
@@ -0,0 +1,87 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+
4
+ import "../../interfaces/IPYieldToken.sol";
5
+ import "../../interfaces/IPPrincipalToken.sol";
6
+ import "../../interfaces/IPInterestManagerYT.sol";
7
+
8
+ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
9
+
10
+ import "../../libraries/math/Math.sol";
11
+ import "../../interfaces/IPYieldContractFactory.sol";
12
+ import "../../libraries/SCY/SCYUtils.sol";
13
+ import "../../libraries/helpers/TokenHelper.sol";
14
+
15
+ import "../PendleERC20Permit.sol";
16
+
17
+ /*
18
+ With YT yielding more SCYs overtime, which is allowed to be redeemed by users, the reward distribution should
19
+ be based on the amount of SCYs that their YT currently represent, plus with their dueInterest.
20
+
21
+ It has been proven and tested that totalScyRedeemable will not change over time, unless users redeem their interest or redeemPY.
22
+
23
+ Due to this, it is required to update users' accruedReward STRICTLY BEFORE redeeming their interest.
24
+ */
25
+ abstract contract InterestManagerYT is TokenHelper, IPInterestManagerYT {
26
+ using Math for uint256;
27
+
28
+ struct UserInterest {
29
+ uint128 index;
30
+ uint128 accrued;
31
+ }
32
+
33
+ mapping(address => UserInterest) public userInterest;
34
+
35
+ function _distributeInterest(address user) internal {
36
+ _distributeInterestForTwo(user, address(0));
37
+ }
38
+
39
+ function _distributeInterestForTwo(address user1, address user2) internal {
40
+ // no updateRewardIndex since we rely on SCY's rewardIndexes
41
+ 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);
44
+ }
45
+
46
+ function _doTransferOutInterest(
47
+ address user,
48
+ address SCY,
49
+ address factory
50
+ ) internal returns (uint256 interestAmount) {
51
+ uint256 interestPreFee = userInterest[user].accrued;
52
+ userInterest[user].accrued = 0;
53
+
54
+ address treasury = IPYieldContractFactory(factory).treasury();
55
+
56
+ uint256 feeRate = IPYieldContractFactory(factory).interestFeeRate();
57
+
58
+ uint256 feeAmount = interestPreFee.mulDown(feeRate);
59
+ interestAmount = interestPreFee - feeAmount;
60
+
61
+ _transferOut(SCY, treasury, feeAmount);
62
+ _transferOut(SCY, user, interestAmount);
63
+ }
64
+
65
+ function _distributeInterest(address user, uint256 currentIndex) private {
66
+ uint256 prevIndex = userInterest[user].index;
67
+
68
+ if (prevIndex == currentIndex) return;
69
+ if (prevIndex == 0) {
70
+ userInterest[user].index = currentIndex.Uint128();
71
+ return;
72
+ }
73
+
74
+ uint256 principal = _YTbalance(user);
75
+
76
+ uint256 interestFromYT = (principal * (currentIndex - prevIndex)).divDown(
77
+ prevIndex * currentIndex
78
+ );
79
+
80
+ userInterest[user].accrued += interestFromYT.Uint128();
81
+ userInterest[user].index = currentIndex.Uint128();
82
+ }
83
+
84
+ function _getInterestIndex() internal virtual returns (uint256 index);
85
+
86
+ function _YTbalance(address user) internal view virtual returns (uint256);
87
+ }
@@ -0,0 +1,52 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity 0.8.13;
3
+
4
+ import "../../interfaces/IPPrincipalToken.sol";
5
+ import "../../interfaces/IPYieldToken.sol";
6
+
7
+ import "../PendleERC20Permit.sol";
8
+ import "../../libraries/helpers/MiniHelpers.sol";
9
+
10
+ contract PendlePrincipalToken is PendleERC20Permit, IPPrincipalToken {
11
+ address public immutable SCY;
12
+ address public immutable YT;
13
+ address public immutable factory;
14
+ uint256 public immutable expiry;
15
+
16
+ modifier onlyYT() {
17
+ require(msg.sender == address(YT), "ONLY_YT");
18
+ _;
19
+ }
20
+
21
+ constructor(
22
+ address _SCY,
23
+ address _YT,
24
+ string memory _name,
25
+ string memory _symbol,
26
+ uint8 __decimals,
27
+ uint256 _expiry
28
+ ) PendleERC20Permit(_name, _symbol, __decimals) {
29
+ SCY = _SCY;
30
+ YT = _YT;
31
+ expiry = _expiry;
32
+ factory = msg.sender;
33
+ }
34
+
35
+ /**
36
+ * @dev only callable by the YT correspond to this PT
37
+ */
38
+ function burnByYT(address user, uint256 amount) external onlyYT {
39
+ _burn(user, amount);
40
+ }
41
+
42
+ /**
43
+ * @dev only callable by the YT correspond to this PT
44
+ */
45
+ function mintByYT(address user, uint256 amount) external onlyYT {
46
+ _mint(user, amount);
47
+ }
48
+
49
+ function isExpired() public view returns (bool) {
50
+ return MiniHelpers.isCurrentlyExpired(expiry);
51
+ }
52
+ }