@pendle/core-v2 0.8.1-beta → 0.9.0-gamma-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 (308) 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 +2 -2
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.dbg.json +4 -0
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +833 -0
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  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 +2 -2
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.dbg.json +4 -0
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +723 -0
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +4 -0
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +723 -0
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +2 -2
  15. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.dbg.json +1 -1
  16. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleStargateSCY.sol/PendleStargateSCY.json +2 -2
  17. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  18. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +20 -2
  19. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
  20. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +2 -2
  21. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.dbg.json +4 -0
  22. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +784 -0
  23. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  24. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
  26. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.json +2 -2
  28. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  31. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  33. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +47 -28
  36. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +66 -4
  39. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +26 -2
  41. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.json +24 -0
  43. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  45. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  47. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -2
  50. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -77
  53. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  55. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +21 -96
  57. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  59. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +272 -136
  61. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +75 -41
  63. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json +1 -1
  65. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json +1 -1
  67. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  68. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.json +1 -1
  69. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  70. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  71. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.dbg.json +4 -0
  79. package/build/artifacts/contracts/interfaces/IEulerEToken.sol/IEulerEToken.json +162 -0
  80. package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +4 -0
  81. package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.json +87 -0
  82. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +268 -132
  84. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  85. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.json +71 -37
  86. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +339 -169
  88. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +23 -23
  100. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.json +24 -0
  102. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +27 -27
  107. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +4 -0
  112. package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.json +199 -0
  113. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +4 -0
  114. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.json +168 -0
  115. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +4 -0
  116. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.json +92 -0
  117. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
  119. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  121. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +4 -0
  122. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.json +252 -0
  123. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  124. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  125. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  126. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  127. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  128. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  129. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  130. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  131. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  132. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  133. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  134. package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +4 -0
  135. package/build/artifacts/contracts/libraries/{SCY/SCYIndex.sol/SCYIndexLib.json → helpers/PYIndex.sol/PYIndexLib.json} +4 -4
  136. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  137. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  138. package/build/artifacts/contracts/libraries/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +4 -0
  139. package/build/artifacts/contracts/libraries/{traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json → kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json} +3 -3
  140. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  141. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  142. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  143. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  144. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  145. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  146. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  147. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  148. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  149. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +39 -39
  150. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  151. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol +242 -0
  152. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +1 -1
  153. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol +146 -0
  154. package/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol +170 -0
  155. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +33 -6
  156. package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +182 -0
  157. package/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol +19 -10
  158. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +3 -1
  159. package/contracts/core/LiquidityMining/PendleGauge.sol +3 -2
  160. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +26 -8
  161. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +0 -4
  162. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +30 -13
  163. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +2 -4
  164. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +5 -1
  165. package/contracts/core/Market/PendleMarket.sol +4 -5
  166. package/contracts/core/Market/PendleMarketFactory.sol +1 -1
  167. package/contracts/core/PendleRouter.sol +10 -10
  168. package/contracts/core/YieldContracts/InterestManagerYT.sol +0 -2
  169. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  170. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +2 -2
  171. package/contracts/core/YieldContracts/PendleYieldToken.sol +24 -25
  172. package/contracts/core/actions/ActionCallback.sol +7 -7
  173. package/contracts/core/actions/ActionCore.sol +54 -81
  174. package/contracts/core/actions/ActionYT.sol +17 -37
  175. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +21 -37
  176. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +39 -51
  177. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +14 -31
  178. package/contracts/interfaces/IEulerEToken.sol +60 -0
  179. package/contracts/interfaces/IEulerMarkets.sol +46 -0
  180. package/contracts/interfaces/IPActionCore.sol +43 -50
  181. package/contracts/interfaces/IPActionYT.sol +11 -12
  182. package/contracts/interfaces/IPInterestManagerYT.sol +1 -1
  183. package/contracts/interfaces/IPMarket.sol +1 -0
  184. package/contracts/interfaces/IPRouterStatic.sol +2 -7
  185. package/contracts/interfaces/IPVeToken.sol +2 -0
  186. package/contracts/interfaces/IPYieldToken.sol +2 -2
  187. package/contracts/interfaces/ISAvax.sol +61 -0
  188. package/contracts/interfaces/ISJoe.sol +60 -0
  189. package/contracts/interfaces/IStETH.sol +14 -0
  190. package/contracts/interfaces/IWAvax.sol +34 -0
  191. package/contracts/libraries/helpers/PYIndex.sol +69 -0
  192. package/contracts/libraries/helpers/TokenHelper.sol +8 -3
  193. package/contracts/libraries/kyberswap/KyberSwapHelper.sol +61 -0
  194. package/contracts/libraries/math/MarketApproxLib.sol +5 -5
  195. package/contracts/libraries/math/MarketMathCore.sol +10 -10
  196. package/contracts/offchain-helpers/RouterStatic.sol +21 -39
  197. package/deployments/43113-benqi.json +2 -2
  198. package/deployments/43113-core.json +7 -7
  199. package/deployments/43113-markets/benqi-market-599408.json +7 -0
  200. package/deployments/43113-markets/benqi-market-93bbf0.json +7 -0
  201. package/deployments/80001-benqi.json +2 -2
  202. package/deployments/80001-core.json +6 -6
  203. package/deployments/80001-markets/benqi-market-007811.json +7 -0
  204. package/deployments/80001-markets/benqi-market-3fe528.json +7 -0
  205. package/package.json +1 -1
  206. package/typechain-types/ActionCore.ts +330 -356
  207. package/typechain-types/ActionSCYAndPTBase.ts +11 -8
  208. package/typechain-types/ActionSCYAndPYBase.ts +11 -8
  209. package/typechain-types/ActionSCYAndYTBase.ts +11 -8
  210. package/typechain-types/ActionYT.ts +119 -106
  211. package/typechain-types/CelerSenderUpg.ts +16 -16
  212. package/typechain-types/IERC20Upgradeable.ts +300 -0
  213. package/typechain-types/IEulerEToken.ts +320 -0
  214. package/typechain-types/IEulerMarkets.ts +204 -0
  215. package/typechain-types/IPActionCore.ts +320 -349
  216. package/typechain-types/IPActionYT.ts +110 -100
  217. package/typechain-types/IPAllAction.ts +400 -447
  218. package/typechain-types/IPInterestManagerYT.ts +3 -3
  219. package/typechain-types/IPRouterStatic.ts +60 -118
  220. package/typechain-types/IPVeToken.ts +34 -0
  221. package/typechain-types/IPYieldToken.ts +47 -47
  222. package/typechain-types/ISAvax.ts +430 -0
  223. package/typechain-types/ISJoe.ts +340 -0
  224. package/typechain-types/IStETH.ts +201 -0
  225. package/typechain-types/IWAvax.ts +380 -0
  226. package/typechain-types/KyberSwapHelper.ts +87 -0
  227. package/typechain-types/PendleEulerSCY.ts +965 -0
  228. package/typechain-types/PendlePrincipalToken.ts +0 -104
  229. package/typechain-types/PendleQiSAvaxSCY.ts +1098 -0
  230. package/typechain-types/PendleSAvaxSCY.ts +962 -0
  231. package/typechain-types/PendleSJoeSCY.ts +1053 -0
  232. package/typechain-types/PendleVotingControllerUpg.ts +89 -55
  233. package/typechain-types/PendleWstEthSCY.ts +13 -0
  234. package/typechain-types/PendleYieldToken.ts +44 -148
  235. package/typechain-types/RouterStatic.ts +133 -299
  236. package/typechain-types/VotingEscrowPendleMainchain.ts +118 -16
  237. package/typechain-types/VotingEscrowPendleSidechain.ts +34 -0
  238. package/typechain-types/VotingEscrowTokenBase.ts +34 -0
  239. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  240. package/typechain-types/factories/ActionCore__factory.ts +275 -139
  241. package/typechain-types/factories/ActionSCYAndPTBase__factory.ts +1 -1
  242. package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +1 -1
  243. package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +1 -1
  244. package/typechain-types/factories/ActionYT__factory.ts +78 -44
  245. package/typechain-types/factories/CelerSenderUpg__factory.ts +2 -2
  246. package/typechain-types/factories/IERC20Upgradeable__factory.ts +209 -0
  247. package/typechain-types/factories/IEulerEToken__factory.ts +174 -0
  248. package/typechain-types/factories/IEulerMarkets__factory.ts +99 -0
  249. package/typechain-types/factories/IPActionCore__factory.ts +268 -132
  250. package/typechain-types/factories/IPActionYT__factory.ts +71 -37
  251. package/typechain-types/factories/IPAllAction__factory.ts +339 -169
  252. package/typechain-types/factories/IPInterestManagerYT__factory.ts +1 -1
  253. package/typechain-types/factories/IPRouterStatic__factory.ts +23 -23
  254. package/typechain-types/factories/IPVeToken__factory.ts +24 -0
  255. package/typechain-types/factories/IPYieldToken__factory.ts +27 -27
  256. package/typechain-types/factories/ISAvax__factory.ts +208 -0
  257. package/typechain-types/factories/ISJoe__factory.ts +177 -0
  258. package/typechain-types/factories/IStETH__factory.ts +101 -0
  259. package/typechain-types/factories/IWAvax__factory.ts +261 -0
  260. package/typechain-types/factories/KyberSwapHelper__factory.ts +39 -0
  261. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +1 -1
  262. package/typechain-types/factories/PendleERC4626SCY__factory.ts +1 -1
  263. package/typechain-types/factories/PendleEulerSCY__factory.ts +796 -0
  264. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  265. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  266. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  267. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  268. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -76
  269. package/typechain-types/factories/PendleQiSAvaxSCY__factory.ts +917 -0
  270. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +1 -1
  271. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  272. package/typechain-types/factories/PendleSAvaxSCY__factory.ts +796 -0
  273. package/typechain-types/factories/PendleSJoeSCY__factory.ts +845 -0
  274. package/typechain-types/factories/PendleStargateSCY__factory.ts +1 -1
  275. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +45 -26
  276. package/typechain-types/factories/PendleWstEthSCY__factory.ts +29 -2
  277. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +1 -1
  278. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  279. package/typechain-types/factories/PendleYieldToken__factory.ts +19 -94
  280. package/typechain-types/factories/RouterStatic__factory.ts +38 -38
  281. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +65 -3
  282. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +25 -1
  283. package/typechain-types/factories/VotingEscrowTokenBase__factory.ts +24 -0
  284. package/typechain-types/hardhat.d.ts +107 -17
  285. package/typechain-types/index.ts +24 -4
  286. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +0 -4
  287. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +0 -329
  288. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +0 -4
  289. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.json +0 -662
  290. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +0 -4
  291. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.json +0 -760
  292. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +0 -4
  293. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.json +0 -962
  294. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +0 -4
  295. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +0 -4
  296. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.json +0 -10
  297. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +0 -4
  298. package/contracts/core/PendleERC20Permit.sol +0 -84
  299. package/contracts/interfaces/IJoePair.sol +0 -98
  300. package/contracts/interfaces/IJoeRouter01.sol +0 -162
  301. package/contracts/interfaces/IJoeRouter02.sol +0 -52
  302. package/contracts/libraries/SCY/SCYIndex.sol +0 -72
  303. package/contracts/libraries/traderjoe/JoeLibrary.sol +0 -122
  304. package/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol +0 -80
  305. package/deployments/43113-markets/benqi-market-4Ccb97.json +0 -7
  306. package/deployments/43113-markets/benqi-market-534471.json +0 -7
  307. package/deployments/80001-markets/benqi-market-109acB.json +0 -7
  308. package/deployments/80001-markets/benqi-market-4e470E.json +0 -7
@@ -14,7 +14,7 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
14
14
  using MarketMathCore for MarketState;
15
15
  using MarketApproxLib for MarketState;
16
16
  using SafeERC20 for IERC20;
17
- using SCYIndexLib for ISuperComposableYield;
17
+ using PYIndexLib for IPYieldToken;
18
18
 
19
19
  bytes private constant EMPTY_BYTES = abi.encode();
20
20
 
@@ -38,11 +38,12 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
38
38
  uint256 ptUsed
39
39
  )
40
40
  {
41
- (ISuperComposableYield SCY, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
41
+ (ISuperComposableYield SCY, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market)
42
+ .readTokens();
42
43
 
43
44
  MarketState memory state = IPMarket(market).readState(false);
44
45
  (, netLpOut, scyUsed, ptUsed) = state.addLiquidity(
45
- SCY.newIndex(),
46
+ YT.newIndex(),
46
47
  scyDesired,
47
48
  ptDesired,
48
49
  block.timestamp
@@ -119,10 +120,10 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
119
120
  bool doPull
120
121
  ) internal returns (uint256 netPtIn) {
121
122
  MarketState memory state = IPMarket(market).readState(false);
122
- (ISuperComposableYield SCY, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
123
+ (, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
123
124
 
124
125
  (netPtIn, , ) = state.approxSwapPtForExactScy(
125
- SCY.newIndex(),
126
+ YT.newIndex(),
126
127
  exactScyOut,
127
128
  block.timestamp,
128
129
  guessPtIn
@@ -147,9 +148,9 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
147
148
  bool doPull
148
149
  ) internal returns (uint256 netScyIn) {
149
150
  MarketState memory state = IPMarket(market).readState(false);
150
- (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
151
+ (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
151
152
 
152
- (netScyIn, ) = state.swapScyForExactPt(SCY.newIndex(), exactPtOut, block.timestamp);
153
+ (netScyIn, ) = state.swapScyForExactPt(YT.newIndex(), exactPtOut, block.timestamp);
153
154
 
154
155
  require(netScyIn <= maxScyIn, "exceed limit SCY in");
155
156
 
@@ -175,10 +176,10 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
175
176
  bool doPull
176
177
  ) internal returns (uint256 netPtOut) {
177
178
  MarketState memory state = IPMarket(market).readState(false);
178
- (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
179
+ (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
179
180
 
180
181
  (netPtOut, , ) = state.approxSwapExactScyForPt(
181
- SCY.newIndex(),
182
+ YT.newIndex(),
182
183
  exactScyIn,
183
184
  block.timestamp,
184
185
  guessPtOut
@@ -198,28 +199,19 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
198
199
  /**
199
200
  * @notice swap from any ERC20 tokens, through Uniswap's forks, to get baseTokens to make SCY, then swap
200
201
  from SCY to PT
201
- * @dev simply a combination of _mintScyFromRawToken & _swapExactScyForPt
202
+ * @dev simply a combination of _mintScyFromToken & _swapExactScyForPt
202
203
  */
203
- function _swapExactRawTokenForPt(
204
+ function _swapExactTokenForPt(
204
205
  address receiver,
205
206
  address market,
206
- uint256 exactRawTokenIn,
207
207
  uint256 minPtOut,
208
- address[] calldata path,
209
208
  ApproxParams memory guessPtOut,
210
- bool doPull
209
+ TokenInput calldata input
211
210
  ) internal returns (uint256 netPtOut) {
212
211
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
213
212
 
214
213
  // all output SCY is transferred directly to the market
215
- uint256 netScyUseToBuyPt = _mintScyFromRawToken(
216
- market,
217
- address(SCY),
218
- exactRawTokenIn,
219
- 1,
220
- path,
221
- doPull
222
- );
214
+ uint256 netScyUseToBuyPt = _mintScyFromToken(address(market), address(SCY), 1, input);
223
215
 
224
216
  // SCY is already in the market, hence doPull = false
225
217
  netPtOut = _swapExactScyForPt(
@@ -233,30 +225,22 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
233
225
  }
234
226
 
235
227
  /**
236
- * @notice swap from PT to SCY, then redeem SCY to baseToken & swap through Uniswap's forks to get rawTokenOut
237
- * @dev simply a combination of _swapExactPtForScy & _redeemScyToRawToken
228
+ * @notice swap from PT to SCY, then redeem SCY to baseToken & swap through Uniswap's forks to get tokenOut
229
+ * @dev simply a combination of _swapExactPtForScy & _redeemScyToToken
238
230
  */
239
- function _swapExactPtForRawToken(
231
+ function _swapExactPtForToken(
240
232
  address receiver,
241
233
  address market,
242
234
  uint256 exactPtIn,
243
- uint256 minRawTokenOut,
244
- address[] calldata path,
235
+ TokenOutput calldata output,
245
236
  bool doPull
246
- ) internal returns (uint256 netRawTokenOut) {
237
+ ) internal returns (uint256 netTokenOut) {
247
238
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
248
239
 
249
240
  // all output SCY is directly transferred to the SCY contract
250
- _swapExactPtForScy(address(SCY), market, exactPtIn, 1, doPull);
241
+ uint256 netScyReceived = _swapExactPtForScy(address(SCY), market, exactPtIn, 1, doPull);
251
242
 
252
243
  // since all SCY is already at the SCY contract, doPull = false
253
- netRawTokenOut = _redeemScyToRawToken(
254
- receiver,
255
- address(SCY),
256
- 0,
257
- minRawTokenOut,
258
- path,
259
- false
260
- );
244
+ netTokenOut = _redeemScyToToken(receiver, address(SCY), netScyReceived, output, false);
261
245
  }
262
246
  }
@@ -2,120 +2,108 @@
2
2
  pragma solidity 0.8.15;
3
3
 
4
4
  import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
5
- import "../../../libraries/traderjoe/PendleJoeSwapHelperUpg.sol";
5
+ import "../../../libraries/kyberswap/KyberSwapHelper.sol";
6
6
  import "../../../libraries/helpers/MiniHelpers.sol";
7
7
  import "../../../libraries/helpers/TokenHelper.sol";
8
8
  import "../../../interfaces/ISuperComposableYield.sol";
9
9
  import "../../../interfaces/IPYieldToken.sol";
10
10
 
11
11
  // solhint-disable no-empty-blocks
12
- abstract contract ActionSCYAndPYBase is PendleJoeSwapHelperUpg, TokenHelper {
12
+ abstract contract ActionSCYAndPYBase is TokenHelper, KyberSwapHelper {
13
13
  using SafeERC20 for IERC20;
14
14
 
15
15
  /// @dev since this contract will be proxied, it must not contains non-immutable variables
16
- constructor(address _joeFactory) PendleJoeSwapHelperUpg(_joeFactory) {}
16
+ constructor(address _kyberSwapRouter) KyberSwapHelper(_kyberSwapRouter) {}
17
17
 
18
18
  /// @dev for Path. If no swap is needed, path = [token]
19
19
  /// else, path = [inputToken, token0, token1, ...., outputToken]
20
20
 
21
21
  /**
22
- * @notice swap rawToken to baseToken through Uniswap's forks & use it to mint SCY
22
+ * @notice swap token to baseToken through Uniswap's forks & use it to mint SCY
23
23
  */
24
- function _mintScyFromRawToken(
24
+ function _mintScyFromToken(
25
25
  address receiver,
26
26
  address SCY,
27
- uint256 netRawTokenIn,
28
27
  uint256 minScyOut,
29
- address[] calldata path,
30
- bool doPull
28
+ TokenInput calldata input
31
29
  ) internal returns (uint256 netScyOut) {
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) {
40
- IERC20(path[0]).safeTransferFrom(msg.sender, _getFirstPair(path), netRawTokenIn);
41
- }
42
- amountBaseToken = _swapExactIn(path, netRawTokenIn, address(this));
30
+ _transferIn(input.tokenIn, msg.sender, input.netTokenIn);
31
+ if (input.tokenIn != input.tokenMintScy) {
32
+ _kyberswap(input.tokenIn, input.netTokenIn, input.kybercall);
43
33
  }
44
34
 
45
- address baseToken = path[path.length - 1];
46
- IERC20(baseToken).approve(SCY, amountBaseToken);
35
+ _safeApproveInf(input.tokenMintScy, SCY);
47
36
  netScyOut = ISuperComposableYield(SCY).deposit(
48
37
  receiver,
49
- baseToken,
50
- amountBaseToken,
38
+ input.tokenMintScy,
39
+ _selfBalance(input.tokenMintScy),
51
40
  minScyOut
52
41
  );
53
42
  }
54
43
 
55
44
  /**
56
- * @notice redeem SCY to baseToken -> swap baseToken to rawToken through Uniswap's forks
45
+ * @notice redeem SCY to baseToken -> swap baseToken to token through Uniswap's forks
57
46
  */
58
- function _redeemScyToRawToken(
47
+ function _redeemScyToToken(
59
48
  address receiver,
60
49
  address SCY,
61
50
  uint256 netScyIn,
62
- uint256 minRawTokenOut,
63
- address[] memory path,
51
+ TokenOutput calldata output,
64
52
  bool doPull
65
- ) internal returns (uint256 netRawTokenOut) {
53
+ ) internal returns (uint256 netTokenOut) {
66
54
  if (doPull) {
67
55
  IERC20(SCY).safeTransferFrom(msg.sender, SCY, netScyIn);
68
56
  }
69
57
 
70
- address baseToken = path[0];
71
- if (path.length == 1) {
72
- netRawTokenOut = ISuperComposableYield(SCY).redeemAfterTransfer(
58
+ if (output.tokenRedeemScy == output.tokenOut) {
59
+ netTokenOut = ISuperComposableYield(SCY).redeemAfterTransfer(
73
60
  receiver,
74
- baseToken,
75
- minRawTokenOut
61
+ output.tokenRedeemScy,
62
+ output.minTokenOut
76
63
  );
77
64
  } else {
78
- uint256 netBaseTokenOut = ISuperComposableYield(SCY).redeemAfterTransfer(
79
- _getFirstPair(path),
80
- baseToken,
65
+ uint256 netTokenRedeemed = ISuperComposableYield(SCY).redeemAfterTransfer(
66
+ address(this),
67
+ output.tokenRedeemScy,
81
68
  1
82
69
  );
83
- netRawTokenOut = _swapExactIn(path, netBaseTokenOut, receiver);
84
- require(netRawTokenOut >= minRawTokenOut, "insufficient out");
70
+ _kyberswap(output.tokenRedeemScy, netTokenRedeemed, output.kybercall);
71
+
72
+ netTokenOut = _selfBalance(output.tokenOut);
73
+ require(netTokenOut >= output.minTokenOut, "insufficient out");
74
+
75
+ _transferOut(output.tokenOut, receiver, netTokenOut);
85
76
  }
86
77
  }
87
78
 
88
79
  /**
89
- * @notice swap rawToken to baseToken through Uniswap's forks -> convert to SCY -> convert to PT + YT
80
+ * @notice swap token to baseToken through Uniswap's forks -> convert to SCY -> convert to PT + YT
90
81
  */
91
- function _mintPyFromRawToken(
82
+ function _mintPyFromToken(
92
83
  address receiver,
93
84
  address YT,
94
- uint256 netRawTokenIn,
95
85
  uint256 minPyOut,
96
- address[] calldata path,
97
- bool doPull
86
+ TokenInput calldata input
98
87
  ) internal returns (uint256 netPyOut) {
99
88
  address SCY = IPYieldToken(YT).SCY();
100
89
 
101
- _mintScyFromRawToken(YT, SCY, netRawTokenIn, 1, path, doPull);
90
+ _mintScyFromToken(YT, SCY, 1, input);
102
91
 
103
92
  netPyOut = IPYieldToken(YT).mintPY(receiver, receiver);
104
93
  require(netPyOut >= minPyOut, "insufficient PY out");
105
94
  }
106
95
 
107
96
  /**
108
- * @notice redeem PT + YT to SCY -> redeem SCY to baseToken -> swap baseToken to rawToken through Uniswap's forks.
97
+ * @notice redeem PT + YT to SCY -> redeem SCY to baseToken -> swap baseToken to token through Uniswap's forks.
109
98
  If the YT hasn't expired, both PT & YT will be needed to redeem. Else, only PT is needed
110
99
  */
111
- function _redeemPyToRawToken(
100
+ function _redeemPyToToken(
112
101
  address receiver,
113
102
  address YT,
114
103
  uint256 netPyIn,
115
- uint256 minRawTokenOut,
116
- address[] memory path,
104
+ TokenOutput calldata output,
117
105
  bool doPull
118
- ) internal returns (uint256 netRawTokenOut) {
106
+ ) internal returns (uint256 netTokenOut) {
119
107
  address PT = IPYieldToken(YT).PT();
120
108
  address SCY = IPYieldToken(YT).SCY();
121
109
 
@@ -125,9 +113,9 @@ abstract contract ActionSCYAndPYBase is PendleJoeSwapHelperUpg, TokenHelper {
125
113
  if (needToBurnYt) IERC20(YT).safeTransferFrom(msg.sender, YT, netPyIn);
126
114
  }
127
115
 
128
- IPYieldToken(YT).redeemPY(SCY); // ignore return
116
+ uint256 amountScyOut = IPYieldToken(YT).redeemPY(SCY); // ignore return
129
117
 
130
- netRawTokenOut = _redeemScyToRawToken(receiver, SCY, 0, minRawTokenOut, path, false);
118
+ netTokenOut = _redeemScyToToken(receiver, SCY, amountScyOut, output, false);
131
119
  }
132
120
 
133
121
  function _mintPyFromScy(
@@ -16,7 +16,7 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
16
16
  using MarketApproxLib for MarketState;
17
17
  using SafeERC20 for ISuperComposableYield;
18
18
  using SafeERC20 for IPYieldToken;
19
- using SCYIndexLib for ISuperComposableYield;
19
+ using PYIndexLib for IPYieldToken;
20
20
 
21
21
  /**
22
22
  * @notice swap exact SCY to YT with the help of flashswaps & YT tokenization / redemption
@@ -40,7 +40,7 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
40
40
  MarketState memory state = IPMarket(market).readState(false);
41
41
 
42
42
  (netYtOut, , ) = state.approxSwapExactScyForYt(
43
- SCY.newIndex(),
43
+ YT.newIndex(),
44
44
  exactScyIn,
45
45
  block.timestamp,
46
46
  guessYtOut
@@ -141,10 +141,10 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
141
141
  bool doPull
142
142
  ) internal returns (uint256 netYtIn) {
143
143
  MarketState memory state = IPMarket(market).readState(false);
144
- (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
144
+ (, , IPYieldToken YT) = IPMarket(market).readTokens();
145
145
 
146
146
  (netYtIn, , ) = state.approxSwapYtForExactScy(
147
- SCY.newIndex(),
147
+ YT.newIndex(),
148
148
  exactScyOut,
149
149
  block.timestamp,
150
150
  guessYtIn
@@ -167,25 +167,16 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
167
167
  * @notice swap any ERC20 tokens, through Uniswap's forks, to baseToken of the corresponding SCY of YT. These SCY is then
168
168
  used to swap to YT. Please refer to swapExactScyForYt for more details.
169
169
  */
170
- function _swapExactRawTokenForYt(
170
+ function _swapExactTokenForYt(
171
171
  address receiver,
172
172
  address market,
173
- uint256 exactRawTokenIn,
174
173
  uint256 minYtOut,
175
- address[] calldata path,
176
174
  ApproxParams memory guessYtOut,
177
- bool doPull
175
+ TokenInput calldata input
178
176
  ) internal returns (uint256 netYtOut) {
179
177
  (ISuperComposableYield SCY, , IPYieldToken YT) = IPMarket(market).readTokens();
180
178
 
181
- uint256 netScyUsedToBuyYT = _mintScyFromRawToken(
182
- address(YT),
183
- address(SCY),
184
- exactRawTokenIn,
185
- 1,
186
- path,
187
- doPull
188
- );
179
+ uint256 netScyUsedToBuyYT = _mintScyFromToken(address(YT), address(SCY), 1, input);
189
180
 
190
181
  netYtOut = _swapExactScyForYt(
191
182
  receiver,
@@ -198,28 +189,20 @@ abstract contract ActionSCYAndYTBase is ActionSCYAndPYBase, CallbackHelper {
198
189
  }
199
190
 
200
191
  /**
201
- * @notice swap YT to SCY (using `swapExactYtForScy` logic), then redeem SCY to baseToken & swap baseToken to rawToken
192
+ * @notice swap YT to SCY (using `swapExactYtForScy` logic), then redeem SCY to baseToken & swap baseToken to token
202
193
  through Uniswap's forks
203
194
  */
204
- function _swapExactYtForRawToken(
195
+ function _swapExactYtForToken(
205
196
  address receiver,
206
197
  address market,
207
- uint256 exactYtIn,
208
- uint256 minRawTokenOut,
209
- address[] calldata path,
198
+ uint256 netYtIn,
199
+ TokenOutput calldata output,
210
200
  bool doPull
211
- ) internal returns (uint256 netRawTokenOut) {
201
+ ) internal returns (uint256 netTokenOut) {
212
202
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
213
203
 
214
- uint256 netScyOut = _swapExactYtForScy(address(SCY), market, exactYtIn, 1, doPull);
204
+ uint256 netScyOut = _swapExactYtForScy(receiver, market, netYtIn, 1, doPull);
215
205
 
216
- netRawTokenOut = _redeemScyToRawToken(
217
- receiver,
218
- address(SCY),
219
- netScyOut,
220
- minRawTokenOut,
221
- path,
222
- false
223
- );
206
+ netTokenOut = _redeemScyToToken(receiver, address(SCY), netScyOut, output, false);
224
207
  }
225
208
  }
@@ -0,0 +1,60 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ /*
3
+ * MIT License
4
+ * ===========
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ */
23
+
24
+ pragma solidity 0.8.15;
25
+
26
+ interface IEulerEToken {
27
+ /// @notice Address of underlying asset
28
+ function underlyingAsset() external view returns (address);
29
+
30
+ /// @notice Sum of all balances, in internal book-keeping units (non-increasing)
31
+ function totalSupply() external view returns (uint256);
32
+
33
+ /// @notice Sum of all balances, in underlying units (increases as interest is earned)
34
+ function totalSupplyUnderlying() external view returns (uint256);
35
+
36
+ /// @notice Transfer underlying tokens from sender to the Euler pool, and increase account's eTokens
37
+ /// @param subAccountId 0 for primary, 1-255 for a sub-account
38
+ /// @param amount In underlying units (use max uint256 for full underlying token balance)
39
+ function deposit(uint256 subAccountId, uint256 amount) external;
40
+
41
+ function balanceOf(address) external view returns (uint256);
42
+
43
+ /// @notice Balance of a particular account, in underlying units (increases as interest is earned)
44
+ function balanceOfUnderlying(address) external view returns (uint256);
45
+
46
+ /// @notice Convert an underlying amount to an eToken balance, taking into account current exchange rate
47
+ /// @param underlyingAmount Amount in underlying units (same decimals as underlying token)
48
+ /// @return eToken balance, in internal book-keeping units (18 decimals)
49
+ function convertUnderlyingToBalance(uint256 underlyingAmount) external view returns (uint256);
50
+
51
+ /// @notice Convert an eToken balance to an underlying amount, taking into account current exchange rate
52
+ /// @param balance eToken balance, in internal book-keeping units (18 decimals)
53
+ /// @return Amount in underlying units, (same decimals as underlying token)
54
+ function convertBalanceToUnderlying(uint256 balance) external view returns (uint256);
55
+
56
+ /// @notice Transfer underlying tokens from Euler pool to sender, and decrease account's eTokens
57
+ /// @param subAccountId 0 for primary, 1-255 for a sub-account
58
+ /// @param amount In underlying units (use max uint256 for full pool balance)
59
+ function withdraw(uint256 subAccountId, uint256 amount) external;
60
+ }
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ /*
3
+ * MIT License
4
+ * ===========
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ */
23
+
24
+ pragma solidity 0.8.15;
25
+
26
+ interface IEulerMarkets {
27
+ /// @notice Given an EToken address, looks up the associated underlying
28
+ /// @param eToken EToken address
29
+ /// @return underlying Token address
30
+ function eTokenToUnderlying(address eToken) external view returns (address underlying);
31
+
32
+ /// @notice Given an underlying, lookup the associated EToken
33
+ /// @param underlying Token address
34
+ /// @return EToken address, or address(0) if not activated
35
+ function underlyingToEToken(address underlying) external view returns (address);
36
+
37
+ /// @notice Given an underlying, lookup the associated DToken
38
+ /// @param underlying Token address
39
+ /// @return DToken address, or address(0) if not activated
40
+ function underlyingToDToken(address underlying) external view returns (address);
41
+
42
+ /// @notice Retrieves the current interest rate for an asset
43
+ /// @param underlying Token address
44
+ /// @return The interest rate in yield-per-second, scaled by 10**27
45
+ function interestRate(address underlying) external view returns (int96);
46
+ }