@pendle/core-v2 0.20.2-testnet → 0.21.0-testnet

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 (277) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
  6. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  10. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  12. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
  14. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  16. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  19. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  20. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  21. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  22. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  23. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  24. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  25. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
  26. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  27. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  28. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
  30. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
  32. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
  34. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
  36. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
  38. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
  40. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  42. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.json +1 -41
  46. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
  48. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.json +2 -41
  50. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.json +2 -41
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +2 -2
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +2 -41
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
  68. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
  70. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
  72. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  73. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
  74. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
  76. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +2 -39
  78. package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +32 -80
  81. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +40 -100
  83. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +16 -40
  85. package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +16 -40
  88. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +104 -260
  90. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  91. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  94. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  95. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
  96. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
  97. package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -2
  98. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.dbg.json +4 -0
  99. package/build/artifacts/contracts/offchain-helpers/PendleMulticall.sol/PendleMulticall.json +47 -0
  100. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  101. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +2 -2
  102. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  103. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +53 -96
  104. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  105. package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
  106. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  107. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +61 -116
  108. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
  109. package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
  110. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  111. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +25 -44
  112. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
  113. package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
  114. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  115. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +25 -44
  116. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  117. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
  118. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  119. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json +1 -1
  120. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  121. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  122. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  123. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  124. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +4 -0
  125. package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +224 -0
  126. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +4 -0
  127. package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +35 -0
  128. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +4 -0
  129. package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json +24 -0
  130. package/build/artifacts/contracts/router/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +4 -0
  131. package/build/artifacts/contracts/router/{swap-aggregator/kyberswap → kyberswap}/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.json +3 -3
  132. package/build/artifacts/contracts/router/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
  133. package/build/artifacts/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +1 -1
  134. package/build/artifacts/contracts/router/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +4 -0
  135. package/build/artifacts/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +30 -1
  136. package/build/artifacts/contracts/router/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +4 -0
  137. package/build/artifacts/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IHashflow.sol/IHashflow.json +1 -1
  138. package/build/artifacts/contracts/router/kyberswap/interfaces/IMetaAggregationRouter.sol/IMetaAggregationRouter.dbg.json +4 -0
  139. package/build/artifacts/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IMetaAggregationRouter.sol/IMetaAggregationRouter.json +1 -1
  140. package/build/artifacts/contracts/router/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
  141. package/build/artifacts/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +1 -1
  142. package/contracts/core/StandardizedYield/StEthHelper.sol +4 -4
  143. package/contracts/core/libraries/Errors.sol +0 -4
  144. package/contracts/interfaces/IApeStaking.sol +1 -1
  145. package/contracts/interfaces/IPActionAddRemoveLiq.sol +1 -1
  146. package/contracts/interfaces/IPActionMintRedeem.sol +3 -2
  147. package/contracts/interfaces/IPActionSwapPT.sol +1 -1
  148. package/contracts/interfaces/IPActionSwapPTYT.sol +1 -1
  149. package/contracts/interfaces/IPActionSwapYT.sol +1 -1
  150. package/contracts/offchain-helpers/PendleMulticall.sol +26 -0
  151. package/contracts/router/ActionAddRemoveLiq.sol +2 -2
  152. package/contracts/router/ActionMintRedeem.sol +9 -7
  153. package/contracts/router/ActionSwapPT.sol +2 -2
  154. package/contracts/router/ActionSwapYT.sol +2 -2
  155. package/contracts/router/base/ActionBaseMintRedeem.sol +14 -51
  156. package/contracts/router/{swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol → kyberswap/AggregationRouterHelper.sol} +22 -5
  157. package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +10 -0
  158. package/contracts/router/kyberswap/KyberSwapHelper.sol +79 -0
  159. package/contracts/router/{swap-aggregator/kyberswap → kyberswap}/ScaleDataHelperEthereum1.sol +13 -0
  160. package/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IAggregationExecutor.sol +0 -0
  161. package/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IExecutorHelperEthereum1.sol +6 -0
  162. package/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IHashflow.sol +0 -0
  163. package/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IMetaAggregationRouter.sol +0 -0
  164. package/contracts/router/{swap-aggregator/kyberswap → kyberswap}/interfaces/IMetaAggregationRouterV2.sol +0 -0
  165. package/deployments/43113-core.json +1 -1
  166. package/deployments/43113-helper.json +2 -1
  167. package/deployments/80001-core.json +1 -1
  168. package/deployments/80001-helper.json +2 -1
  169. package/deployments/80001-markets/USDC-DEC-8TH.json +10 -0
  170. package/package.json +1 -1
  171. package/typechain-types/ActionAddRemoveLiq.ts +35 -41
  172. package/typechain-types/ActionBaseMintRedeem.ts +8 -8
  173. package/typechain-types/ActionMintRedeem.ts +42 -45
  174. package/typechain-types/ActionSwapPT.ts +22 -28
  175. package/typechain-types/ActionSwapYT.ts +22 -28
  176. package/typechain-types/GMXPreviewHelper.ts +134 -0
  177. package/typechain-types/IExecutorHelperEthereum1.ts +44 -0
  178. package/typechain-types/IGMXVault.ts +494 -0
  179. package/typechain-types/IGlpManager.ts +115 -0
  180. package/typechain-types/IPActionAddRemoveLiq.ts +16 -22
  181. package/typechain-types/IPActionMintRedeem.ts +23 -26
  182. package/typechain-types/IPActionSwapPT.ts +14 -20
  183. package/typechain-types/IPActionSwapYT.ts +14 -20
  184. package/typechain-types/IPAllAction.ts +31 -34
  185. package/typechain-types/IPYieldTokenV2.ts +915 -0
  186. package/typechain-types/IRewardRouterV2.ts +303 -0
  187. package/typechain-types/IVaultPriceFeed.ts +114 -0
  188. package/typechain-types/InterestManagerYTV2.ts +124 -0
  189. package/typechain-types/PendleAura3EthSY.ts +0 -39
  190. package/typechain-types/PendleAuraCbethWstethSY.ts +0 -39
  191. package/typechain-types/PendleAuraWethWstethSY.ts +0 -39
  192. package/typechain-types/PendleGlpSY.ts +1449 -0
  193. package/typechain-types/PendleMulticall.ts +110 -0
  194. package/typechain-types/PendlePrincipalTokenV2.ts +614 -0
  195. package/typechain-types/PendleYieldContractFactoryV2.ts +801 -0
  196. package/typechain-types/PendleYieldTokenV2.ts +1304 -0
  197. package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +56 -99
  198. package/typechain-types/factories/ActionBaseMintRedeem__factory.ts +1 -1
  199. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  200. package/typechain-types/factories/ActionMintRedeem__factory.ts +64 -119
  201. package/typechain-types/factories/ActionMisc__factory.ts +1 -1
  202. package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
  203. package/typechain-types/factories/ActionSwapPT__factory.ts +28 -47
  204. package/typechain-types/factories/ActionSwapYT__factory.ts +28 -47
  205. package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
  206. package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
  207. package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
  208. package/typechain-types/factories/BulkSeller__factory.ts +1 -1
  209. package/typechain-types/factories/Errors__factory.ts +1 -38
  210. package/typechain-types/factories/GMXPreviewHelper__factory.ts +78 -0
  211. package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +29 -0
  212. package/typechain-types/factories/IGMXVault__factory.ts +320 -0
  213. package/typechain-types/factories/IGlpManager__factory.ts +55 -0
  214. package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +32 -80
  215. package/typechain-types/factories/IPActionMintRedeem__factory.ts +40 -100
  216. package/typechain-types/factories/IPActionSwapPT__factory.ts +16 -40
  217. package/typechain-types/factories/IPActionSwapYT__factory.ts +16 -40
  218. package/typechain-types/factories/IPAllAction__factory.ts +104 -260
  219. package/typechain-types/factories/IPYieldTokenV2__factory.ts +702 -0
  220. package/typechain-types/factories/IRewardRouterV2__factory.ts +180 -0
  221. package/typechain-types/factories/IVaultPriceFeed__factory.ts +60 -0
  222. package/typechain-types/factories/InterestManagerYTV2__factory.ts +63 -0
  223. package/typechain-types/factories/MarketMathStatic__factory.ts +1 -1
  224. package/typechain-types/factories/OracleLib__factory.ts +1 -1
  225. package/typechain-types/factories/PendleAura3EthSY__factory.ts +1 -40
  226. package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1 -40
  227. package/typechain-types/factories/PendleAuraWethRethSY__factory.ts +1 -1
  228. package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1 -40
  229. package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
  230. package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
  231. package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
  232. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  233. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  234. package/typechain-types/factories/PendleGlpSY__factory.ts +1255 -0
  235. package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
  236. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  237. package/typechain-types/factories/PendleMarket__factory.ts +1 -1
  238. package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
  239. package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
  240. package/typechain-types/factories/PendleMulticall__factory.ts +100 -0
  241. package/typechain-types/factories/PendlePrincipalTokenV2__factory.ts +564 -0
  242. package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
  243. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  244. package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
  245. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  246. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  247. package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
  248. package/typechain-types/factories/PendleYieldContractFactoryV2__factory.ts +674 -0
  249. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
  250. package/typechain-types/factories/PendleYieldTokenV2__factory.ts +1122 -0
  251. package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
  252. package/typechain-types/factories/RouterStatic__factory.ts +1 -1
  253. package/typechain-types/factories/SAPE__factory.ts +1 -1
  254. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  255. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  256. package/typechain-types/hardhat.d.ts +84 -30
  257. package/typechain-types/index.ts +22 -10
  258. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +0 -4
  259. package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +0 -160
  260. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +0 -4
  261. package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +0 -10
  262. package/build/artifacts/contracts/router/swap-aggregator/ISwapAggregator.sol/ISwapAggregator.dbg.json +0 -4
  263. package/build/artifacts/contracts/router/swap-aggregator/ISwapAggregator.sol/ISwapAggregator.json +0 -51
  264. package/build/artifacts/contracts/router/swap-aggregator/SwapAggregator.sol/SwapAggregator.dbg.json +0 -4
  265. package/build/artifacts/contracts/router/swap-aggregator/SwapAggregator.sol/SwapAggregator.json +0 -256
  266. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.dbg.json +0 -4
  267. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.json +0 -10
  268. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +0 -4
  269. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +0 -4
  270. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +0 -4
  271. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +0 -4
  272. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouter.sol/IMetaAggregationRouter.dbg.json +0 -4
  273. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +0 -4
  274. package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +0 -45
  275. package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +0 -71
  276. package/contracts/router/swap-aggregator/ISwapAggregator.sol +0 -21
  277. package/contracts/router/swap-aggregator/SwapAggregator.sol +0 -62
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "IHashflow",
4
- "sourceName": "contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol",
4
+ "sourceName": "contracts/router/kyberswap/interfaces/IHashflow.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../../build-info/c92146a3f15d18e50194da9e3493e287.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "IMetaAggregationRouter",
4
- "sourceName": "contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouter.sol",
4
+ "sourceName": "contracts/router/kyberswap/interfaces/IMetaAggregationRouter.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../../../build-info/c92146a3f15d18e50194da9e3493e287.json"
4
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
3
  "contractName": "IMetaAggregationRouterV2",
4
- "sourceName": "contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol",
4
+ "sourceName": "contracts/router/kyberswap/interfaces/IMetaAggregationRouterV2.sol",
5
5
  "abi": [
6
6
  {
7
7
  "inputs": [
@@ -7,9 +7,9 @@ import "../../interfaces/IStETH.sol";
7
7
  import "../libraries/TokenHelper.sol";
8
8
 
9
9
  abstract contract StEthHelper is TokenHelper {
10
- address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
11
- address public constant WSTETH = 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0;
12
- address public constant STETH = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84;
10
+ address internal constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
11
+ address internal constant WSTETH = 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0;
12
+ address internal constant STETH = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84;
13
13
 
14
14
  constructor() {
15
15
  _safeApproveInf(STETH, WSTETH);
@@ -39,7 +39,7 @@ abstract contract StEthHelper is TokenHelper {
39
39
  returns (uint256 amountTokenOut)
40
40
  {
41
41
  amountTokenOut = IWstETH(WSTETH).unwrap(amountRedeem);
42
- _transferOut(STETH, receiver, amountTokenOut);
42
+ if (receiver != address(this)) _transferOut(STETH, receiver, amountTokenOut);
43
43
  }
44
44
 
45
45
  /// @dev tokenIn must be either ETH, WETH or STETH
@@ -169,8 +169,4 @@ library Errors {
169
169
  error OnlyYT();
170
170
  error OnlyYCFactory();
171
171
  error OnlyWhitelisted();
172
-
173
- // Swap Aggregator
174
- error SAInsufficientTokenIn(address tokenIn, uint256 amountExpected, uint256 amountActual);
175
- error UnsupportedSelector(uint256 aggregatorType, bytes4 selector);
176
172
  }
@@ -24,7 +24,7 @@ interface IApeStaking {
24
24
  external
25
25
  view
26
26
  returns (uint256 stakedAmount, int256 rewardsDebt);
27
-
27
+
28
28
  // for SDK
29
29
  function pools(uint256 id) external view returns (uint48, uint16, uint96 totalStaked, uint96);
30
30
  }
@@ -2,7 +2,7 @@
2
2
  pragma solidity 0.8.17;
3
3
 
4
4
  import "../router/base/MarketApproxLib.sol";
5
- import "../router/base/ActionBaseMintRedeem.sol";
5
+ import "../router/kyberswap/KyberSwapHelper.sol";
6
6
 
7
7
  interface IPActionAddRemoveLiq {
8
8
  event AddLiquidityDualSyAndPt(
@@ -2,7 +2,7 @@
2
2
  pragma solidity 0.8.17;
3
3
 
4
4
  import "../router/base/MarketApproxLib.sol";
5
- import "../router/base/ActionBaseMintRedeem.sol";
5
+ import "../router/kyberswap/KyberSwapHelper.sol";
6
6
 
7
7
  interface IPActionMintRedeem {
8
8
  event MintSyFromToken(
@@ -145,8 +145,9 @@ interface IPActionMintRedeem {
145
145
  struct RouterSwapAllStruct {
146
146
  // key-value pair
147
147
  address[] tokens;
148
- SwapData[] data;
148
+ bytes[] kybercalls;
149
149
  //
150
+ address kyberRouter;
150
151
  address outputToken;
151
152
  uint256 minTokenOut;
152
153
  }
@@ -2,7 +2,7 @@
2
2
  pragma solidity 0.8.17;
3
3
 
4
4
  import "../router/base/MarketApproxLib.sol";
5
- import "../router/base/ActionBaseMintRedeem.sol";
5
+ import "../router/kyberswap/KyberSwapHelper.sol";
6
6
 
7
7
  interface IPActionSwapPT {
8
8
  event SwapPtAndSy(
@@ -2,7 +2,7 @@
2
2
  pragma solidity 0.8.17;
3
3
 
4
4
  import "../router/base/MarketApproxLib.sol";
5
- import "../router/base/ActionBaseMintRedeem.sol";
5
+ import "../router/kyberswap/KyberSwapHelper.sol";
6
6
 
7
7
  interface IPActionSwapPTYT {
8
8
  event SwapPtAndYt(
@@ -2,7 +2,7 @@
2
2
  pragma solidity 0.8.17;
3
3
 
4
4
  import "../router/base/MarketApproxLib.sol";
5
- import "../router/base/ActionBaseMintRedeem.sol";
5
+ import "../router/kyberswap/KyberSwapHelper.sol";
6
6
 
7
7
  interface IPActionSwapYT {
8
8
  event SwapYtAndSy(
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity 0.8.17;
3
+
4
+ /// @title PendleMulticall - A more gas-efficient version of Multicall3 (~700 gas saved for each call)
5
+ /// @author UncleGrandpa925 <longvh@pendle.finance>
6
+ contract PendleMulticall {
7
+ error MulticallFailed(uint256 index);
8
+
9
+ struct Call {
10
+ address target;
11
+ bytes callData;
12
+ }
13
+
14
+ function aggregate(Call[] calldata calls) external payable {
15
+ uint256 length = calls.length;
16
+ Call calldata call;
17
+ for (uint256 i = 0; i < length; ) {
18
+ call = calls[i];
19
+ (bool success, ) = call.target.call(call.callData);
20
+ if (!success) revert MulticallFailed(i);
21
+ unchecked {
22
+ ++i;
23
+ }
24
+ }
25
+ }
26
+ }
@@ -24,8 +24,8 @@ contract ActionAddRemoveLiq is IPActionAddRemoveLiq, ActionBaseMintRedeem {
24
24
  using BulkSellerMathCore for BulkSellerState;
25
25
 
26
26
  /// @dev since this contract will be proxied, it must not contains non-immutable variables
27
- constructor(address _swapAggregator)
28
- ActionBaseMintRedeem(_swapAggregator) //solhint-disable-next-line no-empty-blocks
27
+ constructor(address _kyberScalingLib)
28
+ ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
29
29
  {}
30
30
 
31
31
  /**
@@ -12,8 +12,8 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
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 _swapAggregator)
16
- ActionBaseMintRedeem(_swapAggregator) //solhint-disable-next-line no-empty-blocks
15
+ constructor(address _kyberScalingLib)
16
+ ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
17
17
  {}
18
18
 
19
19
  /**
@@ -180,7 +180,8 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
180
180
  address[] calldata markets,
181
181
  RouterSwapAllStruct calldata dataSwap
182
182
  ) external returns (uint256 netTokenOut, uint256[] memory amountsSwapped) {
183
- if (dataSwap.tokens.length != dataSwap.data.length) revert Errors.ArrayLengthMismatch();
183
+ if (dataSwap.tokens.length != dataSwap.kybercalls.length)
184
+ revert Errors.ArrayLengthMismatch();
184
185
 
185
186
  if (dataYT.tokenRedeemSys.length != dataYT.syAddrs.length)
186
187
  revert Errors.ArrayLengthMismatch();
@@ -225,7 +226,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
225
226
  _transferFrom(
226
227
  IERC20(tokensOut.tokens[i]),
227
228
  msg.sender,
228
- swapAggregator,
229
+ address(this),
229
230
  tokensOut.amounts[i]
230
231
  );
231
232
  }
@@ -269,7 +270,7 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
269
270
 
270
271
  TokenOutput memory output = _wrapTokenOutput(tokenRedeemSys[i], 1, bulks[i]);
271
272
  uint256 amountOut = _redeemSyToToken(
272
- swapAggregator,
273
+ address(this),
273
274
  sys.tokens[i],
274
275
  sys.amounts[i],
275
276
  output,
@@ -286,10 +287,11 @@ contract ActionMintRedeem is IPActionMintRedeem, ActionBaseMintRedeem {
286
287
  ) internal returns (uint256 netTokenOut) {
287
288
  for (uint256 i = 0; i < tokens.tokens.length; ++i) {
288
289
  if (tokens.amounts[i] == 0) continue;
289
- ISwapAggregator(swapAggregator).swap(
290
+ _kyberswap(
290
291
  tokens.tokens[i],
291
292
  tokens.amounts[i],
292
- dataSwap.data[i]
293
+ dataSwap.kyberRouter,
294
+ dataSwap.kybercalls[i]
293
295
  );
294
296
  }
295
297
  netTokenOut = _selfBalance(dataSwap.outputToken);
@@ -16,8 +16,8 @@ contract ActionSwapPT is IPActionSwapPT, ActionBaseMintRedeem {
16
16
  using PYIndexLib for IPYieldToken;
17
17
 
18
18
  /// @dev since this contract will be proxied, it must not contains non-immutable variables
19
- constructor(address _swapAggregator)
20
- ActionBaseMintRedeem(_swapAggregator) //solhint-disable-next-line no-empty-blocks
19
+ constructor(address _kyberScalingLib)
20
+ ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
21
21
  {}
22
22
 
23
23
  /**
@@ -17,8 +17,8 @@ contract ActionSwapYT is IPActionSwapYT, ActionBaseMintRedeem, CallbackHelper {
17
17
  using PYIndexLib for IPYieldToken;
18
18
 
19
19
  /// @dev since this contract will be proxied, it must not contains non-immutable variables
20
- constructor(address _swapAggregator)
21
- ActionBaseMintRedeem(_swapAggregator) //solhint-disable-next-line no-empty-blocks
20
+ constructor(address _kyberScalingLib)
21
+ ActionBaseMintRedeem(_kyberScalingLib) //solhint-disable-next-line no-empty-blocks
22
22
  {}
23
23
 
24
24
  /**
@@ -1,43 +1,19 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  pragma solidity 0.8.17;
3
3
 
4
+ import "../kyberswap/KyberSwapHelper.sol";
4
5
  import "../../core/libraries/TokenHelper.sol";
5
6
  import "../../interfaces/IStandardizedYield.sol";
6
7
  import "../../interfaces/IPYieldToken.sol";
7
8
  import "../../interfaces/IPBulkSeller.sol";
8
9
  import "../../core/libraries/Errors.sol";
9
- import "../swap-aggregator/ISwapAggregator.sol";
10
-
11
- struct TokenInput {
12
- // Token/Sy data
13
- address tokenIn;
14
- uint256 netTokenIn;
15
- address tokenMintSy;
16
- address bulk;
17
- // aggregator data
18
- SwapData data;
19
- }
20
-
21
- struct TokenOutput {
22
- // Token/Sy data
23
- address tokenOut;
24
- uint256 minTokenOut;
25
- address tokenRedeemSy;
26
- address bulk;
27
- // Kyber data
28
- SwapData data;
29
- }
30
10
 
31
11
  // solhint-disable no-empty-blocks
32
- abstract contract ActionBaseMintRedeem is TokenHelper {
12
+ abstract contract ActionBaseMintRedeem is TokenHelper, KyberSwapHelper {
33
13
  bytes internal constant EMPTY_BYTES = abi.encode();
34
14
 
35
- address public immutable swapAggregator;
36
-
37
15
  /// @dev since this contract will be proxied, it must not contains non-immutable variables
38
- constructor(address _swapAggregator) {
39
- swapAggregator = _swapAggregator;
40
- }
16
+ constructor(address _kyberScalingLib) KyberSwapHelper(_kyberScalingLib) {}
41
17
 
42
18
  function _mintSyFromToken(
43
19
  address receiver,
@@ -45,23 +21,14 @@ abstract contract ActionBaseMintRedeem is TokenHelper {
45
21
  uint256 minSyOut,
46
22
  TokenInput calldata input
47
23
  ) internal returns (uint256 netSyOut) {
24
+ _transferIn(input.tokenIn, msg.sender, input.netTokenIn);
25
+
48
26
  bool requireSwap = input.tokenIn != input.tokenMintSy;
49
27
 
50
28
  uint256 netTokenMintSy;
51
29
 
52
- if (input.tokenIn != NATIVE) {
53
- _transferFrom(
54
- IERC20(input.tokenIn),
55
- msg.sender,
56
- requireSwap ? swapAggregator : address(this),
57
- input.netTokenIn
58
- );
59
- }
60
-
61
30
  if (requireSwap) {
62
- ISwapAggregator(swapAggregator).swap{
63
- value: input.tokenIn == NATIVE ? input.netTokenIn : 0
64
- }(input.tokenIn, input.netTokenIn, input.data);
31
+ _kyberswap(input.tokenIn, input.netTokenIn, input.kyberRouter, input.kybercall);
65
32
  netTokenMintSy = _selfBalance(input.tokenMintSy);
66
33
  } else {
67
34
  netTokenMintSy = input.netTokenIn;
@@ -99,7 +66,7 @@ abstract contract ActionBaseMintRedeem is TokenHelper {
99
66
  }
100
67
 
101
68
  bool requireSwap = output.tokenRedeemSy != output.tokenOut;
102
- address receiverRedeemSy = requireSwap ? swapAggregator : receiver;
69
+ address receiverRedeemSy = requireSwap ? address(this) : receiver;
103
70
  uint256 netTokenRedeemed;
104
71
 
105
72
  if (output.bulk != address(0)) {
@@ -120,9 +87,12 @@ abstract contract ActionBaseMintRedeem is TokenHelper {
120
87
  }
121
88
 
122
89
  if (requireSwap) {
123
- ISwapAggregator(swapAggregator).swap{
124
- value: output.tokenRedeemSy == NATIVE ? netTokenRedeemed : 0
125
- }(output.tokenRedeemSy, netTokenRedeemed, output.data);
90
+ _kyberswap(
91
+ output.tokenRedeemSy,
92
+ netTokenRedeemed,
93
+ output.kyberRouter,
94
+ output.kybercall
95
+ );
126
96
 
127
97
  netTokenOut = _selfBalance(output.tokenOut);
128
98
 
@@ -183,13 +153,6 @@ abstract contract ActionBaseMintRedeem is TokenHelper {
183
153
  uint256 minTokenOut,
184
154
  address bulk
185
155
  ) internal pure returns (TokenOutput memory) {
186
- return
187
- TokenOutput(
188
- tokenOut,
189
- minTokenOut,
190
- tokenOut,
191
- bulk,
192
- SwapData(AGGREGATOR.KYBERSWAP, address(0), EMPTY_BYTES)
193
- );
156
+ return TokenOutput(tokenOut, minTokenOut, tokenOut, bulk, address(0), EMPTY_BYTES);
194
157
  }
195
158
  }
@@ -2,17 +2,24 @@
2
2
 
3
3
  pragma solidity 0.8.17;
4
4
  import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
5
- import "../../../core/libraries/BoringOwnableUpgradeable.sol";
5
+ import "../../core/libraries/BoringOwnableUpgradeable.sol";
6
6
 
7
- import "../../../interfaces/IWETH.sol";
7
+ import "../../interfaces/IWETH.sol";
8
8
 
9
9
  import "./interfaces/IMetaAggregationRouter.sol";
10
10
  import "./interfaces/IMetaAggregationRouterV2.sol";
11
11
  import "./interfaces/IHashflow.sol";
12
12
  import "./interfaces/IExecutorHelperEthereum1.sol";
13
+
14
+ import "./IAggregatorRouterHelper.sol";
13
15
  import "./ScaleDataHelperEthereum1.sol";
14
16
 
15
- abstract contract KyberAggregationRouterHelper {
17
+ contract AggregationRouterHelper is
18
+ IAggregationRouterHelper,
19
+ Initializable,
20
+ UUPSUpgradeable,
21
+ BoringOwnableUpgradeable
22
+ {
16
23
  uint256 private constant _PARTIAL_FILL = 0x01;
17
24
  uint256 private constant _REQUIRES_EXTRA_ETH = 0x02;
18
25
  uint256 private constant _SHOULD_CLAIM = 0x04;
@@ -20,6 +27,14 @@ abstract contract KyberAggregationRouterHelper {
20
27
  uint256 private constant _BURN_FROM_TX_ORIGIN = 0x10;
21
28
  uint256 private constant _SIMPLE_SWAP = 0x20;
22
29
 
30
+ constructor() initializer {}
31
+
32
+ function initialize() external initializer {
33
+ __BoringOwnable_init();
34
+ }
35
+
36
+ function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}
37
+
23
38
  struct Swap {
24
39
  bytes data;
25
40
  bytes4 selector;
@@ -43,8 +58,8 @@ abstract contract KyberAggregationRouterHelper {
43
58
  bytes destTokenFeeData;
44
59
  }
45
60
 
46
- function _getKyberScaledInputData(bytes calldata kybercall, uint256 newAmount)
47
- internal
61
+ function getScaledInputData(bytes calldata kybercall, uint256 newAmount)
62
+ external
48
63
  pure
49
64
  returns (bytes memory)
50
65
  {
@@ -265,6 +280,8 @@ abstract contract KyberAggregationRouterHelper {
265
280
  swap.data = ScaleDataHelperEthereum1.newPSM(swap.data, oldAmount, newAmount);
266
281
  } else if (selector == IExecutorHelperEthereum1.executeHashflowSwap.selector) {
267
282
  revert("InputScalingHelper: Can not scale RFQ swap");
283
+ } else if (selector == IExecutorHelperEthereum1.executeFraxSwap.selector) {
284
+ swap.data = ScaleDataHelperEthereum1.newFrax(swap.data, oldAmount, newAmount);
268
285
  } else revert("AggregationExecutor: Dex type not supported");
269
286
  }
270
287
  return abi.encode(executorDesc);
@@ -0,0 +1,10 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+
3
+ pragma solidity 0.8.17;
4
+
5
+ interface IAggregationRouterHelper {
6
+ function getScaledInputData(bytes calldata kybercall, uint256 newAmount)
7
+ external
8
+ pure
9
+ returns (bytes memory);
10
+ }
@@ -0,0 +1,79 @@
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.17;
25
+
26
+ import "@openzeppelin/contracts/utils/Address.sol";
27
+ import "../../core/libraries/TokenHelper.sol";
28
+ import "./IAggregatorRouterHelper.sol";
29
+ import "../../core/libraries/Errors.sol";
30
+
31
+ struct TokenInput {
32
+ // Token/Sy data
33
+ address tokenIn;
34
+ uint256 netTokenIn;
35
+ address tokenMintSy;
36
+ address bulk;
37
+ // Kyber data
38
+ address kyberRouter;
39
+ bytes kybercall;
40
+ }
41
+
42
+ struct TokenOutput {
43
+ // Token/Sy data
44
+ address tokenOut;
45
+ uint256 minTokenOut;
46
+ address tokenRedeemSy;
47
+ address bulk;
48
+ // Kyber data
49
+ address kyberRouter;
50
+ bytes kybercall;
51
+ }
52
+
53
+ abstract contract KyberSwapHelper is TokenHelper {
54
+ using Address for address;
55
+
56
+ address public immutable kyberScalingLib;
57
+
58
+ constructor(address _kyberScalingLib) {
59
+ kyberScalingLib = _kyberScalingLib;
60
+ }
61
+
62
+ function _kyberswap(
63
+ address tokenIn,
64
+ uint256 amountIn,
65
+ address kyberRouter,
66
+ bytes memory rawKybercall
67
+ ) internal {
68
+ if (kyberRouter == address(0) || rawKybercall.length == 0)
69
+ revert Errors.RouterKyberSwapDataZero();
70
+
71
+ _safeApproveInf(tokenIn, kyberRouter);
72
+
73
+ bytes memory kybercall = IAggregationRouterHelper(kyberScalingLib).getScaledInputData(
74
+ rawKybercall,
75
+ amountIn
76
+ );
77
+ kyberRouter.functionCallWithValue(kybercall, tokenIn == NATIVE ? amountIn : 0);
78
+ }
79
+ }
@@ -131,4 +131,17 @@ library ScaleDataHelperEthereum1 {
131
131
  psm.amountIn = (psm.amountIn * newAmount) / oldAmount;
132
132
  return abi.encode(psm);
133
133
  }
134
+
135
+ function newFrax(
136
+ bytes memory data,
137
+ uint256 oldAmount,
138
+ uint256 newAmount
139
+ ) internal pure returns (bytes memory) {
140
+ IExecutorHelperEthereum1.UniSwap memory frax = abi.decode(
141
+ data,
142
+ (IExecutorHelperEthereum1.UniSwap)
143
+ );
144
+ frax.collectAmount = (frax.collectAmount * newAmount) / oldAmount;
145
+ return abi.encode(frax);
146
+ }
134
147
  }
@@ -182,4 +182,10 @@ interface IExecutorHelperEthereum1 {
182
182
  bytes memory data,
183
183
  uint256 previousAmountOut
184
184
  ) external payable returns (uint256);
185
+
186
+ function executeFraxSwap(
187
+ uint256 index,
188
+ bytes memory data,
189
+ uint256 previousAmountOut
190
+ ) external payable returns (uint256);
185
191
  }
@@ -19,7 +19,7 @@
19
19
  "marketFactory": "0x24265d37C87d3ffE64D6B0274c168945d44D1ba2",
20
20
  "bulkSellerFactory": "0x137404E334a80fa741AD03d8965ee4b5b8A20259",
21
21
  "bulkSellerOffchain": "0x85C369B1aD9A981DCf4Fd8F00F74cB783cacec34",
22
- "router": "0xCc57D7e687f7d5884DD7D475B80AD1e53DE9a9a1",
22
+ "router": "0x17ae363f142517b593d9A71282BAb8CA6bb4eA51",
23
23
  "routerStatic": "0xBf98D54D05907f3F576602e8Be7fEaF8891c787F",
24
24
  "vePendle": "0xB20E3c268C993BC3c9Bc1C1cc5D7491F2268cD91",
25
25
  "senderEndpoint": "0x86bD575c36e236386284C035ffeBE66CB6ecd2DD",
@@ -1,3 +1,4 @@
1
1
  {
2
- "implicitSwapfeeContract": "0x14A59F6e482B25BAc872a8788E7AfF3F254604Fa"
2
+ "implicitSwapfeeContract": "0x14A59F6e482B25BAc872a8788E7AfF3F254604Fa",
3
+ "multicall": "0x44099Cc077E7e4c619b217474ee459532169C563"
3
4
  }
@@ -20,7 +20,7 @@
20
20
  "marketFactory": "0xeB2AEd0aE414c76e4f9D4d43cD01064Fec010dfB",
21
21
  "bulkSellerFactory": "0x4707f0CC2Ad4211172EdBAFc453E60DBd1C9D854",
22
22
  "bulkSellerOffchain": "0x7Fb3626D95449d69f991a37e304b8C9A0a5D0e0c",
23
- "router": "0xCDB79857673F034534578A9Cb018BD92c675Eae5",
23
+ "router": "0x5141Ad90AafB0D45e9F19Bd9F861362d56f2CF79",
24
24
  "routerStatic": "0xc7F8F9F1DdE1104664b6fC8F33E49b169C12F41E",
25
25
  "receiverEndpoint": "0x256752c851EDB92c97377C93232A9034c835F376",
26
26
  "vePendle": "0xC0BC61112D9fD7bA5809047a86EC245593BA0e1E",
@@ -1,3 +1,4 @@
1
1
  {
2
- "implicitSwapfeeContract": "0xc4F3ee03790C06dE413192eb18795Fd3788e669E"
2
+ "implicitSwapfeeContract": "0xc4F3ee03790C06dE413192eb18795Fd3788e669E",
3
+ "multicall": "0xEAdf0eF1373Bde6E3265B266F2a474F9C1f66040"
3
4
  }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "SY Benqi USDC",
3
+ "SY": "0x2b6891918CE19e854daB4fce31a1246ECef575E6",
4
+ "YT": "0x38692a41E857Fcc28Cf7e5782F6245Cd54a04C7E",
5
+ "PT": "0x721036540c0Ca715e546286df70c2Be6196d0561",
6
+ "market": "0x9D6913b06d7B42d921e812c46A63cFb580F5cCfc",
7
+ "expiry": 1701993600,
8
+ "scalarRoot": "62000000000000000000",
9
+ "initAnchor": "1012600000000000000"
10
+ }
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.20.2-testnet",
5
+ "version": "0.21.0-testnet",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",