@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
|
@@ -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{
|
|
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
|
-
|
|
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{
|
|
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
|
-
|
|
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
|
}
|
package/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol
CHANGED
|
@@ -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(
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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
|
|
40
|
+
uint64 /*_nonce*/,
|
|
41
41
|
bytes calldata _payload
|
|
42
42
|
) external onlyLzEndpoint mustOriginateFromTrustedRemote(_srcChainId, _path) {
|
|
43
43
|
int256 rate = abi.decode(_payload, (int256));
|
package/contracts/core/StandardizedYield/implementations/ChainlinkRelayer/PendleChainlinkRelayer.sol
CHANGED
|
@@ -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 {
|
|
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{
|
|
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) {
|
package/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol
CHANGED
|
@@ -23,45 +23,25 @@ library Curve3CrvPoolHelper {
|
|
|
23
23
|
|
|
24
24
|
// previewDeposit at the end of the file
|
|
25
25
|
|
|
26
|
-
function preview3CrvRedeem(
|
|
27
|
-
|
|
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
|
}
|
package/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol
CHANGED
|
@@ -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
|
}
|
package/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol
CHANGED
|
@@ -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
|
}
|