@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
@@ -1,29 +1,31 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.9;
3
-
4
- import "./PendleBaseToken.sol";
5
- import "../interfaces/IPPrincipalToken.sol";
6
- import "../SuperComposableYield/ISuperComposableYield.sol";
7
- import "../interfaces/IPMarket.sol";
8
- import "../interfaces/IPMarketFactory.sol";
9
- import "../interfaces/IPMarketSwapCallback.sol";
10
- import "../interfaces/IPMarketAddRemoveCallback.sol";
11
-
12
- import "../libraries/math/LogExpMath.sol";
13
- import "../libraries/math/Math.sol";
14
- import "../libraries/math/MarketMathAux.sol";
15
-
2
+ pragma solidity 0.8.13;
3
+
4
+ import "../PendleERC20.sol";
5
+ import "../../interfaces/IPPrincipalToken.sol";
6
+ import "../../interfaces/ISuperComposableYield.sol";
7
+ import "../../interfaces/IPMarket.sol";
8
+ import "../../interfaces/IPMarketFactory.sol";
9
+ import "../../interfaces/IPMarketSwapCallback.sol";
10
+ import "../../interfaces/IPMarketAddRemoveCallback.sol";
11
+
12
+ import "../../libraries/math/LogExpMath.sol";
13
+ import "../../libraries/math/Math.sol";
14
+ import "../../libraries/helpers/MiniHelpers.sol";
15
+
16
+ import "../LiquidityMining/PendleGauge.sol";
17
+ import "../PendleERC20Permit.sol";
16
18
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
17
19
 
18
20
  // solhint-disable reason-string
19
- contract PendleMarket is PendleBaseToken, IPMarket {
21
+ /// Invariances to maintain:
22
+ /// - Internal balances totalPt & totalScy not interferred by people transferring tokens in directly
23
+ contract PendleMarket is PendleERC20Permit, PendleGauge, IPMarket {
20
24
  using Math for uint256;
21
25
  using Math for int256;
22
- using Math for uint128;
23
- using LogExpMath for uint256;
24
- using MarketMathAux for MarketState;
25
26
  using MarketMathCore for MarketState;
26
27
  using SafeERC20 for IERC20;
28
+ using SCYIndexLib for ISuperComposableYield;
27
29
 
28
30
  struct MarketStorage {
29
31
  int128 totalPt;
@@ -32,8 +34,7 @@ contract PendleMarket is PendleBaseToken, IPMarket {
32
34
  uint96 lastLnImpliedRate;
33
35
  uint96 oracleRate;
34
36
  uint32 lastTradeTime;
35
- uint8 _reentrancyStatus;
36
- // 1 SLOT = 232 bits
37
+ // 1 SLOT = 224 bits
37
38
  }
38
39
 
39
40
  uint8 private constant _NOT_ENTERED = 1;
@@ -42,49 +43,47 @@ contract PendleMarket is PendleBaseToken, IPMarket {
42
43
  string private constant NAME = "Pendle Market";
43
44
  string private constant SYMBOL = "PENDLE-LPT";
44
45
 
45
- address public immutable PT;
46
- address public immutable SCY;
47
- address public immutable YT;
46
+ IPPrincipalToken internal immutable PT;
47
+ ISuperComposableYield internal immutable SCY;
48
+ IPYieldToken internal immutable YT;
48
49
 
50
+ address public immutable factory;
51
+ uint256 public immutable expiry;
49
52
  int256 public immutable scalarRoot;
50
53
  int256 public immutable initialAnchor;
51
54
 
52
55
  MarketStorage public _storage;
53
56
 
54
- modifier nonReentrant() {
55
- // On the first call to nonReentrant, _notEntered will be true
56
- require(_storage._reentrancyStatus != _ENTERED, "ReentrancyGuard: reentrant call");
57
-
58
- // Any calls to nonReentrant after this point will fail
59
- _storage._reentrancyStatus = _ENTERED;
60
-
57
+ modifier notExpired() {
58
+ require(!isExpired(), "market expired");
61
59
  _;
62
-
63
- // By storing the original value once again, a refund is triggered (see
64
- // https://eips.ethereum.org/EIPS/eip-2200)
65
- _storage._reentrancyStatus = _NOT_ENTERED;
66
60
  }
67
61
 
68
62
  constructor(
69
63
  address _PT,
70
64
  int256 _scalarRoot,
71
- int256 _initialAnchor
72
- ) PendleBaseToken(NAME, SYMBOL, 18, IPPrincipalToken(_PT).expiry()) {
73
- PT = _PT;
74
- SCY = IPPrincipalToken(_PT).SCY();
75
- YT = IPPrincipalToken(_PT).YT();
65
+ int256 _initialAnchor,
66
+ address _vePendle,
67
+ address _gaugeController
68
+ )
69
+ PendleERC20Permit(NAME, SYMBOL, 18)
70
+ PendleGauge(IPPrincipalToken(_PT).SCY(), _vePendle, _gaugeController)
71
+ {
72
+ PT = IPPrincipalToken(_PT);
73
+ SCY = ISuperComposableYield(PT.SCY());
74
+ YT = IPYieldToken(PT.YT());
75
+
76
+ require(_scalarRoot > 0, "scalarRoot must be positive");
76
77
  scalarRoot = _scalarRoot;
77
78
  initialAnchor = _initialAnchor;
78
- _storage._reentrancyStatus = _NOT_ENTERED;
79
+ expiry = IPPrincipalToken(_PT).expiry();
80
+ factory = msg.sender;
79
81
  }
80
82
 
81
83
  /**
82
84
  * @notice PendleMarket allows users to provide in PT & SCY in exchange for LPs, which
83
- * will grant LP holders more exchange fee over time
84
- * @dev steps working of this function:
85
- - Releases the proportional amount of LP to receiver
86
- - Callback to msg.sender if data.length > 0
87
- - Ensure that the corresponding amount of SCY & PT have been transferred to this address
85
+ * will grant LP holders more exchange fee over time. All the tokens must be transferred to
86
+ * this market prior to the call for LP to be minted. There is no flashAdd
88
87
  * @param data bytes data to be sent in the callback
89
88
  */
90
89
  function addLiquidity(
@@ -95,6 +94,7 @@ contract PendleMarket is PendleBaseToken, IPMarket {
95
94
  )
96
95
  external
97
96
  nonReentrant
97
+ notExpired
98
98
  returns (
99
99
  uint256 lpToAccount,
100
100
  uint256 scyUsed,
@@ -102,7 +102,7 @@ contract PendleMarket is PendleBaseToken, IPMarket {
102
102
  )
103
103
  {
104
104
  MarketState memory market = readState(true);
105
- SCYIndex index = SCYIndexLib.newIndex(SCY);
105
+ SCYIndex index = SCY.newIndex();
106
106
 
107
107
  uint256 lpToReserve;
108
108
  (lpToReserve, lpToAccount, scyUsed, ptUsed) = market.addLiquidity(
@@ -120,6 +120,14 @@ contract PendleMarket is PendleBaseToken, IPMarket {
120
120
 
121
121
  _mint(receiver, lpToAccount);
122
122
 
123
+ _writeState(market);
124
+
125
+ require(market.totalPt.Uint() <= IERC20(PT).balanceOf(address(this)));
126
+ require(market.totalScy.Uint() <= IERC20(SCY).balanceOf(address(this)));
127
+
128
+ emit AddLiquidity(receiver, lpToAccount, scyUsed, ptUsed);
129
+
130
+ // no flashAdd, we only do callback after all the tokens have been provided
123
131
  if (data.length > 0) {
124
132
  IPMarketAddRemoveCallback(msg.sender).addLiquidityCallback(
125
133
  lpToAccount,
@@ -128,13 +136,6 @@ contract PendleMarket is PendleBaseToken, IPMarket {
128
136
  data
129
137
  );
130
138
  }
131
-
132
- require(market.totalPt.Uint() <= IERC20(PT).balanceOf(address(this)));
133
- require(market.totalScy.Uint() <= IERC20(SCY).balanceOf(address(this)));
134
-
135
- _writeState(market);
136
-
137
- emit AddLiquidity(receiver, lpToAccount, scyUsed, ptUsed);
138
139
  }
139
140
 
140
141
  /**
@@ -147,7 +148,8 @@ contract PendleMarket is PendleBaseToken, IPMarket {
147
148
  * @param data bytes data to be sent in the callback
148
149
  */
149
150
  function removeLiquidity(
150
- address receiver,
151
+ address receiverScy,
152
+ address receiverPt,
151
153
  uint256 lpToRemove,
152
154
  bytes calldata data
153
155
  ) external nonReentrant returns (uint256 scyToAccount, uint256 ptToAccount) {
@@ -155,8 +157,10 @@ contract PendleMarket is PendleBaseToken, IPMarket {
155
157
 
156
158
  (scyToAccount, ptToAccount) = market.removeLiquidity(lpToRemove, true);
157
159
 
158
- IERC20(SCY).safeTransfer(receiver, scyToAccount);
159
- IERC20(PT).safeTransfer(receiver, ptToAccount);
160
+ IERC20(SCY).safeTransfer(receiverScy, scyToAccount);
161
+ IERC20(PT).safeTransfer(receiverPt, ptToAccount);
162
+
163
+ _writeState(market);
160
164
 
161
165
  if (data.length > 0) {
162
166
  IPMarketAddRemoveCallback(msg.sender).removeLiquidityCallback(
@@ -167,10 +171,10 @@ contract PendleMarket is PendleBaseToken, IPMarket {
167
171
  );
168
172
  }
169
173
 
174
+ // this checks enough lp has been transferred in
170
175
  _burn(address(this), lpToRemove);
171
176
 
172
- _writeState(market);
173
- emit RemoveLiquidity(receiver, lpToRemove, scyToAccount, ptToAccount);
177
+ emit RemoveLiquidity(receiverScy, receiverPt, lpToRemove, scyToAccount, ptToAccount);
174
178
  }
175
179
 
176
180
  /**
@@ -186,31 +190,27 @@ contract PendleMarket is PendleBaseToken, IPMarket {
186
190
  function swapExactPtForScy(
187
191
  address receiver,
188
192
  uint256 exactPtIn,
189
- uint256 minScyOut,
190
193
  bytes calldata data
191
- ) external nonReentrant returns (uint256 netScyOut, uint256 netScyToReserve) {
192
- require(block.timestamp < expiry, "MARKET_EXPIRED");
193
-
194
+ ) external nonReentrant notExpired returns (uint256 netScyOut, uint256 netScyToReserve) {
194
195
  MarketState memory market = readState(true);
195
196
 
196
197
  (netScyOut, netScyToReserve) = market.swapExactPtForScy(
197
- SCYIndexLib.newIndex(SCY),
198
+ SCY.newIndex(),
198
199
  exactPtIn,
199
- block.timestamp,
200
- true
200
+ block.timestamp
201
201
  );
202
- require(netScyOut >= minScyOut, "insufficient scy out");
203
202
 
204
203
  IERC20(SCY).safeTransfer(receiver, netScyOut);
205
204
  IERC20(SCY).safeTransfer(market.treasury, netScyToReserve);
206
205
 
206
+ _writeState(market);
207
+
207
208
  if (data.length > 0) {
208
209
  IPMarketSwapCallback(msg.sender).swapCallback(exactPtIn.neg(), netScyOut.Int(), data);
209
210
  }
210
211
 
211
212
  // have received enough PT
212
213
  require(market.totalPt.Uint() <= IERC20(PT).balanceOf(address(this)));
213
- _writeState(market);
214
214
 
215
215
  emit Swap(receiver, exactPtIn.neg(), netScyOut.Int(), netScyToReserve);
216
216
  }
@@ -227,44 +227,46 @@ contract PendleMarket is PendleBaseToken, IPMarket {
227
227
  function swapScyForExactPt(
228
228
  address receiver,
229
229
  uint256 exactPtOut,
230
- uint256 maxScyIn,
231
230
  bytes calldata data
232
- ) external nonReentrant returns (uint256 netScyIn, uint256 netScyToReserve) {
233
- require(block.timestamp < expiry, "MARKET_EXPIRED");
234
-
231
+ ) external nonReentrant notExpired returns (uint256 netScyIn, uint256 netScyToReserve) {
235
232
  MarketState memory market = readState(true);
236
233
 
237
234
  (netScyIn, netScyToReserve) = market.swapScyForExactPt(
238
- SCYIndexLib.newIndex(SCY),
235
+ SCY.newIndex(),
239
236
  exactPtOut,
240
- block.timestamp,
241
- true
237
+ block.timestamp
242
238
  );
243
- require(netScyIn <= maxScyIn, "scy in exceed limit");
244
239
 
245
240
  IERC20(PT).safeTransfer(receiver, exactPtOut);
246
241
  IERC20(SCY).safeTransfer(market.treasury, netScyToReserve);
247
242
 
243
+ _writeState(market);
244
+
248
245
  if (data.length > 0) {
249
246
  IPMarketSwapCallback(msg.sender).swapCallback(exactPtOut.Int(), netScyIn.neg(), data);
250
247
  }
251
248
 
252
249
  // have received enough SCY
253
250
  require(market.totalScy.Uint() <= IERC20(SCY).balanceOf(address(this)));
254
- _writeState(market);
255
251
 
256
252
  emit Swap(receiver, exactPtOut.Int(), netScyIn.neg(), netScyToReserve);
257
253
  }
258
254
 
259
- /// @dev this function is just a place holder. Later on the rewards will be transferred to the liquidity minining
260
- /// instead
261
- function redeemScyReward() external returns (uint256[] memory outAmounts) {
262
- outAmounts = ISuperComposableYield(SCY).redeemReward(address(this));
263
- address[] memory rewardTokens = ISuperComposableYield(SCY).getRewardTokens();
264
- address treasury = IPMarketFactory(factory).treasury();
265
- for (uint256 i = 0; i < rewardTokens.length; i++) {
266
- IERC20(rewardTokens[i]).safeTransfer(treasury, outAmounts[i]);
267
- }
255
+ /// @notice force balances to match reserves
256
+ function skim() external nonReentrant {
257
+ MarketState memory market = readState(true);
258
+ uint256 excessPt = IERC20(PT).balanceOf(address(this)) - market.totalPt.Uint();
259
+ uint256 excessScy = IERC20(SCY).balanceOf(address(this)) - market.totalScy.Uint();
260
+ IERC20(PT).safeTransfer(market.treasury, excessPt);
261
+ IERC20(SCY).safeTransfer(market.treasury, excessScy);
262
+ }
263
+
264
+ function redeemRewards(address user) external nonReentrant returns (uint256[] memory) {
265
+ return _redeemRewards(user);
266
+ }
267
+
268
+ function getRewardTokens() external view returns (address[] memory) {
269
+ return _getRewardTokens();
268
270
  }
269
271
 
270
272
  function readTokens()
@@ -276,18 +278,25 @@ contract PendleMarket is PendleBaseToken, IPMarket {
276
278
  IPYieldToken _YT
277
279
  )
278
280
  {
279
- _SCY = ISuperComposableYield(SCY);
280
- _PT = IPPrincipalToken(PT);
281
- _YT = IPYieldToken(YT);
281
+ _SCY = SCY;
282
+ _PT = PT;
283
+ _YT = YT;
282
284
  }
283
285
 
284
- function readState(bool updateRateOracle) public view returns (MarketState memory market) {
285
- MarketStorage memory local = _storage;
286
+ function isExpired() public view returns (bool) {
287
+ return MiniHelpers.isCurrentlyExpired(expiry);
288
+ }
286
289
 
287
- market.totalPt = local.totalPt;
288
- market.totalScy = local.totalScy;
290
+ /**
291
+ * @notice read the state of the market from storage into memory for gas-efficient manipulation
292
+ * @param updateRateOracle if set to true, the oracleRate will be updated, which will take ~6k of gas. If router wants
293
+ to do external calculations, normally this can be set to false
294
+ */
295
+ function readState(bool updateRateOracle) public view returns (MarketState memory market) {
296
+ market.totalPt = _storage.totalPt;
297
+ market.totalScy = _storage.totalScy;
289
298
  market.totalLp = totalSupply().Int();
290
- market.oracleRate = local.oracleRate;
299
+ market.oracleRate = _storage.oracleRate;
291
300
 
292
301
  (
293
302
  market.treasury,
@@ -299,25 +308,52 @@ contract PendleMarket is PendleBaseToken, IPMarket {
299
308
  market.scalarRoot = scalarRoot;
300
309
  market.expiry = expiry;
301
310
 
302
- market.lastLnImpliedRate = local.lastLnImpliedRate;
303
- market.lastTradeTime = local.lastTradeTime;
311
+ market.lastLnImpliedRate = _storage.lastLnImpliedRate;
312
+ market.lastTradeTime = _storage.lastTradeTime;
304
313
 
305
314
  if (updateRateOracle) {
315
+ // must happen after lastLnImpliedRate & lastTradeTime is filled
306
316
  market.oracleRate = market.getNewRateOracle(block.timestamp);
307
317
  }
308
318
  }
309
319
 
320
+ /// @notice write back the state of the market from memory to storage
310
321
  function _writeState(MarketState memory market) internal {
311
- MarketStorage memory tempStore;
322
+ _storage.totalPt = market.totalPt.Int128();
323
+ _storage.totalScy = market.totalScy.Int128();
324
+ _storage.lastLnImpliedRate = market.lastLnImpliedRate.Uint96();
325
+ _storage.oracleRate = market.oracleRate.Uint96();
326
+ _storage.lastTradeTime = market.lastTradeTime.Uint32();
327
+ emit UpdateImpliedRate(block.timestamp, market.lastLnImpliedRate);
328
+ }
312
329
 
313
- tempStore.totalPt = market.totalPt.Int128();
314
- tempStore.totalScy = market.totalScy.Int128();
315
- tempStore.lastLnImpliedRate = market.lastLnImpliedRate.Uint96();
316
- tempStore.oracleRate = market.oracleRate.Uint96();
317
- tempStore.lastTradeTime = market.lastTradeTime.Uint32();
330
+ /*///////////////////////////////////////////////////////////////
331
+ PENDLE GAUGE - RELATED
332
+ //////////////////////////////////////////////////////////////*/
318
333
 
319
- _storage = tempStore;
334
+ function _stakedBalance(address user) internal view override returns (uint256) {
335
+ return balanceOf(user);
336
+ }
320
337
 
321
- emit UpdateImpliedRate(block.timestamp, market.lastLnImpliedRate);
338
+ function _totalStaked() internal view override returns (uint256) {
339
+ return totalSupply();
340
+ }
341
+
342
+ // solhint-disable-next-line ordering
343
+ function _beforeTokenTransfer(
344
+ address from,
345
+ address to,
346
+ uint256 amount
347
+ ) internal override(PendleERC20, PendleGauge) {
348
+ PendleGauge._beforeTokenTransfer(from, to, amount);
349
+ }
350
+
351
+ // solhint-disable-next-line ordering
352
+ function _afterTokenTransfer(
353
+ address from,
354
+ address to,
355
+ uint256 amount
356
+ ) internal override(PendleERC20, PendleGauge) {
357
+ PendleGauge._afterTokenTransfer(from, to, amount);
322
358
  }
323
359
  }
@@ -1,13 +1,19 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.9;
2
+ pragma solidity 0.8.13;
3
3
  import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
4
- import "../interfaces/IPMarket.sol";
5
- import "../interfaces/IPYieldContractFactory.sol";
6
- import "../interfaces/IPMarketFactory.sol";
7
- import "../periphery/PermissionsV2Upg.sol";
4
+ import "@openzeppelin/contracts/proxy/utils/Initializable.sol";
5
+
6
+ import "../../interfaces/IPMarket.sol";
7
+ import "../../interfaces/IPYieldContractFactory.sol";
8
+ import "../../interfaces/IPMarketFactory.sol";
9
+
10
+ import "../../libraries/helpers/MiniDeployer.sol";
11
+ import "../../periphery/PermissionsV2Upg.sol";
12
+
8
13
  import "./PendleMarket.sol";
14
+ import "../LiquidityMining/PendleGauge.sol";
9
15
 
10
- contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
16
+ contract PendleMarketFactory is PermissionsV2Upg, MiniDeployer, Initializable, IPMarketFactory {
11
17
  using EnumerableSet for EnumerableSet.AddressSet;
12
18
 
13
19
  struct MarketConfig {
@@ -19,11 +25,18 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
19
25
  // 1 SLOT = 40 bits
20
26
  }
21
27
 
22
- mapping(address => EnumerableSet.AddressSet) internal markets;
28
+ uint256 private constant MIN_RATE_ORACLE_TIME_WINDOW = 300 seconds;
23
29
 
24
30
  address public immutable yieldContractFactory;
31
+ address public immutable marketCreationCodePointer;
25
32
  uint256 public immutable maxLnFeeRateRoot;
26
- uint256 public constant minRateOracleTimeWindow = 300 seconds;
33
+
34
+ // PT -> scalarRoot -> initialAnchor
35
+ mapping(address => mapping(int256 => mapping(int256 => address))) internal markets;
36
+ EnumerableSet.AddressSet internal allMarkets;
37
+
38
+ address public vePendle;
39
+ address public gaugeController;
27
40
 
28
41
  MarketConfig public marketConfig;
29
42
 
@@ -33,7 +46,8 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
33
46
  address _treasury,
34
47
  uint96 _lnFeeRateRoot,
35
48
  uint32 _rateOracleTimeWindow,
36
- uint8 _reserveFeePercent
49
+ uint8 _reserveFeePercent,
50
+ bytes memory _marketCreationCode
37
51
  ) PermissionsV2Upg(_governanceManager) {
38
52
  require(_yieldContractFactory != address(0), "zero address");
39
53
  yieldContractFactory = _yieldContractFactory;
@@ -43,6 +57,17 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
43
57
  setlnFeeRateRoot(_lnFeeRateRoot);
44
58
  setRateOracleTimeWindow(_rateOracleTimeWindow);
45
59
  setReserveFeePercent(_reserveFeePercent);
60
+ marketCreationCodePointer = _setCreationCode(_marketCreationCode);
61
+ }
62
+
63
+ function initialize(address newVePendle, address newGaugeController)
64
+ external
65
+ onlyGovernance
66
+ initializer
67
+ {
68
+ require(newVePendle != address(0) && newGaugeController != address(0), "zero address");
69
+ vePendle = newVePendle;
70
+ gaugeController = newGaugeController;
46
71
  }
47
72
 
48
73
  /**
@@ -54,23 +79,27 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
54
79
  int256 scalarRoot,
55
80
  int256 initialAnchor
56
81
  ) external returns (address market) {
57
- address SCY = IPPrincipalToken(PT).SCY();
58
- uint256 expiry = IPPrincipalToken(PT).expiry();
59
-
82
+ require(IPYieldContractFactory(yieldContractFactory).isPT(PT), "Invalid PT");
83
+ require(vePendle != address(0), "vePendle unset");
84
+ require(gaugeController != address(0), "gaugeController unset");
60
85
  require(
61
- IPYieldContractFactory(yieldContractFactory).getPT(SCY, expiry) == PT,
62
- "INVALID_PT"
86
+ markets[PT][scalarRoot][initialAnchor] == address(0),
87
+ "duplicated creation params"
88
+ );
89
+
90
+ market = _deployWithArgs(
91
+ marketCreationCodePointer,
92
+ abi.encode(PT, scalarRoot, initialAnchor, vePendle, gaugeController)
63
93
  );
64
94
 
65
- market = address(new PendleMarket(PT, scalarRoot, initialAnchor));
66
- require(markets[PT].add(market), "market add failed");
95
+ markets[PT][scalarRoot][initialAnchor] = market;
96
+ require(allMarkets.add(market), "IE market can't be added");
67
97
 
68
98
  emit CreateNewMarket(PT, scalarRoot, initialAnchor);
69
99
  }
70
100
 
71
101
  function isValidMarket(address market) external view returns (bool) {
72
- address PT = IPMarket(market).PT();
73
- return markets[PT].contains(market);
102
+ return allMarkets.contains(market);
74
103
  }
75
104
 
76
105
  function treasury() external view returns (address) {
@@ -80,20 +109,34 @@ contract PendleMarketFactory is PermissionsV2Upg, IPMarketFactory {
80
109
  function setTreasury(address newTreasury) public onlyGovernance {
81
110
  require(newTreasury != address(0), "zero address");
82
111
  marketConfig.treasury = newTreasury;
112
+ _emitNewMarketConfigEvent();
83
113
  }
84
114
 
85
115
  function setlnFeeRateRoot(uint96 newlnFeeRateRoot) public onlyGovernance {
86
116
  require(newlnFeeRateRoot <= maxLnFeeRateRoot, "invalid fee rate root");
87
117
  marketConfig.lnFeeRateRoot = newlnFeeRateRoot;
118
+ _emitNewMarketConfigEvent();
88
119
  }
89
120
 
90
121
  function setRateOracleTimeWindow(uint32 newRateOracleTimeWindow) public onlyGovernance {
91
- require(newRateOracleTimeWindow >= minRateOracleTimeWindow, "invalid time window");
122
+ require(newRateOracleTimeWindow >= MIN_RATE_ORACLE_TIME_WINDOW, "invalid time window");
92
123
  marketConfig.rateOracleTimeWindow = newRateOracleTimeWindow;
124
+ _emitNewMarketConfigEvent();
93
125
  }
94
126
 
95
127
  function setReserveFeePercent(uint8 newReserveFeePercent) public onlyGovernance {
96
128
  require(newReserveFeePercent <= 100, "invalid reserve fee percent");
97
129
  marketConfig.reserveFeePercent = newReserveFeePercent;
130
+ _emitNewMarketConfigEvent();
131
+ }
132
+
133
+ function _emitNewMarketConfigEvent() internal {
134
+ MarketConfig memory local = marketConfig;
135
+ emit NewMarketConfig(
136
+ local.treasury,
137
+ local.lnFeeRateRoot,
138
+ local.rateOracleTimeWindow,
139
+ local.reserveFeePercent
140
+ );
98
141
  }
99
142
  }