@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
@@ -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 "../../../../interfaces/IQiToken.sol";
5
5
  import "../../../libraries/Errors.sol";
@@ -19,8 +19,7 @@ contract PendleQiTokenHelper {
19
19
 
20
20
  uint256 accrualBlockTimestampPrior = qiToken.accrualBlockTimestamp();
21
21
 
22
- if (accrualBlockTimestampPrior == currentBlockTimestamp)
23
- return qiToken.exchangeRateStored();
22
+ if (accrualBlockTimestampPrior == currentBlockTimestamp) return qiToken.exchangeRateStored();
24
23
 
25
24
  /* Read the previous values out of storage */
26
25
  uint256 cashPrior = qiToken.getCash();
@@ -28,11 +27,7 @@ contract PendleQiTokenHelper {
28
27
  uint256 reservesPrior = qiToken.totalReserves();
29
28
 
30
29
  /* Calculate the current borrow interest rate */
31
- uint256 borrowRateMantissa = qiToken.interestRateModel().getBorrowRate(
32
- cashPrior,
33
- borrowsPrior,
34
- reservesPrior
35
- );
30
+ uint256 borrowRateMantissa = qiToken.interestRateModel().getBorrowRate(cashPrior, borrowsPrior, reservesPrior);
36
31
 
37
32
  if (borrowRateMantissa > borrowRateMaxMantissa)
38
33
  revert Errors.SYQiTokenBorrowRateTooHigh(borrowRateMantissa, borrowRateMaxMantissa);
@@ -45,12 +40,9 @@ contract PendleQiTokenHelper {
45
40
 
46
41
  uint256 totalBorrowsNew = interestAccumulated + borrowsPrior;
47
42
 
48
- uint256 totalReservesNew = (qiToken.reserveFactorMantissa() * interestAccumulated) /
49
- 1e18 +
50
- reservesPrior;
43
+ uint256 totalReservesNew = (qiToken.reserveFactorMantissa() * interestAccumulated) / 1e18 + reservesPrior;
51
44
 
52
- return
53
- _calcExchangeRate(qiToken.totalSupply(), cashPrior, totalBorrowsNew, totalReservesNew);
45
+ return _calcExchangeRate(qiToken.totalSupply(), cashPrior, totalBorrowsNew, totalReservesNew);
54
46
  }
55
47
 
56
48
  function _calcExchangeRate(
@@ -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 "../../../../interfaces/IQiErc20.sol";
@@ -23,10 +23,7 @@ contract PendleQiTokenSY is SYBaseWithRewards, PendleQiTokenHelper {
23
23
  bool isUnderlyingNative,
24
24
  address _WAVAX,
25
25
  uint256 _initialExchangeRateMantissa
26
- )
27
- SYBaseWithRewards(_name, _symbol, _qiToken)
28
- PendleQiTokenHelper(_qiToken, _initialExchangeRateMantissa)
29
- {
26
+ ) SYBaseWithRewards(_name, _symbol, _qiToken) PendleQiTokenHelper(_qiToken, _initialExchangeRateMantissa) {
30
27
  qiToken = _qiToken;
31
28
 
32
29
  underlying = isUnderlyingNative ? NATIVE : IQiErc20(qiToken).underlying();
@@ -50,10 +47,7 @@ contract PendleQiTokenSY is SYBaseWithRewards, PendleQiTokenHelper {
50
47
  *
51
48
  * The exchange rate of qiToken to shares is 1:1
52
49
  */
53
- function _deposit(
54
- address tokenIn,
55
- uint256 amount
56
- ) internal override returns (uint256 amountSharesOut) {
50
+ function _deposit(address tokenIn, uint256 amount) internal override returns (uint256 amountSharesOut) {
57
51
  if (tokenIn == qiToken) {
58
52
  amountSharesOut = amount;
59
53
  } else {
@@ -61,7 +55,7 @@ contract PendleQiTokenSY is SYBaseWithRewards, PendleQiTokenHelper {
61
55
  uint256 preBalanceQiToken = _selfBalance(qiToken);
62
56
 
63
57
  if (underlying == NATIVE) {
64
- IQiAvax(qiToken).mint{ value: amount }();
58
+ IQiAvax(qiToken).mint{value: amount}();
65
59
  } else {
66
60
  uint256 errCode = IQiErc20(qiToken).mint(amount);
67
61
  if (errCode != 0) revert Errors.SYQiTokenMintFailed(errCode);
@@ -135,19 +129,13 @@ contract PendleQiTokenSY is SYBaseWithRewards, PendleQiTokenHelper {
135
129
  IBenQiComptroller(comptroller).claimReward(0, holders, qiTokens, false, true);
136
130
  IBenQiComptroller(comptroller).claimReward(1, holders, qiTokens, false, true);
137
131
 
138
- uint256 rewardAccruedType0 = IBenQiComptroller(comptroller).rewardAccrued(
139
- 0,
140
- address(this)
141
- );
142
- uint256 rewardAccruedType1 = IBenQiComptroller(comptroller).rewardAccrued(
143
- 1,
144
- address(this)
145
- );
132
+ uint256 rewardAccruedType0 = IBenQiComptroller(comptroller).rewardAccrued(0, address(this));
133
+ uint256 rewardAccruedType1 = IBenQiComptroller(comptroller).rewardAccrued(1, address(this));
146
134
 
147
135
  if (rewardAccruedType0 > 0 || rewardAccruedType1 > 0)
148
136
  revert Errors.SYQiTokenRedeemRewardsFailed(rewardAccruedType0, rewardAccruedType1);
149
137
 
150
- if (address(this).balance != 0) IWETH(WAVAX).deposit{ value: address(this).balance }();
138
+ if (address(this).balance != 0) IWETH(WAVAX).deposit{value: address(this).balance}();
151
139
  }
152
140
 
153
141
  /*///////////////////////////////////////////////////////////////
@@ -190,15 +178,7 @@ contract PendleQiTokenSY is SYBaseWithRewards, PendleQiTokenHelper {
190
178
  return token == qiToken || token == underlying;
191
179
  }
192
180
 
193
- function assetInfo()
194
- external
195
- view
196
- returns (AssetType assetType, address assetAddress, uint8 assetDecimals)
197
- {
198
- return (
199
- AssetType.TOKEN,
200
- underlying,
201
- underlying == NATIVE ? 18 : IERC20Metadata(underlying).decimals()
202
- );
181
+ function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
182
+ return (AssetType.TOKEN, underlying, underlying == NATIVE ? 18 : IERC20Metadata(underlying).decimals());
203
183
  }
204
184
  }
@@ -103,9 +103,7 @@ contract CamelotRewardHelper is TokenHelper, ICamelotNFTHandler {
103
103
  return true;
104
104
  }
105
105
 
106
- function _increaseNftPoolPosition(
107
- uint256 amountLp
108
- ) internal returns (uint256 amountLpAccountedForUser) {
106
+ function _increaseNftPoolPosition(uint256 amountLp) internal returns (uint256 amountLpAccountedForUser) {
109
107
  // first time minting from this contract
110
108
  if (positionId == POSITION_UNINITIALIZED) {
111
109
  positionId = ICamelotNFTPool(nftPool).lastTokenId() + 1;
@@ -175,11 +173,7 @@ contract CamelotRewardHelper is TokenHelper, ICamelotNFTHandler {
175
173
  return true;
176
174
  }
177
175
 
178
- function onNFTWithdraw(
179
- address,
180
- uint256 tokenId,
181
- uint256
182
- ) external view ensureValidTokenId(tokenId) returns (bool) {
176
+ function onNFTWithdraw(address, uint256 tokenId, uint256) external view ensureValidTokenId(tokenId) returns (bool) {
183
177
  return true;
184
178
  }
185
179
  }
@@ -25,11 +25,7 @@ contract CamelotV1VolatileCommon {
25
25
  uint256 internal constant FOUR = 4 * FEE_DENOMINATOR;
26
26
 
27
27
  // reference: https://blog.alphaventuredao.io/onesideduniswap/
28
- function _getZapInSwapAmount(
29
- uint256 amountIn,
30
- uint256 reserve,
31
- uint256 fee
32
- ) internal pure returns (uint256) {
28
+ function _getZapInSwapAmount(uint256 amountIn, uint256 reserve, uint256 fee) internal pure returns (uint256) {
33
29
  return
34
30
  (PMath.sqrt(PMath.square((TWO - fee) * reserve) + FOUR * (ONE - fee) * amountIn * reserve) -
35
31
  (TWO - fee) *
@@ -24,11 +24,7 @@ abstract contract CamelotV1VolatileLpHelper is TokenHelper, CamelotV1VolatileCom
24
24
  address public immutable pair;
25
25
  address public immutable router;
26
26
 
27
-
28
- constructor(
29
- address _pair,
30
- address _router
31
- ) {
27
+ constructor(address _pair, address _router) {
32
28
  assert(ICamelotPair(_pair).stableSwap() == false);
33
29
  pair = _pair;
34
30
  router = _router;
@@ -58,12 +54,11 @@ abstract contract CamelotV1VolatileLpHelper is TokenHelper, CamelotV1VolatileCom
58
54
  }
59
55
  }
60
56
 
61
- function _swapZapIn(address tokenIn, uint256 amountIn)
62
- private
63
- returns (uint256 amount0ToAddLiq, uint256 amount1ToAddLiq)
64
- {
65
- (uint256 reserve0, uint256 reserve1, uint256 fee0, uint256 fee1) = ICamelotPair(pair)
66
- .getReserves();
57
+ function _swapZapIn(
58
+ address tokenIn,
59
+ uint256 amountIn
60
+ ) private returns (uint256 amount0ToAddLiq, uint256 amount1ToAddLiq) {
61
+ (uint256 reserve0, uint256 reserve1, uint256 fee0, uint256 fee1) = ICamelotPair(pair).getReserves();
67
62
 
68
63
  if (tokenIn == token0) {
69
64
  uint256 amount0ToSwap = _getZapInSwapAmount(amountIn, reserve0, fee0);
@@ -82,10 +77,7 @@ abstract contract CamelotV1VolatileLpHelper is TokenHelper, CamelotV1VolatileCom
82
77
  * ==================================================================
83
78
  */
84
79
 
85
- function _addLiquidity(uint256 amount0ToAddLiq, uint256 amount1ToAddLiq)
86
- private
87
- returns (uint256 amountLpOut)
88
- {
80
+ function _addLiquidity(uint256 amount0ToAddLiq, uint256 amount1ToAddLiq) private returns (uint256 amountLpOut) {
89
81
  (, , amountLpOut) = ICamelotRouter(router).addLiquidity(
90
82
  token0,
91
83
  token1,
@@ -98,10 +90,7 @@ abstract contract CamelotV1VolatileLpHelper is TokenHelper, CamelotV1VolatileCom
98
90
  );
99
91
  }
100
92
 
101
- function _removeLiquidity(uint256 amountLpToRemove)
102
- private
103
- returns (uint256 amountTokenA, uint256 amountTokenB)
104
- {
93
+ function _removeLiquidity(uint256 amountLpToRemove) private returns (uint256 amountTokenA, uint256 amountTokenB) {
105
94
  return
106
95
  ICamelotRouter(router).removeLiquidity(
107
96
  token0,
@@ -1,17 +1,13 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
 
3
- pragma solidity 0.8.17;
3
+ pragma solidity ^0.8.17;
4
4
 
5
5
  import "./CamelotV1VolatileCommon.sol";
6
6
 
7
7
  import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
8
8
  import "../../../libraries/BoringOwnableUpgradeable.sol";
9
9
 
10
- contract CamelotV1VolatilePreview is
11
- CamelotV1VolatileCommon,
12
- BoringOwnableUpgradeable,
13
- UUPSUpgradeable
14
- {
10
+ contract CamelotV1VolatilePreview is CamelotV1VolatileCommon, BoringOwnableUpgradeable, UUPSUpgradeable {
15
11
  address internal immutable factory;
16
12
 
17
13
  constructor(address _factory) initializer {
@@ -84,11 +80,9 @@ contract CamelotV1VolatilePreview is
84
80
  data.reserve1 -= amount1Removed;
85
81
 
86
82
  if (tokenOut == data.token0) {
87
- return
88
- amount0Removed + _getSwapAmountOut(data, amount1Removed, data.token1, data.fee1);
83
+ return amount0Removed + _getSwapAmountOut(data, amount1Removed, data.token1, data.fee1);
89
84
  } else {
90
- return
91
- amount1Removed + _getSwapAmountOut(data, amount0Removed, data.token0, data.fee0);
85
+ return amount1Removed + _getSwapAmountOut(data, amount0Removed, data.token0, data.fee0);
92
86
  }
93
87
  }
94
88
 
@@ -131,26 +125,14 @@ contract CamelotV1VolatilePreview is
131
125
  }
132
126
 
133
127
  uint256 supply = _getTotalSupplyAfterMintFee(data);
134
- return
135
- PMath.min(
136
- (amount0ToAddLiq * supply) / data.reserve0,
137
- (amount1ToAddLiq * supply) / data.reserve1
138
- );
128
+ return PMath.min((amount0ToAddLiq * supply) / data.reserve0, (amount1ToAddLiq * supply) / data.reserve1);
139
129
  }
140
130
 
141
- function _quote(
142
- uint256 amountA,
143
- uint256 reserveA,
144
- uint256 reserveB
145
- ) private pure returns (uint256 amountB) {
131
+ function _quote(uint256 amountA, uint256 reserveA, uint256 reserveB) private pure returns (uint256 amountB) {
146
132
  amountB = (amountA * reserveB) / reserveA;
147
133
  }
148
134
 
149
- function _getTotalSupplyAfterMintFee(CamelotPairData memory data)
150
- private
151
- view
152
- returns (uint256)
153
- {
135
+ function _getTotalSupplyAfterMintFee(CamelotPairData memory data) private view returns (uint256) {
154
136
  (uint256 ownerFeeShare, address feeTo) = ICamelotFactory(factory).feeInfo();
155
137
  bool feeOn = feeTo != address(0);
156
138
  uint256 _kLast = ICamelotPair(data.pair).kLast();
@@ -1,17 +1,13 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
 
3
- pragma solidity 0.8.17;
3
+ pragma solidity ^0.8.17;
4
4
 
5
5
  import "./CamelotRewardHelper.sol";
6
6
  import "../../SYBaseWithRewards.sol";
7
7
  import "./CamelotV1VolatilePreview.sol";
8
8
  import "./CamelotV1VolatileLpHelper.sol";
9
9
 
10
- contract PendleCamelotV1VolatileSY is
11
- SYBaseWithRewards,
12
- CamelotRewardHelper,
13
- CamelotV1VolatileLpHelper
14
- {
10
+ contract PendleCamelotV1VolatileSY is SYBaseWithRewards, CamelotRewardHelper, CamelotV1VolatileLpHelper {
15
11
  using PMath for uint256;
16
12
  using ArrayLib for address[];
17
13
 
@@ -41,10 +37,7 @@ contract PendleCamelotV1VolatileSY is
41
37
  /**
42
38
  * @dev See {SYBase-_deposit}
43
39
  */
44
- function _deposit(
45
- address tokenIn,
46
- uint256 amountDeposited
47
- ) internal virtual override returns (uint256) {
40
+ function _deposit(address tokenIn, uint256 amountDeposited) internal virtual override returns (uint256) {
48
41
  uint256 amountLpDeposited;
49
42
  if (tokenIn == pair) {
50
43
  amountLpDeposited = amountDeposited;
@@ -106,10 +99,8 @@ contract PendleCamelotV1VolatileSY is
106
99
  address token1 = ICamelotNitroPool(nitroPool).rewardsToken1().token;
107
100
  address token2 = ICamelotNitroPool(nitroPool).rewardsToken2().token;
108
101
 
109
- if (token1 != address(0) && token1 != xGRAIL && !rewardTokens.contains(token1))
110
- rewardTokens.push(token1);
111
- if (token2 != address(0) && token2 != xGRAIL && !rewardTokens.contains(token2))
112
- rewardTokens.push(token2);
102
+ if (token1 != address(0) && token1 != xGRAIL && !rewardTokens.contains(token1)) rewardTokens.push(token1);
103
+ if (token2 != address(0) && token2 != xGRAIL && !rewardTokens.contains(token2)) rewardTokens.push(token2);
113
104
  }
114
105
 
115
106
  function _redeemExternalReward() internal override {
@@ -128,10 +119,7 @@ contract PendleCamelotV1VolatileSY is
128
119
  PREVIEW-RELATED
129
120
  //////////////////////////////////////////////////////////////*/
130
121
 
131
- function _previewDeposit(
132
- address tokenIn,
133
- uint256 amountTokenToDeposit
134
- ) internal view override returns (uint256) {
122
+ function _previewDeposit(address tokenIn, uint256 amountTokenToDeposit) internal view override returns (uint256) {
135
123
  if (tokenIn == pair) {
136
124
  return amountTokenToDeposit;
137
125
  } else {
@@ -139,10 +127,7 @@ contract PendleCamelotV1VolatileSY is
139
127
  }
140
128
  }
141
129
 
142
- function _previewRedeem(
143
- address tokenOut,
144
- uint256 amountSharesToRedeem
145
- ) internal view override returns (uint256) {
130
+ function _previewRedeem(address tokenOut, uint256 amountSharesToRedeem) internal view override returns (uint256) {
146
131
  if (tokenOut == pair) {
147
132
  return amountSharesToRedeem;
148
133
  } else {
@@ -183,11 +168,7 @@ contract PendleCamelotV1VolatileSY is
183
168
  return token == token0 || token == token1 || token == pair;
184
169
  }
185
170
 
186
- function assetInfo()
187
- external
188
- view
189
- returns (AssetType assetType, address assetAddress, uint8 assetDecimals)
190
- {
171
+ function assetInfo() external view returns (AssetType assetType, address assetAddress, uint8 assetDecimals) {
191
172
  return (AssetType.LIQUIDITY, pair, IERC20Metadata(pair).decimals());
192
173
  }
193
174
 
@@ -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 "../../../libraries/Errors.sol";
5
5
  import "../../../../LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol";
@@ -37,7 +37,7 @@ contract PendleChainlinkReceiver is Initializable {
37
37
  function lzReceive(
38
38
  uint16 _srcChainId,
39
39
  bytes calldata _path,
40
- uint64, /*_nonce*/
40
+ uint64 /*_nonce*/,
41
41
  bytes calldata _payload
42
42
  ) external onlyLzEndpoint mustOriginateFromTrustedRemote(_srcChainId, _path) {
43
43
  int256 rate = abi.decode(_payload, (int256));
@@ -1,8 +1,8 @@
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/utils/Address.sol";
5
- import { AggregatorV2V3Interface as IChainlinkAggregator } from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol";
5
+ import {AggregatorV2V3Interface as IChainlinkAggregator} from "@chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol";
6
6
 
7
7
  import "../../../../LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol";
8
8
  import "../../../../interfaces/ILayerZeroEndpoint.sol";
@@ -17,12 +17,7 @@ contract PendleChainlinkRelayer {
17
17
  uint256 public immutable dstChainId;
18
18
  address public immutable chainlinkFeed;
19
19
 
20
- constructor(
21
- address _lzEndpoint,
22
- address _dstAddress,
23
- uint256 _dstChainId,
24
- address _chainlinkFeed
25
- ) {
20
+ constructor(address _lzEndpoint, address _dstAddress, uint256 _dstChainId, address _chainlinkFeed) {
26
21
  lzEndpoint = _lzEndpoint;
27
22
  dstAddress = _dstAddress;
28
23
  dstChainId = _dstChainId;
@@ -31,7 +26,7 @@ contract PendleChainlinkRelayer {
31
26
 
32
27
  function run() external payable {
33
28
  bytes memory path = abi.encodePacked(dstAddress, address(this));
34
- ILayerZeroEndpoint(lzEndpoint).send{ value: msg.value }(
29
+ ILayerZeroEndpoint(lzEndpoint).send{value: msg.value}(
35
30
  LayerZeroHelper._getLayerZeroChainIds(dstChainId),
36
31
  path,
37
32
  abi.encode(IChainlinkAggregator(chainlinkFeed).latestAnswer()),
@@ -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 "./base/PendleConvexLPSY.sol";
5
5
  import "./base/CurveFraxUsdcPoolHelper.sol";
@@ -16,15 +16,7 @@ contract PendleCurveFraxUsdcSY is PendleConvexLPSY {
16
16
  constructor(
17
17
  string memory _name,
18
18
  string memory _symbol
19
- )
20
- PendleConvexLPSY(
21
- _name,
22
- _symbol,
23
- PID,
24
- CurveFraxUsdcPoolHelper.LP,
25
- CurveFraxUsdcPoolHelper.POOL
26
- )
27
- {
19
+ ) PendleConvexLPSY(_name, _symbol, PID, CurveFraxUsdcPoolHelper.LP, CurveFraxUsdcPoolHelper.POOL) {
28
20
  _safeApproveInf(FRAX, crvPool);
29
21
  _safeApproveInf(USDC, crvPool);
30
22
  }
@@ -60,11 +52,7 @@ contract PendleCurveFraxUsdcSY is PendleConvexLPSY {
60
52
  address tokenOut,
61
53
  uint256 amountLpToRedeem
62
54
  ) internal view virtual override returns (uint256) {
63
- return
64
- ICrvPool(crvPool).calc_withdraw_one_coin(
65
- amountLpToRedeem,
66
- PMath.Int128(_getIndex(tokenOut))
67
- );
55
+ return ICrvPool(crvPool).calc_withdraw_one_coin(amountLpToRedeem, PMath.Int128(_getIndex(tokenOut)));
68
56
  }
69
57
 
70
58
  function _getIndex(address token) internal pure returns (uint256) {
@@ -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 "./base/PendleConvexLPSY.sol";
5
5
  import "./base/CurveUsdd3CrvPoolHelper.sol";
@@ -20,15 +20,7 @@ contract PendleCurveUsdd3CrvSY is PendleConvexLPSY {
20
20
  constructor(
21
21
  string memory _name,
22
22
  string memory _symbol
23
- )
24
- PendleConvexLPSY(
25
- _name,
26
- _symbol,
27
- PID,
28
- CurveUsdd3CrvPoolHelper.POOL,
29
- CurveUsdd3CrvPoolHelper.POOL
30
- )
31
- {
23
+ ) PendleConvexLPSY(_name, _symbol, PID, CurveUsdd3CrvPoolHelper.POOL, CurveUsdd3CrvPoolHelper.POOL) {
32
24
  _safeApproveInf(USDD, crvPool);
33
25
  _safeApproveInf(LP_3CRV, crvPool);
34
26
  _safeApproveInf(DAI, POOL_3CRV);
@@ -65,11 +57,7 @@ contract PendleCurveUsdd3CrvSY is PendleConvexLPSY {
65
57
 
66
58
  uint256 preBalanceToken = _selfBalance(tokenToRemove);
67
59
 
68
- ICrvPool(crvPool).remove_liquidity_one_coin(
69
- amountLpToRedeem,
70
- PMath.Int128(_getIndex(tokenToRemove)),
71
- 0
72
- );
60
+ ICrvPool(crvPool).remove_liquidity_one_coin(amountLpToRedeem, PMath.Int128(_getIndex(tokenToRemove)), 0);
73
61
 
74
62
  uint256 amountTokenRemoved = _selfBalance(tokenToRemove) - preBalanceToken;
75
63
 
@@ -131,17 +119,11 @@ contract PendleCurveUsdd3CrvSY is PendleConvexLPSY {
131
119
  }
132
120
 
133
121
  function isValidTokenIn(address token) public view virtual override returns (bool res) {
134
- res = (token == crvLp ||
135
- token == USDD ||
136
- token == LP_3CRV ||
137
- Curve3CrvPoolHelper.is3CrvToken(token));
122
+ res = (token == crvLp || token == USDD || token == LP_3CRV || Curve3CrvPoolHelper.is3CrvToken(token));
138
123
  }
139
124
 
140
125
  function isValidTokenOut(address token) public view override returns (bool res) {
141
- res = (token == crvLp ||
142
- token == USDD ||
143
- token == LP_3CRV ||
144
- Curve3CrvPoolHelper.is3CrvToken(token));
126
+ res = (token == crvLp || token == USDD || token == LP_3CRV || Curve3CrvPoolHelper.is3CrvToken(token));
145
127
  }
146
128
 
147
129
  function _getRewardTokens() internal pure override returns (address[] memory rewardTokens) {
@@ -23,45 +23,25 @@ library Curve3CrvPoolHelper {
23
23
 
24
24
  // previewDeposit at the end of the file
25
25
 
26
- function preview3CrvRedeem(
27
- address tokenOut,
28
- uint256 amountSharesToRedeem
29
- ) internal view returns (uint256) {
30
- return
31
- ITriCrvPool(POOL).calc_withdraw_one_coin(
32
- amountSharesToRedeem,
33
- _get3CrvTokenIndex(tokenOut).Int128()
34
- );
26
+ function preview3CrvRedeem(address tokenOut, uint256 amountSharesToRedeem) internal view returns (uint256) {
27
+ return ITriCrvPool(POOL).calc_withdraw_one_coin(amountSharesToRedeem, _get3CrvTokenIndex(tokenOut).Int128());
35
28
  }
36
29
 
37
- function deposit3Crv(
38
- address tokenIn,
39
- uint256 amountTokenToDeposit
40
- ) internal returns (uint256) {
30
+ function deposit3Crv(address tokenIn, uint256 amountTokenToDeposit) internal returns (uint256) {
41
31
  uint256 balBefore = IERC20(LP).balanceOf(address(this));
42
32
  ITriCrvPool(POOL).add_liquidity(_getTokenAmounts(tokenIn, amountTokenToDeposit), 0);
43
33
  uint256 balAfter = IERC20(LP).balanceOf(address(this));
44
34
  return balAfter - balBefore;
45
35
  }
46
36
 
47
- function redeem3Crv(
48
- address tokenOut,
49
- uint256 amountSharesToRedeem
50
- ) internal returns (uint256) {
37
+ function redeem3Crv(address tokenOut, uint256 amountSharesToRedeem) internal returns (uint256) {
51
38
  uint256 balBefore = IERC20(tokenOut).balanceOf(address(this));
52
- ITriCrvPool(POOL).remove_liquidity_one_coin(
53
- amountSharesToRedeem,
54
- _get3CrvTokenIndex(tokenOut).Int128(),
55
- 0
56
- );
39
+ ITriCrvPool(POOL).remove_liquidity_one_coin(amountSharesToRedeem, _get3CrvTokenIndex(tokenOut).Int128(), 0);
57
40
  uint256 balAfter = IERC20(tokenOut).balanceOf(address(this));
58
41
  return balAfter - balBefore;
59
42
  }
60
43
 
61
- function _getTokenAmounts(
62
- address token,
63
- uint256 amount
64
- ) internal pure returns (uint256[N_COINS] memory res) {
44
+ function _getTokenAmounts(address token, uint256 amount) internal pure returns (uint256[N_COINS] memory res) {
65
45
  res[_get3CrvTokenIndex(token)] = amount;
66
46
  }
67
47
 
@@ -128,10 +108,7 @@ library Curve3CrvPoolHelper {
128
108
  }
129
109
 
130
110
  netLpOut = (token_supply * (D2 - D0)) / D0;
131
- new_virtual_price = _get_virtual_price_with_balances(
132
- self_balances,
133
- token_supply + netLpOut
134
- );
111
+ new_virtual_price = _get_virtual_price_with_balances(self_balances, token_supply + netLpOut);
135
112
  }
136
113
 
137
114
  function _get_virtual_price_with_balances(
@@ -143,16 +120,11 @@ library Curve3CrvPoolHelper {
143
120
  return (D * PRECISION) / token_supply;
144
121
  }
145
122
 
146
- function get_D_mem(
147
- uint256[N_COINS] memory balances,
148
- uint256 amp
149
- ) internal pure returns (uint256) {
123
+ function get_D_mem(uint256[N_COINS] memory balances, uint256 amp) internal pure returns (uint256) {
150
124
  return get_D(_xp_mem(balances), amp);
151
125
  }
152
126
 
153
- function _xp_mem(
154
- uint256[N_COINS] memory balances
155
- ) internal pure returns (uint256[N_COINS] memory) {
127
+ function _xp_mem(uint256[N_COINS] memory balances) internal pure returns (uint256[N_COINS] memory) {
156
128
  uint256[N_COINS] memory result;
157
129
  result[0] = (RATE_0 * balances[0]) / PRECISION;
158
130
  result[1] = (RATE_1 * balances[1]) / PRECISION;
@@ -197,9 +169,7 @@ library Curve3CrvPoolHelper {
197
169
  balances[2] = ITriCrvPool(POOL).balances(2);
198
170
  }
199
171
 
200
- function arrayClone(
201
- uint256[N_COINS] memory a
202
- ) internal pure returns (uint256[N_COINS] memory res) {
172
+ function arrayClone(uint256[N_COINS] memory a) internal pure returns (uint256[N_COINS] memory res) {
203
173
  for (uint256 i = 0; i < N_COINS; ++i) {
204
174
  res[i] = a[i];
205
175
  }
@@ -59,10 +59,7 @@ library CurveFraxUsdcPoolHelper {
59
59
  return (total_supply * (D2 - D0)) / D0;
60
60
  }
61
61
 
62
- function _get_D_mem(
63
- uint256[N_COINS] memory balances,
64
- uint256 _amp
65
- ) internal pure returns (uint256) {
62
+ function _get_D_mem(uint256[N_COINS] memory balances, uint256 _amp) internal pure returns (uint256) {
66
63
  uint256[N_COINS] memory _xp;
67
64
  _xp[0] = (RATE_0 * balances[0]) / PRECISION;
68
65
  _xp[1] = (RATE_1 * balances[1]) / PRECISION;
@@ -116,10 +113,7 @@ library CurveFraxUsdcPoolHelper {
116
113
  }
117
114
  }
118
115
 
119
- function _getTokenAmounts(
120
- address token,
121
- uint256 amount
122
- ) internal pure returns (uint256[N_COINS] memory res) {
116
+ function _getTokenAmounts(address token, uint256 amount) internal pure returns (uint256[N_COINS] memory res) {
123
117
  res[token == FRAX ? 0 : 1] = amount;
124
118
  }
125
119
  }
@@ -25,10 +25,7 @@ library CurveUsdd3CrvPoolHelper {
25
25
  balances[1] = ICrvPool(POOL).balances(1);
26
26
  }
27
27
 
28
- function _getTokenAmounts(
29
- address token,
30
- uint256 amount
31
- ) internal pure returns (uint256[N_COINS] memory res) {
28
+ function _getTokenAmounts(address token, uint256 amount) internal pure returns (uint256[N_COINS] memory res) {
32
29
  res[token == USDD ? 0 : 1] = amount;
33
30
  }
34
31
 
@@ -138,9 +135,7 @@ library CurveUsdd3CrvPoolHelper {
138
135
  assert(false);
139
136
  }
140
137
 
141
- function arrayClone(
142
- uint256[N_COINS] memory a
143
- ) internal pure returns (uint256[N_COINS] memory res) {
138
+ function arrayClone(uint256[N_COINS] memory a) internal pure returns (uint256[N_COINS] memory res) {
144
139
  for (uint256 i = 0; i < N_COINS; ++i) {
145
140
  res[i] = a[i];
146
141
  }