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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +33 -17
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.json +2 -2
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +33 -17
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +33 -17
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +33 -17
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +33 -17
  15. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  16. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.json +31 -15
  17. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  18. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +31 -15
  19. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
  21. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  22. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  23. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  24. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  26. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.json +0 -26
  28. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  30. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  33. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +125 -111
  38. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  40. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +2 -2
  42. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
  44. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -2
  46. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +77 -2
  49. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +51 -20
  51. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +72 -93
  53. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  55. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +3 -3
  57. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +2 -2
  59. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  63. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  64. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  65. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  66. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  67. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  68. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  69. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  70. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  71. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +48 -83
  85. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  88. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +20 -15
  91. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.json +30 -4
  96. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +8 -92
  98. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.json +31 -2
  105. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  109. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  110. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  111. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +1 -1
  112. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.json +2 -2
  113. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  114. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.json +2 -2
  115. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  116. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  117. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  118. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  119. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  120. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +2 -2
  121. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  122. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
  123. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  124. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +2 -2
  125. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  126. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.json +2 -2
  127. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  128. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  129. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
  130. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  131. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  132. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  133. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  134. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  135. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  136. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  137. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +2 -2
  138. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  139. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +2 -2
  140. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +1 -1
  141. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.json +2 -2
  142. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +1 -1
  143. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  144. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +166 -13
  145. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  146. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
  147. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  148. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +16 -12
  149. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +3 -3
  150. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +20 -0
  151. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +20 -0
  152. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +20 -0
  153. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +29 -2
  154. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +63 -41
  155. package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +0 -7
  156. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +1 -1
  157. package/contracts/core/LiquidityMining/PendleGauge.sol +24 -8
  158. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +47 -96
  159. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +86 -73
  160. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +17 -16
  161. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +1 -1
  162. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +3 -4
  163. package/contracts/core/Market/PendleMarket.sol +32 -62
  164. package/contracts/core/PendleRouter.sol +1 -1
  165. package/contracts/core/YieldContracts/InterestManagerYT.sol +11 -8
  166. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  167. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +18 -12
  168. package/contracts/core/YieldContracts/PendleYieldToken.sol +167 -140
  169. package/contracts/core/actions/ActionCallback.sol +11 -10
  170. package/contracts/core/actions/ActionCore.sol +84 -22
  171. package/contracts/core/actions/ActionYT.sol +33 -15
  172. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +4 -15
  173. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +20 -50
  174. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +2 -12
  175. package/contracts/interfaces/IPActionCore.sol +72 -1
  176. package/contracts/interfaces/IPActionYT.sol +15 -0
  177. package/contracts/interfaces/IPMarket.sol +7 -26
  178. package/contracts/interfaces/IPRouterStatic.sol +67 -47
  179. package/contracts/interfaces/IPVeToken.sol +0 -2
  180. package/contracts/interfaces/IPVotingEscrow.sol +1 -1
  181. package/contracts/interfaces/IPYieldContractFactory.sol +6 -2
  182. package/contracts/interfaces/IPYieldToken.sol +21 -11
  183. package/contracts/interfaces/ISuperComposableYield.sol +22 -28
  184. package/contracts/interfaces/IYearnVault.sol +8 -0
  185. package/contracts/libraries/RewardManager.sol +9 -6
  186. package/contracts/libraries/RewardManagerAbstract.sol +6 -8
  187. package/contracts/libraries/SCY/SCYIndex.sol +10 -0
  188. package/contracts/libraries/VeBalanceLib.sol +0 -1
  189. package/contracts/libraries/helpers/ArrayLib.sol +11 -0
  190. package/contracts/libraries/helpers/TokenHelper.sol +6 -5
  191. package/contracts/libraries/math/MarketApproxLib.sol +91 -36
  192. package/contracts/libraries/math/Math.sol +2 -4
  193. package/contracts/offchain-helpers/RouterStatic.sol +144 -115
  194. package/deployments/43113-core.json +11 -9
  195. package/deployments/43113-markets/benqi-market-0xF3150c14F776c50C9D397054d38979c7B77FC41D.json +7 -0
  196. package/deployments/80001-core.json +10 -8
  197. package/deployments/80001-markets/benqi-market-0x150b6eb90Bf636eC0c4328d13d1e1d4adDBAF904.json +7 -0
  198. package/package.json +2 -2
  199. package/typechain-types/ActionCore.ts +8 -8
  200. package/typechain-types/CelerReceiver.ts +267 -0
  201. package/typechain-types/CelerSender.ts +164 -0
  202. package/typechain-types/IPActionCore.ts +8 -8
  203. package/typechain-types/IPAllAction.ts +8 -8
  204. package/typechain-types/IPMarket.ts +66 -109
  205. package/typechain-types/IPRouterStatic.ts +64 -41
  206. package/typechain-types/IPVotingEscrowController.ts +154 -0
  207. package/typechain-types/IPYieldContractFactory.ts +34 -0
  208. package/typechain-types/IPYieldToken.ts +12 -112
  209. package/typechain-types/ISuperComposableYield.ts +54 -10
  210. package/typechain-types/PendleAaveV3SCY.ts +54 -29
  211. package/typechain-types/PendleBtrflyScy.ts +56 -58
  212. package/typechain-types/PendleERC4626SCY.ts +54 -29
  213. package/typechain-types/PendleGauge.ts +0 -32
  214. package/typechain-types/PendleGaugeController.ts +282 -0
  215. package/typechain-types/PendleGaugeControllerMainchain.ts +346 -0
  216. package/typechain-types/PendleGaugeControllerSidechain.ts +460 -0
  217. package/typechain-types/PendleJoeLpSCY.ts +56 -58
  218. package/typechain-types/PendleMarket.ts +169 -140
  219. package/typechain-types/PendlePrincipalToken.ts +104 -0
  220. package/typechain-types/PendleQiTokenSCY.ts +54 -29
  221. package/typechain-types/PendleVotingController.ts +865 -0
  222. package/typechain-types/PendleWstEthSCY.ts +54 -29
  223. package/typechain-types/PendleYearnVaultSCY.ts +54 -29
  224. package/typechain-types/PendleYieldContractFactory.ts +66 -19
  225. package/typechain-types/PendleYieldToken.ts +122 -158
  226. package/typechain-types/RouterStatic.ts +297 -24
  227. package/typechain-types/SCYBase.ts +54 -29
  228. package/typechain-types/SCYBaseWithRewards.ts +54 -29
  229. package/typechain-types/VotingControllerStorage.ts +410 -0
  230. package/typechain-types/VotingEscrowController.ts +154 -0
  231. package/typechain-types/VotingEscrowToken.ts +335 -0
  232. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  233. package/typechain-types/factories/ActionCore__factory.ts +2 -2
  234. package/typechain-types/factories/ActionYT__factory.ts +1 -1
  235. package/typechain-types/factories/CelerReceiver__factory.ts +140 -0
  236. package/typechain-types/factories/CelerSender__factory.ts +67 -0
  237. package/typechain-types/factories/ERC20__factory.ts +1 -1
  238. package/typechain-types/factories/IPActionCore__factory.ts +1 -1
  239. package/typechain-types/factories/IPAllAction__factory.ts +1 -1
  240. package/typechain-types/factories/IPMarket__factory.ts +48 -83
  241. package/typechain-types/factories/IPRouterStatic__factory.ts +20 -15
  242. package/typechain-types/factories/IPVotingEscrowController__factory.ts +80 -0
  243. package/typechain-types/factories/IPYieldContractFactory__factory.ts +30 -4
  244. package/typechain-types/factories/IPYieldToken__factory.ts +6 -90
  245. package/typechain-types/factories/ISuperComposableYield__factory.ts +31 -2
  246. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +32 -16
  247. package/typechain-types/factories/PendleBtrflyScy__factory.ts +52 -28
  248. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  249. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  250. package/typechain-types/factories/PendleERC4626SCY__factory.ts +32 -16
  251. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  252. package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +269 -0
  253. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  254. package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +328 -0
  255. package/typechain-types/factories/PendleGaugeController__factory.ts +149 -0
  256. package/typechain-types/factories/PendleGauge__factory.ts +0 -26
  257. package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
  258. package/typechain-types/factories/PendleJoeLpSCY__factory.ts +34 -28
  259. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  260. package/typechain-types/factories/PendleMarket__factory.ts +124 -110
  261. package/typechain-types/factories/PendlePrincipalToken__factory.ts +76 -1
  262. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  263. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +32 -16
  264. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  265. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  266. package/typechain-types/factories/PendleVotingController__factory.ts +584 -0
  267. package/typechain-types/factories/PendleWstEthSCY__factory.ts +32 -16
  268. package/typechain-types/factories/PendleYearnVaultSCY__factory.ts +32 -16
  269. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +54 -19
  270. package/typechain-types/factories/PendleYieldToken__factory.ts +70 -91
  271. package/typechain-types/factories/RouterStatic__factory.ts +165 -12
  272. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +31 -15
  273. package/typechain-types/factories/SCYBase__factory.ts +31 -15
  274. package/typechain-types/factories/VotingControllerStorage__factory.ts +298 -0
  275. package/typechain-types/factories/VotingEscrowController__factory.ts +80 -0
  276. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  277. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  278. package/typechain-types/factories/VotingEscrowToken__factory.ts +225 -0
  279. package/typechain-types/hardhat.d.ts +0 -27
  280. package/typechain-types/index.ts +0 -6
  281. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
  282. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -635
  283. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +0 -4
  284. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +0 -653
  285. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +0 -4
  286. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.json +0 -67
  287. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +0 -4
  288. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +0 -10
  289. package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +0 -123
  290. package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +0 -245
  291. package/contracts/interfaces/IPMarketAddRemoveCallback.sol +0 -18
  292. package/contracts/libraries/solmate/Bytes32AddressLib.sol +0 -14
  293. package/deployments/43113-markets/benqi-market.json +0 -7
  294. package/deployments/80001-markets/benqi-market.json +0 -7
@@ -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";
@@ -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");
@@ -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
  /**
@@ -122,8 +116,6 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
122
116
  exactYtOut, // exactPtIn = exactYtOut
123
117
  _encodeSwapScyForExactYt(msg.sender, receiver, maxScyIn)
124
118
  );
125
-
126
- emit SwapYTAndSCY(receiver, exactYtOut.Int(), netScyIn.neg());
127
119
  }
128
120
 
129
121
  /**
@@ -147,7 +139,7 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
147
139
  MarketState memory state = IPMarket(market).readState(false);
148
140
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
149
141
 
150
- (netYtIn, ) = state.approxSwapYtForExactScy(
142
+ (netYtIn, , ) = state.approxSwapYtForExactScy(
151
143
  SCY.newIndex(),
152
144
  exactScyOut,
153
145
  block.timestamp,
@@ -165,8 +157,6 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
165
157
  netYtIn, // exactPtOut = netYtIn
166
158
  _encodeSwapYtForScy(receiver, exactScyOut)
167
159
  ); // ignore return
168
-
169
- emit SwapYTAndSCY(receiver, netYtIn.neg(), exactScyOut.Int());
170
160
  }
171
161
 
172
162
  /**
@@ -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,
@@ -7,17 +7,12 @@ import "./IPYieldToken.sol";
7
7
  import "../libraries/math/MarketMathCore.sol";
8
8
 
9
9
  interface IPMarket is IERC20Metadata {
10
- event AddLiquidity(
11
- address indexed receiver,
12
- uint256 lpToAccount,
13
- uint256 scyUsed,
14
- uint256 ptUsed
15
- );
10
+ event Mint(address indexed receiver, uint256 lpMinted, uint256 scyUsed, uint256 ptUsed);
16
11
 
17
- event RemoveLiquidity(
12
+ event Burn(
18
13
  address indexed receiverScy,
19
14
  address indexed receiverPt,
20
- uint256 lpRemoved,
15
+ uint256 lpBurned,
21
16
  uint256 scyToAccount,
22
17
  uint256 ptToAccount
23
18
  );
@@ -31,25 +26,11 @@ interface IPMarket is IERC20Metadata {
31
26
 
32
27
  event UpdateImpliedRate(uint256 indexed timestamp, uint256 lnLastImpliedRate);
33
28
 
34
- function addLiquidity(
35
- address receiver,
36
- uint256 scyDesired,
37
- uint256 ptDesired,
38
- bytes calldata data
39
- )
40
- external
41
- returns (
42
- uint256 lpToAccount,
43
- uint256 scyUsed,
44
- uint256 ptUsed
45
- );
29
+ function mint(address receiver) external returns (uint256);
46
30
 
47
- function removeLiquidity(
48
- address receiverScy,
49
- address receiverPt,
50
- uint256 lpToRemove,
51
- bytes calldata data
52
- ) external returns (uint256 scyToAccount, uint256 ptToAccount);
31
+ function burn(address receiverScy, address receiverPt)
32
+ external
33
+ returns (uint256 scyToAccount, uint256 ptToAccount);
53
34
 
54
35
  function swapExactPtForScy(
55
36
  address receiver,