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

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 (292) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +33 -17
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.json +2 -2
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +33 -17
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +33 -17
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +33 -17
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +33 -17
  15. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  16. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.json +31 -15
  17. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  18. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +31 -15
  19. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
  21. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  22. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  23. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  24. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  26. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.json +0 -26
  28. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  30. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  33. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +125 -111
  38. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  40. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +2 -2
  42. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
  44. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -2
  46. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +77 -2
  49. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +51 -20
  51. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +72 -93
  53. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  55. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +3 -3
  57. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +2 -2
  59. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  63. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  64. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  65. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  66. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  67. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  68. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  69. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  70. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  71. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +48 -83
  85. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  88. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.json +30 -4
  95. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +8 -92
  97. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.json +31 -2
  104. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  108. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  109. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  110. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +1 -1
  111. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.json +2 -2
  112. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  113. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.json +2 -2
  114. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  115. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  116. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  117. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  118. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  119. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +2 -2
  120. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  121. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
  122. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  123. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +2 -2
  124. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  125. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.json +2 -2
  126. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  127. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  128. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
  129. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  130. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  131. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  132. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  133. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  134. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  135. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  136. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +2 -2
  137. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  138. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +2 -2
  139. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +1 -1
  140. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.json +2 -2
  141. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +1 -1
  142. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  143. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +2 -2
  144. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  145. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
  146. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  147. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +16 -12
  148. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +3 -3
  149. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +20 -0
  150. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +20 -0
  151. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +20 -0
  152. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +36 -5
  153. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +64 -42
  154. package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +0 -7
  155. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +1 -1
  156. package/contracts/core/LiquidityMining/PendleGauge.sol +24 -8
  157. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +47 -96
  158. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +86 -73
  159. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +17 -16
  160. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +1 -1
  161. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +3 -4
  162. package/contracts/core/Market/PendleMarket.sol +34 -64
  163. package/contracts/core/PendleRouter.sol +1 -1
  164. package/contracts/core/YieldContracts/InterestManagerYT.sol +11 -8
  165. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  166. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +18 -12
  167. package/contracts/core/YieldContracts/PendleYieldToken.sol +191 -138
  168. package/contracts/core/actions/ActionCallback.sol +12 -13
  169. package/contracts/core/actions/ActionCore.sol +84 -22
  170. package/contracts/core/actions/ActionYT.sol +33 -15
  171. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +6 -17
  172. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +20 -50
  173. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +6 -13
  174. package/contracts/interfaces/IPActionCore.sol +72 -1
  175. package/contracts/interfaces/IPActionYT.sol +15 -0
  176. package/contracts/interfaces/IPMarket.sol +7 -26
  177. package/contracts/interfaces/IPRouterStatic.sol +7 -2
  178. package/contracts/interfaces/IPVeToken.sol +0 -2
  179. package/contracts/interfaces/IPVotingEscrow.sol +1 -1
  180. package/contracts/interfaces/IPYieldContractFactory.sol +6 -2
  181. package/contracts/interfaces/IPYieldToken.sol +21 -11
  182. package/contracts/interfaces/ISuperComposableYield.sol +22 -28
  183. package/contracts/interfaces/IYearnVault.sol +13 -1
  184. package/contracts/libraries/RewardManager.sol +9 -6
  185. package/contracts/libraries/RewardManagerAbstract.sol +6 -8
  186. package/contracts/libraries/SCY/SCYIndex.sol +17 -0
  187. package/contracts/libraries/SCY/SCYUtils.sol +16 -0
  188. package/contracts/libraries/VeBalanceLib.sol +0 -1
  189. package/contracts/libraries/helpers/ArrayLib.sol +11 -0
  190. package/contracts/libraries/helpers/TokenHelper.sol +6 -5
  191. package/contracts/libraries/math/MarketApproxLib.sol +91 -36
  192. package/contracts/libraries/math/MarketMathCore.sol +21 -25
  193. package/contracts/libraries/math/Math.sol +0 -7
  194. package/contracts/offchain-helpers/RouterStatic.sol +139 -7
  195. package/deployments/43113-core.json +11 -11
  196. package/deployments/43113-markets/benqi-market-0x9f080Af83E84099ED92b1b9b4B4BbE4400f2A3CB.json +7 -0
  197. package/deployments/80001-core.json +10 -10
  198. package/deployments/80001-markets/benqi-market-0x78699fa58C484e9867B8047A12E959ccB8BaD90E.json +7 -0
  199. package/package.json +2 -2
  200. package/typechain-types/ActionCore.ts +8 -8
  201. package/typechain-types/CelerReceiver.ts +267 -0
  202. package/typechain-types/CelerSender.ts +164 -0
  203. package/typechain-types/IPActionCore.ts +8 -8
  204. package/typechain-types/IPAllAction.ts +8 -8
  205. package/typechain-types/IPMarket.ts +66 -109
  206. package/typechain-types/IPVotingEscrowController.ts +154 -0
  207. package/typechain-types/IPYieldContractFactory.ts +34 -0
  208. package/typechain-types/IPYieldToken.ts +12 -112
  209. package/typechain-types/ISuperComposableYield.ts +54 -10
  210. package/typechain-types/PendleAaveV3SCY.ts +54 -29
  211. package/typechain-types/PendleBtrflyScy.ts +56 -58
  212. package/typechain-types/PendleERC4626SCY.ts +54 -29
  213. package/typechain-types/PendleGauge.ts +0 -32
  214. package/typechain-types/PendleGaugeController.ts +282 -0
  215. package/typechain-types/PendleGaugeControllerMainchain.ts +346 -0
  216. package/typechain-types/PendleGaugeControllerSidechain.ts +460 -0
  217. package/typechain-types/PendleJoeLpSCY.ts +56 -58
  218. package/typechain-types/PendleMarket.ts +169 -140
  219. package/typechain-types/PendlePrincipalToken.ts +104 -0
  220. package/typechain-types/PendleQiTokenSCY.ts +54 -29
  221. package/typechain-types/PendleVotingController.ts +865 -0
  222. package/typechain-types/PendleWstEthSCY.ts +54 -29
  223. package/typechain-types/PendleYearnVaultSCY.ts +54 -29
  224. package/typechain-types/PendleYieldContractFactory.ts +66 -19
  225. package/typechain-types/PendleYieldToken.ts +122 -158
  226. package/typechain-types/SCYBase.ts +54 -29
  227. package/typechain-types/SCYBaseWithRewards.ts +54 -29
  228. package/typechain-types/VotingControllerStorage.ts +410 -0
  229. package/typechain-types/VotingEscrowController.ts +154 -0
  230. package/typechain-types/VotingEscrowToken.ts +335 -0
  231. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  232. package/typechain-types/factories/ActionCore__factory.ts +2 -2
  233. package/typechain-types/factories/ActionYT__factory.ts +1 -1
  234. package/typechain-types/factories/CelerReceiver__factory.ts +140 -0
  235. package/typechain-types/factories/CelerSender__factory.ts +67 -0
  236. package/typechain-types/factories/ERC20__factory.ts +1 -1
  237. package/typechain-types/factories/IPActionCore__factory.ts +1 -1
  238. package/typechain-types/factories/IPAllAction__factory.ts +1 -1
  239. package/typechain-types/factories/IPMarket__factory.ts +48 -83
  240. package/typechain-types/factories/IPVotingEscrowController__factory.ts +80 -0
  241. package/typechain-types/factories/IPYieldContractFactory__factory.ts +30 -4
  242. package/typechain-types/factories/IPYieldToken__factory.ts +6 -90
  243. package/typechain-types/factories/ISuperComposableYield__factory.ts +31 -2
  244. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +32 -16
  245. package/typechain-types/factories/PendleBtrflyScy__factory.ts +52 -28
  246. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  247. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  248. package/typechain-types/factories/PendleERC4626SCY__factory.ts +32 -16
  249. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  250. package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +269 -0
  251. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  252. package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +328 -0
  253. package/typechain-types/factories/PendleGaugeController__factory.ts +149 -0
  254. package/typechain-types/factories/PendleGauge__factory.ts +0 -26
  255. package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
  256. package/typechain-types/factories/PendleJoeLpSCY__factory.ts +34 -28
  257. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  258. package/typechain-types/factories/PendleMarket__factory.ts +124 -110
  259. package/typechain-types/factories/PendlePrincipalToken__factory.ts +76 -1
  260. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  261. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +32 -16
  262. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  263. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  264. package/typechain-types/factories/PendleVotingController__factory.ts +584 -0
  265. package/typechain-types/factories/PendleWstEthSCY__factory.ts +32 -16
  266. package/typechain-types/factories/PendleYearnVaultSCY__factory.ts +32 -16
  267. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +54 -19
  268. package/typechain-types/factories/PendleYieldToken__factory.ts +70 -91
  269. package/typechain-types/factories/RouterStatic__factory.ts +1 -1
  270. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +31 -15
  271. package/typechain-types/factories/SCYBase__factory.ts +31 -15
  272. package/typechain-types/factories/VotingControllerStorage__factory.ts +298 -0
  273. package/typechain-types/factories/VotingEscrowController__factory.ts +80 -0
  274. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  275. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  276. package/typechain-types/factories/VotingEscrowToken__factory.ts +225 -0
  277. package/typechain-types/hardhat.d.ts +0 -27
  278. package/typechain-types/index.ts +0 -6
  279. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
  280. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -635
  281. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +0 -4
  282. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +0 -653
  283. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +0 -4
  284. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.json +0 -67
  285. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +0 -4
  286. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +0 -10
  287. package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +0 -123
  288. package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +0 -245
  289. package/contracts/interfaces/IPMarketAddRemoveCallback.sol +0 -18
  290. package/contracts/libraries/solmate/Bytes32AddressLib.sol +0 -14
  291. package/deployments/43113-markets/benqi-market.json +0 -7
  292. package/deployments/80001-markets/benqi-market.json +0 -7
@@ -32,7 +32,15 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
32
32
  uint256 ptUsed
33
33
  )
34
34
  {
35
- return _addLiquidity(receiver, market, scyDesired, ptDesired, minLpOut, true);
35
+ (netLpOut, scyUsed, ptUsed) = _addLiquidity(
36
+ receiver,
37
+ market,
38
+ scyDesired,
39
+ ptDesired,
40
+ minLpOut,
41
+ true
42
+ );
43
+ emit AddLiquidity(msg.sender, market, receiver, scyUsed, ptUsed, netLpOut);
36
44
  }
37
45
 
38
46
  /// @dev refer to the internal function
@@ -43,7 +51,15 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
43
51
  uint256 scyOutMin,
44
52
  uint256 ptOutMin
45
53
  ) external returns (uint256 netScyOut, uint256 netPtOut) {
46
- return _removeLiquidity(receiver, market, lpToRemove, scyOutMin, ptOutMin, true);
54
+ (netScyOut, netPtOut) = _removeLiquidity(
55
+ receiver,
56
+ market,
57
+ lpToRemove,
58
+ scyOutMin,
59
+ ptOutMin,
60
+ true
61
+ );
62
+ emit RemoveLiquidity(msg.sender, market, receiver, lpToRemove, netPtOut, netScyOut);
47
63
  }
48
64
 
49
65
  /// @dev refer to the internal function
@@ -53,7 +69,8 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
53
69
  uint256 exactPtIn,
54
70
  uint256 minScyOut
55
71
  ) external returns (uint256 netScyOut) {
56
- return _swapExactPtForScy(receiver, market, exactPtIn, minScyOut, true);
72
+ netScyOut = _swapExactPtForScy(receiver, market, exactPtIn, minScyOut, true);
73
+ emit SwapPtAndScy(msg.sender, market, receiver, exactPtIn.neg(), netScyOut.Int());
57
74
  }
58
75
 
59
76
  /// @dev refer to the internal function
@@ -64,7 +81,8 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
64
81
  uint256 maxPtIn,
65
82
  ApproxParams memory guessPtIn
66
83
  ) external returns (uint256 netPtIn) {
67
- return _swapPtForExactScy(receiver, market, exactScyOut, maxPtIn, guessPtIn, true);
84
+ netPtIn = _swapPtForExactScy(receiver, market, exactScyOut, maxPtIn, guessPtIn, true);
85
+ emit SwapPtAndScy(msg.sender, market, receiver, netPtIn.neg(), exactScyOut.Int());
68
86
  }
69
87
 
70
88
  /// @dev refer to the internal function
@@ -74,7 +92,8 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
74
92
  uint256 exactPtOut,
75
93
  uint256 maxScyIn
76
94
  ) external returns (uint256 netScyIn) {
77
- return _swapScyForExactPt(receiver, market, exactPtOut, maxScyIn, true);
95
+ netScyIn = _swapScyForExactPt(receiver, market, exactPtOut, maxScyIn, true);
96
+ emit SwapPtAndScy(msg.sender, market, receiver, exactPtOut.Int(), netScyIn.neg());
78
97
  }
79
98
 
80
99
  /// @dev refer to the internal function
@@ -85,7 +104,8 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
85
104
  uint256 minPtOut,
86
105
  ApproxParams memory guessPtOut
87
106
  ) external returns (uint256 netPtOut) {
88
- return _swapExactScyForPt(receiver, market, exactScyIn, minPtOut, guessPtOut, true);
107
+ netPtOut = _swapExactScyForPt(receiver, market, exactScyIn, minPtOut, guessPtOut, true);
108
+ emit SwapPtAndScy(msg.sender, market, receiver, netPtOut.Int(), exactScyIn.neg());
89
109
  }
90
110
 
91
111
  /// @dev refer to the internal function
@@ -107,7 +127,15 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
107
127
  uint256 minRawTokenOut,
108
128
  address[] memory path
109
129
  ) external returns (uint256 netRawTokenOut) {
110
- return _redeemScyToRawToken(receiver, SCY, netScyIn, minRawTokenOut, path, true);
130
+ netRawTokenOut = _redeemScyToRawToken(receiver, SCY, netScyIn, minRawTokenOut, path, true);
131
+ emit RedeemScyToRawToken(
132
+ msg.sender,
133
+ receiver,
134
+ SCY,
135
+ netScyIn,
136
+ path[path.length - 1],
137
+ netRawTokenOut
138
+ );
111
139
  }
112
140
 
113
141
  /// @dev refer to the internal function
@@ -118,7 +146,8 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
118
146
  uint256 minPyOut,
119
147
  address[] calldata path
120
148
  ) external returns (uint256 netPyOut) {
121
- return _mintPyFromRawToken(receiver, YT, netRawTokenIn, minPyOut, path, true);
149
+ netPyOut = _mintPyFromRawToken(receiver, YT, netRawTokenIn, minPyOut, path, true);
150
+ emit MintPyFromRawToken(msg.sender, receiver, YT, path[0], netRawTokenIn, netPyOut);
122
151
  }
123
152
 
124
153
  /// @dev refer to the internal function
@@ -129,7 +158,15 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
129
158
  uint256 minRawTokenOut,
130
159
  address[] memory path
131
160
  ) external returns (uint256 netRawTokenOut) {
132
- return _redeemPyToRawToken(receiver, YT, netPyIn, minRawTokenOut, path, true);
161
+ netRawTokenOut = _redeemPyToRawToken(receiver, YT, netPyIn, minRawTokenOut, path, true);
162
+ emit RedeemPyToRawToken(
163
+ msg.sender,
164
+ receiver,
165
+ YT,
166
+ netPyIn,
167
+ path[path.length - 1],
168
+ netRawTokenOut
169
+ );
133
170
  }
134
171
 
135
172
  /// @dev refer to the internal function
@@ -141,16 +178,24 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
141
178
  address[] calldata path,
142
179
  ApproxParams memory guessPtOut
143
180
  ) external returns (uint256 netPtOut) {
144
- return
145
- _swapExactRawTokenForPt(
146
- receiver,
147
- market,
148
- exactRawTokenIn,
149
- minPtOut,
150
- path,
151
- guessPtOut,
152
- true
153
- );
181
+ netPtOut = _swapExactRawTokenForPt(
182
+ receiver,
183
+ market,
184
+ exactRawTokenIn,
185
+ minPtOut,
186
+ path,
187
+ guessPtOut,
188
+ true
189
+ );
190
+
191
+ emit SwapPtAndRawToken(
192
+ msg.sender,
193
+ market,
194
+ path[0],
195
+ receiver,
196
+ netPtOut.Int(),
197
+ exactRawTokenIn.neg()
198
+ );
154
199
  }
155
200
 
156
201
  /// @dev refer to the internal function
@@ -161,10 +206,25 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
161
206
  uint256 minRawTokenOut,
162
207
  address[] calldata path
163
208
  ) external returns (uint256 netRawTokenOut) {
164
- return _swapExactPtForRawToken(receiver, market, exactPtIn, minRawTokenOut, path, true);
209
+ netRawTokenOut = _swapExactPtForRawToken(
210
+ receiver,
211
+ market,
212
+ exactPtIn,
213
+ minRawTokenOut,
214
+ path,
215
+ true
216
+ );
217
+ emit SwapPtAndRawToken(
218
+ msg.sender,
219
+ market,
220
+ path[path.length - 1],
221
+ receiver,
222
+ exactPtIn.neg(),
223
+ netRawTokenOut.Int()
224
+ );
165
225
  }
166
226
 
167
- function redeemDueIncome(
227
+ function redeemDueInterestAndRewards(
168
228
  address user,
169
229
  address[] calldata scys,
170
230
  address[] calldata yts,
@@ -187,7 +247,9 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
187
247
  ytRewards = new uint256[][](yts.length);
188
248
  for (uint256 i = 0; i < yts.length; ++i) {
189
249
  (ytInterests[i], ytRewards[i]) = IPYieldToken(yts[i]).redeemDueInterestAndRewards(
190
- user
250
+ user,
251
+ true,
252
+ true
191
253
  );
192
254
  }
193
255
 
@@ -26,7 +26,8 @@ contract ActionYT is IPActionYT, ActionSCYAndYTBase {
26
26
  uint256 exactYtIn,
27
27
  uint256 minScyOut
28
28
  ) external returns (uint256 netScyOut) {
29
- return _swapExactYtForScy(receiver, market, exactYtIn, minScyOut, true);
29
+ netScyOut = _swapExactYtForScy(receiver, market, exactYtIn, minScyOut, true);
30
+ emit SwapYTAndSCY(receiver, market, exactYtIn.neg(), netScyOut.Int());
30
31
  }
31
32
 
32
33
  /// @dev refer to the internal function
@@ -36,7 +37,8 @@ contract ActionYT is IPActionYT, ActionSCYAndYTBase {
36
37
  uint256 exactYtOut,
37
38
  uint256 maxScyIn
38
39
  ) external returns (uint256 netScyIn) {
39
- return _swapScyForExactYt(receiver, market, exactYtOut, maxScyIn);
40
+ netScyIn = _swapScyForExactYt(receiver, market, exactYtOut, maxScyIn);
41
+ emit SwapYTAndSCY(receiver, market, exactYtOut.Int(), netScyIn.neg());
40
42
  }
41
43
 
42
44
  /// @dev refer to the internal function
@@ -47,7 +49,8 @@ contract ActionYT is IPActionYT, ActionSCYAndYTBase {
47
49
  uint256 minYtOut,
48
50
  ApproxParams memory guessYtOut
49
51
  ) external returns (uint256 netYtOut) {
50
- return _swapExactScyForYt(receiver, market, exactScyIn, minYtOut, guessYtOut, true);
52
+ netYtOut = _swapExactScyForYt(receiver, market, exactScyIn, minYtOut, guessYtOut, true);
53
+ emit SwapYTAndSCY(receiver, market, netYtOut.Int(), exactScyIn.neg());
51
54
  }
52
55
 
53
56
  /// @dev refer to the internal function
@@ -58,7 +61,8 @@ contract ActionYT is IPActionYT, ActionSCYAndYTBase {
58
61
  uint256 maxYtIn,
59
62
  ApproxParams memory guessYtIn
60
63
  ) external returns (uint256 netYtIn) {
61
- return _swapYtForExactScy(receiver, market, exactScyOut, maxYtIn, guessYtIn, true);
64
+ netYtIn = _swapYtForExactScy(receiver, market, exactScyOut, maxYtIn, guessYtIn, true);
65
+ emit SwapYTAndSCY(receiver, market, netYtIn.neg(), exactScyOut.Int());
62
66
  }
63
67
 
64
68
  /// @dev refer to the internal function
@@ -70,16 +74,16 @@ contract ActionYT is IPActionYT, ActionSCYAndYTBase {
70
74
  address[] calldata path,
71
75
  ApproxParams memory guessYtOut
72
76
  ) external returns (uint256 netYtOut) {
73
- return
74
- _swapExactRawTokenForYt(
75
- receiver,
76
- market,
77
- exactRawTokenIn,
78
- minYtOut,
79
- path,
80
- guessYtOut,
81
- true
82
- );
77
+ netYtOut = _swapExactRawTokenForYt(
78
+ receiver,
79
+ market,
80
+ exactRawTokenIn,
81
+ minYtOut,
82
+ path,
83
+ guessYtOut,
84
+ true
85
+ );
86
+ emit SwapYTAndRawToken(receiver, market, path[0], netYtOut.Int(), exactRawTokenIn.neg());
83
87
  }
84
88
 
85
89
  /// @dev refer to the internal function
@@ -90,6 +94,20 @@ contract ActionYT is IPActionYT, ActionSCYAndYTBase {
90
94
  uint256 minRawTokenOut,
91
95
  address[] calldata path
92
96
  ) external returns (uint256 netRawTokenOut) {
93
- return _swapExactYtForRawToken(receiver, market, exactYtIn, minRawTokenOut, path, true);
97
+ netRawTokenOut = _swapExactYtForRawToken(
98
+ receiver,
99
+ market,
100
+ exactYtIn,
101
+ minRawTokenOut,
102
+ path,
103
+ true
104
+ );
105
+ emit SwapYTAndRawToken(
106
+ receiver,
107
+ market,
108
+ path[path.length - 1],
109
+ exactYtIn.neg(),
110
+ netRawTokenOut.Int()
111
+ );
94
112
  }
95
113
  }
@@ -3,7 +3,6 @@ pragma solidity 0.8.15;
3
3
 
4
4
  import "../../../interfaces/IPMarketFactory.sol";
5
5
  import "../../../interfaces/IPMarket.sol";
6
- import "../../../interfaces/IPMarketAddRemoveCallback.sol";
7
6
  import "../../../interfaces/IPMarketSwapCallback.sol";
8
7
  import "../../../libraries/math/MarketApproxLib.sol";
9
8
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
@@ -46,7 +45,7 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
46
45
  SCY.newIndex(),
47
46
  scyDesired,
48
47
  ptDesired,
49
- false
48
+ block.timestamp
50
49
  );
51
50
 
52
51
  // early-check
@@ -57,12 +56,7 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
57
56
  IERC20(PT).safeTransferFrom(msg.sender, market, ptUsed);
58
57
  }
59
58
 
60
- (netLpOut, , ) = IPMarket(market).addLiquidity(
61
- receiver,
62
- ptDesired,
63
- scyDesired,
64
- EMPTY_BYTES
65
- );
59
+ netLpOut = IPMarket(market).mint(receiver);
66
60
 
67
61
  // fail-safe
68
62
  require(netLpOut >= minLpOut, "FS insufficient lp out");
@@ -78,7 +72,7 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
78
72
  ) internal returns (uint256 netScyOut, uint256 netPtOut) {
79
73
  MarketState memory state = IPMarket(market).readState(false);
80
74
 
81
- (netScyOut, netPtOut) = state.removeLiquidity(lpToRemove, false);
75
+ (netScyOut, netPtOut) = state.removeLiquidity(lpToRemove);
82
76
 
83
77
  // early-check
84
78
  require(netScyOut >= scyOutMin, "insufficient SCY out");
@@ -88,12 +82,7 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
88
82
  IERC20(market).safeTransferFrom(msg.sender, market, lpToRemove);
89
83
  }
90
84
 
91
- (netScyOut, netPtOut) = IPMarket(market).removeLiquidity(
92
- receiver,
93
- receiver,
94
- lpToRemove,
95
- EMPTY_BYTES
96
- );
85
+ (netScyOut, netPtOut) = IPMarket(market).burn(receiver, receiver);
97
86
 
98
87
  // fail-safe
99
88
  require(netScyOut >= scyOutMin, "FS insufficient SCY out");
@@ -132,7 +121,7 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
132
121
  MarketState memory state = IPMarket(market).readState(false);
133
122
  (ISuperComposableYield SCY, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
134
123
 
135
- (netPtIn, ) = state.approxSwapPtForExactScy(
124
+ (netPtIn, , ) = state.approxSwapPtForExactScy(
136
125
  SCY.newIndex(),
137
126
  exactScyOut,
138
127
  block.timestamp,
@@ -188,7 +177,7 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
188
177
  MarketState memory state = IPMarket(market).readState(false);
189
178
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
190
179
 
191
- (netPtOut, ) = state.approxSwapExactScyForPt(
180
+ (netPtOut, , ) = state.approxSwapExactScyForPt(
192
181
  SCY.newIndex(),
193
182
  exactScyIn,
194
183
  block.timestamp,
@@ -4,45 +4,14 @@ pragma solidity 0.8.15;
4
4
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
5
5
  import "../../../libraries/traderjoe/PendleJoeSwapHelperUpg.sol";
6
6
  import "../../../libraries/helpers/MiniHelpers.sol";
7
+ import "../../../libraries/helpers/TokenHelper.sol";
7
8
  import "../../../interfaces/ISuperComposableYield.sol";
8
9
  import "../../../interfaces/IPYieldToken.sol";
9
10
 
10
11
  // solhint-disable no-empty-blocks
11
- abstract contract ActionSCYAndPYBase is PendleJoeSwapHelperUpg {
12
+ abstract contract ActionSCYAndPYBase is PendleJoeSwapHelperUpg, TokenHelper {
12
13
  using SafeERC20 for IERC20;
13
14
 
14
- event MintScyFromRawToken(
15
- address indexed user,
16
- address indexed rawTokenIn,
17
- uint256 netRawTokenIn,
18
- address indexed SCY,
19
- uint256 netScyOut
20
- );
21
-
22
- event RedeemScyToRawToken(
23
- address indexed user,
24
- address indexed SCY,
25
- uint256 netScyIn,
26
- address indexed rawTokenOut,
27
- uint256 netRawTokenOut
28
- );
29
-
30
- event MintPyFromRawToken(
31
- address indexed user,
32
- address indexed rawTokenIn,
33
- uint256 netRawTokenIn,
34
- address indexed YT,
35
- uint256 netPyOut
36
- );
37
-
38
- event RedeemPyToRawToken(
39
- address indexed user,
40
- address indexed YT,
41
- uint256 netPyIn,
42
- address indexed rawTokenOut,
43
- uint256 netRawTokenOut
44
- );
45
-
46
15
  /// @dev since this contract will be proxied, it must not contains non-immutable variables
47
16
  constructor(address _joeFactory) PendleJoeSwapHelperUpg(_joeFactory) {}
48
17
 
@@ -60,18 +29,27 @@ abstract contract ActionSCYAndPYBase is PendleJoeSwapHelperUpg {
60
29
  address[] calldata path,
61
30
  bool doPull
62
31
  ) internal returns (uint256 netScyOut) {
63
- if (doPull) {
64
- if (path.length == 1) {
65
- IERC20(path[0]).safeTransferFrom(msg.sender, SCY, netRawTokenIn);
66
- } else {
32
+ uint256 amountBaseToken;
33
+ if (path.length == 1) {
34
+ if (doPull) {
35
+ IERC20(path[0]).safeTransferFrom(msg.sender, address(this), netRawTokenIn);
36
+ }
37
+ amountBaseToken = netRawTokenIn;
38
+ } else {
39
+ if (doPull) {
67
40
  IERC20(path[0]).safeTransferFrom(msg.sender, _getFirstPair(path), netRawTokenIn);
68
- _swapExactIn(path, netRawTokenIn, SCY);
69
41
  }
42
+ amountBaseToken = _swapExactIn(path, netRawTokenIn, address(this));
70
43
  }
71
44
 
72
45
  address baseToken = path[path.length - 1];
73
- netScyOut = ISuperComposableYield(SCY).deposit(receiver, baseToken, 0, minScyOut);
74
- emit MintScyFromRawToken(msg.sender, path[0], netRawTokenIn, SCY, netScyOut);
46
+ IERC20(baseToken).approve(SCY, amountBaseToken);
47
+ netScyOut = ISuperComposableYield(SCY).deposit(
48
+ receiver,
49
+ baseToken,
50
+ amountBaseToken,
51
+ minScyOut
52
+ );
75
53
  }
76
54
 
77
55
  /**
@@ -91,24 +69,20 @@ abstract contract ActionSCYAndPYBase is PendleJoeSwapHelperUpg {
91
69
 
92
70
  address baseToken = path[0];
93
71
  if (path.length == 1) {
94
- netRawTokenOut = ISuperComposableYield(SCY).redeem(
72
+ netRawTokenOut = ISuperComposableYield(SCY).redeemAfterTransfer(
95
73
  receiver,
96
- 0,
97
74
  baseToken,
98
75
  minRawTokenOut
99
76
  );
100
77
  } else {
101
- uint256 netBaseTokenOut = ISuperComposableYield(SCY).redeem(
78
+ uint256 netBaseTokenOut = ISuperComposableYield(SCY).redeemAfterTransfer(
102
79
  _getFirstPair(path),
103
- 0,
104
80
  baseToken,
105
81
  1
106
82
  );
107
83
  netRawTokenOut = _swapExactIn(path, netBaseTokenOut, receiver);
108
84
  require(netRawTokenOut >= minRawTokenOut, "insufficient out");
109
85
  }
110
-
111
- emit RedeemScyToRawToken(msg.sender, SCY, netScyIn, path[path.length - 1], netRawTokenOut);
112
86
  }
113
87
 
114
88
  /**
@@ -128,8 +102,6 @@ abstract contract ActionSCYAndPYBase is PendleJoeSwapHelperUpg {
128
102
 
129
103
  netPyOut = IPYieldToken(YT).mintPY(receiver, receiver);
130
104
  require(netPyOut >= minPyOut, "insufficient PY out");
131
-
132
- emit MintPyFromRawToken(msg.sender, path[0], netRawTokenIn, YT, netPyOut);
133
105
  }
134
106
 
135
107
  /**
@@ -156,7 +128,5 @@ abstract contract ActionSCYAndPYBase is PendleJoeSwapHelperUpg {
156
128
  IPYieldToken(YT).redeemPY(SCY); // ignore return
157
129
 
158
130
  netRawTokenOut = _redeemScyToRawToken(receiver, SCY, 0, minRawTokenOut, path, false);
159
-
160
- emit RedeemPyToRawToken(msg.sender, YT, netPyIn, path[path.length - 1], netRawTokenOut);
161
131
  }
162
132
  }
@@ -18,8 +18,6 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
18
18
  using SafeERC20 for IPYieldToken;
19
19
  using SCYIndexLib for ISuperComposableYield;
20
20
 
21
- event SwapYTAndSCY(address indexed user, int256 ytToAccount, int256 scyToAccount);
22
-
23
21
  /**
24
22
  * @notice swap exact SCY to YT with the help of flashswaps & YT tokenization / redemption
25
23
  * @dev inner working of this function:
@@ -41,7 +39,7 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
41
39
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
42
40
  MarketState memory state = IPMarket(market).readState(false);
43
41
 
44
- (netYtOut, ) = state.approxSwapExactScyForYt(
42
+ (netYtOut, , ) = state.approxSwapExactScyForYt(
45
43
  SCY.newIndex(),
46
44
  exactScyIn,
47
45
  block.timestamp,
@@ -60,8 +58,6 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
60
58
  netYtOut, // exactPtIn = netYtOut
61
59
  _encodeSwapExactScyForYt(receiver, minYtOut)
62
60
  );
63
-
64
- emit SwapYTAndSCY(receiver, netYtOut.Int(), exactScyIn.neg());
65
61
  }
66
62
 
67
63
  /**
@@ -96,8 +92,6 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
96
92
  ); // ignore return
97
93
 
98
94
  netScyOut = SCY.balanceOf(receiver) - preScyBalance;
99
-
100
- emit SwapYTAndSCY(receiver, exactYtIn.neg(), netScyOut.Int());
101
95
  }
102
96
 
103
97
  /**
@@ -115,15 +109,16 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
115
109
  uint256 exactYtOut,
116
110
  uint256 maxScyIn
117
111
  ) internal returns (uint256 netScyIn) {
118
- (, , IPYieldToken YT) = IPMarket(market).readTokens();
112
+ (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
113
+
114
+ uint256 preScyBalance = SCY.balanceOf(msg.sender);
119
115
 
120
116
  IPMarket(market).swapExactPtForScy(
121
117
  address(YT),
122
118
  exactYtOut, // exactPtIn = exactYtOut
123
119
  _encodeSwapScyForExactYt(msg.sender, receiver, maxScyIn)
124
120
  );
125
-
126
- emit SwapYTAndSCY(receiver, exactYtOut.Int(), netScyIn.neg());
121
+ netScyIn = preScyBalance - SCY.balanceOf(msg.sender);
127
122
  }
128
123
 
129
124
  /**
@@ -147,7 +142,7 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
147
142
  MarketState memory state = IPMarket(market).readState(false);
148
143
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
149
144
 
150
- (netYtIn, ) = state.approxSwapYtForExactScy(
145
+ (netYtIn, , ) = state.approxSwapYtForExactScy(
151
146
  SCY.newIndex(),
152
147
  exactScyOut,
153
148
  block.timestamp,
@@ -165,8 +160,6 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
165
160
  netYtIn, // exactPtOut = netYtIn
166
161
  _encodeSwapYtForScy(receiver, exactScyOut)
167
162
  ); // ignore return
168
-
169
- emit SwapYTAndSCY(receiver, netYtIn.neg(), exactScyOut.Int());
170
163
  }
171
164
 
172
165
  /**
@@ -4,6 +4,77 @@ pragma solidity 0.8.15;
4
4
  import "../libraries/math/MarketApproxLib.sol";
5
5
 
6
6
  interface IPActionCore {
7
+ event AddLiquidity(
8
+ address indexed caller,
9
+ address indexed market,
10
+ address indexed receiver,
11
+ uint256 scyUsed,
12
+ uint256 ptUsed,
13
+ uint256 lpOut
14
+ );
15
+
16
+ event RemoveLiquidity(
17
+ address indexed caller,
18
+ address indexed market,
19
+ address receiver,
20
+ uint256 lpIn,
21
+ uint256 amountPTOut,
22
+ uint256 amountSCYOut
23
+ );
24
+
25
+ event SwapPtAndScy(
26
+ address indexed caller,
27
+ address indexed market,
28
+ address indexed receiver,
29
+ int256 amountPtToAccount,
30
+ int256 amountScyToAccount
31
+ );
32
+
33
+ event SwapPtAndRawToken(
34
+ address indexed caller,
35
+ address indexed market,
36
+ address indexed rawToken,
37
+ address receiver,
38
+ int256 amountPtToAccount,
39
+ int256 amountRawTokenToAccount
40
+ );
41
+
42
+ event MintScyFromRawToken(
43
+ address indexed caller,
44
+ address indexed receiver,
45
+ address indexed SCY,
46
+ address rawTokenIn,
47
+ uint256 netRawTokenIn,
48
+ uint256 netScyOut
49
+ );
50
+
51
+ event RedeemScyToRawToken(
52
+ address indexed caller,
53
+ address indexed receiver,
54
+ address indexed SCY,
55
+ uint256 netScyIn,
56
+ address rawTokenOut,
57
+ uint256 netRawTokenOut
58
+ );
59
+
60
+ event MintPyFromRawToken(
61
+ address indexed caller,
62
+ address indexed receiver,
63
+ address indexed YT,
64
+ address rawTokenIn,
65
+ uint256 netRawTokenIn,
66
+ uint256 netPyOut
67
+ );
68
+
69
+ event RedeemPyToRawToken(
70
+ address indexed caller,
71
+ address indexed receiver,
72
+ address indexed YT,
73
+ uint256 netPyIn,
74
+ address rawTokenOut,
75
+ uint256 netRawTokenOut
76
+ );
77
+
7
78
  function addLiquidity(
8
79
  address receiver,
9
80
  address market,
@@ -105,7 +176,7 @@ interface IPActionCore {
105
176
  address[] calldata path
106
177
  ) external returns (uint256 netRawTokenOut);
107
178
 
108
- function redeemDueIncome(
179
+ function redeemDueInterestAndRewards(
109
180
  address user,
110
181
  address[] calldata scys,
111
182
  address[] calldata yts,
@@ -4,6 +4,21 @@ pragma solidity 0.8.15;
4
4
  import "../libraries/math/MarketApproxLib.sol";
5
5
 
6
6
  interface IPActionYT {
7
+ event SwapYTAndSCY(
8
+ address indexed user,
9
+ address indexed market,
10
+ int256 ytToAccount,
11
+ int256 scyToAccount
12
+ );
13
+
14
+ event SwapYTAndRawToken(
15
+ address indexed user,
16
+ address indexed market,
17
+ address indexed rawToken,
18
+ int256 ytToAccount,
19
+ int256 rawTokenToAccount
20
+ );
21
+
7
22
  function swapExactYtForScy(
8
23
  address receiver,
9
24
  address market,