@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
@@ -2,6 +2,7 @@
2
2
  pragma solidity 0.8.15;
3
3
 
4
4
  import "../libraries/math/MarketApproxLib.sol";
5
+ import "../libraries/kyberswap/KyberSwapHelper.sol";
5
6
 
6
7
  interface IPActionCore {
7
8
  event AddLiquidity(
@@ -30,31 +31,31 @@ interface IPActionCore {
30
31
  int256 amountScyToAccount
31
32
  );
32
33
 
33
- event SwapPtAndRawToken(
34
+ event SwapPtAndToken(
34
35
  address indexed caller,
35
36
  address indexed market,
36
- address indexed rawToken,
37
+ address indexed token,
37
38
  address receiver,
38
39
  int256 amountPtToAccount,
39
- int256 amountRawTokenToAccount
40
+ int256 amountTokenToAccount
40
41
  );
41
42
 
42
- event MintScyFromRawToken(
43
+ event MintScyFromToken(
43
44
  address indexed caller,
44
45
  address indexed receiver,
45
46
  address indexed SCY,
46
- address rawTokenIn,
47
- uint256 netRawTokenIn,
47
+ address tokenIn,
48
+ uint256 netTokenIn,
48
49
  uint256 netScyOut
49
50
  );
50
51
 
51
- event RedeemScyToRawToken(
52
+ event RedeemScyToToken(
52
53
  address indexed caller,
53
54
  address indexed receiver,
54
55
  address indexed SCY,
55
56
  uint256 netScyIn,
56
- address rawTokenOut,
57
- uint256 netRawTokenOut
57
+ address tokenOut,
58
+ uint256 netTokenOut
58
59
  );
59
60
 
60
61
  event MintPyFromScy(
@@ -73,22 +74,22 @@ interface IPActionCore {
73
74
  uint256 netScyOut
74
75
  );
75
76
 
76
- event MintPyFromRawToken(
77
+ event MintPyFromToken(
77
78
  address indexed caller,
78
79
  address indexed receiver,
79
80
  address indexed YT,
80
- address rawTokenIn,
81
- uint256 netRawTokenIn,
81
+ address tokenIn,
82
+ uint256 netTokenIn,
82
83
  uint256 netPyOut
83
84
  );
84
85
 
85
- event RedeemPyToRawToken(
86
+ event RedeemPyToToken(
86
87
  address indexed caller,
87
88
  address indexed receiver,
88
89
  address indexed YT,
89
90
  uint256 netPyIn,
90
- address rawTokenOut,
91
- uint256 netRawTokenOut
91
+ address tokenOut,
92
+ uint256 netTokenOut
92
93
  );
93
94
 
94
95
  function addLiquidity(
@@ -110,7 +111,7 @@ interface IPActionCore {
110
111
  address market,
111
112
  uint256 netPtIn,
112
113
  uint256 minLpOut,
113
- ApproxParams memory guessPtSwapToScy
114
+ ApproxParams calldata guessPtSwapToScy
114
115
  ) external returns (uint256 netLpOut);
115
116
 
116
117
  function addLiquiditySingleScy(
@@ -118,16 +119,15 @@ interface IPActionCore {
118
119
  address market,
119
120
  uint256 netScyIn,
120
121
  uint256 minLpOut,
121
- ApproxParams memory guessPtReceivedFromScy
122
+ ApproxParams calldata guessPtReceivedFromScy
122
123
  ) external returns (uint256 netLpOut);
123
124
 
124
- function addLiquiditySingleRawToken(
125
+ function addLiquiditySingleToken(
125
126
  address receiver,
126
127
  address market,
127
- uint256 netRawTokenIn,
128
128
  uint256 minLpOut,
129
- address[] calldata path,
130
- ApproxParams memory guessPtReceivedFromScy
129
+ ApproxParams calldata guessPtReceivedFromScy,
130
+ TokenInput calldata input
131
131
  ) external returns (uint256 netLpOut);
132
132
 
133
133
  function removeLiquidity(
@@ -143,7 +143,7 @@ interface IPActionCore {
143
143
  address market,
144
144
  uint256 lpToRemove,
145
145
  uint256 minPtOut,
146
- ApproxParams memory guessPtOut
146
+ ApproxParams calldata guessPtOut
147
147
  ) external returns (uint256 netPtOut);
148
148
 
149
149
  function removeLiquiditySingleScy(
@@ -153,13 +153,12 @@ interface IPActionCore {
153
153
  uint256 minScyOut
154
154
  ) external returns (uint256 netScyOut);
155
155
 
156
- function removeLiquiditySingleRawToken(
156
+ function removeLiquiditySingleToken(
157
157
  address receiver,
158
158
  address market,
159
159
  uint256 lpToRemove,
160
- uint256 minRawTokenOut,
161
- address[] memory path
162
- ) external returns (uint256 netRawTokenOut);
160
+ TokenOutput calldata output
161
+ ) external returns (uint256 netTokenOut);
163
162
 
164
163
  function swapExactPtForScy(
165
164
  address receiver,
@@ -173,7 +172,7 @@ interface IPActionCore {
173
172
  address market,
174
173
  uint256 exactScyOut,
175
174
  uint256 maxPtIn,
176
- ApproxParams memory guessPtIn
175
+ ApproxParams calldata guessPtIn
177
176
  ) external returns (uint256 netPtIn);
178
177
 
179
178
  function swapScyForExactPt(
@@ -188,40 +187,36 @@ interface IPActionCore {
188
187
  address market,
189
188
  uint256 exactScyIn,
190
189
  uint256 minPtOut,
191
- ApproxParams memory guessPtOut
190
+ ApproxParams calldata guessPtOut
192
191
  ) external returns (uint256 netPtOut);
193
192
 
194
- function mintScyFromRawToken(
193
+ function mintScyFromToken(
195
194
  address receiver,
196
195
  address SCY,
197
- uint256 netRawTokenIn,
198
196
  uint256 minScyOut,
199
- address[] calldata path
197
+ TokenInput calldata input
200
198
  ) external returns (uint256 netScyOut);
201
199
 
202
- function redeemScyToRawToken(
200
+ function redeemScyToToken(
203
201
  address receiver,
204
202
  address SCY,
205
203
  uint256 netScyIn,
206
- uint256 minRawTokenOut,
207
- address[] memory path
208
- ) external returns (uint256 netRawTokenOut);
204
+ TokenOutput calldata output
205
+ ) external returns (uint256 netTokenOut);
209
206
 
210
- function mintPyFromRawToken(
207
+ function mintPyFromToken(
211
208
  address receiver,
212
209
  address YT,
213
- uint256 netRawTokenIn,
214
210
  uint256 minPyOut,
215
- address[] calldata path
211
+ TokenInput calldata input
216
212
  ) external returns (uint256 netPyOut);
217
213
 
218
- function redeemPyToRawToken(
214
+ function redeemPyToToken(
219
215
  address receiver,
220
216
  address YT,
221
217
  uint256 netPyIn,
222
- uint256 minRawTokenOut,
223
- address[] memory path
224
- ) external returns (uint256 netRawTokenOut);
218
+ TokenOutput calldata output
219
+ ) external returns (uint256 netTokenOut);
225
220
 
226
221
  function mintPyFromScy(
227
222
  address receiver,
@@ -237,22 +232,20 @@ interface IPActionCore {
237
232
  uint256 minScyOut
238
233
  ) external returns (uint256 netScyOut);
239
234
 
240
- function swapExactRawTokenForPt(
235
+ function swapExactTokenForPt(
241
236
  address receiver,
242
237
  address market,
243
- uint256 exactRawTokenIn,
244
238
  uint256 minPtOut,
245
- address[] calldata path,
246
- ApproxParams memory guessPtOut
239
+ ApproxParams calldata guessPtOut,
240
+ TokenInput calldata input
247
241
  ) external returns (uint256 netPtOut);
248
242
 
249
- function swapExactPtForRawToken(
243
+ function swapExactPtForToken(
250
244
  address receiver,
251
245
  address market,
252
246
  uint256 exactPtIn,
253
- uint256 minRawTokenOut,
254
- address[] calldata path
255
- ) external returns (uint256 netRawTokenOut);
247
+ TokenOutput calldata output
248
+ ) external returns (uint256 netTokenOut);
256
249
 
257
250
  function redeemDueInterestAndRewards(
258
251
  address user,
@@ -2,6 +2,7 @@
2
2
  pragma solidity 0.8.15;
3
3
 
4
4
  import "../libraries/math/MarketApproxLib.sol";
5
+ import "../libraries/kyberswap/KyberSwapHelper.sol";
5
6
 
6
7
  interface IPActionYT {
7
8
  event SwapYTAndSCY(
@@ -11,12 +12,12 @@ interface IPActionYT {
11
12
  int256 scyToAccount
12
13
  );
13
14
 
14
- event SwapYTAndRawToken(
15
+ event SwapYTAndToken(
15
16
  address indexed user,
16
17
  address indexed market,
17
- address indexed rawToken,
18
+ address indexed token,
18
19
  int256 ytToAccount,
19
- int256 rawTokenToAccount
20
+ int256 tokenToAccount
20
21
  );
21
22
 
22
23
  function swapExactYtForScy(
@@ -49,20 +50,18 @@ interface IPActionYT {
49
50
  ApproxParams memory guessYtIn
50
51
  ) external returns (uint256 netYtIn);
51
52
 
52
- function swapExactRawTokenForYt(
53
+ function swapExactTokenForYt(
53
54
  address receiver,
54
55
  address market,
55
- uint256 exactRawTokenIn,
56
56
  uint256 minYtOut,
57
- address[] calldata path,
58
- ApproxParams memory guessYtOut
57
+ ApproxParams memory guessYtOut,
58
+ TokenInput calldata input
59
59
  ) external returns (uint256 netYtOut);
60
60
 
61
- function swapExactYtForRawToken(
61
+ function swapExactYtForToken(
62
62
  address receiver,
63
63
  address market,
64
- uint256 exactYtIn,
65
- uint256 minRawTokenOut,
66
- address[] calldata path
67
- ) external returns (uint256 netRawTokenOut);
64
+ uint256 netYtIn,
65
+ TokenOutput calldata output
66
+ ) external returns (uint256 netTokenOut);
68
67
  }
@@ -6,6 +6,7 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
6
6
  abstract contract TokenHelper {
7
7
  using SafeERC20 for IERC20;
8
8
  address internal constant NATIVE = address(0);
9
+ uint256 internal constant LOWER_BOUND_APPROVAL = type(uint96).max / 2; // some tokens use 96 bits for approval
9
10
 
10
11
  function _transferIn(
11
12
  address token,
@@ -13,9 +14,7 @@ abstract contract TokenHelper {
13
14
  uint256 amount
14
15
  ) internal {
15
16
  if (token == NATIVE) require(msg.value == amount, "eth mismatch");
16
- else if (amount != 0) {
17
- IERC20(token).safeTransferFrom(from, address(this), amount);
18
- }
17
+ else if (amount != 0) IERC20(token).safeTransferFrom(from, address(this), amount);
19
18
  }
20
19
 
21
20
  function _transferOut(
@@ -105,4 +104,10 @@ abstract contract TokenHelper {
105
104
  );
106
105
  require(success && (data.length == 0 || abi.decode(data, (bool))), "Safe Approve");
107
106
  }
107
+
108
+ function _safeApproveInf(address token, address to) internal {
109
+ if (token == NATIVE) return;
110
+ if (IERC20(token).allowance(address(this), to) < LOWER_BOUND_APPROVAL)
111
+ _safeApprove(token, to, type(uint256).max);
112
+ }
108
113
  }
@@ -0,0 +1,61 @@
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
+ import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
26
+ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
27
+ import "@openzeppelin/contracts/utils/Address.sol";
28
+ import "../helpers/TokenHelper.sol";
29
+
30
+ struct TokenInput {
31
+ address tokenIn;
32
+ uint256 netTokenIn;
33
+ address tokenMintScy;
34
+ bytes kybercall;
35
+ }
36
+
37
+ struct TokenOutput {
38
+ address tokenOut;
39
+ uint256 minTokenOut;
40
+ address tokenRedeemScy;
41
+ bytes kybercall;
42
+ }
43
+
44
+ abstract contract KyberSwapHelper is TokenHelper {
45
+ using Address for address;
46
+ address public immutable kyberSwapRouter;
47
+
48
+ /// @dev since this contract will be proxied, it must not contains non-immutable variables
49
+ constructor(address _kyberSwapRouter) {
50
+ kyberSwapRouter = _kyberSwapRouter;
51
+ }
52
+
53
+ function _kyberswap(
54
+ address tokenIn,
55
+ uint256 amountIn,
56
+ bytes calldata kybercall
57
+ ) internal {
58
+ _safeApproveInf(tokenIn, kyberSwapRouter);
59
+ kyberSwapRouter.functionCallWithValue(kybercall, tokenIn == NATIVE ? amountIn : 0);
60
+ }
61
+ }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pendle/core-v2",
3
3
  "description": "Core smart contracts of Pendle Protocol.",
4
4
  "license": "BUSL-1.1",
5
- "version": "0.8.1-gamma",
5
+ "version": "0.9.0-gamma-2",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",