@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
@@ -35,9 +35,7 @@ abstract contract PendleConvexLPSY is SYBaseWithRewards {
35
35
  _safeApproveInf(crvLp, BOOSTER);
36
36
  }
37
37
 
38
- function _getPoolInfo(
39
- uint256 _cvxPid
40
- ) internal view returns (address _crvLp, address _cvxRewardManager) {
38
+ function _getPoolInfo(uint256 _cvxPid) internal view returns (address _crvLp, address _cvxRewardManager) {
41
39
  if (_cvxPid > IBooster(BOOSTER).poolLength()) revert Errors.SYCurveInvalidPid();
42
40
 
43
41
  (_crvLp, , , _cvxRewardManager, , ) = IBooster(BOOSTER).poolInfo(_cvxPid);
@@ -51,10 +49,7 @@ abstract contract PendleConvexLPSY is SYBaseWithRewards {
51
49
  * If any of the base pool tokens are deposited, it will first add liquidity to the curve pool and mint LP,
52
50
  * which will then be deposited into convex
53
51
  */
54
- function _deposit(
55
- address tokenIn,
56
- uint256 amount
57
- ) internal virtual override returns (uint256 amountSharesOut) {
52
+ function _deposit(address tokenIn, uint256 amount) internal virtual override returns (uint256 amountSharesOut) {
58
53
  if (tokenIn == crvLp) {
59
54
  amountSharesOut = amount;
60
55
  } else {
@@ -148,15 +143,9 @@ abstract contract PendleConvexLPSY is SYBaseWithRewards {
148
143
 
149
144
  function isValidTokenOut(address token) public view virtual override returns (bool);
150
145
 
151
- function _depositToCurve(
152
- address tokenIn,
153
- uint256 amountTokenToDeposit
154
- ) internal virtual returns (uint256);
146
+ function _depositToCurve(address tokenIn, uint256 amountTokenToDeposit) internal virtual returns (uint256);
155
147
 
156
- function _redeemFromCurve(
157
- address tokenOut,
158
- uint256 amountLpToRedeem
159
- ) internal virtual returns (uint256);
148
+ function _redeemFromCurve(address tokenOut, uint256 amountLpToRedeem) internal virtual returns (uint256);
160
149
 
161
150
  function _previewDepositToCurve(
162
151
  address token,
@@ -168,11 +157,7 @@ abstract contract PendleConvexLPSY is SYBaseWithRewards {
168
157
  uint256 amountLpToRedeem
169
158
  ) internal view virtual returns (uint256 amountTokenOut);
170
159
 
171
- function assetInfo()
172
- external
173
- view
174
- returns (AssetType assetType, address assetAddress, uint8 assetDecimals)
175
- {
160
+ function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
176
161
  return (AssetType.LIQUIDITY, crvLp, IERC20Metadata(crvLp).decimals());
177
162
  }
178
163
  }
@@ -28,8 +28,7 @@ library FluxTokenLib {
28
28
  params.currentBlockNumber = block.number;
29
29
  params.accrualBlockNumberPrior = IFluxErc20(fToken).accrualBlockNumber();
30
30
 
31
- if (params.accrualBlockNumberPrior == params.currentBlockNumber)
32
- return IFluxErc20(fToken).exchangeRateStored();
31
+ if (params.accrualBlockNumberPrior == params.currentBlockNumber) return IFluxErc20(fToken).exchangeRateStored();
33
32
 
34
33
  /* Read the previous values out of storage */
35
34
  params.cashPrior = IFluxErc20(fToken).getCash();
@@ -37,8 +36,11 @@ library FluxTokenLib {
37
36
  params.reservesPrior = IFluxErc20(fToken).totalReserves();
38
37
 
39
38
  /* Calculate the current borrow interest rate */
40
- params.borrowRateMantissa = IFluxInterestRateModel(IFluxErc20(fToken).interestRateModel())
41
- .getBorrowRate(params.cashPrior, params.borrowsPrior, params.reservesPrior);
39
+ params.borrowRateMantissa = IFluxInterestRateModel(IFluxErc20(fToken).interestRateModel()).getBorrowRate(
40
+ params.cashPrior,
41
+ params.borrowsPrior,
42
+ params.reservesPrior
43
+ );
42
44
 
43
45
  assert(params.borrowRateMantissa <= borrowRateMaxMantissa);
44
46
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.17;
2
+ pragma solidity ^0.8.17;
3
3
 
4
4
  import "./FluxTokenLib.sol";
5
5
  import "../../SYBase.sol";
@@ -13,11 +13,7 @@ contract PendleFluxLendingSY is SYBase {
13
13
  address public immutable fToken;
14
14
  address public immutable underlying;
15
15
 
16
- constructor(
17
- string memory _name,
18
- string memory _symbol,
19
- address _fToken
20
- ) SYBase(_name, _symbol, _fToken) {
16
+ constructor(string memory _name, string memory _symbol, address _fToken) SYBase(_name, _symbol, _fToken) {
21
17
  // underlying
22
18
  fToken = _fToken;
23
19
  underlying = IFluxErc20(_fToken).underlying();
@@ -101,11 +97,7 @@ contract PendleFluxLendingSY is SYBase {
101
97
  return token == fToken || token == underlying;
102
98
  }
103
99
 
104
- function assetInfo()
105
- external
106
- view
107
- returns (AssetType assetType, address assetAddress, uint8 assetDecimals)
108
- {
100
+ function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
109
101
  return (AssetType.TOKEN, underlying, IERC20Metadata(underlying).decimals());
110
102
  }
111
103
  }
@@ -76,8 +76,7 @@ abstract contract GLPPreviewHelper {
76
76
  uint256 _amount,
77
77
  uint256 _feeBasisPoints
78
78
  ) private pure returns (uint256) {
79
- uint256 afterFeeAmount = (_amount * (BASIS_POINTS_DIVISOR - _feeBasisPoints)) /
80
- (BASIS_POINTS_DIVISOR);
79
+ uint256 afterFeeAmount = (_amount * (BASIS_POINTS_DIVISOR - _feeBasisPoints)) / (BASIS_POINTS_DIVISOR);
81
80
  return afterFeeAmount;
82
81
  }
83
82
 
@@ -109,9 +108,7 @@ abstract contract GLPPreviewHelper {
109
108
  uint256 initialDiff = initialAmount > targetAmount
110
109
  ? initialAmount - targetAmount
111
110
  : targetAmount - initialAmount;
112
- uint256 nextDiff = nextAmount > targetAmount
113
- ? nextAmount - targetAmount
114
- : targetAmount - nextAmount;
111
+ uint256 nextDiff = nextAmount > targetAmount ? nextAmount - targetAmount : targetAmount - nextAmount;
115
112
 
116
113
  // action improves relative asset balance
117
114
  if (nextDiff < initialDiff) {
@@ -127,10 +124,7 @@ abstract contract GLPPreviewHelper {
127
124
  return _feeBasisPoints + taxBps;
128
125
  }
129
126
 
130
- function __getTargetUsdgAmount(
131
- address _token,
132
- uint256 _burnedUsdg
133
- ) private view returns (uint256) {
127
+ function __getTargetUsdgAmount(address _token, uint256 _burnedUsdg) private view returns (uint256) {
134
128
  uint256 supply = IERC20(usdg).totalSupply() - _burnedUsdg;
135
129
  if (supply == 0) {
136
130
  return 0;
@@ -0,0 +1,115 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity ^0.8.17;
3
+
4
+ import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
5
+ import "../../../libraries/BoringOwnableUpgradeable.sol";
6
+ import {AggregatorV2V3Interface as IChainlinkAggregator} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol";
7
+
8
+ interface IGMXV2Oracle {
9
+ function getPriceFeedMultiplier(address dataStore, address token) external view returns (uint256);
10
+ }
11
+
12
+ interface IGMXV2DataStore {
13
+ function getAddress(bytes32 key) external view returns (address);
14
+ }
15
+
16
+ interface IGMXV2Reader {
17
+ struct PriceProps {
18
+ uint256 min;
19
+ uint256 max;
20
+ }
21
+ struct MarketProps {
22
+ address marketToken;
23
+ address indexToken;
24
+ address longToken;
25
+ address shortToken;
26
+ }
27
+ struct MarketPoolValueInfoProps {
28
+ int256 poolValue;
29
+ int256 longPnl;
30
+ int256 shortPnl;
31
+ int256 netPnl;
32
+ uint256 longTokenAmount;
33
+ uint256 shortTokenAmount;
34
+ uint256 longTokenUsd;
35
+ uint256 shortTokenUsd;
36
+ uint256 totalBorrowingFees;
37
+ uint256 borrowingFeePoolFactor;
38
+ uint256 impactPoolAmount;
39
+ }
40
+
41
+ function getMarketTokenPrice(
42
+ address dataStore,
43
+ MarketProps memory market,
44
+ PriceProps memory indexTokenPrice,
45
+ PriceProps memory longTokenPrice,
46
+ PriceProps memory shortTokenPrice,
47
+ bytes32 pnlFactorType,
48
+ bool maximize
49
+ ) external view returns (int256, MarketPoolValueInfoProps memory);
50
+ }
51
+
52
+ contract GMTokenPricingHelper is BoringOwnableUpgradeable, UUPSUpgradeable {
53
+ uint256 constant FLOAT_PRECISION = 10 ** 30;
54
+ bytes32 public constant MARKET_TOKEN = keccak256(abi.encode("MARKET_TOKEN"));
55
+ bytes32 public constant INDEX_TOKEN = keccak256(abi.encode("INDEX_TOKEN"));
56
+ bytes32 public constant LONG_TOKEN = keccak256(abi.encode("LONG_TOKEN"));
57
+ bytes32 public constant SHORT_TOKEN = keccak256(abi.encode("SHORT_TOKEN"));
58
+ bytes32 public constant PRICE_FEED = keccak256(abi.encode("PRICE_FEED"));
59
+ bytes32 public constant MAX_PNL_FACTOR_FOR_DEPOSITS = keccak256(abi.encode("MAX_PNL_FACTOR_FOR_DEPOSITS"));
60
+
61
+ IGMXV2Oracle constant oracle = IGMXV2Oracle(0xa11B501c2dd83Acd29F6727570f2502FAaa617F2);
62
+ IGMXV2DataStore constant datastore = IGMXV2DataStore(0xFD70de6b91282D8017aA4E741e9Ae325CAb992d8);
63
+ IGMXV2Reader constant reader = IGMXV2Reader(0xf60becbba223EEA9495Da3f606753867eC10d139);
64
+
65
+ constructor() initializer {}
66
+
67
+ function getPrice(address gm) external view returns (uint256) {
68
+ IGMXV2Reader.MarketProps memory prop = _getMarketProps(datastore, gm);
69
+ (int256 marketPrice, ) = reader.getMarketTokenPrice(
70
+ address(datastore),
71
+ prop,
72
+ _getTokenPrice(prop.indexToken),
73
+ _getTokenPrice(prop.longToken),
74
+ _getTokenPrice(prop.shortToken),
75
+ MAX_PNL_FACTOR_FOR_DEPOSITS,
76
+ true
77
+ );
78
+
79
+ // price from gmx is in based 30 when token decimals is 18
80
+ // while GM token should always be 18 decimals
81
+ return uint256(marketPrice) / 10 ** 12;
82
+ }
83
+
84
+ function _getTokenPrice(address token) internal view returns (IGMXV2Reader.PriceProps memory price) {
85
+ (, int256 latestAnswer, , , ) = IChainlinkAggregator(datastore.getAddress(_priceFeedKey(token)))
86
+ .latestRoundData();
87
+
88
+ uint256 multipler = oracle.getPriceFeedMultiplier(address(datastore), token);
89
+ uint256 adjustedPrice = (uint256(latestAnswer) * multipler) / FLOAT_PRECISION;
90
+ return IGMXV2Reader.PriceProps({min: adjustedPrice, max: adjustedPrice});
91
+ }
92
+
93
+ function _getMarketProps(
94
+ IGMXV2DataStore dataStore,
95
+ address key
96
+ ) internal view returns (IGMXV2Reader.MarketProps memory) {
97
+ IGMXV2Reader.MarketProps memory prop;
98
+ prop.marketToken = dataStore.getAddress(keccak256(abi.encode(key, MARKET_TOKEN)));
99
+ prop.indexToken = dataStore.getAddress(keccak256(abi.encode(key, INDEX_TOKEN)));
100
+ prop.longToken = dataStore.getAddress(keccak256(abi.encode(key, LONG_TOKEN)));
101
+ prop.shortToken = dataStore.getAddress(keccak256(abi.encode(key, SHORT_TOKEN)));
102
+ return prop;
103
+ }
104
+
105
+ function _priceFeedKey(address token) internal pure returns (bytes32) {
106
+ return keccak256(abi.encode(PRICE_FEED, token));
107
+ }
108
+
109
+ /////////////////// UPGRADABLE LOGIC ///////////////////////////
110
+ function initialize() external initializer {
111
+ __BoringOwnable_init();
112
+ }
113
+
114
+ function _authorizeUpgrade(address newImplementation) internal override onlyOwner {}
115
+ }
@@ -0,0 +1,134 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ pragma solidity ^0.8.17;
3
+
4
+ import "../../../../interfaces/IPPriceFeed.sol";
5
+ import "../../../../interfaces/IPLinearDistributor.sol";
6
+ import "../../SYBaseWithRewards.sol";
7
+ import "../../../libraries/ArrayLib.sol";
8
+ import "./GMTokenPricingHelper.sol";
9
+
10
+ contract PendleGMV2TokenSY is SYBaseWithRewards, IPPriceFeed {
11
+ using ArrayLib for address[];
12
+
13
+ address public immutable gm;
14
+ address public immutable arb;
15
+ address public immutable linearDistributor;
16
+ address public immutable pricingHelper;
17
+
18
+ constructor(
19
+ string memory _name,
20
+ string memory _symbol,
21
+ address _gm,
22
+ address _arb,
23
+ address _linearDistributor,
24
+ address _pricingHelper
25
+ ) SYBaseWithRewards(_name, _symbol, _gm) {
26
+ gm = _gm;
27
+ arb = _arb;
28
+ linearDistributor = _linearDistributor;
29
+ pricingHelper = _pricingHelper;
30
+
31
+ _safeApproveInf(_arb, _linearDistributor);
32
+ }
33
+
34
+ /*///////////////////////////////////////////////////////////////
35
+ DEPOSIT/REDEEM USING BASE TOKENS
36
+ //////////////////////////////////////////////////////////////*/
37
+
38
+ /**
39
+ * @dev See {SYBase-_deposit}
40
+ */
41
+ function _deposit(
42
+ address /*tokenIn*/,
43
+ uint256 amountDeposited
44
+ ) internal virtual override returns (uint256 /*amountSharesOut*/) {
45
+ return amountDeposited;
46
+ }
47
+
48
+ /**
49
+ * @dev See {SYBase-_redeem}
50
+ */
51
+ function _redeem(
52
+ address receiver,
53
+ address /*tokenOut*/,
54
+ uint256 amountSharesToRedeem
55
+ ) internal virtual override returns (uint256 /*amountTokenOut*/) {
56
+ _transferOut(gm, receiver, amountSharesToRedeem);
57
+ return amountSharesToRedeem;
58
+ }
59
+
60
+ /*///////////////////////////////////////////////////////////////
61
+ EXCHANGE-RATE
62
+ //////////////////////////////////////////////////////////////*/
63
+
64
+ function exchangeRate() public view virtual override returns (uint256) {
65
+ return PMath.ONE;
66
+ }
67
+
68
+ /*///////////////////////////////////////////////////////////////
69
+ REWARDS-RELATED
70
+ //////////////////////////////////////////////////////////////*/
71
+
72
+ /**
73
+ * @dev See {IStandardizedYield-getRewardTokens}
74
+ */
75
+ function _getRewardTokens() internal view override returns (address[] memory res) {
76
+ return ArrayLib.create(arb);
77
+ }
78
+
79
+ function _redeemExternalReward() internal override {
80
+ uint256 amountToVest = _getFloatingArbReward();
81
+ if (amountToVest > 0) {
82
+ IPLinearDistributor(linearDistributor).queueVestAndClaim(arb, amountToVest);
83
+ } else {
84
+ IPLinearDistributor(linearDistributor).claim(arb);
85
+ }
86
+ }
87
+
88
+ function _getFloatingArbReward() internal view returns (uint256) {
89
+ RewardState memory state = rewardState[arb];
90
+ return _selfBalance(arb) - state.lastBalance;
91
+ }
92
+
93
+ /*///////////////////////////////////////////////////////////////
94
+ MISC FUNCTIONS FOR METADATA
95
+ //////////////////////////////////////////////////////////////*/
96
+
97
+ function _previewDeposit(
98
+ address /*tokenIn*/,
99
+ uint256 amountTokenToDeposit
100
+ ) internal view override returns (uint256 /*amountSharesOut*/) {
101
+ return amountTokenToDeposit;
102
+ }
103
+
104
+ function _previewRedeem(
105
+ address /*tokenOut*/,
106
+ uint256 amountSharesToRedeem
107
+ ) internal view override returns (uint256 /*amountTokenOut*/) {
108
+ return amountSharesToRedeem;
109
+ }
110
+
111
+ function getTokensIn() public view virtual override returns (address[] memory) {
112
+ return ArrayLib.create(gm);
113
+ }
114
+
115
+ function getTokensOut() public view virtual override returns (address[] memory) {
116
+ return ArrayLib.create(gm);
117
+ }
118
+
119
+ function isValidTokenIn(address token) public view virtual override returns (bool) {
120
+ return token == gm;
121
+ }
122
+
123
+ function isValidTokenOut(address token) public view virtual override returns (bool) {
124
+ return token == gm;
125
+ }
126
+
127
+ function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
128
+ return (AssetType.LIQUIDITY, gm, IERC20Metadata(gm).decimals());
129
+ }
130
+
131
+ function getPrice() external view returns (uint256) {
132
+ return GMTokenPricingHelper(pricingHelper).getPrice(gm);
133
+ }
134
+ }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.17;
2
+ pragma solidity ^0.8.17;
3
3
 
4
4
  import "../../SYBaseWithRewards.sol";
5
5
  import "./GLPPreviewHelper.sol";
@@ -63,17 +63,9 @@ contract PendleGlpSY is SYBaseWithRewards, GLPPreviewHelper {
63
63
  // GLP is already staked in stakedGlp's transferFrom, called in _transferIn()
64
64
  amountSharesOut = amountDeposited;
65
65
  } else if (tokenIn == NATIVE) {
66
- amountSharesOut = IRewardRouterV2(glpRouter).mintAndStakeGlpETH{ value: msg.value }(
67
- 0,
68
- 0
69
- );
66
+ amountSharesOut = IRewardRouterV2(glpRouter).mintAndStakeGlpETH{value: msg.value}(0, 0);
70
67
  } else {
71
- amountSharesOut = IRewardRouterV2(glpRouter).mintAndStakeGlp(
72
- tokenIn,
73
- amountDeposited,
74
- 0,
75
- 0
76
- );
68
+ amountSharesOut = IRewardRouterV2(glpRouter).mintAndStakeGlp(tokenIn, amountDeposited, 0, 0);
77
69
  }
78
70
  }
79
71
 
@@ -149,9 +141,7 @@ contract PendleGlpSY is SYBaseWithRewards, GLPPreviewHelper {
149
141
  uint256 glpSupply = IERC20(glp).totalSupply();
150
142
  uint256 usdgAmount = super._buyUSDG(tokenIn, amountTokenToDeposit);
151
143
 
152
- uint256 mintAmount = aumInUsdg == 0
153
- ? usdgAmount
154
- : (usdgAmount * glpSupply) / aumInUsdg;
144
+ uint256 mintAmount = aumInUsdg == 0 ? usdgAmount : (usdgAmount * glpSupply) / aumInUsdg;
155
145
  amountSharesOut = mintAmount;
156
146
  }
157
147
  }
@@ -204,11 +194,7 @@ contract PendleGlpSY is SYBaseWithRewards, GLPPreviewHelper {
204
194
  return token == stakedGlp || token == NATIVE || vault.whitelistedTokens(token);
205
195
  }
206
196
 
207
- function assetInfo()
208
- external
209
- view
210
- returns (AssetType assetType, address assetAddress, uint8 assetDecimals)
211
- {
197
+ function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
212
198
  return (AssetType.LIQUIDITY, glp, IERC20Metadata(glp).decimals());
213
199
  }
214
200
  }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.17;
2
+ pragma solidity ^0.8.17;
3
3
 
4
4
  import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
5
5
  import "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
@@ -15,7 +15,6 @@ contract HLPPricingHelper is BoringOwnableUpgradeable, UUPSUpgradeable {
15
15
  hlp = _hlp;
16
16
  }
17
17
 
18
-
19
18
  function initialize() external initializer {
20
19
  __BoringOwnable_init();
21
20
  }
@@ -25,6 +24,6 @@ contract HLPPricingHelper is BoringOwnableUpgradeable, UUPSUpgradeable {
25
24
  function getPrice() external view returns (uint256) {
26
25
  uint256 aum = IHMXCalculator(hmxCalculator).getAUME30(true);
27
26
  uint256 supply = IERC20(hlp).totalSupply();
28
- return aum * 1e6 / supply;
27
+ return (aum * 1e6) / supply;
29
28
  }
30
- }
29
+ }
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
- pragma solidity 0.8.17;
2
+ pragma solidity ^0.8.17;
3
3
 
4
4
  import "../../SYBaseWithRewards.sol";
5
5
  import "../../../libraries/ArrayLib.sol";
@@ -58,12 +58,10 @@ contract PendleHlpSY is SYBaseWithRewards {
58
58
  /**
59
59
  * @dev See {SYBase-_deposit}
60
60
  */
61
- function _deposit(address, /*tokenIn*/ uint256 amountDeposited)
62
- internal
63
- virtual
64
- override
65
- returns (uint256 /*amountSharesOut*/ )
66
- {
61
+ function _deposit(
62
+ address,
63
+ /*tokenIn*/ uint256 amountDeposited
64
+ ) internal virtual override returns (uint256 /*amountSharesOut*/) {
67
65
  IHLPStaking(hlpStakingPool).deposit(address(this), amountDeposited);
68
66
  return amountDeposited;
69
67
  }
@@ -71,12 +69,11 @@ contract PendleHlpSY is SYBaseWithRewards {
71
69
  /**
72
70
  * @dev See {SYBase-_redeem}
73
71
  */
74
- function _redeem(address receiver, address, /*tokenOut*/ uint256 amountSharesToRedeem)
75
- internal
76
- virtual
77
- override
78
- returns (uint256 /*amountTokenOut*/ )
79
- {
72
+ function _redeem(
73
+ address receiver,
74
+ address,
75
+ /*tokenOut*/ uint256 amountSharesToRedeem
76
+ ) internal virtual override returns (uint256 /*amountTokenOut*/) {
80
77
  IHLPStaking(hlpStakingPool).withdraw(amountSharesToRedeem);
81
78
  _transferOut(hlp, receiver, amountSharesToRedeem);
82
79
  return amountSharesToRedeem;
@@ -124,21 +121,17 @@ contract PendleHlpSY is SYBaseWithRewards {
124
121
  MISC FUNCTIONS FOR METADATA
125
122
  //////////////////////////////////////////////////////////////*/
126
123
 
127
- function _previewDeposit(address, /*tokenIn*/ uint256 amountTokenToDeposit)
128
- internal
129
- pure
130
- override
131
- returns (uint256 /*amountSharesOut*/ )
132
- {
124
+ function _previewDeposit(
125
+ address,
126
+ /*tokenIn*/ uint256 amountTokenToDeposit
127
+ ) internal pure override returns (uint256 /*amountSharesOut*/) {
133
128
  return amountTokenToDeposit;
134
129
  }
135
130
 
136
- function _previewRedeem(address, /*tokenOut*/ uint256 amountSharesToRedeem)
137
- internal
138
- pure
139
- override
140
- returns (uint256 /*amountTokenOut*/ )
141
- {
131
+ function _previewRedeem(
132
+ address,
133
+ /*tokenOut*/ uint256 amountSharesToRedeem
134
+ ) internal pure override returns (uint256 /*amountTokenOut*/) {
142
135
  return amountSharesToRedeem;
143
136
  }
144
137