@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
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@pendle/core-v2",
3
3
  "description": "Core smart contracts of Pendle Protocol.",
4
4
  "license": "BUSL-1.1",
5
- "version": "3.0.0-beta-11",
5
+ "version": "3.0.0-beta-12",
6
6
  "homepage": "https://pendle.finance",
7
7
  "keywords": [
8
8
  "pendle",
@@ -25,15 +25,15 @@
25
25
  "devDependencies": {
26
26
  "@typechain/ethers-v5": "^9.0.0",
27
27
  "@typechain/hardhat": "^4.0.0",
28
- "hardhat": "^2.19.0",
28
+ "hardhat": "^2.19.2",
29
29
  "hardhat-contract-sizer": "^2.10.0",
30
- "prettier": "^3.1.0",
30
+ "prettier": "^3.1.1",
31
31
  "prettier-plugin-solidity": "^1.2.0",
32
32
  "solc": "^0.8.23-fixed",
33
33
  "solhint": "^4.0.0",
34
- "ts-node": "^10.9.1",
34
+ "ts-node": "^10.9.2",
35
35
  "typechain": "^8.3.2",
36
- "typescript": "^5.2.2"
36
+ "typescript": "^5.3.3"
37
37
  },
38
38
  "scripts": {
39
39
  "compile": "yarn hardhat compile",
@@ -44,8 +44,8 @@
44
44
  },
45
45
  "packageManager": "yarn@3.3.1",
46
46
  "dependencies": {
47
- "@chainlink/contracts": "^0.6.1",
48
- "@openzeppelin/contracts": "4.7.3",
49
- "@openzeppelin/contracts-upgradeable": "4.7.3"
47
+ "@chainlink/contracts": "^0.8.0",
48
+ "@openzeppelin/contracts": "4.9.3",
49
+ "@openzeppelin/contracts-upgradeable": "4.9.3"
50
50
  }
51
51
  }
@@ -1,47 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
-
3
- pragma solidity ^0.8.0;
4
-
5
- /// @title Library with gas efficient alternatives to `abi.decode`
6
- library ArgumentsDecoder {
7
- function decodeUint256(bytes memory data) internal pure returns (uint256) {
8
- uint256 value;
9
- assembly {
10
- // solhint-disable-line no-inline-assembly
11
- value := mload(add(data, 0x20))
12
- }
13
- return value;
14
- }
15
-
16
- function decodeBool(bytes memory data) internal pure returns (bool) {
17
- bool value;
18
- assembly {
19
- // solhint-disable-line no-inline-assembly
20
- value := eq(mload(add(data, 0x20)), 1)
21
- }
22
- return value;
23
- }
24
-
25
- function decodeTargetAndCalldata(bytes memory data) internal pure returns (address, bytes memory) {
26
- address target;
27
- bytes memory args;
28
- assembly {
29
- // solhint-disable-line no-inline-assembly
30
- target := mload(add(data, 0x14))
31
- args := add(data, 0x14)
32
- mstore(args, sub(mload(data), 0x14))
33
- }
34
- return (target, args);
35
- }
36
-
37
- function decodeTargetAndData(bytes calldata data) internal pure returns (address, bytes calldata) {
38
- address target;
39
- bytes calldata args;
40
- assembly {
41
- // solhint-disable-line no-inline-assembly
42
- target := shr(96, calldataload(data.offset))
43
- }
44
- args = data[20:];
45
- return (target, args);
46
- }
47
- }
@@ -1,48 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
-
3
- pragma solidity ^0.8.0;
4
-
5
- import "@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol";
6
- import "./RevertReasonParser.sol";
7
- import "../../interfaces/IDailLikePermit.sol";
8
-
9
- /// @title Base contract with common permit handling logics
10
- abstract contract Permitable {
11
- function _permit(address token, bytes calldata permit) internal {
12
- if (permit.length > 0) {
13
- bool success;
14
- bytes memory result;
15
- if (permit.length == 32 * 7) {
16
- // solhint-disable-next-line avoid-low-level-calls
17
- (success, result) = token.call(abi.encodePacked(IERC20Permit.permit.selector, permit));
18
- } else if (permit.length == 32 * 8) {
19
- // solhint-disable-next-line avoid-low-level-calls
20
- (success, result) = token.call(abi.encodePacked(IDaiLikePermit.permit.selector, permit));
21
- } else {
22
- revert("Wrong permit length");
23
- }
24
- if (!success) {
25
- revert(RevertReasonParser.parse(result, "Permit failed: "));
26
- }
27
- }
28
- }
29
-
30
- function _permitMemory(address token, bytes memory permit) internal {
31
- if (permit.length > 0) {
32
- bool success;
33
- bytes memory result;
34
- if (permit.length == 32 * 7) {
35
- // solhint-disable-next-line avoid-low-level-calls
36
- (success, result) = token.call(abi.encodePacked(IERC20Permit.permit.selector, permit));
37
- } else if (permit.length == 32 * 8) {
38
- // solhint-disable-next-line avoid-low-level-calls
39
- (success, result) = token.call(abi.encodePacked(IDaiLikePermit.permit.selector, permit));
40
- } else {
41
- revert("Wrong permit length");
42
- }
43
- if (!success) {
44
- revert(RevertReasonParser.parse(result, "Permit failed: "));
45
- }
46
- }
47
- }
48
- }
@@ -1,75 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
-
3
- pragma solidity ^0.8.0;
4
-
5
- /// @title Library that allows to parse unsuccessful arbitrary calls revert reasons.
6
- /// See https://solidity.readthedocs.io/en/latest/control-structures.html#revert for details.
7
- /// Note that we assume revert reason being abi-encoded as Error(string) so it may fail to parse reason
8
- /// if structured reverts appear in the future.
9
- ///
10
- /// All unsuccessful parsings get encoded as Unknown(data) string
11
-
12
- library RevertReasonParser {
13
- bytes4 private constant _PANIC_SELECTOR = bytes4(keccak256("Panic(uint256)"));
14
- bytes4 private constant _ERROR_SELECTOR = bytes4(keccak256("Error(string)"));
15
-
16
- function parse(bytes memory data, string memory prefix) internal pure returns (string memory) {
17
- if (data.length >= 4) {
18
- bytes4 selector;
19
-
20
- assembly {
21
- // solhint-disable-line no-inline-assembly
22
- selector := mload(add(data, 0x20))
23
- }
24
-
25
- // 68 = 4-byte selector + 32 bytes offset + 32 bytes length
26
- if (selector == _ERROR_SELECTOR && data.length >= 68) {
27
- uint256 offset;
28
- bytes memory reason;
29
- assembly {
30
- // solhint-disable-line no-inline-assembly
31
- // 36 = 32 bytes data length + 4-byte selector
32
- offset := mload(add(data, 36))
33
- reason := add(data, add(36, offset))
34
- }
35
- /*
36
- revert reason is padded up to 32 bytes with ABI encoder: Error(string)
37
- also sometimes there is extra 32 bytes of zeros padded in the end:
38
- https://github.com/ethereum/solidity/issues/10170
39
- because of that we can't check for equality and instead check
40
- that offset + string length + extra 36 bytes is less than overall data length
41
- */
42
- require(data.length >= 36 + offset + reason.length, "Invalid revert reason");
43
- return string(abi.encodePacked(prefix, "Error(", reason, ")"));
44
- }
45
- // 36 = 4-byte selector + 32 bytes integer
46
- else if (selector == _PANIC_SELECTOR && data.length == 36) {
47
- uint256 code;
48
- assembly {
49
- // solhint-disable-line no-inline-assembly
50
- // 36 = 32 bytes data length + 4-byte selector
51
- code := mload(add(data, 36))
52
- }
53
- return string(abi.encodePacked(prefix, "Panic(", _toHex(code), ")"));
54
- }
55
- }
56
-
57
- return string(abi.encodePacked(prefix, "Unknown(", _toHex(data), ")"));
58
- }
59
-
60
- function _toHex(uint256 value) private pure returns (string memory) {
61
- return _toHex(abi.encodePacked(value));
62
- }
63
-
64
- function _toHex(bytes memory data) private pure returns (string memory) {
65
- bytes16 alphabet = 0x30313233343536373839616263646566;
66
- bytes memory str = new bytes(2 + data.length * 2);
67
- str[0] = "0";
68
- str[1] = "x";
69
- for (uint256 i = 0; i < data.length; i++) {
70
- str[2 * i + 2] = alphabet[uint8(data[i] >> 4)];
71
- str[2 * i + 3] = alphabet[uint8(data[i] & 0x0f)];
72
- }
73
- return string(str);
74
- }
75
- }
@@ -1,37 +0,0 @@
1
- // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.17;
3
-
4
- import "./AutomateReady.sol";
5
- import "../core/libraries/BoringOwnableUpgradeable.sol";
6
- import "../core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkRelayer.sol";
7
-
8
- contract ChainlinkRelayerGelato is AutomateReady, BoringOwnableUpgradeable {
9
- PendleChainlinkRelayer public immutable relayer;
10
-
11
- int256 public lastSentAnswer;
12
-
13
- constructor(address _automate, address _taskCreator, PendleChainlinkRelayer _relayer)
14
- initializer
15
- AutomateReady(_automate, _taskCreator)
16
- {
17
- __BoringOwnable_init();
18
- relayer = _relayer;
19
- }
20
-
21
- receive() external payable {}
22
-
23
- function withdraw() external onlyOwner {
24
- payable(owner).transfer(address(this).balance);
25
- }
26
-
27
- function run() external {
28
- int256 latestAnswer = IChainlinkAggregator(relayer.chainlinkFeed()).latestAnswer();
29
- require(lastSentAnswer != latestAnswer, "answer not new");
30
-
31
- (uint256 fee, address feeToken) = _getFeeDetails();
32
- _transfer(fee, feeToken);
33
-
34
- relayer.run{value: address(this).balance}();
35
- lastSentAnswer = latestAnswer;
36
- }
37
- }
@@ -1,62 +0,0 @@
1
- // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity ^0.8.0;
3
-
4
- import "../interfaces/IPMarket.sol";
5
- import "../core/libraries/math/PMath.sol";
6
- import "../core/Market/MarketMathCore.sol";
7
-
8
- contract PtAndLpToAsset {
9
- using PMath for int256;
10
- using PMath for uint256;
11
- using MarketMathCore for MarketState;
12
-
13
- function getLpToAssetRate(IPMarket market) public view returns (uint256 lpToAssetRate) {
14
- MarketState memory state = market.readState(address(0));
15
- uint256 pyIndexCurrent = _getPYIndexCurrent(market);
16
- MarketPreCompute memory comp = state.getMarketPreCompute(
17
- PYIndex.wrap(pyIndexCurrent),
18
- block.timestamp
19
- );
20
-
21
- int256 totalHypotheticalAsset = comp.totalAsset +
22
- state.totalPt.mulDown(int256(_getPtToAssetRate(market, state, pyIndexCurrent)));
23
-
24
- lpToAssetRate = uint256(totalHypotheticalAsset.divDown(state.totalLp));
25
- }
26
-
27
- function getPtToAssetRate(IPMarket market) public view returns (uint256 ptToAssetRate) {
28
- MarketState memory state = market.readState(address(0));
29
- return _getPtToAssetRate(market, state, _getPYIndexCurrent(market));
30
- }
31
-
32
- function _getPtToAssetRate(
33
- IPMarket market,
34
- MarketState memory state,
35
- uint256 pyIndexCurrent
36
- ) internal view returns (uint256 ptToAssetRate) {
37
- if (state.expiry <= block.timestamp) {
38
- (IStandardizedYield SY, , ) = market.readTokens();
39
- return (SY.exchangeRate().divDown(pyIndexCurrent));
40
- }
41
- uint256 timeToExpiry = state.expiry - block.timestamp;
42
- int256 assetToPtRate = MarketMathCore._getExchangeRateFromImpliedRate(
43
- state.lastLnImpliedRate,
44
- timeToExpiry
45
- );
46
-
47
- ptToAssetRate = uint256(PMath.IONE.divDown(assetToPtRate));
48
- }
49
-
50
- function _getPYIndexCurrent(IPMarket market) private view returns (uint256) {
51
- (IStandardizedYield SY, , IPYieldToken YT) = market.readTokens();
52
-
53
- uint256 syIndex = SY.exchangeRate();
54
- uint256 pyIndexStored = YT.pyIndexStored();
55
-
56
- if (YT.doCacheIndexSameBlock() && YT.pyIndexLastUpdatedBlock() == block.number) {
57
- return pyIndexStored;
58
- } else {
59
- return PMath.max(syIndex, pyIndexStored);
60
- }
61
- }
62
- }
@@ -1,19 +0,0 @@
1
- // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity ^0.8.17;
3
-
4
- import "@openzeppelin/contracts/proxy/Proxy.sol";
5
- import "../../interfaces/IPRouterStatic.sol";
6
- import "./base/StorageLayout.sol";
7
-
8
- // solhint-disable no-empty-blocks
9
- contract PendleRouterStatic is Proxy, StorageLayout {
10
- constructor(address actionStorage) {
11
- owner = msg.sender;
12
- selectorToFacet[IPMiniDiamond.setFacetForSelectors.selector] = actionStorage;
13
- }
14
-
15
- function _implementation() internal view override returns (address res) {
16
- res = selectorToFacet[msg.sig];
17
- require(res != address(0), "selector not found");
18
- }
19
- }
@@ -1,112 +0,0 @@
1
- // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity ^0.8.17;
3
-
4
- import "../../../interfaces/IPMarket.sol";
5
- import "../../../interfaces/IPRouterStatic.sol";
6
- import "../../../interfaces/IPYieldContractFactory.sol";
7
- import "../../../interfaces/IPMarketFactory.sol";
8
-
9
- // solhint-disable no-empty-blocks
10
- contract ActionInfoStatic is IPActionInfoStatic {
11
- function getPY(address py) public view returns (address pt, address yt) {
12
- try IPYieldToken(py).PT() returns (address _pt) {
13
- pt = _pt;
14
- yt = py;
15
- } catch {
16
- pt = py;
17
- yt = IPPrincipalToken(py).YT();
18
- }
19
- }
20
-
21
- /// can be SY, PY or Market
22
- function getTokensInOut(address token)
23
- external
24
- view
25
- returns (address[] memory tokensIn, address[] memory tokensOut)
26
- {
27
- try IStandardizedYield(token).getTokensIn() returns (address[] memory res) {
28
- return (res, IStandardizedYield(token).getTokensOut());
29
- } catch {}
30
-
31
- try IPYieldToken(token).SY() returns (address SY) {
32
- return (IStandardizedYield(SY).getTokensIn(), IStandardizedYield(SY).getTokensOut());
33
- } catch {}
34
-
35
- try IPMarket(token).readTokens() returns (IStandardizedYield SY, IPPrincipalToken, IPYieldToken) {
36
- return (SY.getTokensIn(), SY.getTokensOut());
37
- } catch {}
38
-
39
- revert("invalid token");
40
- }
41
-
42
- function getUserSYInfo(address sy, address user) external returns (UserSYInfo memory res) {
43
- IStandardizedYield SY = IStandardizedYield(sy);
44
-
45
- // SY
46
- res.syBalance = TokenAmount(sy, _balanceOf(sy, user));
47
-
48
- // Rewards
49
- uint256[] memory rewardsOut = SY.claimRewards(user);
50
- address[] memory rewardTokens = SY.getRewardTokens();
51
-
52
- res.unclaimedRewards = _zipTokenAmounts(rewardTokens, rewardsOut);
53
- }
54
-
55
- function getUserPYInfo(address py, address user) external returns (UserPYInfo memory res) {
56
- (address _PT, address _YT) = getPY(py);
57
- IPYieldToken YT = IPYieldToken(_YT);
58
-
59
- // PT / YT
60
- res.ytBalance = TokenAmount(_YT, _balanceOf(_YT, user));
61
- res.ptBalance = TokenAmount(_PT, _balanceOf(_PT, user));
62
-
63
- // interest
64
- (uint256 interestOut, uint256[] memory rewardsOut) = YT.redeemDueInterestAndRewards(user, true, true);
65
-
66
- res.unclaimedInterest = TokenAmount(YT.SY(), interestOut);
67
-
68
- // Rewards
69
- address[] memory rewardTokens = YT.getRewardTokens();
70
- res.unclaimedRewards = _zipTokenAmounts(rewardTokens, rewardsOut);
71
- }
72
-
73
- function getUserMarketInfo(address market, address user) external returns (UserMarketInfo memory res) {
74
- IPMarket _market = IPMarket(market);
75
- MarketState memory state = _market.readState(address(this));
76
-
77
- if (uint256(state.totalLp) == 0) return res; // market not initialized
78
-
79
- // LP PT SY
80
- (IStandardizedYield SY, IPPrincipalToken PT,) = _market.readTokens();
81
-
82
- uint256 userLp = _balanceOf(market, user);
83
- uint256 userPt = (userLp * uint256(state.totalPt)) / uint256(state.totalLp);
84
- uint256 userSy = (userLp * uint256(state.totalSy)) / uint256(state.totalLp);
85
-
86
- res.lpBalance = TokenAmount(market, userLp);
87
- res.ptBalance = TokenAmount(address(PT), userPt);
88
- res.syBalance = TokenAmount(address(SY), userSy);
89
-
90
- // Rewards
91
- uint256[] memory rewardsOut = _market.redeemRewards(user);
92
- address[] memory rewardTokens = _market.getRewardTokens();
93
-
94
- res.unclaimedRewards = _zipTokenAmounts(rewardTokens, rewardsOut);
95
- }
96
-
97
- function _zipTokenAmounts(address[] memory tokens, uint256[] memory amounts)
98
- internal
99
- pure
100
- returns (TokenAmount[] memory res)
101
- {
102
- res = new TokenAmount[](tokens.length);
103
-
104
- for (uint256 i = 0; i < tokens.length; i++) {
105
- res[i] = TokenAmount(tokens[i], amounts[i]);
106
- }
107
- }
108
-
109
- function _balanceOf(address token, address user) internal view returns (uint256) {
110
- return IERC20(token).balanceOf(user);
111
- }
112
- }
@@ -1,145 +0,0 @@
1
- // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity ^0.8.17;
3
-
4
- import "../../../interfaces/IPMarket.sol";
5
- import "../../../interfaces/IPRouterStatic.sol";
6
- import "./StorageLayout.sol";
7
- import {LimitMathCore as LimitMath} from "../../../limit/LimitMathCore.sol";
8
-
9
- // contract ActionLimitOrdersStatic is StorageLayout, IPOrderMixinType {
10
- // using PMath for uint256;
11
- // using PMath for int256;
12
-
13
- // using LogExpMath for int256;
14
- // using PYIndexLib for PYIndex;
15
- // using PYIndexLib for IPYieldToken;
16
- // using MarketApproxPtInLib for MarketState;
17
- // using MarketApproxPtOutLib for MarketState;
18
- // using MarketMathCore for MarketState;
19
-
20
- // uint256 internal constant _ORDER_DOES_NOT_EXIST = 0;
21
- // uint256 internal constant _ORDER_FILLED = 1;
22
-
23
- // IPLimitRouter public limitRouter;
24
-
25
- // // TODO: opt for bytecode
26
-
27
- // function normalFillStatic(FillOrderParams[] memory params)
28
- // external
29
- // returns (
30
- // uint256 actualMaking,
31
- // uint256 actualTaking,
32
- // uint256 totalFee,
33
- // NormalResults memory out,
34
- // FillOrderParams[] memory postConvertedOrders
35
- // )
36
- // {
37
- // OrderType Type = params[0].order.Type;
38
- // bool tokenFromMaker = (Type == OrderType.SY_FOR_PT || Type == OrderType.SY_FOR_YT);
39
-
40
- // OnchainParams memory onchain = preProcess(params, tokenFromMaker);
41
- // out = LimitMath.calcNormalBatch(params, onchain);
42
- // postConvertedOrders = params;
43
-
44
- // if (tokenFromMaker) {
45
- // (actualMaking, actualTaking, totalFee) = (out.totalMaking, out.totalTaking, out.totalFee);
46
- // } else {
47
- // (actualMaking, actualTaking, totalFee) = (out.totalMaking, out.totalTaking + out.totalFee, out.totalFee);
48
- // }
49
- // }
50
-
51
- // function flashFillStatic(FillOrderParams[] memory params)
52
- // external
53
- // returns (
54
- // uint256 actualInputFromTaker,
55
- // uint256 actualOutputToTaker,
56
- // uint256 totalFee,
57
- // NormalResults memory out,
58
- // FillOrderParams[] memory postConvertedOrders
59
- // )
60
- // {
61
- // OrderType Type = params[0].order.Type;
62
- // bool tokenFromMaker = (Type == OrderType.SY_FOR_PT || Type == OrderType.SY_FOR_YT);
63
-
64
- // OnchainParams memory onchain = preProcess(params, tokenFromMaker);
65
- // (out, actualInputFromTaker, actualOutputToTaker) = LimitMath.calcFlashBatch(params, onchain);
66
- // totalFee = out.totalFee;
67
- // postConvertedOrders = params;
68
- // }
69
-
70
- // function preProcess(FillOrderParams[] memory params, bool tokenToSy)
71
- // internal
72
- // returns (OnchainParams memory onchain)
73
- // {
74
- // _verifyAndUpdateMakings(params);
75
-
76
- // address YT = params[0].order.YT;
77
- // address SY = IPYieldToken(YT).SY();
78
- // uint256 expiry = IPYieldToken(YT).expiry();
79
- // require(block.timestamp < expiry, "PY expired");
80
-
81
- // if (tokenToSy) {
82
- // _mintSyStatic(params, IStandardizedYield(SY));
83
- // }
84
-
85
- // onchain = OnchainParams({
86
- // timeToExpiry: expiry - block.timestamp,
87
- // index: IPYieldToken(YT).newIndex(),
88
- // feeRecipient: IPOrderMixin(limitRouter).feeRecipient(),
89
- // feeRate: IPOrderMixin(limitRouter).feeRate()
90
- // });
91
- // }
92
-
93
- // function _verifyAndUpdateMakings(FillOrderParams[] memory params) internal view {
94
- // uint256 len = params.length;
95
- // for (uint256 i = 0; i < len; i++) {
96
- // FillOrderParams memory param = params[i];
97
-
98
- // (, uint256 remainingMakerAmount) = _verifyOrder(param.order);
99
- // uint256 netMaking = PMath.min(param.makingAmount, remainingMakerAmount);
100
-
101
- // param.makingAmount = netMaking;
102
- // }
103
- // }
104
-
105
- // function _verifyOrder(Order memory order)
106
- // internal
107
- // view
108
- // returns (bytes32, /*orderHash*/ uint256 /*remainingMakerAmount*/ )
109
- // {
110
- // bytes32 orderHash = limitRouter.hashOrder(order);
111
- // uint256 remainingMakerAmount = limitRouter.remainingRaw(orderHash);
112
-
113
- // if (remainingMakerAmount == _ORDER_FILLED) return (orderHash, 0);
114
-
115
- // if (remainingMakerAmount == _ORDER_DOES_NOT_EXIST) {
116
- // remainingMakerAmount = order.makingAmount;
117
- // } else {
118
- // unchecked {
119
- // remainingMakerAmount -= 1;
120
- // }
121
- // }
122
-
123
- // // Check if order is valid predicate wise
124
- // if (order.predicate.length > 0) {
125
- // bool isValidPredicate = limitRouter.checkPredicate(order);
126
- // require(isValidPredicate, "LOP: predicate returned false");
127
- // }
128
-
129
- // return (orderHash, remainingMakerAmount);
130
- // }
131
-
132
- // function _mintSyStatic(FillOrderParams[] memory params, IStandardizedYield SY) internal view {
133
- // uint256 len = params.length;
134
- // for (uint256 i = 0; i < len; i++) {
135
- // FillOrderParams memory param = params[i];
136
- // if (param.makingAmount == 0) continue;
137
-
138
- // Order memory order = param.order;
139
-
140
- // if (order.token != address(SY)) {
141
- // param.makingAmount = SY.previewDeposit(order.token, param.makingAmount);
142
- // }
143
- // }
144
- // }
145
- // }