@pendle/core-v2 3.0.0-beta-11 → 3.0.0-beta-12

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 (316) hide show
  1. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol +5 -23
  2. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol +2 -5
  3. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol +6 -20
  4. package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol +6 -27
  5. package/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol +1 -2
  6. package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +1 -1
  7. package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +16 -17
  8. package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +6 -7
  9. package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +7 -8
  10. package/contracts/LiquidityMining/PendleMerkleDistributor.sol +2 -11
  11. package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +14 -37
  12. package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol +19 -34
  13. package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +4 -14
  14. package/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +4 -16
  15. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +11 -39
  16. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +3 -10
  17. package/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +1 -1
  18. package/contracts/LiquidityMining/libraries/VeBalanceLib.sol +5 -20
  19. package/contracts/LiquidityMining/libraries/VeHistoryLib.sol +1 -3
  20. package/contracts/core/Market/MarketMathCore.sol +12 -37
  21. package/contracts/core/Market/OracleLib.sol +6 -24
  22. package/contracts/core/Market/PendleExternalRewardDistributor.sol +4 -10
  23. package/contracts/core/Market/PendleGauge.sol +3 -9
  24. package/contracts/core/Market/PendleMarket.sol +14 -39
  25. package/contracts/core/Market/PendleMarketFactory.sol +14 -21
  26. package/contracts/core/Market/v2/PendleGaugeV2.sol +8 -24
  27. package/contracts/core/Market/v2/PendleMarketFactoryV2.sol +7 -27
  28. package/contracts/core/Market/v2/PendleMarketV2.sol +13 -36
  29. package/contracts/core/Market/v3/PendleMarketFactoryV3.sol +137 -0
  30. package/contracts/core/Market/v3/PendleMarketV3.sol +360 -0
  31. package/contracts/core/RewardManager/PendleLinearDistributor.sol +143 -0
  32. package/contracts/core/RewardManager/RewardManager.sol +14 -7
  33. package/contracts/core/RewardManager/RewardManagerAbstract.sol +5 -17
  34. package/contracts/core/StandardizedYield/SYBase.sol +10 -40
  35. package/contracts/core/StandardizedYield/SYBaseUpg.sol +197 -0
  36. package/contracts/core/StandardizedYield/SYBaseWithRewards.sol +9 -41
  37. package/contracts/core/StandardizedYield/SYBaseWithRewardsUpg.sol +88 -0
  38. package/contracts/core/StandardizedYield/SYUtils.sol +1 -4
  39. package/contracts/core/StandardizedYield/StEthHelper.sol +3 -9
  40. package/contracts/core/StandardizedYield/implementations/AaveV3/PendleAaveV3SY.sol +94 -0
  41. package/contracts/core/StandardizedYield/implementations/AaveV3/libraries/AaveAdapterLib.sol +19 -0
  42. package/contracts/core/StandardizedYield/implementations/AaveV3/libraries/WadRayMath.sol +126 -0
  43. package/contracts/core/StandardizedYield/implementations/Ankr/PendleAnkrBNBSY.sol +4 -12
  44. package/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol +5 -19
  45. package/contracts/core/StandardizedYield/implementations/BalancerStable/AuraEthxBbAWethSY.sol +4 -14
  46. package/contracts/core/StandardizedYield/implementations/BalancerStable/AuraSwEthBbAWethSYV2.sol +4 -14
  47. package/contracts/core/StandardizedYield/implementations/BalancerStable/{PendleAuraWethVethSY.sol → AuraWethVethSYUpg.sol} +13 -20
  48. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol +3 -7
  49. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol +12 -29
  50. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol +12 -29
  51. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol +12 -29
  52. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol +14 -39
  53. package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWstethAnkreth.sol +7 -28
  54. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +13 -30
  55. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreviewProxy.sol +1 -1
  56. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreviewV4.sol +50 -153
  57. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreviewV5.sol +50 -157
  58. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol +4 -16
  59. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol +6 -25
  60. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol +36 -34
  61. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol +4 -13
  62. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol +20 -58
  63. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol +28 -79
  64. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV3Upg.sol +310 -0
  65. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol +1 -3
  66. package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol +2 -6
  67. package/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol +5 -13
  68. package/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol +9 -29
  69. package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol +2 -8
  70. package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol +1 -5
  71. package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol +8 -19
  72. package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol +7 -25
  73. package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol +8 -27
  74. package/contracts/core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkReceiver.sol +2 -2
  75. package/contracts/core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkRelayer.sol +4 -9
  76. package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol +3 -15
  77. package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol +5 -23
  78. package/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol +10 -40
  79. package/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol +2 -8
  80. package/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol +2 -7
  81. package/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol +5 -20
  82. package/contracts/core/StandardizedYield/implementations/Flux/FluxTokenLib.sol +6 -4
  83. package/contracts/core/StandardizedYield/implementations/Flux/PendleFluxLendingSY.sol +3 -11
  84. package/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol +3 -9
  85. package/contracts/core/StandardizedYield/implementations/GLP/GMTokenPricingHelper.sol +115 -0
  86. package/contracts/core/StandardizedYield/implementations/GLP/PendleGMV2TokenSY.sol +134 -0
  87. package/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol +5 -19
  88. package/contracts/core/StandardizedYield/implementations/HMX/HLPPricingHelper.sol +3 -4
  89. package/contracts/core/StandardizedYield/implementations/HMX/PendleHlpSY.sol +18 -25
  90. package/contracts/core/StandardizedYield/implementations/Kyber/KyberMathHelper.sol +425 -0
  91. package/contracts/core/StandardizedYield/implementations/Kyber/KyberNftManagerBaseUpg.sol +438 -0
  92. package/contracts/core/StandardizedYield/implementations/Kyber/PendleKyberElasticSYUpg.sol +155 -0
  93. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/FullMath.sol +123 -0
  94. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/LiqDeltaMath.sol +17 -0
  95. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/LiquidityMath.sol +74 -0
  96. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/MathConstants.sol +19 -0
  97. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/QtyDeltaMath.sol +103 -0
  98. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/QuadMath.sol +31 -0
  99. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/ReinvestmentMath.sol +26 -0
  100. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/SafeCast.sol +73 -0
  101. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/SwapMath.sol +272 -0
  102. package/contracts/core/StandardizedYield/implementations/Kyber/libraries/TickMath.sol +223 -0
  103. package/contracts/core/StandardizedYield/implementations/MUX/MlpPricingHelper.sol +26 -0
  104. package/contracts/core/StandardizedYield/implementations/MUX/PendleMlpSY.sol +195 -0
  105. package/contracts/core/StandardizedYield/implementations/MantleStakedEth/PendleMantleStakedEthSY.sol +12 -41
  106. package/contracts/core/StandardizedYield/implementations/MantleStakedEth/PendleOracleForSyProxy.sol +1 -1
  107. package/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol +13 -42
  108. package/contracts/core/StandardizedYield/implementations/PendleBridgedLSDSY.sol +4 -11
  109. package/contracts/core/StandardizedYield/implementations/PendleERC4626SY.sol +4 -16
  110. package/contracts/core/StandardizedYield/implementations/PendleEUSDSY.sol +3 -11
  111. package/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol +3 -11
  112. package/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol +5 -18
  113. package/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol +3 -7
  114. package/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol +5 -18
  115. package/contracts/core/StandardizedYield/implementations/PendleWbEthSY.sol +3 -10
  116. package/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol +4 -12
  117. package/contracts/core/StandardizedYield/implementations/Silo/PendleSiloWithIncentiveSY.sol +157 -0
  118. package/contracts/core/StandardizedYield/implementations/Stader/PendleETHXSY.sol +4 -12
  119. package/contracts/core/StandardizedYield/implementations/Swell/PendleSwETH.sol +4 -12
  120. package/contracts/core/StandardizedYield/implementations/Thena/PendleThenaSY.sol +9 -29
  121. package/contracts/core/StandardizedYield/implementations/Thena/ThenaLpHelper.sol +3 -10
  122. package/contracts/core/StandardizedYield/implementations/Thena/ThenaMath.sol +9 -30
  123. package/contracts/core/StandardizedYield/implementations/Thena/ThenaPreview.sol +10 -40
  124. package/contracts/core/YieldContracts/InterestManagerYT.sol +6 -8
  125. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +1 -1
  126. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +2 -3
  127. package/contracts/core/YieldContracts/PendleYieldToken.sol +17 -44
  128. package/contracts/core/YieldContractsV2/InterestManagerYTV2.sol +5 -14
  129. package/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol +1 -1
  130. package/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol +2 -3
  131. package/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol +13 -48
  132. package/contracts/core/erc20/PendleERC20.sol +2 -8
  133. package/contracts/core/erc20/PendleERC20Permit.sol +2 -6
  134. package/contracts/core/erc20/PendleERC20PermitUpg.sol +82 -0
  135. package/contracts/core/erc20/PendleERC20Upg.sol +334 -0
  136. package/contracts/core/libraries/ArrayLib.sol +7 -8
  137. package/contracts/core/libraries/BaseSplitCodeFactory.sol +1 -6
  138. package/contracts/core/libraries/Errors.sol +19 -1
  139. package/contracts/core/libraries/ExpiryUtilsLib.sol +3 -26
  140. package/contracts/core/libraries/StringLib.sol +5 -21
  141. package/contracts/core/libraries/TokenHelper.sol +3 -3
  142. package/contracts/core/libraries/math/LogExpMath.sol +1 -4
  143. package/contracts/core/libraries/math/PMath.sol +13 -15
  144. package/contracts/interfaces/AaveV3/IAaveV3AToken.sol +15 -0
  145. package/contracts/interfaces/AaveV3/IAaveV3Pool.sol +11 -0
  146. package/contracts/interfaces/Balancer/IComposableStable.sol +3 -4
  147. package/contracts/interfaces/Balancer/IERC4626LinearPool.sol +2 -10
  148. package/contracts/interfaces/Balancer/IMetaStablePool.sol +3 -11
  149. package/contracts/interfaces/Balancer/IVault.sol +3 -8
  150. package/contracts/interfaces/BinanceEth/IWBETH.sol +1 -1
  151. package/contracts/interfaces/Camelot/ICamelotNFTFactory.sol +1 -3
  152. package/contracts/interfaces/Camelot/ICamelotNFTHandler.sol +2 -10
  153. package/contracts/interfaces/Camelot/ICamelotNitroPool.sol +0 -1
  154. package/contracts/interfaces/Camelot/ICamelotNitroPoolFactory.sol +3 -12
  155. package/contracts/interfaces/Camelot/ICamelotPair.sol +5 -25
  156. package/contracts/interfaces/Camelot/ICamelotRouter.sol +1 -5
  157. package/contracts/interfaces/Camelot/IXGrail.sol +3 -11
  158. package/contracts/interfaces/ConvexCurve/IBooster.sol +1 -3
  159. package/contracts/interfaces/Curve/ICrvPool.sol +3 -12
  160. package/contracts/interfaces/Curve/ITriCrvPool.sol +2 -9
  161. package/contracts/interfaces/Flux/IFluxErc20.sol +1 -1
  162. package/contracts/interfaces/Flux/IFluxInterestRateModel.sol +1 -5
  163. package/contracts/interfaces/GMX/IGMXPriceHelper.sol +6 -0
  164. package/contracts/interfaces/GMX/IGMXVault.sol +2 -9
  165. package/contracts/interfaces/GMX/IRewardRouterV2.sol +1 -4
  166. package/contracts/interfaces/HMX/IHLPStaking.sol +1 -1
  167. package/contracts/interfaces/HMX/IHMXCalculator.sol +1 -1
  168. package/contracts/interfaces/HMX/IHMXCompounder.sol +1 -1
  169. package/contracts/interfaces/HMX/IHMXStaking.sol +1 -1
  170. package/contracts/interfaces/HMX/IHMXVester.sol +1 -1
  171. package/contracts/interfaces/IApeStaking.sol +3 -9
  172. package/contracts/interfaces/IBenQiInterestRateModel.sol +1 -5
  173. package/contracts/interfaces/IDiamondCut.sol +1 -5
  174. package/contracts/interfaces/IDiamondLoupe.sol +1 -3
  175. package/contracts/interfaces/ILayerZeroReceiver.sol +1 -6
  176. package/contracts/interfaces/IPActionAddRemoveLiqV3.sol +10 -2
  177. package/contracts/interfaces/IPActionInfoStatic.sol +4 -7
  178. package/contracts/interfaces/IPActionMarketAuxStatic.sol +5 -9
  179. package/contracts/interfaces/IPActionMarketCoreStatic.sol +118 -58
  180. package/contracts/interfaces/IPActionMintRedeemStatic.sol +38 -21
  181. package/contracts/interfaces/IPActionMiscV3.sol +51 -26
  182. package/contracts/interfaces/IPActionStorageStatic.sol +5 -1
  183. package/contracts/interfaces/IPAllActionTypeV3.sol +1 -0
  184. package/contracts/interfaces/IPBulkSeller.sol +49 -0
  185. package/contracts/interfaces/IPBulkSellerFactory.sol +12 -0
  186. package/contracts/interfaces/IPBulkSellerSYCallback.sol +6 -0
  187. package/contracts/interfaces/IPFeeDistributor.sol +1 -3
  188. package/contracts/interfaces/IPFeeDistributorV2.sol +8 -7
  189. package/contracts/interfaces/IPGaugeController.sol +2 -8
  190. package/contracts/interfaces/IPGaugeControllerMainchain.sol +1 -5
  191. package/contracts/interfaces/IPInterestManagerYT.sol +3 -3
  192. package/contracts/interfaces/IPInterestManagerYTV2.sol +1 -4
  193. package/contracts/interfaces/IPLimitRouter.sol +24 -19
  194. package/contracts/interfaces/IPLinearDistributor.sol +21 -0
  195. package/contracts/interfaces/IPMarket.sol +4 -17
  196. package/contracts/interfaces/IPMarketFactory.sol +2 -13
  197. package/contracts/interfaces/IPMarketFactoryV3.sol +24 -0
  198. package/contracts/interfaces/IPMarketV3.sol +8 -0
  199. package/contracts/interfaces/IPOffchainStorage.sol +11 -0
  200. package/contracts/interfaces/IPPriceFeed.sol +6 -0
  201. package/contracts/interfaces/IPPtOracle.sol +2 -9
  202. package/contracts/interfaces/IPRouterHelper.sol +11 -7
  203. package/contracts/interfaces/IPRouterStatic.sol +1 -3
  204. package/contracts/interfaces/IPVotingController.sol +7 -19
  205. package/contracts/interfaces/IPVotingEscrowMainchain.sol +2 -8
  206. package/contracts/interfaces/IPYieldToken.sol +2 -8
  207. package/contracts/interfaces/IPYieldTokenV2.sol +1 -6
  208. package/contracts/interfaces/IPendlePreviewHelper.sol +2 -8
  209. package/contracts/interfaces/IRewardManager.sol +1 -4
  210. package/contracts/interfaces/IStETH.sol +1 -4
  211. package/contracts/interfaces/IStandardizedYield.sol +9 -16
  212. package/contracts/interfaces/IStargateLP.sol +0 -3
  213. package/contracts/interfaces/IStargateRouter.sol +1 -5
  214. package/contracts/interfaces/Kyber/IKyberElasticFactory.sol +157 -0
  215. package/contracts/interfaces/Kyber/IKyberElasticPool.sol +101 -0
  216. package/contracts/interfaces/Kyber/IKyberElasticRouter.sol +98 -0
  217. package/contracts/interfaces/Kyber/IKyberLiquidityMining.sol +209 -0
  218. package/contracts/interfaces/Kyber/IKyberMathHelper.sol +28 -0
  219. package/contracts/interfaces/Kyber/IKyberPositionManager.sol +179 -0
  220. package/contracts/interfaces/Lybra/IEUSD.sol +1 -1
  221. package/contracts/interfaces/MUX/IMUXRewardRouter.sol +139 -0
  222. package/contracts/interfaces/Silo/ISilo.sol +298 -0
  223. package/contracts/interfaces/Silo/ISiloIncentiveController.sol +16 -0
  224. package/contracts/interfaces/Silo/ISiloLens.sol +6 -0
  225. package/contracts/interfaces/Stader/IStaderStakeManager.sol +2 -2
  226. package/contracts/interfaces/Thena/IThenaFactory.sol +1 -5
  227. package/contracts/interfaces/Thena/IThenaGaugeV2.sol +1 -2
  228. package/contracts/interfaces/Thena/IThenaPair.sol +3 -5
  229. package/contracts/limit/LimitMathCore.sol +69 -60
  230. package/contracts/limit/{PendleOrderMixin.sol → LimitRouterBase.sol} +96 -79
  231. package/contracts/limit/PendleLimitRouter.sol +9 -13
  232. package/contracts/offchain-helpers/AutomateReady.sol +17 -32
  233. package/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol +6 -3
  234. package/contracts/offchain-helpers/BoringLpSeller.sol +4 -17
  235. package/contracts/offchain-helpers/BoringPtSeller.sol +2 -7
  236. package/contracts/offchain-helpers/Broadcaster.sol +1 -1
  237. package/contracts/offchain-helpers/BytesLib.sol +26 -14
  238. package/contracts/offchain-helpers/EmptyUUPS.sol +0 -1
  239. package/contracts/offchain-helpers/LegacyNFTHelper.sol +4 -23
  240. package/contracts/offchain-helpers/LimitBackendHelper.sol +25 -16
  241. package/contracts/offchain-helpers/MarketExchangeRateLib.sol +2 -13
  242. package/contracts/offchain-helpers/Multicall2.sol +2 -7
  243. package/contracts/offchain-helpers/PendleMulticallV1.sol +7 -7
  244. package/contracts/offchain-helpers/PendleMulticallV2.sol +12 -13
  245. package/contracts/offchain-helpers/PendleOffchainStorage.sol +59 -0
  246. package/contracts/offchain-helpers/SimulateHelper.sol +6 -7
  247. package/contracts/offchain-helpers/errors/SDKErrorsDirectory.sol +15 -1
  248. package/contracts/oracles/PendleLpOracleLib.sol +9 -10
  249. package/contracts/oracles/PendlePtOracle.sol +8 -19
  250. package/contracts/oracles/PendlePtOracleLib.sol +8 -13
  251. package/contracts/oracles/samples/PendleLpGlpOracle.sol +6 -10
  252. package/contracts/oracles/samples/PendlePtGlpOracle.sol +6 -10
  253. package/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol +8 -15
  254. package/contracts/router/ActionAddRemoveLiqV3.sol +147 -52
  255. package/contracts/router/ActionCallbackV3.sol +11 -4
  256. package/contracts/router/ActionMiscV3.sol +43 -33
  257. package/contracts/router/ActionSwapPTV3.sol +18 -6
  258. package/contracts/router/ActionSwapYTV3.sol +42 -14
  259. package/contracts/router/PendleRouterHelper.sol +72 -40
  260. package/contracts/router/PendleRouterV3.sol +50 -50
  261. package/contracts/router/base/ActionBase.sol +86 -43
  262. package/contracts/router/base/CallbackHelper.sol +18 -20
  263. package/contracts/router/base/MarketApproxLib.sol +36 -32
  264. package/contracts/router/swap-aggregator/PendleSwap.sol +31 -7
  265. package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutorOptimistic.sol +63 -0
  266. package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelper.sol +314 -0
  267. package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2.sol +560 -0
  268. package/contracts/router/swap-aggregator/kyberswap/{IMetaAggregationRouterV2.sol → interfaces/IMetaAggregationRouterV2.sol} +11 -6
  269. package/contracts/router/swap-aggregator/kyberswap/{KyberInputScalingHelper.sol → l1-contracts/InputScalingHelper.sol} +70 -19
  270. package/contracts/router/swap-aggregator/kyberswap/{ScalingDataLib.sol → l1-contracts/ScalingDataLib.sol} +111 -53
  271. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/BytesHelper.sol +29 -0
  272. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataReader.sol +149 -0
  273. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataWriter.sol +118 -0
  274. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/Common.sol +42 -0
  275. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/DexScaler.sol +382 -0
  276. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/ExecutorReader.sol +61 -0
  277. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/InputScalingHelperL2.sol +329 -0
  278. package/contracts/router/swap-aggregator/kyberswap/l2-contracts/ScalingDataL2Lib.sol +173 -0
  279. package/contracts/router/swap-aggregator/oneinch/I1inchAggregationRouterV5.sol +4 -10
  280. package/contracts/router/swap-aggregator/oneinch/OneInchAggregationRouterHelper.sol +20 -14
  281. package/deployments/1-core.json +5 -2
  282. package/deployments/1-markets/EPENDLE-SEP2024.json +12 -0
  283. package/deployments/1-markets/SFRAX-MARCH2024.json +10 -0
  284. package/deployments/1-markets/SILO-CRVUSD-MARCH2024.json +10 -0
  285. package/deployments/10-core.json +6 -3
  286. package/deployments/42161-core.json +5 -2
  287. package/deployments/42161-markets/AAVE-USDC-JUNE2024.json +11 -0
  288. package/deployments/42161-markets/ARBSILO-USDC-FEB2024.json +10 -0
  289. package/deployments/42161-markets/GM-ARB-USDC-MARCH2024.json +10 -0
  290. package/deployments/42161-markets/KYBER-AXLWSTETH-WSTETH-MARCH2024.json +10 -0
  291. package/deployments/42161-markets/MLP-MARCH2024.json +10 -0
  292. package/deployments/42161-markets/WSTETH-ARBITRUM-MARCH2024.json +11 -0
  293. package/deployments/42161-markets/WSTETHSILO-ETH-MARCH2024.json +11 -0
  294. package/deployments/56-core.json +5 -2
  295. package/deployments/merkle-distribution/2023-10-26.json +7300 -0
  296. package/deployments/merkle-distribution/2023-11-30.json +7730 -0
  297. package/package.json +8 -8
  298. package/contracts/limit/helpers/ArgumentsDecoder.sol +0 -47
  299. package/contracts/limit/helpers/Permitable.sol +0 -48
  300. package/contracts/limit/helpers/RevertReasonParser.sol +0 -75
  301. package/contracts/offchain-helpers/ChainlinkRelayerGelato.sol +0 -37
  302. package/contracts/offchain-helpers/PtAndLpToAsset.sol +0 -62
  303. package/contracts/offchain-helpers/router-static/PendleRouterStatic.sol +0 -19
  304. package/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol +0 -112
  305. package/contracts/offchain-helpers/router-static/base/ActionLimitOrdersStatic.sol +0 -145
  306. package/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol +0 -171
  307. package/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol +0 -582
  308. package/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol +0 -116
  309. package/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol +0 -64
  310. package/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol +0 -53
  311. package/contracts/offchain-helpers/router-static/base/StorageLayout.sol +0 -18
  312. package/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol +0 -231
  313. package/deployments/1-markets/BALANCER-LP-AURA-VETH-WETH-SEP2024.json +0 -8
  314. /package/contracts/router/swap-aggregator/kyberswap/{IAggregationExecutor.sol → interfaces/IAggregationExecutor.sol} +0 -0
  315. /package/deployments/1-markets/{BALANCER-LP-AURA-BBAWETHSWETH-SEP-26-2024.json → deprecated/BALANCER-LP-AURA-BBAWETHSWETH-SEP-26-2024.json} +0 -0
  316. /package/deployments/1-markets/{BALANCER-LP-AURA-ETHX-BBAWETH-SEP-26-2024.json → deprecated/BALANCER-LP-AURA-ETHX-BBAWETH-SEP-26-2024.json} +0 -0
@@ -5,28 +5,32 @@ import "./base/ActionBase.sol";
5
5
  import "../interfaces/IPActionMiscV3.sol";
6
6
 
7
7
  contract ActionMiscV3 is IPActionMiscV3, ActionBase {
8
- function mintSyFromToken(address receiver, address SY, uint256 minSyOut, TokenInput calldata input)
9
- external
10
- payable
11
- returns (uint256 netSyOut)
12
- {
8
+ function mintSyFromToken(
9
+ address receiver,
10
+ address SY,
11
+ uint256 minSyOut,
12
+ TokenInput calldata input
13
+ ) external payable returns (uint256 netSyOut) {
13
14
  netSyOut = _mintSyFromToken(receiver, SY, minSyOut, input);
14
15
  emit MintSyFromToken(msg.sender, input.tokenIn, SY, receiver, input.netTokenIn, netSyOut);
15
16
  }
16
17
 
17
- function redeemSyToToken(address receiver, address SY, uint256 netSyIn, TokenOutput calldata output)
18
- external
19
- returns (uint256 netTokenOut)
20
- {
18
+ function redeemSyToToken(
19
+ address receiver,
20
+ address SY,
21
+ uint256 netSyIn,
22
+ TokenOutput calldata output
23
+ ) external returns (uint256 netTokenOut) {
21
24
  netTokenOut = _redeemSyToToken(receiver, SY, netSyIn, output, true);
22
25
  emit RedeemSyToToken(msg.sender, output.tokenOut, SY, receiver, netSyIn, netTokenOut);
23
26
  }
24
27
 
25
- function mintPyFromToken(address receiver, address YT, uint256 minPyOut, TokenInput calldata input)
26
- external
27
- payable
28
- returns (uint256 netPyOut, uint256 netSyInterm)
29
- {
28
+ function mintPyFromToken(
29
+ address receiver,
30
+ address YT,
31
+ uint256 minPyOut,
32
+ TokenInput calldata input
33
+ ) external payable returns (uint256 netPyOut, uint256 netSyInterm) {
30
34
  address SY = IPYieldToken(YT).SY();
31
35
 
32
36
  netSyInterm = _mintSyFromToken(YT, SY, 0, input);
@@ -35,10 +39,12 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
35
39
  emit MintPyFromToken(msg.sender, input.tokenIn, YT, receiver, input.netTokenIn, netPyOut, netSyInterm);
36
40
  }
37
41
 
38
- function redeemPyToToken(address receiver, address YT, uint256 netPyIn, TokenOutput calldata output)
39
- external
40
- returns (uint256 netTokenOut, uint256 netSyInterm)
41
- {
42
+ function redeemPyToToken(
43
+ address receiver,
44
+ address YT,
45
+ uint256 netPyIn,
46
+ TokenOutput calldata output
47
+ ) external returns (uint256 netTokenOut, uint256 netSyInterm) {
42
48
  address SY = IPYieldToken(YT).SY();
43
49
 
44
50
  netSyInterm = _redeemPyToSy(SY, YT, netPyIn, 1);
@@ -47,18 +53,22 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
47
53
  emit RedeemPyToToken(msg.sender, output.tokenOut, YT, receiver, netPyIn, netTokenOut, netSyInterm);
48
54
  }
49
55
 
50
- function mintPyFromSy(address receiver, address YT, uint256 netSyIn, uint256 minPyOut)
51
- external
52
- returns (uint256 netPyOut)
53
- {
56
+ function mintPyFromSy(
57
+ address receiver,
58
+ address YT,
59
+ uint256 netSyIn,
60
+ uint256 minPyOut
61
+ ) external returns (uint256 netPyOut) {
54
62
  netPyOut = _mintPyFromSy(receiver, IPYieldToken(YT).SY(), YT, netSyIn, minPyOut, true);
55
63
  emit MintPyFromSy(msg.sender, receiver, YT, netSyIn, netPyOut);
56
64
  }
57
65
 
58
- function redeemPyToSy(address receiver, address YT, uint256 netPyIn, uint256 minSyOut)
59
- external
60
- returns (uint256 netSyOut)
61
- {
66
+ function redeemPyToSy(
67
+ address receiver,
68
+ address YT,
69
+ uint256 netPyIn,
70
+ uint256 minSyOut
71
+ ) external returns (uint256 netSyOut) {
62
72
  netSyOut = _redeemPyToSy(receiver, YT, netPyIn, minSyOut);
63
73
  emit RedeemPyToSy(msg.sender, receiver, YT, netPyIn, netSyOut);
64
74
  }
@@ -84,11 +94,11 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
84
94
  }
85
95
  }
86
96
 
87
- function swapTokenToToken(address receiver, uint256 minTokenOut, TokenInput calldata inp)
88
- external
89
- payable
90
- returns (uint256 netTokenOut)
91
- {
97
+ function swapTokenToToken(
98
+ address receiver,
99
+ uint256 minTokenOut,
100
+ TokenInput calldata inp
101
+ ) external payable returns (uint256 netTokenOut) {
92
102
  _swapTokenInput(inp);
93
103
 
94
104
  netTokenOut = _selfBalance(inp.tokenMintSy);
@@ -113,7 +123,7 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
113
123
  // ----------------- MISC FUNCTIONS -----------------
114
124
 
115
125
  function boostMarkets(address[] memory markets) external {
116
- for (uint256 i = 0; i < markets.length;) {
126
+ for (uint256 i = 0; i < markets.length; ) {
117
127
  IPMarket(markets[i]).transferFrom(msg.sender, markets[i], 0);
118
128
  unchecked {
119
129
  i++;
@@ -125,7 +135,7 @@ contract ActionMiscV3 is IPActionMiscV3, ActionBase {
125
135
  uint256 length = calls.length;
126
136
  res = new Result[](length);
127
137
  Call3 calldata call;
128
- for (uint256 i = 0; i < length;) {
138
+ for (uint256 i = 0; i < length; ) {
129
139
  call = calls[i];
130
140
 
131
141
  // delegatecall to itself, it turns allowing invoking functions from other actions
@@ -16,12 +16,18 @@ contract ActionSwapPTV3 is IPActionSwapPTV3, ActionBase {
16
16
  TokenInput calldata input,
17
17
  LimitOrderData calldata limit
18
18
  ) external payable returns (uint256 netPtOut, uint256 netSyFee, uint256 netSyInterm) {
19
- (IStandardizedYield SY,,) = IPMarket(market).readTokens();
19
+ (IStandardizedYield SY, , ) = IPMarket(market).readTokens();
20
20
  netSyInterm = _mintSyFromToken(_entry_swapExactSyForPt(market, limit), address(SY), 1, input);
21
21
 
22
22
  (netPtOut, netSyFee) = _swapExactSyForPt(receiver, market, netSyInterm, minPtOut, guessPtOut, limit);
23
23
  emit SwapPtAndToken(
24
- msg.sender, market, input.tokenIn, receiver, netPtOut.Int(), input.netTokenIn.neg(), netSyInterm
24
+ msg.sender,
25
+ market,
26
+ input.tokenIn,
27
+ receiver,
28
+ netPtOut.Int(),
29
+ input.netTokenIn.neg(),
30
+ netSyInterm
25
31
  );
26
32
  }
27
33
 
@@ -33,7 +39,7 @@ contract ActionSwapPTV3 is IPActionSwapPTV3, ActionBase {
33
39
  ApproxParams calldata guessPtOut,
34
40
  LimitOrderData calldata limit
35
41
  ) external returns (uint256 netPtOut, uint256 netSyFee) {
36
- (IStandardizedYield SY,,) = IPMarket(market).readTokens();
42
+ (IStandardizedYield SY, , ) = IPMarket(market).readTokens();
37
43
  _transferFrom(SY, msg.sender, _entry_swapExactSyForPt(market, limit), exactSyIn);
38
44
 
39
45
  (netPtOut, netSyFee) = _swapExactSyForPt(receiver, market, exactSyIn, minPtOut, guessPtOut, limit);
@@ -47,7 +53,7 @@ contract ActionSwapPTV3 is IPActionSwapPTV3, ActionBase {
47
53
  TokenOutput calldata output,
48
54
  LimitOrderData calldata limit
49
55
  ) external returns (uint256 netTokenOut, uint256 netSyFee, uint256 netSyInterm) {
50
- (IStandardizedYield SY, IPPrincipalToken PT,) = IPMarket(market).readTokens();
56
+ (IStandardizedYield SY, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
51
57
  _transferFrom(PT, msg.sender, _entry_swapExactPtForSy(market, limit), exactPtIn);
52
58
 
53
59
  (netSyInterm, netSyFee) = _swapExactPtForSy(address(SY), market, exactPtIn, 0, limit);
@@ -55,7 +61,13 @@ contract ActionSwapPTV3 is IPActionSwapPTV3, ActionBase {
55
61
  netTokenOut = _redeemSyToToken(receiver, address(SY), netSyInterm, output, false);
56
62
 
57
63
  emit SwapPtAndToken(
58
- msg.sender, market, output.tokenOut, receiver, exactPtIn.neg(), netTokenOut.Int(), netSyInterm
64
+ msg.sender,
65
+ market,
66
+ output.tokenOut,
67
+ receiver,
68
+ exactPtIn.neg(),
69
+ netTokenOut.Int(),
70
+ netSyInterm
59
71
  );
60
72
  }
61
73
 
@@ -66,7 +78,7 @@ contract ActionSwapPTV3 is IPActionSwapPTV3, ActionBase {
66
78
  uint256 minSyOut,
67
79
  LimitOrderData calldata limit
68
80
  ) external returns (uint256 netSyOut, uint256 netSyFee) {
69
- (, IPPrincipalToken PT,) = IPMarket(market).readTokens();
81
+ (, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
70
82
  _transferFrom(PT, msg.sender, _entry_swapExactPtForSy(market, limit), exactPtIn);
71
83
 
72
84
  (netSyOut, netSyFee) = _swapExactPtForSy(receiver, market, exactPtIn, minSyOut, limit);
@@ -21,13 +21,19 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
21
21
  TokenInput calldata input,
22
22
  LimitOrderData calldata limit
23
23
  ) external payable returns (uint256 netYtOut, uint256 netSyFee, uint256 netSyInterm) {
24
- (IStandardizedYield SY,, IPYieldToken YT) = IPMarket(market).readTokens();
24
+ (IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
25
25
 
26
26
  netSyInterm = _mintSyFromToken(_entry_swapExactSyForYt(YT, limit), address(SY), 1, input);
27
27
  (netYtOut, netSyFee) = _swapExactSyForYt(receiver, market, SY, YT, netSyInterm, minYtOut, guessYtOut, limit);
28
28
 
29
29
  emit SwapYtAndToken(
30
- msg.sender, market, input.tokenIn, receiver, netYtOut.Int(), input.netTokenIn.neg(), netSyInterm
30
+ msg.sender,
31
+ market,
32
+ input.tokenIn,
33
+ receiver,
34
+ netYtOut.Int(),
35
+ input.netTokenIn.neg(),
36
+ netSyInterm
31
37
  );
32
38
  }
33
39
 
@@ -39,7 +45,7 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
39
45
  ApproxParams calldata guessYtOut,
40
46
  LimitOrderData calldata limit
41
47
  ) external returns (uint256 netYtOut, uint256 netSyFee) {
42
- (IStandardizedYield SY,, IPYieldToken YT) = IPMarket(market).readTokens();
48
+ (IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
43
49
  _transferFrom(SY, msg.sender, _entry_swapExactSyForYt(YT, limit), exactSyIn);
44
50
 
45
51
  (netYtOut, netSyFee) = _swapExactSyForYt(receiver, market, SY, YT, exactSyIn, minYtOut, guessYtOut, limit);
@@ -71,8 +77,12 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
71
77
  }
72
78
 
73
79
  if (doMarketOrder) {
74
- (uint256 netYtOutMarket,) =
75
- _readMarket(market).approxSwapExactSyForYt(YT.newIndex(), netSyLeft, block.timestamp, guessYtOut);
80
+ (uint256 netYtOutMarket, ) = _readMarket(market).approxSwapExactSyForYt(
81
+ YT.newIndex(),
82
+ netSyLeft,
83
+ block.timestamp,
84
+ guessYtOut
85
+ );
76
86
 
77
87
  (, uint256 netSyFeeMarket) = IPMarket(market).swapExactPtForSy(
78
88
  address(YT),
@@ -96,7 +106,7 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
96
106
  TokenOutput calldata output,
97
107
  LimitOrderData calldata limit
98
108
  ) external returns (uint256 netTokenOut, uint256 netSyFee, uint256 netSyInterm) {
99
- (IStandardizedYield SY,, IPYieldToken YT) = IPMarket(market).readTokens();
109
+ (IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
100
110
  _transferFrom(YT, msg.sender, _entry_swapExactYtForSy(YT, limit), exactYtIn);
101
111
 
102
112
  (netSyInterm, netSyFee) = _swapExactYtForSy(address(SY), market, SY, YT, exactYtIn, 0, limit);
@@ -104,7 +114,13 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
104
114
  netTokenOut = _redeemSyToToken(receiver, address(SY), netSyInterm, output, false);
105
115
 
106
116
  emit SwapYtAndToken(
107
- msg.sender, market, output.tokenOut, receiver, exactYtIn.neg(), netTokenOut.Int(), netSyInterm
117
+ msg.sender,
118
+ market,
119
+ output.tokenOut,
120
+ receiver,
121
+ exactYtIn.neg(),
122
+ netTokenOut.Int(),
123
+ netSyInterm
108
124
  );
109
125
  }
110
126
 
@@ -115,7 +131,7 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
115
131
  uint256 minSyOut,
116
132
  LimitOrderData calldata limit
117
133
  ) external returns (uint256 netSyOut, uint256 netSyFee) {
118
- (IStandardizedYield SY,, IPYieldToken YT) = IPMarket(market).readTokens();
134
+ (IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
119
135
  _transferFrom(YT, msg.sender, _entry_swapExactYtForSy(YT, limit), exactYtIn);
120
136
 
121
137
  (netSyOut, netSyFee) = _swapExactYtForSy(receiver, market, SY, YT, exactYtIn, minSyOut, limit);
@@ -174,13 +190,19 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
174
190
  (, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
175
191
 
176
192
  uint256 totalPtToSwap;
177
- (netYtOut, totalPtToSwap, netSyFee) =
178
- _readMarket(market).approxSwapExactPtForYt(YT.newIndex(), exactPtIn, block.timestamp, guessTotalPtToSwap);
193
+ (netYtOut, totalPtToSwap, netSyFee) = _readMarket(market).approxSwapExactPtForYt(
194
+ YT.newIndex(),
195
+ exactPtIn,
196
+ block.timestamp,
197
+ guessTotalPtToSwap
198
+ );
179
199
 
180
200
  _transferFrom(IERC20(PT), msg.sender, market, exactPtIn);
181
201
 
182
202
  IPMarket(market).swapExactPtForSy(
183
- address(YT), totalPtToSwap, _encodeSwapExactPtForYt(receiver, exactPtIn, minYtOut, YT)
203
+ address(YT),
204
+ totalPtToSwap,
205
+ _encodeSwapExactPtForYt(receiver, exactPtIn, minYtOut, YT)
184
206
  );
185
207
 
186
208
  emit SwapPtAndYt(msg.sender, market, receiver, exactPtIn.neg(), netYtOut.Int());
@@ -197,14 +219,20 @@ contract ActionSwapYTV3 is CallbackHelper, IPActionSwapYTV3, ActionBase {
197
219
  (, IPPrincipalToken PT, IPYieldToken YT) = IPMarket(market).readTokens();
198
220
 
199
221
  uint256 totalPtFromSwap;
200
- (netPtOut, totalPtFromSwap, netSyFee) =
201
- _readMarket(market).approxSwapExactYtForPt(YT.newIndex(), exactYtIn, block.timestamp, guessTotalPtFromSwap);
222
+ (netPtOut, totalPtFromSwap, netSyFee) = _readMarket(market).approxSwapExactYtForPt(
223
+ YT.newIndex(),
224
+ exactYtIn,
225
+ block.timestamp,
226
+ guessTotalPtFromSwap
227
+ );
202
228
 
203
229
  if (netPtOut < minPtOut) revert Errors.RouterInsufficientPtOut(netPtOut, minPtOut);
204
230
 
205
231
  _transferFrom(IERC20(YT), msg.sender, address(YT), exactYtIn);
206
232
  IPMarket(market).swapSyForExactPt(
207
- address(this), totalPtFromSwap, _encodeSwapExactYtForPt(receiver, netPtOut, PT, YT)
233
+ address(this),
234
+ totalPtFromSwap,
235
+ _encodeSwapExactYtForPt(receiver, netPtOut, PT, YT)
208
236
  );
209
237
 
210
238
  emit SwapPtAndYt(msg.sender, market, receiver, netPtOut.Int(), exactYtIn.neg());
@@ -42,7 +42,15 @@ contract PendleRouterHelper is TokenHelper, IPRouterHelper {
42
42
  _wrap_unwrap_ETH(NATIVE, WETH, input.netTokenIn);
43
43
  (netLpOut, netYtOut) = ROUTER.addLiquiditySingleTokenKeepYt(receiver, market, minLpOut, minYtOut, input);
44
44
 
45
- emit AddLiquiditySingleTokenKeepYt(msg.sender, market, NATIVE, msg.sender, input.netTokenIn, netLpOut, netYtOut);
45
+ emit AddLiquiditySingleTokenKeepYt(
46
+ msg.sender,
47
+ market,
48
+ NATIVE,
49
+ msg.sender,
50
+ input.netTokenIn,
51
+ netLpOut,
52
+ netYtOut
53
+ );
46
54
  }
47
55
 
48
56
  function transferLiquidityDifferentSyNormal(
@@ -77,16 +85,18 @@ contract PendleRouterHelper is TokenHelper, IPRouterHelper {
77
85
  (netLpOut, netYtOut) = _addLiquiditySingleSyKeepYt(toMarket, netSyZapIn);
78
86
  }
79
87
 
80
- function removeLiquiditySingleToken(RemoveLiquiditySingleTokenStruct calldata fromMarket)
81
- public
82
- returns (uint256 netTokenOut, uint256 netSyFee)
83
- {
88
+ function removeLiquiditySingleToken(
89
+ RemoveLiquiditySingleTokenStruct calldata fromMarket
90
+ ) public returns (uint256 netTokenOut, uint256 netSyFee) {
84
91
  _transferFrom(IERC20(fromMarket.market), msg.sender, address(this), fromMarket.netLpToRemove);
85
92
 
86
93
  _safeApproveInf(fromMarket.market, address(ROUTER));
87
94
 
88
95
  (netTokenOut, netSyFee) = ROUTER.removeLiquiditySingleToken(
89
- address(this), fromMarket.market, fromMarket.netLpToRemove, fromMarket.output
96
+ address(this),
97
+ fromMarket.market,
98
+ fromMarket.netLpToRemove,
99
+ fromMarket.output
90
100
  );
91
101
 
92
102
  if (fromMarket.doRedeemRewards) {
@@ -94,20 +104,28 @@ contract PendleRouterHelper is TokenHelper, IPRouterHelper {
94
104
  }
95
105
 
96
106
  emit RemoveLiquiditySingleToken(
97
- msg.sender, fromMarket.market, fromMarket.output.tokenOut, msg.sender, fromMarket.netLpToRemove, netTokenOut
107
+ msg.sender,
108
+ fromMarket.market,
109
+ fromMarket.output.tokenOut,
110
+ msg.sender,
111
+ fromMarket.netLpToRemove,
112
+ netTokenOut
98
113
  );
99
114
  }
100
115
 
101
- function removeLiquiditySingleSy(RemoveLiquiditySingleSyStruct calldata fromMarket)
102
- public
103
- returns (uint256 netSyOut, uint256 netSyFee)
104
- {
116
+ function removeLiquiditySingleSy(
117
+ RemoveLiquiditySingleSyStruct calldata fromMarket
118
+ ) public returns (uint256 netSyOut, uint256 netSyFee) {
105
119
  _transferFrom(IERC20(fromMarket.market), msg.sender, address(this), fromMarket.netLpToRemove);
106
120
 
107
121
  _safeApproveInf(fromMarket.market, address(ROUTER));
108
122
 
109
- (netSyOut, netSyFee) =
110
- ROUTER.removeLiquiditySingleSy(address(this), fromMarket.market, fromMarket.netLpToRemove, 0);
123
+ (netSyOut, netSyFee) = ROUTER.removeLiquiditySingleSy(
124
+ address(this),
125
+ fromMarket.market,
126
+ fromMarket.netLpToRemove,
127
+ 0
128
+ );
111
129
 
112
130
  if (fromMarket.doRedeemRewards) {
113
131
  IPMarket(fromMarket.market).redeemRewards(msg.sender);
@@ -139,11 +157,11 @@ contract PendleRouterHelper is TokenHelper, IPRouterHelper {
139
157
  emit AddLiquiditySingleToken(msg.sender, toMarket.market, tokenToZapIn, msg.sender, actualNetTokenIn, netLpOut);
140
158
  }
141
159
 
142
- function _addLiquiditySingleSy(AddLiquiditySingleSyStruct calldata toMarket, uint256 actualNetSyIn)
143
- internal
144
- returns (uint256 netLpOut, uint256 netSyFee)
145
- {
146
- (IStandardizedYield SY,,) = IPMarket(toMarket.market).readTokens();
160
+ function _addLiquiditySingleSy(
161
+ AddLiquiditySingleSyStruct calldata toMarket,
162
+ uint256 actualNetSyIn
163
+ ) internal returns (uint256 netLpOut, uint256 netSyFee) {
164
+ (IStandardizedYield SY, , ) = IPMarket(toMarket.market).readTokens();
147
165
 
148
166
  _safeApproveInf(address(SY), address(ROUTER));
149
167
 
@@ -179,20 +197,30 @@ contract PendleRouterHelper is TokenHelper, IPRouterHelper {
179
197
  );
180
198
 
181
199
  emit AddLiquiditySingleTokenKeepYt(
182
- msg.sender, toMarket.market, tokenToZapIn, msg.sender, actualNetTokenIn, netLpOut, netYtOut
200
+ msg.sender,
201
+ toMarket.market,
202
+ tokenToZapIn,
203
+ msg.sender,
204
+ actualNetTokenIn,
205
+ netLpOut,
206
+ netYtOut
183
207
  );
184
208
  }
185
209
 
186
- function _addLiquiditySingleSyKeepYt(AddLiquiditySingleSyKeepYtStruct calldata toMarket, uint256 actualNetSyIn)
187
- internal
188
- returns (uint256 netLpOut, uint256 netYtOut)
189
- {
190
- (IStandardizedYield SY,,) = IPMarket(toMarket.market).readTokens();
210
+ function _addLiquiditySingleSyKeepYt(
211
+ AddLiquiditySingleSyKeepYtStruct calldata toMarket,
212
+ uint256 actualNetSyIn
213
+ ) internal returns (uint256 netLpOut, uint256 netYtOut) {
214
+ (IStandardizedYield SY, , ) = IPMarket(toMarket.market).readTokens();
191
215
 
192
216
  _safeApproveInf(address(SY), address(ROUTER));
193
217
 
194
218
  (netLpOut, netYtOut) = ROUTER.addLiquiditySingleSyKeepYt(
195
- msg.sender, toMarket.market, actualNetSyIn, toMarket.minLpOut, toMarket.minYtOut
219
+ msg.sender,
220
+ toMarket.market,
221
+ actualNetSyIn,
222
+ toMarket.minLpOut,
223
+ toMarket.minYtOut
196
224
  );
197
225
 
198
226
  emit AddLiquiditySingleSyKeepYt(msg.sender, toMarket.market, msg.sender, actualNetSyIn, netLpOut, netYtOut);
@@ -207,23 +235,24 @@ contract PendleRouterHelper is TokenHelper, IPRouterHelper {
207
235
  }
208
236
 
209
237
  /// @dev either SY or Token here is good since token->sy conversion is almost linearly proportional
210
- function _scaleApproxParams(ApproxParams calldata params, uint256 guessNetTokenIn, uint256 actualNetTokenIn)
211
- internal
212
- pure
213
- returns (ApproxParams memory)
214
- {
238
+ function _scaleApproxParams(
239
+ ApproxParams calldata params,
240
+ uint256 guessNetTokenIn,
241
+ uint256 actualNetTokenIn
242
+ ) internal pure returns (ApproxParams memory) {
215
243
  if (params.guessOffchain == 0) {
216
244
  require(params.guessMin == 0 && params.guessMax == type(uint256).max, "invalid guess");
217
245
  return params;
218
246
  }
219
247
 
220
- return ApproxParams({
221
- guessMin: (params.guessMin * actualNetTokenIn) / guessNetTokenIn,
222
- guessMax: (params.guessMax * actualNetTokenIn) / guessNetTokenIn,
223
- guessOffchain: (params.guessOffchain * actualNetTokenIn) / guessNetTokenIn,
224
- maxIteration: params.maxIteration,
225
- eps: params.eps
226
- });
248
+ return
249
+ ApproxParams({
250
+ guessMin: (params.guessMin * actualNetTokenIn) / guessNetTokenIn,
251
+ guessMax: (params.guessMax * actualNetTokenIn) / guessNetTokenIn,
252
+ guessOffchain: (params.guessOffchain * actualNetTokenIn) / guessNetTokenIn,
253
+ maxIteration: params.maxIteration,
254
+ eps: params.eps
255
+ });
227
256
  }
228
257
  }
229
258
 
@@ -260,9 +289,12 @@ interface RouterV2InterfaceForRouterHelper {
260
289
  TokenInput calldata input
261
290
  ) external returns (uint256 netLpOut, uint256 netYtOut);
262
291
 
263
- function removeLiquiditySingleSy(address receiver, address market, uint256 netLpToRemove, uint256 minSyOut)
264
- external
265
- returns (uint256 netSyOut, uint256 netSyFee);
292
+ function removeLiquiditySingleSy(
293
+ address receiver,
294
+ address market,
295
+ uint256 netLpToRemove,
296
+ uint256 minSyOut
297
+ ) external returns (uint256 netSyOut, uint256 netSyFee);
266
298
 
267
299
  function removeLiquiditySingleToken(
268
300
  address receiver,