@pendle/core-v2 0.8.1-gamma → 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 (193) 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 +1 -1
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiSAvaxSCY.sol/PendleQiSAvaxSCY.json +2 -2
  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 +1 -1
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleSAvaxSCY.sol/PendleSAvaxSCY.json +2 -2
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.dbg.json +1 -1
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/Euler/PendleEulerSCY.sol/PendleEulerSCY.json +2 -2
  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 +2 -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 +1 -1
  22. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol/PendleSJoeSCY.json +2 -2
  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/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  28. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  33. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  39. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  41. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -2
  44. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  48. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  50. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  52. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +272 -136
  54. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +75 -41
  56. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.json +1 -1
  58. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.json +1 -1
  60. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.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/IEulerEToken.sol/IEulerEToken.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IEulerMarkets.sol/IEulerMarkets.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +268 -132
  75. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.json +71 -37
  77. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +339 -169
  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/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  85. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  88. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/ISAvax.sol/ISAvax.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/ISJoe.sol/ISJoe.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IStETH.sol/IStETH.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IStargateLPStaking.sol/IStargateLPStaking.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IStargatePool.sol/IStargatePool.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IStargateRouter.sol/IStargateRouter.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IWAvax.sol/IWAvax.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.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/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  112. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  113. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  114. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  115. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  116. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  117. package/build/artifacts/contracts/libraries/helpers/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  118. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  119. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  120. package/build/artifacts/contracts/libraries/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +4 -0
  121. package/build/artifacts/contracts/libraries/{traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.json → kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json} +3 -3
  122. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  123. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  124. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  125. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  126. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  127. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  128. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  129. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  130. package/contracts/SuperComposableYield/SCY-implementations/TraderJoe/PendleSJoeSCY.sol +6 -8
  131. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +1 -1
  132. package/contracts/core/PendleRouter.sol +10 -10
  133. package/contracts/core/actions/ActionCore.sol +54 -81
  134. package/contracts/core/actions/ActionYT.sol +17 -37
  135. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +11 -28
  136. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +39 -51
  137. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +10 -27
  138. package/contracts/interfaces/IPActionCore.sol +43 -50
  139. package/contracts/interfaces/IPActionYT.sol +11 -12
  140. package/contracts/libraries/helpers/TokenHelper.sol +8 -3
  141. package/contracts/libraries/kyberswap/KyberSwapHelper.sol +61 -0
  142. package/package.json +1 -1
  143. package/typechain-types/ActionCore.ts +330 -356
  144. package/typechain-types/ActionSCYAndPTBase.ts +11 -8
  145. package/typechain-types/ActionSCYAndPYBase.ts +11 -8
  146. package/typechain-types/ActionSCYAndYTBase.ts +11 -8
  147. package/typechain-types/ActionYT.ts +119 -106
  148. package/typechain-types/IPActionCore.ts +320 -349
  149. package/typechain-types/IPActionYT.ts +110 -100
  150. package/typechain-types/IPAllAction.ts +400 -447
  151. package/typechain-types/KyberSwapHelper.ts +87 -0
  152. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  153. package/typechain-types/factories/ActionCore__factory.ts +275 -139
  154. package/typechain-types/factories/ActionSCYAndPTBase__factory.ts +1 -1
  155. package/typechain-types/factories/ActionSCYAndPYBase__factory.ts +1 -1
  156. package/typechain-types/factories/ActionSCYAndYTBase__factory.ts +1 -1
  157. package/typechain-types/factories/ActionYT__factory.ts +78 -44
  158. package/typechain-types/factories/IPActionCore__factory.ts +268 -132
  159. package/typechain-types/factories/IPActionYT__factory.ts +71 -37
  160. package/typechain-types/factories/IPAllAction__factory.ts +339 -169
  161. package/typechain-types/factories/KyberSwapHelper__factory.ts +39 -0
  162. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +1 -1
  163. package/typechain-types/factories/PendleERC4626SCY__factory.ts +1 -1
  164. package/typechain-types/factories/PendleEulerSCY__factory.ts +1 -1
  165. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  166. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  167. package/typechain-types/factories/PendleQiSAvaxSCY__factory.ts +1 -1
  168. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +1 -1
  169. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  170. package/typechain-types/factories/PendleSAvaxSCY__factory.ts +1 -1
  171. package/typechain-types/factories/PendleSJoeSCY__factory.ts +1 -1
  172. package/typechain-types/factories/PendleStargateSCY__factory.ts +1 -1
  173. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  174. package/typechain-types/factories/PendleWstEthSCY__factory.ts +1 -1
  175. package/typechain-types/factories/PendleYearnVaultScy__factory.ts +1 -1
  176. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  177. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  178. package/typechain-types/hardhat.d.ts +9 -0
  179. package/typechain-types/index.ts +2 -0
  180. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +0 -4
  181. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.json +0 -662
  182. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +0 -4
  183. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.json +0 -760
  184. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +0 -4
  185. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.json +0 -962
  186. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +0 -4
  187. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.json +0 -10
  188. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +0 -4
  189. package/contracts/interfaces/IJoePair.sol +0 -98
  190. package/contracts/interfaces/IJoeRouter01.sol +0 -162
  191. package/contracts/interfaces/IJoeRouter02.sol +0 -52
  192. package/contracts/libraries/traderjoe/JoeLibrary.sol +0 -122
  193. package/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol +0 -80
@@ -13,8 +13,8 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
13
13
  using Math for int256;
14
14
 
15
15
  /// @dev since this contract will be proxied, it must not contains non-immutable variabless
16
- constructor(address _joeFactory, address _marketFactory)
17
- ActionSCYAndPYBase(_joeFactory) //solhint-disable-next-line no-empty-blocks
16
+ constructor(address _kyberSwapRouter, address _marketFactory)
17
+ ActionSCYAndPYBase(_kyberSwapRouter) //solhint-disable-next-line no-empty-blocks
18
18
  {}
19
19
 
20
20
  /// @dev refer to the internal function
@@ -48,7 +48,7 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
48
48
  address market,
49
49
  uint256 netPtIn,
50
50
  uint256 minLpOut,
51
- ApproxParams memory guessPtSwapToScy
51
+ ApproxParams calldata guessPtSwapToScy
52
52
  ) external returns (uint256 netLpOut) {
53
53
  require(false, "NOT IMPLEMENTED");
54
54
  }
@@ -58,18 +58,17 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
58
58
  address market,
59
59
  uint256 netScyIn,
60
60
  uint256 minLpOut,
61
- ApproxParams memory guessPtReceivedFromScy
61
+ ApproxParams calldata guessPtReceivedFromScy
62
62
  ) external returns (uint256 netLpOut) {
63
63
  require(false, "NOT IMPLEMENTED");
64
64
  }
65
65
 
66
- function addLiquiditySingleRawToken(
66
+ function addLiquiditySingleToken(
67
67
  address receiver,
68
68
  address market,
69
- uint256 netRawTokenIn,
70
69
  uint256 minLpOut,
71
- address[] calldata path,
72
- ApproxParams memory guessPtReceivedFromScy
70
+ ApproxParams calldata guessPtReceivedFromScy,
71
+ TokenInput calldata input
73
72
  ) external returns (uint256 netLpOut) {
74
73
  require(false, "NOT IMPLEMENTED");
75
74
  }
@@ -98,7 +97,7 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
98
97
  address market,
99
98
  uint256 lpToRemove,
100
99
  uint256 minPtOut,
101
- ApproxParams memory guessPtOut
100
+ ApproxParams calldata guessPtOut
102
101
  ) external returns (uint256 netPtOut) {
103
102
  require(false, "NOT IMPLEMENTED");
104
103
  }
@@ -112,13 +111,12 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
112
111
  require(false, "NOT IMPLEMENTED");
113
112
  }
114
113
 
115
- function removeLiquiditySingleRawToken(
114
+ function removeLiquiditySingleToken(
116
115
  address receiver,
117
116
  address market,
118
117
  uint256 lpToRemove,
119
- uint256 minRawTokenOut,
120
- address[] memory path
121
- ) external returns (uint256 netRawTokenOut) {
118
+ TokenOutput calldata output
119
+ ) external returns (uint256 netTokenOut) {
122
120
  require(false, "NOT IMPLEMENTED");
123
121
  }
124
122
 
@@ -139,7 +137,7 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
139
137
  address market,
140
138
  uint256 exactScyOut,
141
139
  uint256 maxPtIn,
142
- ApproxParams memory guessPtIn
140
+ ApproxParams calldata guessPtIn
143
141
  ) external returns (uint256 netPtIn) {
144
142
  netPtIn = _swapPtForExactScy(receiver, market, exactScyOut, maxPtIn, guessPtIn, true);
145
143
  emit SwapPtAndScy(msg.sender, market, receiver, netPtIn.neg(), exactScyOut.Int());
@@ -162,71 +160,62 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
162
160
  address market,
163
161
  uint256 exactScyIn,
164
162
  uint256 minPtOut,
165
- ApproxParams memory guessPtOut
163
+ ApproxParams calldata guessPtOut
166
164
  ) external returns (uint256 netPtOut) {
167
165
  netPtOut = _swapExactScyForPt(receiver, market, exactScyIn, minPtOut, guessPtOut, true);
168
166
  emit SwapPtAndScy(msg.sender, market, receiver, netPtOut.Int(), exactScyIn.neg());
169
167
  }
170
168
 
171
169
  /// @dev refer to the internal function
172
- function mintScyFromRawToken(
170
+ function mintScyFromToken(
173
171
  address receiver,
174
172
  address SCY,
175
- uint256 netRawTokenIn,
176
173
  uint256 minScyOut,
177
- address[] calldata path
174
+ TokenInput calldata input
178
175
  ) external returns (uint256 netScyOut) {
179
- return _mintScyFromRawToken(receiver, SCY, netRawTokenIn, minScyOut, path, true);
176
+ netScyOut = _mintScyFromToken(receiver, SCY, minScyOut, input);
177
+
178
+ emit MintScyFromToken(
179
+ msg.sender,
180
+ receiver,
181
+ SCY,
182
+ input.tokenIn,
183
+ input.netTokenIn,
184
+ netScyOut
185
+ );
180
186
  }
181
187
 
182
188
  /// @dev refer to the internal function
183
- function redeemScyToRawToken(
189
+ function redeemScyToToken(
184
190
  address receiver,
185
191
  address SCY,
186
192
  uint256 netScyIn,
187
- uint256 minRawTokenOut,
188
- address[] memory path
189
- ) external returns (uint256 netRawTokenOut) {
190
- netRawTokenOut = _redeemScyToRawToken(receiver, SCY, netScyIn, minRawTokenOut, path, true);
191
- emit RedeemScyToRawToken(
192
- msg.sender,
193
- receiver,
194
- SCY,
195
- netScyIn,
196
- path[path.length - 1],
197
- netRawTokenOut
198
- );
193
+ TokenOutput calldata output
194
+ ) external returns (uint256 netTokenOut) {
195
+ netTokenOut = _redeemScyToToken(receiver, SCY, netScyIn, output, true);
196
+ emit RedeemScyToToken(msg.sender, receiver, SCY, netScyIn, output.tokenOut, netTokenOut);
199
197
  }
200
198
 
201
199
  /// @dev refer to the internal function
202
- function mintPyFromRawToken(
200
+ function mintPyFromToken(
203
201
  address receiver,
204
202
  address YT,
205
- uint256 netRawTokenIn,
206
203
  uint256 minPyOut,
207
- address[] calldata path
204
+ TokenInput calldata input
208
205
  ) external returns (uint256 netPyOut) {
209
- netPyOut = _mintPyFromRawToken(receiver, YT, netRawTokenIn, minPyOut, path, true);
210
- emit MintPyFromRawToken(msg.sender, receiver, YT, path[0], netRawTokenIn, netPyOut);
206
+ netPyOut = _mintPyFromToken(receiver, YT, minPyOut, input);
207
+ emit MintPyFromToken(msg.sender, receiver, YT, input.tokenIn, input.netTokenIn, netPyOut);
211
208
  }
212
209
 
213
210
  /// @dev refer to the internal function
214
- function redeemPyToRawToken(
211
+ function redeemPyToToken(
215
212
  address receiver,
216
213
  address YT,
217
214
  uint256 netPyIn,
218
- uint256 minRawTokenOut,
219
- address[] memory path
220
- ) external returns (uint256 netRawTokenOut) {
221
- netRawTokenOut = _redeemPyToRawToken(receiver, YT, netPyIn, minRawTokenOut, path, true);
222
- emit RedeemPyToRawToken(
223
- msg.sender,
224
- receiver,
225
- YT,
226
- netPyIn,
227
- path[path.length - 1],
228
- netRawTokenOut
229
- );
215
+ TokenOutput calldata output
216
+ ) external returns (uint256 netTokenOut) {
217
+ netTokenOut = _redeemPyToToken(receiver, YT, netPyIn, output, true);
218
+ emit RedeemPyToToken(msg.sender, receiver, YT, netPyIn, output.tokenOut, netTokenOut);
230
219
  }
231
220
 
232
221
  function mintPyFromScy(
@@ -250,57 +239,41 @@ contract ActionCore is IPActionCore, ActionSCYAndPTBase {
250
239
  }
251
240
 
252
241
  /// @dev refer to the internal function
253
- function swapExactRawTokenForPt(
242
+ function swapExactTokenForPt(
254
243
  address receiver,
255
244
  address market,
256
- uint256 exactRawTokenIn,
257
245
  uint256 minPtOut,
258
- address[] calldata path,
259
- ApproxParams memory guessPtOut
246
+ ApproxParams calldata guessPtOut,
247
+ TokenInput calldata input
260
248
  ) external returns (uint256 netPtOut) {
261
- netPtOut = _swapExactRawTokenForPt(
262
- receiver,
263
- market,
264
- exactRawTokenIn,
265
- minPtOut,
266
- path,
267
- guessPtOut,
268
- true
269
- );
249
+ netPtOut = _swapExactTokenForPt(receiver, market, minPtOut, guessPtOut, input);
270
250
 
271
- emit SwapPtAndRawToken(
251
+ emit SwapPtAndToken(
272
252
  msg.sender,
273
253
  market,
274
- path[0],
254
+ input.tokenIn,
275
255
  receiver,
276
256
  netPtOut.Int(),
277
- exactRawTokenIn.neg()
257
+ input.netTokenIn.neg()
278
258
  );
279
259
  }
280
260
 
281
261
  /// @dev refer to the internal function
282
- function swapExactPtForRawToken(
262
+ function swapExactPtForToken(
283
263
  address receiver,
284
264
  address market,
285
265
  uint256 exactPtIn,
286
- uint256 minRawTokenOut,
287
- address[] calldata path
288
- ) external returns (uint256 netRawTokenOut) {
289
- netRawTokenOut = _swapExactPtForRawToken(
290
- receiver,
291
- market,
292
- exactPtIn,
293
- minRawTokenOut,
294
- path,
295
- true
296
- );
297
- emit SwapPtAndRawToken(
266
+ TokenOutput calldata output
267
+ ) external returns (uint256 netTokenOut) {
268
+ netTokenOut = _swapExactPtForToken(receiver, market, exactPtIn, output, true);
269
+
270
+ emit SwapPtAndToken(
298
271
  msg.sender,
299
272
  market,
300
- path[path.length - 1],
273
+ output.tokenOut,
301
274
  receiver,
302
275
  exactPtIn.neg(),
303
- netRawTokenOut.Int()
276
+ netTokenOut.Int()
304
277
  );
305
278
  }
306
279
 
@@ -12,12 +12,9 @@ contract ActionYT is IPActionYT, ActionSCYAndYTBase {
12
12
  using Math for int256;
13
13
 
14
14
  /// @dev since this contract will be proxied, it must not contains non-immutable variables
15
- constructor(address _joeFactory)
16
- ActionSCYAndPYBase(_joeFactory)
17
- //solhint-disable-next-line no-empty-blocks
18
- {
19
-
20
- }
15
+ constructor(address _kyberSwapRouter)
16
+ ActionSCYAndPYBase(_kyberSwapRouter) //solhint-disable-next-line no-empty-blocks
17
+ {}
21
18
 
22
19
  /// @dev refer to the internal function
23
20
  function swapExactYtForScy(
@@ -66,48 +63,31 @@ contract ActionYT is IPActionYT, ActionSCYAndYTBase {
66
63
  }
67
64
 
68
65
  /// @dev refer to the internal function
69
- function swapExactRawTokenForYt(
66
+ function swapExactTokenForYt(
70
67
  address receiver,
71
68
  address market,
72
- uint256 exactRawTokenIn,
73
69
  uint256 minYtOut,
74
- address[] calldata path,
75
- ApproxParams memory guessYtOut
70
+ ApproxParams memory guessYtOut,
71
+ TokenInput calldata input
76
72
  ) external returns (uint256 netYtOut) {
77
- netYtOut = _swapExactRawTokenForYt(
73
+ netYtOut = _swapExactTokenForYt(receiver, market, minYtOut, guessYtOut, input);
74
+ emit SwapYTAndToken(
78
75
  receiver,
79
76
  market,
80
- exactRawTokenIn,
81
- minYtOut,
82
- path,
83
- guessYtOut,
84
- true
77
+ input.tokenIn,
78
+ netYtOut.Int(),
79
+ input.netTokenIn.neg()
85
80
  );
86
- emit SwapYTAndRawToken(receiver, market, path[0], netYtOut.Int(), exactRawTokenIn.neg());
87
81
  }
88
82
 
89
83
  /// @dev refer to the internal function
90
- function swapExactYtForRawToken(
84
+ function swapExactYtForToken(
91
85
  address receiver,
92
86
  address market,
93
- uint256 exactYtIn,
94
- uint256 minRawTokenOut,
95
- address[] calldata path
96
- ) external returns (uint256 netRawTokenOut) {
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
- );
87
+ uint256 netYtIn,
88
+ TokenOutput calldata output
89
+ ) external returns (uint256 netTokenOut) {
90
+ netTokenOut = _swapExactYtForToken(receiver, market, netYtIn, output, true);
91
+ emit SwapYTAndToken(receiver, market, output.tokenOut, netYtIn.neg(), netTokenOut.Int());
112
92
  }
113
93
  }
@@ -199,28 +199,19 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
199
199
  /**
200
200
  * @notice swap from any ERC20 tokens, through Uniswap's forks, to get baseTokens to make SCY, then swap
201
201
  from SCY to PT
202
- * @dev simply a combination of _mintScyFromRawToken & _swapExactScyForPt
202
+ * @dev simply a combination of _mintScyFromToken & _swapExactScyForPt
203
203
  */
204
- function _swapExactRawTokenForPt(
204
+ function _swapExactTokenForPt(
205
205
  address receiver,
206
206
  address market,
207
- uint256 exactRawTokenIn,
208
207
  uint256 minPtOut,
209
- address[] calldata path,
210
208
  ApproxParams memory guessPtOut,
211
- bool doPull
209
+ TokenInput calldata input
212
210
  ) internal returns (uint256 netPtOut) {
213
211
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
214
212
 
215
213
  // all output SCY is transferred directly to the market
216
- uint256 netScyUseToBuyPt = _mintScyFromRawToken(
217
- market,
218
- address(SCY),
219
- exactRawTokenIn,
220
- 1,
221
- path,
222
- doPull
223
- );
214
+ uint256 netScyUseToBuyPt = _mintScyFromToken(address(market), address(SCY), 1, input);
224
215
 
225
216
  // SCY is already in the market, hence doPull = false
226
217
  netPtOut = _swapExactScyForPt(
@@ -234,30 +225,22 @@ abstract contract ActionSCYAndPTBase is ActionSCYAndPYBase {
234
225
  }
235
226
 
236
227
  /**
237
- * @notice swap from PT to SCY, then redeem SCY to baseToken & swap through Uniswap's forks to get rawTokenOut
238
- * @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
239
230
  */
240
- function _swapExactPtForRawToken(
231
+ function _swapExactPtForToken(
241
232
  address receiver,
242
233
  address market,
243
234
  uint256 exactPtIn,
244
- uint256 minRawTokenOut,
245
- address[] calldata path,
235
+ TokenOutput calldata output,
246
236
  bool doPull
247
- ) internal returns (uint256 netRawTokenOut) {
237
+ ) internal returns (uint256 netTokenOut) {
248
238
  (ISuperComposableYield SCY, , ) = IPMarket(market).readTokens();
249
239
 
250
240
  // all output SCY is directly transferred to the SCY contract
251
- _swapExactPtForScy(address(SCY), market, exactPtIn, 1, doPull);
241
+ uint256 netScyReceived = _swapExactPtForScy(address(SCY), market, exactPtIn, 1, doPull);
252
242
 
253
243
  // since all SCY is already at the SCY contract, doPull = false
254
- netRawTokenOut = _redeemScyToRawToken(
255
- receiver,
256
- address(SCY),
257
- 0,
258
- minRawTokenOut,
259
- path,
260
- false
261
- );
244
+ netTokenOut = _redeemScyToToken(receiver, address(SCY), netScyReceived, output, false);
262
245
  }
263
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(
@@ -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
  }