@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
@@ -37,7 +37,7 @@ contract PendleRouterV3 is Proxy, IDiamondLoupe {
37
37
  uint256 nFacets = facets_.length;
38
38
 
39
39
  IDiamondCut.FacetCut[] memory cuts = new IDiamondCut.FacetCut[](nFacets);
40
- for (uint256 i; i < nFacets;) {
40
+ for (uint256 i; i < nFacets; ) {
41
41
  cuts[i].facetAddress = facets_[i].facetAddress;
42
42
  cuts[i].action = IDiamondCut.FacetCutAction.Add;
43
43
  cuts[i].functionSelectors = facets_[i].functionSelectors;
@@ -58,7 +58,7 @@ contract PendleRouterV3 is Proxy, IDiamondLoupe {
58
58
  uint256 numFacets = facetAddresses_.length;
59
59
 
60
60
  facets_ = new Facet[](numFacets);
61
- for (uint256 i; i < numFacets;) {
61
+ for (uint256 i; i < numFacets; ) {
62
62
  facets_[i].facetAddress = facetAddresses_[i];
63
63
  facets_[i].functionSelectors = facetFunctionSelectors(facetAddresses_[i]);
64
64
  unchecked {
@@ -77,38 +77,38 @@ contract PendleRouterV3 is Proxy, IDiamondLoupe {
77
77
  }
78
78
  if (facet == ACTION_ADD_REMOVE_LIQ) {
79
79
  res = new bytes4[](12);
80
- res[0] = 0x237287c8; // removeLiquiditySinglePt
80
+ res[0] = 0x12599ac6; // addLiquiditySingleToken
81
81
  res[1] = 0x2756ce06; // addLiquidityDualTokenAndPt
82
82
  res[2] = 0x3dbe1c55; // addLiquiditySingleTokenKeepYt
83
- res[3] = 0x587e3950; // removeLiquiditySingleToken
84
- res[4] = 0x5a245eef; // addLiquiditySingleSy
85
- res[5] = 0x844384aa; // addLiquiditySingleSyKeepYt
86
- res[6] = 0x97ee279e; // addLiquidityDualSyAndPt
87
- res[7] = 0x9cb6711e; // addLiquiditySingleToken
88
- res[8] = 0xb00f09d7; // removeLiquidityDualTokenAndPt
89
- res[9] = 0xb7d75b8b; // removeLiquidityDualSyAndPt
90
- res[10] = 0xe81560a4; // removeLiquiditySingleSy
91
- res[11] = 0xef03bda7; // addLiquiditySinglePt
83
+ res[3] = 0x4e390267; // addLiquiditySinglePt
84
+ res[4] = 0x58bda475; // addLiquiditySingleSy
85
+ res[5] = 0x60da0860; // removeLiquiditySingleToken
86
+ res[6] = 0x6b77ac9e; // removeLiquiditySinglePt
87
+ res[7] = 0x844384aa; // addLiquiditySingleSyKeepYt
88
+ res[8] = 0x97ee279e; // addLiquidityDualSyAndPt
89
+ res[9] = 0xb00f09d7; // removeLiquidityDualTokenAndPt
90
+ res[10] = 0xb7d75b8b; // removeLiquidityDualSyAndPt
91
+ res[11] = 0xd13b4fdc; // removeLiquiditySingleSy
92
92
  }
93
93
  if (facet == ACTION_SWAP_YT) {
94
94
  res = new bytes4[](6);
95
- res[0] = 0x0a793c62; // swapExactYtForSy
95
+ res[0] = 0x05eb5327; // swapExactYtForToken
96
96
  res[1] = 0x448b9b95; // swapExactYtForPt
97
- res[2] = 0x7e0646c4; // swapExactYtForToken
98
- res[3] = 0x9c1010ec; // swapExactTokenForYt
97
+ res[2] = 0x7b8b4b95; // swapExactSyForYt
98
+ res[3] = 0x80c4d566; // swapExactYtForSy
99
99
  res[4] = 0xc861a898; // swapExactPtForYt
100
- res[5] = 0xf80915bc; // swapExactSyForYt
100
+ res[5] = 0xed48907e; // swapExactTokenForYt
101
101
  }
102
102
  if (facet == ACTION_SWAP_PT) {
103
103
  res = new bytes4[](4);
104
- res[0] = 0x12c15afc; // swapExactSyForPt
105
- res[1] = 0x32aea98a; // swapExactTokenForPt
106
- res[2] = 0x7a95dddd; // swapExactPtForSy
107
- res[3] = 0xc245e48d; // swapExactPtForToken
104
+ res[0] = 0x2a50917c; // swapExactSyForPt
105
+ res[1] = 0x3346d3a3; // swapExactPtForSy
106
+ res[2] = 0x594a88cc; // swapExactPtForToken
107
+ res[3] = 0xc81f847a; // swapExactTokenForPt
108
108
  }
109
109
  if (facet == ACTION_CALLBACK) {
110
110
  res = new bytes4[](2);
111
- res[0] = 0xb5617576; // normalFillCallback
111
+ res[0] = 0xeb3a7d47; // limitRouterCallback
112
112
  res[1] = 0xfa483e72; // swapCallback
113
113
  }
114
114
  if (facet == ACTION_MISC) {
@@ -129,86 +129,86 @@ contract PendleRouterV3 is Proxy, IDiamondLoupe {
129
129
  }
130
130
 
131
131
  function facetAddress(bytes4 sig) public view returns (address) {
132
- if (sig < 0x7e0646c4) {
132
+ if (sig < 0x6b77ac9e) {
133
133
  if (sig < 0x3dbe1c55) {
134
134
  if (sig < 0x2d8f9d8d) {
135
135
  if (sig < 0x1a8631b2) {
136
- if (sig == 0x0a793c62) return ACTION_SWAP_YT; //swapExactYtForSy
137
- if (sig == 0x12c15afc) return ACTION_SWAP_PT; //swapExactSyForPt
136
+ if (sig == 0x05eb5327) return ACTION_SWAP_YT; //swapExactYtForToken
137
+ if (sig == 0x12599ac6) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleToken
138
138
  } else {
139
139
  if (sig == 0x1a8631b2) return ACTION_MISC; //mintPyFromSy
140
- if (sig == 0x237287c8) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySinglePt
141
140
  if (sig == 0x2756ce06) return ACTION_ADD_REMOVE_LIQ; //addLiquidityDualTokenAndPt
141
+ if (sig == 0x2a50917c) return ACTION_SWAP_PT; //swapExactSyForPt
142
142
  }
143
143
  } else {
144
- if (sig < 0x32aea98a) {
144
+ if (sig < 0x3346d3a3) {
145
145
  if (sig == 0x2d8f9d8d) return ACTION_MISC; //boostMarkets
146
146
  if (sig == 0x2e071dc6) return ACTION_MISC; //mintSyFromToken
147
147
  } else {
148
- if (sig == 0x32aea98a) return ACTION_SWAP_PT; //swapExactTokenForPt
148
+ if (sig == 0x3346d3a3) return ACTION_SWAP_PT; //swapExactPtForSy
149
149
  if (sig == 0x339748cb) return ACTION_MISC; //redeemPyToSy
150
150
  if (sig == 0x339a5572) return ACTION_MISC; //redeemSyToToken
151
151
  }
152
152
  }
153
153
  } else {
154
- if (sig < 0x5a245eef) {
154
+ if (sig < 0x58bda475) {
155
155
  if (sig < 0x47f1de22) {
156
156
  if (sig == 0x3dbe1c55) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleTokenKeepYt
157
157
  if (sig == 0x448b9b95) return ACTION_SWAP_YT; //swapExactYtForPt
158
158
  } else {
159
159
  if (sig == 0x47f1de22) return ACTION_MISC; //redeemPyToToken
160
+ if (sig == 0x4e390267) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySinglePt
160
161
  if (sig == 0x52ef6b2c) return address(this); //facetAddresses
161
- if (sig == 0x587e3950) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySingleToken
162
162
  }
163
163
  } else {
164
- if (sig < 0x60fc8466) {
165
- if (sig == 0x5a245eef) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleSy
166
- if (sig == 0x5d3e105c) return ACTION_MISC; //swapTokenToToken
164
+ if (sig < 0x5d3e105c) {
165
+ if (sig == 0x58bda475) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleSy
166
+ if (sig == 0x594a88cc) return ACTION_SWAP_PT; //swapExactPtForToken
167
167
  } else {
168
+ if (sig == 0x5d3e105c) return ACTION_MISC; //swapTokenToToken
169
+ if (sig == 0x60da0860) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySingleToken
168
170
  if (sig == 0x60fc8466) return ACTION_MISC; //multicall
169
- if (sig == 0x7a0ed627) return address(this); //facets
170
- if (sig == 0x7a95dddd) return ACTION_SWAP_PT; //swapExactPtForSy
171
171
  }
172
172
  }
173
173
  }
174
174
  } else {
175
175
  if (sig < 0xbd61951d) {
176
- if (sig < 0xa89eba4a) {
177
- if (sig < 0x97ee279e) {
178
- if (sig == 0x7e0646c4) return ACTION_SWAP_YT; //swapExactYtForToken
179
- if (sig == 0x844384aa) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleSyKeepYt
176
+ if (sig < 0x97ee279e) {
177
+ if (sig < 0x7b8b4b95) {
178
+ if (sig == 0x6b77ac9e) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySinglePt
179
+ if (sig == 0x7a0ed627) return address(this); //facets
180
180
  } else {
181
- if (sig == 0x97ee279e) return ACTION_ADD_REMOVE_LIQ; //addLiquidityDualSyAndPt
182
- if (sig == 0x9c1010ec) return ACTION_SWAP_YT; //swapExactTokenForYt
183
- if (sig == 0x9cb6711e) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleToken
181
+ if (sig == 0x7b8b4b95) return ACTION_SWAP_YT; //swapExactSyForYt
182
+ if (sig == 0x80c4d566) return ACTION_SWAP_YT; //swapExactYtForSy
183
+ if (sig == 0x844384aa) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleSyKeepYt
184
184
  }
185
185
  } else {
186
- if (sig < 0xb00f09d7) {
186
+ if (sig < 0xadfca15e) {
187
+ if (sig == 0x97ee279e) return ACTION_ADD_REMOVE_LIQ; //addLiquidityDualSyAndPt
187
188
  if (sig == 0xa89eba4a) return ACTION_MISC; //swapTokenToTokenViaSy
188
- if (sig == 0xadfca15e) return address(this); //facetFunctionSelectors
189
189
  } else {
190
+ if (sig == 0xadfca15e) return address(this); //facetFunctionSelectors
190
191
  if (sig == 0xb00f09d7) return ACTION_ADD_REMOVE_LIQ; //removeLiquidityDualTokenAndPt
191
- if (sig == 0xb5617576) return ACTION_CALLBACK; //normalFillCallback
192
192
  if (sig == 0xb7d75b8b) return ACTION_ADD_REMOVE_LIQ; //removeLiquidityDualSyAndPt
193
193
  }
194
194
  }
195
195
  } else {
196
- if (sig < 0xe81560a4) {
196
+ if (sig < 0xd13b4fdc) {
197
197
  if (sig < 0xc861a898) {
198
198
  if (sig == 0xbd61951d) return ACTION_MISC; //simulate
199
- if (sig == 0xc245e48d) return ACTION_SWAP_PT; //swapExactPtForToken
199
+ if (sig == 0xc81f847a) return ACTION_SWAP_PT; //swapExactTokenForPt
200
200
  } else {
201
201
  if (sig == 0xc861a898) return ACTION_SWAP_YT; //swapExactPtForYt
202
202
  if (sig == 0xcdffacc6) return address(this); //facetAddress
203
203
  if (sig == 0xd0f42385) return ACTION_MISC; //mintPyFromToken
204
204
  }
205
205
  } else {
206
- if (sig < 0xf7e375e8) {
207
- if (sig == 0xe81560a4) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySingleSy
208
- if (sig == 0xef03bda7) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySinglePt
206
+ if (sig < 0xed48907e) {
207
+ if (sig == 0xd13b4fdc) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySingleSy
208
+ if (sig == 0xeb3a7d47) return ACTION_CALLBACK; //limitRouterCallback
209
209
  } else {
210
+ if (sig == 0xed48907e) return ACTION_SWAP_YT; //swapExactTokenForYt
210
211
  if (sig == 0xf7e375e8) return ACTION_MISC; //redeemDueInterestAndRewards
211
- if (sig == 0xf80915bc) return ACTION_SWAP_YT; //swapExactSyForYt
212
212
  if (sig == 0xfa483e72) return ACTION_CALLBACK; //swapCallback
213
213
  }
214
214
  }
@@ -11,7 +11,7 @@ import "../../router/base/MarketApproxLib.sol";
11
11
  import "../../core/libraries/Errors.sol";
12
12
  import "../swap-aggregator/IPSwapAggregator.sol";
13
13
 
14
- abstract contract ActionBase is TokenHelper, IPOrderMixinType {
14
+ abstract contract ActionBase is TokenHelper, IPLimitOrderType {
15
15
  using MarketApproxPtOutLib for MarketState;
16
16
  using PMath for uint256;
17
17
  using PYIndexLib for IPYieldToken;
@@ -21,10 +21,12 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
21
21
 
22
22
  // ----------------- MINT REDEEM SY PY -----------------
23
23
 
24
- function _mintSyFromToken(address receiver, address SY, uint256 minSyOut, TokenInput calldata inp)
25
- internal
26
- returns (uint256 netSyOut)
27
- {
24
+ function _mintSyFromToken(
25
+ address receiver,
26
+ address SY,
27
+ uint256 minSyOut,
28
+ TokenInput calldata inp
29
+ ) internal returns (uint256 netSyOut) {
28
30
  SwapType swapType = inp.swapData.swapType;
29
31
 
30
32
  uint256 netTokenMintSy;
@@ -49,23 +51,36 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
49
51
  else _transferFrom(IERC20(inp.tokenIn), msg.sender, inp.pendleSwap, inp.netTokenIn);
50
52
 
51
53
  IPSwapAggregator(inp.pendleSwap).swap{value: inp.tokenIn == NATIVE ? inp.netTokenIn : 0}(
52
- inp.tokenIn, inp.netTokenIn, inp.swapData
54
+ inp.tokenIn,
55
+ inp.netTokenIn,
56
+ inp.swapData
53
57
  );
54
58
  }
55
59
 
56
- function __mintSy(address receiver, address SY, uint256 netTokenMintSy, uint256 minSyOut, TokenInput calldata inp)
57
- private
58
- returns (uint256 netSyOut)
59
- {
60
+ function __mintSy(
61
+ address receiver,
62
+ address SY,
63
+ uint256 netTokenMintSy,
64
+ uint256 minSyOut,
65
+ TokenInput calldata inp
66
+ ) private returns (uint256 netSyOut) {
60
67
  uint256 netNative = inp.tokenMintSy == NATIVE ? netTokenMintSy : 0;
61
68
  _safeApproveInf(inp.tokenMintSy, SY);
62
- netSyOut = IStandardizedYield(SY).deposit{value: netNative}(receiver, inp.tokenMintSy, netTokenMintSy, minSyOut);
69
+ netSyOut = IStandardizedYield(SY).deposit{value: netNative}(
70
+ receiver,
71
+ inp.tokenMintSy,
72
+ netTokenMintSy,
73
+ minSyOut
74
+ );
63
75
  }
64
76
 
65
- function _redeemSyToToken(address receiver, address SY, uint256 netSyIn, TokenOutput calldata out, bool doPull)
66
- internal
67
- returns (uint256 netTokenOut)
68
- {
77
+ function _redeemSyToToken(
78
+ address receiver,
79
+ address SY,
80
+ uint256 netSyIn,
81
+ TokenOutput calldata out,
82
+ bool doPull
83
+ ) internal returns (uint256 netTokenOut) {
69
84
  SwapType swapType = out.swapData.swapType;
70
85
 
71
86
  if (swapType == SwapType.NONE) {
@@ -91,10 +106,13 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
91
106
  }
92
107
  }
93
108
 
94
- function __redeemSy(address receiver, address SY, uint256 netSyIn, TokenOutput calldata out, bool doPull)
95
- private
96
- returns (uint256 netTokenRedeemed)
97
- {
109
+ function __redeemSy(
110
+ address receiver,
111
+ address SY,
112
+ uint256 netSyIn,
113
+ TokenOutput calldata out,
114
+ bool doPull
115
+ ) private returns (uint256 netTokenRedeemed) {
98
116
  if (doPull) {
99
117
  _transferFrom(IERC20(SY), msg.sender, SY, netSyIn);
100
118
  }
@@ -102,10 +120,14 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
102
120
  netTokenRedeemed = IStandardizedYield(SY).redeem(receiver, netSyIn, out.tokenRedeemSy, 0, true);
103
121
  }
104
122
 
105
- function _mintPyFromSy(address receiver, address SY, address YT, uint256 netSyIn, uint256 minPyOut, bool doPull)
106
- internal
107
- returns (uint256 netPyOut)
108
- {
123
+ function _mintPyFromSy(
124
+ address receiver,
125
+ address SY,
126
+ address YT,
127
+ uint256 netSyIn,
128
+ uint256 minPyOut,
129
+ bool doPull
130
+ ) internal returns (uint256 netPyOut) {
109
131
  if (doPull) {
110
132
  _transferFrom(IERC20(SY), msg.sender, YT, netSyIn);
111
133
  }
@@ -114,10 +136,12 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
114
136
  if (netPyOut < minPyOut) revert Errors.RouterInsufficientPYOut(netPyOut, minPyOut);
115
137
  }
116
138
 
117
- function _redeemPyToSy(address receiver, address YT, uint256 netPyIn, uint256 minSyOut)
118
- internal
119
- returns (uint256 netSyOut)
120
- {
139
+ function _redeemPyToSy(
140
+ address receiver,
141
+ address YT,
142
+ uint256 netPyIn,
143
+ uint256 minSyOut
144
+ ) internal returns (uint256 netSyOut) {
121
145
  address PT = IPYieldToken(YT).PT();
122
146
 
123
147
  _transferFrom(IERC20(PT), msg.sender, YT, netPyIn);
@@ -148,7 +172,7 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
148
172
  uint256 minSyOut,
149
173
  LimitOrderData calldata limit
150
174
  ) internal returns (uint256 netSyOut, uint256 netSyFee) {
151
- (, IPPrincipalToken PT,) = IPMarket(market).readTokens();
175
+ (, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
152
176
 
153
177
  uint256 netPtLeft = exactPtIn;
154
178
  bool doMarketOrder = true;
@@ -161,8 +185,11 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
161
185
  }
162
186
 
163
187
  if (doMarketOrder) {
164
- (uint256 netSyOutMarket, uint256 netSyFeeMarket) =
165
- IPMarket(market).swapExactPtForSy(receiver, netPtLeft, EMPTY_BYTES);
188
+ (uint256 netSyOutMarket, uint256 netSyFeeMarket) = IPMarket(market).swapExactPtForSy(
189
+ receiver,
190
+ netPtLeft,
191
+ EMPTY_BYTES
192
+ );
166
193
 
167
194
  netSyOut += netSyOutMarket;
168
195
  netSyFee += netSyFeeMarket;
@@ -183,7 +210,7 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
183
210
  ApproxParams calldata guessPtOut,
184
211
  LimitOrderData calldata limit
185
212
  ) internal returns (uint256 netPtOut, uint256 netSyFee) {
186
- (IStandardizedYield SY,, IPYieldToken YT) = IPMarket(market).readTokens();
213
+ (IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
187
214
  uint256 netSyLeft = exactSyIn;
188
215
  bool doMarketOrder = true;
189
216
 
@@ -195,8 +222,12 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
195
222
  }
196
223
 
197
224
  if (doMarketOrder) {
198
- (uint256 netPtOutMarket,) =
199
- _readMarket(market).approxSwapExactSyForPt(YT.newIndex(), netSyLeft, block.timestamp, guessPtOut);
225
+ (uint256 netPtOutMarket, ) = _readMarket(market).approxSwapExactSyForPt(
226
+ YT.newIndex(),
227
+ netSyLeft,
228
+ block.timestamp,
229
+ guessPtOut
230
+ );
200
231
 
201
232
  (, uint256 netSyFeeMarket) = IPMarket(market).swapSyForExactPt(receiver, netPtOutMarket, EMPTY_BYTES);
202
233
 
@@ -208,33 +239,45 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
208
239
  }
209
240
 
210
241
  // ----------------- LIMIT ORDERS -----------------
211
- function _fillLimit(address receiver, IERC20 tokenIn, uint256 netInput, LimitOrderData calldata lim)
212
- internal
213
- returns (uint256 netLeft, uint256 netOut, uint256 netSyFee, bool doMarketOrder)
214
- {
242
+ function _fillLimit(
243
+ address receiver,
244
+ IERC20 tokenIn,
245
+ uint256 netInput,
246
+ LimitOrderData calldata lim
247
+ ) internal returns (uint256 netLeft, uint256 netOut, uint256 netSyFee, bool doMarketOrder) {
215
248
  IPLimitRouter router = IPLimitRouter(lim.limitRouter);
216
249
  netLeft = netInput;
217
250
 
218
251
  if (lim.normalFills.length != 0) {
219
252
  _safeApproveInf(address(tokenIn), lim.limitRouter);
220
- (uint256 actualMaking, uint256 actualTaking, uint256 totalFee,) =
221
- router.normalFill(lim.normalFills, receiver, netLeft, EMPTY_BYTES);
253
+ (uint256 actualMaking, uint256 actualTaking, uint256 totalFee, ) = router.fill(
254
+ lim.normalFills,
255
+ receiver,
256
+ netLeft,
257
+ lim.optData,
258
+ EMPTY_BYTES
259
+ );
222
260
  netOut += actualMaking;
223
- netSyFee += totalFee;
224
261
  netLeft -= actualTaking;
262
+ netSyFee += totalFee;
225
263
  }
226
264
 
227
265
  if (lim.flashFills.length != 0) {
228
266
  address YT = lim.flashFills[0].order.YT;
229
267
  OrderType orderType = lim.flashFills[0].order.orderType;
230
268
 
231
- (,, uint256 totalFee, bytes memory ret) =
232
- router.normalFill(lim.flashFills, YT, type(uint256).max, abi.encode(orderType, YT, netLeft, receiver));
269
+ (, , uint256 totalFee, bytes memory ret) = router.fill(
270
+ lim.flashFills,
271
+ YT,
272
+ type(uint256).max,
273
+ lim.optData,
274
+ abi.encode(orderType, YT, netLeft, receiver)
275
+ );
233
276
  (uint256 netUse, uint256 netReceived) = abi.decode(ret, (uint256, uint256));
234
277
 
235
278
  netOut += netReceived;
236
- netSyFee += totalFee;
237
279
  netLeft -= netUse;
280
+ netSyFee += totalFee;
238
281
  }
239
282
 
240
283
  doMarketOrder = netLeft > netInput.mulDown(lim.epsSkipMarket);
@@ -59,11 +59,12 @@ abstract contract CallbackHelper {
59
59
  }
60
60
  }
61
61
 
62
- function _encodeSwapExactYtForPt(address receiver, uint256 netPtOut, IPPrincipalToken PT, IPYieldToken YT)
63
- internal
64
- pure
65
- returns (bytes memory res)
66
- {
62
+ function _encodeSwapExactYtForPt(
63
+ address receiver,
64
+ uint256 netPtOut,
65
+ IPPrincipalToken PT,
66
+ IPYieldToken YT
67
+ ) internal pure returns (bytes memory res) {
67
68
  res = new bytes(160);
68
69
  uint256 actionType = uint256(ActionType.SwapExactYtForPt);
69
70
 
@@ -76,11 +77,9 @@ abstract contract CallbackHelper {
76
77
  }
77
78
  }
78
79
 
79
- function _decodeSwapExactYtForPt(bytes calldata data)
80
- internal
81
- pure
82
- returns (address receiver, uint256 netPtOut, IPPrincipalToken PT, IPYieldToken YT)
83
- {
80
+ function _decodeSwapExactYtForPt(
81
+ bytes calldata data
82
+ ) internal pure returns (address receiver, uint256 netPtOut, IPPrincipalToken PT, IPYieldToken YT) {
84
83
  assembly {
85
84
  // first 32 bytes is ActionType
86
85
  receiver := calldataload(add(data.offset, 32))
@@ -90,11 +89,12 @@ abstract contract CallbackHelper {
90
89
  }
91
90
  }
92
91
 
93
- function _encodeSwapExactPtForYt(address receiver, uint256 exactPtIn, uint256 minYtOut, IPYieldToken YT)
94
- internal
95
- pure
96
- returns (bytes memory res)
97
- {
92
+ function _encodeSwapExactPtForYt(
93
+ address receiver,
94
+ uint256 exactPtIn,
95
+ uint256 minYtOut,
96
+ IPYieldToken YT
97
+ ) internal pure returns (bytes memory res) {
98
98
  res = new bytes(160);
99
99
  uint256 actionType = uint256(ActionType.SwapExactPtForYt);
100
100
 
@@ -107,11 +107,9 @@ abstract contract CallbackHelper {
107
107
  }
108
108
  }
109
109
 
110
- function _decodeSwapExactPtForYt(bytes calldata data)
111
- internal
112
- pure
113
- returns (address receiver, uint256 exactPtIn, uint256 minYtOut, IPYieldToken YT)
114
- {
110
+ function _decodeSwapExactPtForYt(
111
+ bytes calldata data
112
+ ) internal pure returns (address receiver, uint256 exactPtIn, uint256 minYtOut, IPYieldToken YT) {
115
113
  assembly {
116
114
  // first 32 bytes is ActionType
117
115
  receiver := calldataload(add(data.offset, 32))