@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.
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol +5 -23
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol +2 -5
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol +6 -20
- package/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol +6 -27
- package/contracts/LiquidityMining/CrossChainMsg/libraries/ExcessivelySafeCall.sol +1 -2
- package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +1 -1
- package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +16 -17
- package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol +6 -7
- package/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol +7 -8
- package/contracts/LiquidityMining/PendleMerkleDistributor.sol +2 -11
- package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +14 -37
- package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol +19 -34
- package/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +4 -14
- package/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +4 -16
- package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +11 -39
- package/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +3 -10
- package/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +1 -1
- package/contracts/LiquidityMining/libraries/VeBalanceLib.sol +5 -20
- package/contracts/LiquidityMining/libraries/VeHistoryLib.sol +1 -3
- package/contracts/core/Market/MarketMathCore.sol +12 -37
- package/contracts/core/Market/OracleLib.sol +6 -24
- package/contracts/core/Market/PendleExternalRewardDistributor.sol +4 -10
- package/contracts/core/Market/PendleGauge.sol +3 -9
- package/contracts/core/Market/PendleMarket.sol +14 -39
- package/contracts/core/Market/PendleMarketFactory.sol +14 -21
- package/contracts/core/Market/v2/PendleGaugeV2.sol +8 -24
- package/contracts/core/Market/v2/PendleMarketFactoryV2.sol +7 -27
- package/contracts/core/Market/v2/PendleMarketV2.sol +13 -36
- package/contracts/core/Market/v3/PendleMarketFactoryV3.sol +137 -0
- package/contracts/core/Market/v3/PendleMarketV3.sol +360 -0
- package/contracts/core/RewardManager/PendleLinearDistributor.sol +143 -0
- package/contracts/core/RewardManager/RewardManager.sol +14 -7
- package/contracts/core/RewardManager/RewardManagerAbstract.sol +5 -17
- package/contracts/core/StandardizedYield/SYBase.sol +10 -40
- package/contracts/core/StandardizedYield/SYBaseUpg.sol +197 -0
- package/contracts/core/StandardizedYield/SYBaseWithRewards.sol +9 -41
- package/contracts/core/StandardizedYield/SYBaseWithRewardsUpg.sol +88 -0
- package/contracts/core/StandardizedYield/SYUtils.sol +1 -4
- package/contracts/core/StandardizedYield/StEthHelper.sol +3 -9
- package/contracts/core/StandardizedYield/implementations/AaveV3/PendleAaveV3SY.sol +94 -0
- package/contracts/core/StandardizedYield/implementations/AaveV3/libraries/AaveAdapterLib.sol +19 -0
- package/contracts/core/StandardizedYield/implementations/AaveV3/libraries/WadRayMath.sol +126 -0
- package/contracts/core/StandardizedYield/implementations/Ankr/PendleAnkrBNBSY.sol +4 -12
- package/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol +5 -19
- package/contracts/core/StandardizedYield/implementations/BalancerStable/AuraEthxBbAWethSY.sol +4 -14
- package/contracts/core/StandardizedYield/implementations/BalancerStable/AuraSwEthBbAWethSYV2.sol +4 -14
- package/contracts/core/StandardizedYield/implementations/BalancerStable/{PendleAuraWethVethSY.sol → AuraWethVethSYUpg.sol} +13 -20
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol +3 -7
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol +12 -29
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol +12 -29
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol +12 -29
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol +14 -39
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWstethAnkreth.sol +7 -28
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +13 -30
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreviewProxy.sol +1 -1
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreviewV4.sol +50 -153
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreviewV5.sol +50 -157
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol +4 -16
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol +6 -25
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol +36 -34
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol +4 -13
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol +20 -58
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol +28 -79
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV3Upg.sol +310 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol +1 -3
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol +2 -6
- package/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol +5 -13
- package/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol +9 -29
- package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol +2 -8
- package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol +1 -5
- package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol +8 -19
- package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol +7 -25
- package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol +8 -27
- package/contracts/core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkReceiver.sol +2 -2
- package/contracts/core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkRelayer.sol +4 -9
- package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol +3 -15
- package/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol +5 -23
- package/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol +10 -40
- package/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol +2 -8
- package/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol +2 -7
- package/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol +5 -20
- package/contracts/core/StandardizedYield/implementations/Flux/FluxTokenLib.sol +6 -4
- package/contracts/core/StandardizedYield/implementations/Flux/PendleFluxLendingSY.sol +3 -11
- package/contracts/core/StandardizedYield/implementations/GLP/GLPPreviewHelper.sol +3 -9
- package/contracts/core/StandardizedYield/implementations/GLP/GMTokenPricingHelper.sol +115 -0
- package/contracts/core/StandardizedYield/implementations/GLP/PendleGMV2TokenSY.sol +134 -0
- package/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol +5 -19
- package/contracts/core/StandardizedYield/implementations/HMX/HLPPricingHelper.sol +3 -4
- package/contracts/core/StandardizedYield/implementations/HMX/PendleHlpSY.sol +18 -25
- package/contracts/core/StandardizedYield/implementations/Kyber/KyberMathHelper.sol +425 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/KyberNftManagerBaseUpg.sol +438 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/PendleKyberElasticSYUpg.sol +155 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/FullMath.sol +123 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/LiqDeltaMath.sol +17 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/LiquidityMath.sol +74 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/MathConstants.sol +19 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/QtyDeltaMath.sol +103 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/QuadMath.sol +31 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/ReinvestmentMath.sol +26 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/SafeCast.sol +73 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/SwapMath.sol +272 -0
- package/contracts/core/StandardizedYield/implementations/Kyber/libraries/TickMath.sol +223 -0
- package/contracts/core/StandardizedYield/implementations/MUX/MlpPricingHelper.sol +26 -0
- package/contracts/core/StandardizedYield/implementations/MUX/PendleMlpSY.sol +195 -0
- package/contracts/core/StandardizedYield/implementations/MantleStakedEth/PendleMantleStakedEthSY.sol +12 -41
- package/contracts/core/StandardizedYield/implementations/MantleStakedEth/PendleOracleForSyProxy.sol +1 -1
- package/contracts/core/StandardizedYield/implementations/PendleArbitrumStakedEthSY.sol +13 -42
- package/contracts/core/StandardizedYield/implementations/PendleBridgedLSDSY.sol +4 -11
- package/contracts/core/StandardizedYield/implementations/PendleERC4626SY.sol +4 -16
- package/contracts/core/StandardizedYield/implementations/PendleEUSDSY.sol +3 -11
- package/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol +3 -11
- package/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol +5 -18
- package/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol +3 -7
- package/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol +5 -18
- package/contracts/core/StandardizedYield/implementations/PendleWbEthSY.sol +3 -10
- package/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol +4 -12
- package/contracts/core/StandardizedYield/implementations/Silo/PendleSiloWithIncentiveSY.sol +157 -0
- package/contracts/core/StandardizedYield/implementations/Stader/PendleETHXSY.sol +4 -12
- package/contracts/core/StandardizedYield/implementations/Swell/PendleSwETH.sol +4 -12
- package/contracts/core/StandardizedYield/implementations/Thena/PendleThenaSY.sol +9 -29
- package/contracts/core/StandardizedYield/implementations/Thena/ThenaLpHelper.sol +3 -10
- package/contracts/core/StandardizedYield/implementations/Thena/ThenaMath.sol +9 -30
- package/contracts/core/StandardizedYield/implementations/Thena/ThenaPreview.sol +10 -40
- package/contracts/core/YieldContracts/InterestManagerYT.sol +6 -8
- package/contracts/core/YieldContracts/PendlePrincipalToken.sol +1 -1
- package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +2 -3
- package/contracts/core/YieldContracts/PendleYieldToken.sol +17 -44
- package/contracts/core/YieldContractsV2/InterestManagerYTV2.sol +5 -14
- package/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol +1 -1
- package/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol +2 -3
- package/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol +13 -48
- package/contracts/core/erc20/PendleERC20.sol +2 -8
- package/contracts/core/erc20/PendleERC20Permit.sol +2 -6
- package/contracts/core/erc20/PendleERC20PermitUpg.sol +82 -0
- package/contracts/core/erc20/PendleERC20Upg.sol +334 -0
- package/contracts/core/libraries/ArrayLib.sol +7 -8
- package/contracts/core/libraries/BaseSplitCodeFactory.sol +1 -6
- package/contracts/core/libraries/Errors.sol +19 -1
- package/contracts/core/libraries/ExpiryUtilsLib.sol +3 -26
- package/contracts/core/libraries/StringLib.sol +5 -21
- package/contracts/core/libraries/TokenHelper.sol +3 -3
- package/contracts/core/libraries/math/LogExpMath.sol +1 -4
- package/contracts/core/libraries/math/PMath.sol +13 -15
- package/contracts/interfaces/AaveV3/IAaveV3AToken.sol +15 -0
- package/contracts/interfaces/AaveV3/IAaveV3Pool.sol +11 -0
- package/contracts/interfaces/Balancer/IComposableStable.sol +3 -4
- package/contracts/interfaces/Balancer/IERC4626LinearPool.sol +2 -10
- package/contracts/interfaces/Balancer/IMetaStablePool.sol +3 -11
- package/contracts/interfaces/Balancer/IVault.sol +3 -8
- package/contracts/interfaces/BinanceEth/IWBETH.sol +1 -1
- package/contracts/interfaces/Camelot/ICamelotNFTFactory.sol +1 -3
- package/contracts/interfaces/Camelot/ICamelotNFTHandler.sol +2 -10
- package/contracts/interfaces/Camelot/ICamelotNitroPool.sol +0 -1
- package/contracts/interfaces/Camelot/ICamelotNitroPoolFactory.sol +3 -12
- package/contracts/interfaces/Camelot/ICamelotPair.sol +5 -25
- package/contracts/interfaces/Camelot/ICamelotRouter.sol +1 -5
- package/contracts/interfaces/Camelot/IXGrail.sol +3 -11
- package/contracts/interfaces/ConvexCurve/IBooster.sol +1 -3
- package/contracts/interfaces/Curve/ICrvPool.sol +3 -12
- package/contracts/interfaces/Curve/ITriCrvPool.sol +2 -9
- package/contracts/interfaces/Flux/IFluxErc20.sol +1 -1
- package/contracts/interfaces/Flux/IFluxInterestRateModel.sol +1 -5
- package/contracts/interfaces/GMX/IGMXPriceHelper.sol +6 -0
- package/contracts/interfaces/GMX/IGMXVault.sol +2 -9
- package/contracts/interfaces/GMX/IRewardRouterV2.sol +1 -4
- package/contracts/interfaces/HMX/IHLPStaking.sol +1 -1
- package/contracts/interfaces/HMX/IHMXCalculator.sol +1 -1
- package/contracts/interfaces/HMX/IHMXCompounder.sol +1 -1
- package/contracts/interfaces/HMX/IHMXStaking.sol +1 -1
- package/contracts/interfaces/HMX/IHMXVester.sol +1 -1
- package/contracts/interfaces/IApeStaking.sol +3 -9
- package/contracts/interfaces/IBenQiInterestRateModel.sol +1 -5
- package/contracts/interfaces/IDiamondCut.sol +1 -5
- package/contracts/interfaces/IDiamondLoupe.sol +1 -3
- package/contracts/interfaces/ILayerZeroReceiver.sol +1 -6
- package/contracts/interfaces/IPActionAddRemoveLiqV3.sol +10 -2
- package/contracts/interfaces/IPActionInfoStatic.sol +4 -7
- package/contracts/interfaces/IPActionMarketAuxStatic.sol +5 -9
- package/contracts/interfaces/IPActionMarketCoreStatic.sol +118 -58
- package/contracts/interfaces/IPActionMintRedeemStatic.sol +38 -21
- package/contracts/interfaces/IPActionMiscV3.sol +51 -26
- package/contracts/interfaces/IPActionStorageStatic.sol +5 -1
- package/contracts/interfaces/IPAllActionTypeV3.sol +1 -0
- package/contracts/interfaces/IPBulkSeller.sol +49 -0
- package/contracts/interfaces/IPBulkSellerFactory.sol +12 -0
- package/contracts/interfaces/IPBulkSellerSYCallback.sol +6 -0
- package/contracts/interfaces/IPFeeDistributor.sol +1 -3
- package/contracts/interfaces/IPFeeDistributorV2.sol +8 -7
- package/contracts/interfaces/IPGaugeController.sol +2 -8
- package/contracts/interfaces/IPGaugeControllerMainchain.sol +1 -5
- package/contracts/interfaces/IPInterestManagerYT.sol +3 -3
- package/contracts/interfaces/IPInterestManagerYTV2.sol +1 -4
- package/contracts/interfaces/IPLimitRouter.sol +24 -19
- package/contracts/interfaces/IPLinearDistributor.sol +21 -0
- package/contracts/interfaces/IPMarket.sol +4 -17
- package/contracts/interfaces/IPMarketFactory.sol +2 -13
- package/contracts/interfaces/IPMarketFactoryV3.sol +24 -0
- package/contracts/interfaces/IPMarketV3.sol +8 -0
- package/contracts/interfaces/IPOffchainStorage.sol +11 -0
- package/contracts/interfaces/IPPriceFeed.sol +6 -0
- package/contracts/interfaces/IPPtOracle.sol +2 -9
- package/contracts/interfaces/IPRouterHelper.sol +11 -7
- package/contracts/interfaces/IPRouterStatic.sol +1 -3
- package/contracts/interfaces/IPVotingController.sol +7 -19
- package/contracts/interfaces/IPVotingEscrowMainchain.sol +2 -8
- package/contracts/interfaces/IPYieldToken.sol +2 -8
- package/contracts/interfaces/IPYieldTokenV2.sol +1 -6
- package/contracts/interfaces/IPendlePreviewHelper.sol +2 -8
- package/contracts/interfaces/IRewardManager.sol +1 -4
- package/contracts/interfaces/IStETH.sol +1 -4
- package/contracts/interfaces/IStandardizedYield.sol +9 -16
- package/contracts/interfaces/IStargateLP.sol +0 -3
- package/contracts/interfaces/IStargateRouter.sol +1 -5
- package/contracts/interfaces/Kyber/IKyberElasticFactory.sol +157 -0
- package/contracts/interfaces/Kyber/IKyberElasticPool.sol +101 -0
- package/contracts/interfaces/Kyber/IKyberElasticRouter.sol +98 -0
- package/contracts/interfaces/Kyber/IKyberLiquidityMining.sol +209 -0
- package/contracts/interfaces/Kyber/IKyberMathHelper.sol +28 -0
- package/contracts/interfaces/Kyber/IKyberPositionManager.sol +179 -0
- package/contracts/interfaces/Lybra/IEUSD.sol +1 -1
- package/contracts/interfaces/MUX/IMUXRewardRouter.sol +139 -0
- package/contracts/interfaces/Silo/ISilo.sol +298 -0
- package/contracts/interfaces/Silo/ISiloIncentiveController.sol +16 -0
- package/contracts/interfaces/Silo/ISiloLens.sol +6 -0
- package/contracts/interfaces/Stader/IStaderStakeManager.sol +2 -2
- package/contracts/interfaces/Thena/IThenaFactory.sol +1 -5
- package/contracts/interfaces/Thena/IThenaGaugeV2.sol +1 -2
- package/contracts/interfaces/Thena/IThenaPair.sol +3 -5
- package/contracts/limit/LimitMathCore.sol +69 -60
- package/contracts/limit/{PendleOrderMixin.sol → LimitRouterBase.sol} +96 -79
- package/contracts/limit/PendleLimitRouter.sol +9 -13
- package/contracts/offchain-helpers/AutomateReady.sol +17 -32
- package/contracts/offchain-helpers/BaseSplitCodeFactoryContract.sol +6 -3
- package/contracts/offchain-helpers/BoringLpSeller.sol +4 -17
- package/contracts/offchain-helpers/BoringPtSeller.sol +2 -7
- package/contracts/offchain-helpers/Broadcaster.sol +1 -1
- package/contracts/offchain-helpers/BytesLib.sol +26 -14
- package/contracts/offchain-helpers/EmptyUUPS.sol +0 -1
- package/contracts/offchain-helpers/LegacyNFTHelper.sol +4 -23
- package/contracts/offchain-helpers/LimitBackendHelper.sol +25 -16
- package/contracts/offchain-helpers/MarketExchangeRateLib.sol +2 -13
- package/contracts/offchain-helpers/Multicall2.sol +2 -7
- package/contracts/offchain-helpers/PendleMulticallV1.sol +7 -7
- package/contracts/offchain-helpers/PendleMulticallV2.sol +12 -13
- package/contracts/offchain-helpers/PendleOffchainStorage.sol +59 -0
- package/contracts/offchain-helpers/SimulateHelper.sol +6 -7
- package/contracts/offchain-helpers/errors/SDKErrorsDirectory.sol +15 -1
- package/contracts/oracles/PendleLpOracleLib.sol +9 -10
- package/contracts/oracles/PendlePtOracle.sol +8 -19
- package/contracts/oracles/PendlePtOracleLib.sol +8 -13
- package/contracts/oracles/samples/PendleLpGlpOracle.sol +6 -10
- package/contracts/oracles/samples/PendlePtGlpOracle.sol +6 -10
- package/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol +8 -15
- package/contracts/router/ActionAddRemoveLiqV3.sol +147 -52
- package/contracts/router/ActionCallbackV3.sol +11 -4
- package/contracts/router/ActionMiscV3.sol +43 -33
- package/contracts/router/ActionSwapPTV3.sol +18 -6
- package/contracts/router/ActionSwapYTV3.sol +42 -14
- package/contracts/router/PendleRouterHelper.sol +72 -40
- package/contracts/router/PendleRouterV3.sol +50 -50
- package/contracts/router/base/ActionBase.sol +86 -43
- package/contracts/router/base/CallbackHelper.sol +18 -20
- package/contracts/router/base/MarketApproxLib.sol +36 -32
- package/contracts/router/swap-aggregator/PendleSwap.sol +31 -7
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutorOptimistic.sol +63 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelper.sol +314 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperL2.sol +560 -0
- package/contracts/router/swap-aggregator/kyberswap/{IMetaAggregationRouterV2.sol → interfaces/IMetaAggregationRouterV2.sol} +11 -6
- package/contracts/router/swap-aggregator/kyberswap/{KyberInputScalingHelper.sol → l1-contracts/InputScalingHelper.sol} +70 -19
- package/contracts/router/swap-aggregator/kyberswap/{ScalingDataLib.sol → l1-contracts/ScalingDataLib.sol} +111 -53
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/BytesHelper.sol +29 -0
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataReader.sol +149 -0
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/CalldataWriter.sol +118 -0
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/Common.sol +42 -0
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/DexScaler.sol +382 -0
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/ExecutorReader.sol +61 -0
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/InputScalingHelperL2.sol +329 -0
- package/contracts/router/swap-aggregator/kyberswap/l2-contracts/ScalingDataL2Lib.sol +173 -0
- package/contracts/router/swap-aggregator/oneinch/I1inchAggregationRouterV5.sol +4 -10
- package/contracts/router/swap-aggregator/oneinch/OneInchAggregationRouterHelper.sol +20 -14
- package/deployments/1-core.json +5 -2
- package/deployments/1-markets/EPENDLE-SEP2024.json +12 -0
- package/deployments/1-markets/SFRAX-MARCH2024.json +10 -0
- package/deployments/1-markets/SILO-CRVUSD-MARCH2024.json +10 -0
- package/deployments/10-core.json +6 -3
- package/deployments/42161-core.json +5 -2
- package/deployments/42161-markets/AAVE-USDC-JUNE2024.json +11 -0
- package/deployments/42161-markets/ARBSILO-USDC-FEB2024.json +10 -0
- package/deployments/42161-markets/GM-ARB-USDC-MARCH2024.json +10 -0
- package/deployments/42161-markets/KYBER-AXLWSTETH-WSTETH-MARCH2024.json +10 -0
- package/deployments/42161-markets/MLP-MARCH2024.json +10 -0
- package/deployments/42161-markets/WSTETH-ARBITRUM-MARCH2024.json +11 -0
- package/deployments/42161-markets/WSTETHSILO-ETH-MARCH2024.json +11 -0
- package/deployments/56-core.json +5 -2
- package/deployments/merkle-distribution/2023-10-26.json +7300 -0
- package/deployments/merkle-distribution/2023-11-30.json +7730 -0
- package/package.json +8 -8
- package/contracts/limit/helpers/ArgumentsDecoder.sol +0 -47
- package/contracts/limit/helpers/Permitable.sol +0 -48
- package/contracts/limit/helpers/RevertReasonParser.sol +0 -75
- package/contracts/offchain-helpers/ChainlinkRelayerGelato.sol +0 -37
- package/contracts/offchain-helpers/PtAndLpToAsset.sol +0 -62
- package/contracts/offchain-helpers/router-static/PendleRouterStatic.sol +0 -19
- package/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol +0 -112
- package/contracts/offchain-helpers/router-static/base/ActionLimitOrdersStatic.sol +0 -145
- package/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol +0 -171
- package/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol +0 -582
- package/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol +0 -116
- package/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol +0 -64
- package/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol +0 -53
- package/contracts/offchain-helpers/router-static/base/StorageLayout.sol +0 -18
- package/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol +0 -231
- package/deployments/1-markets/BALANCER-LP-AURA-VETH-WETH-SEP2024.json +0 -8
- /package/contracts/router/swap-aggregator/kyberswap/{IAggregationExecutor.sol → interfaces/IAggregationExecutor.sol} +0 -0
- /package/deployments/1-markets/{BALANCER-LP-AURA-BBAWETHSWETH-SEP-26-2024.json → deprecated/BALANCER-LP-AURA-BBAWETHSWETH-SEP-26-2024.json} +0 -0
- /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
|
-
|
|
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{
|
|
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(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
|