@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
|
@@ -31,12 +31,7 @@ abstract contract PendleGaugeV2 is RewardManager, IPGauge {
|
|
|
31
31
|
uint256 public totalActiveSupply;
|
|
32
32
|
mapping(address => uint256) public activeBalance;
|
|
33
33
|
|
|
34
|
-
constructor(
|
|
35
|
-
address _SY,
|
|
36
|
-
address _vePendle,
|
|
37
|
-
address _gaugeController,
|
|
38
|
-
address _externalRewardDistributor
|
|
39
|
-
) {
|
|
34
|
+
constructor(address _SY, address _vePendle, address _gaugeController, address _externalRewardDistributor) {
|
|
40
35
|
SY = _SY;
|
|
41
36
|
vePENDLE = IPVeToken(_vePendle);
|
|
42
37
|
gaugeController = _gaugeController;
|
|
@@ -80,19 +75,13 @@ abstract contract PendleGaugeV2 is RewardManager, IPGauge {
|
|
|
80
75
|
activeBalance[user] = newActiveBalance;
|
|
81
76
|
}
|
|
82
77
|
|
|
83
|
-
function _calcVeBoostedLpBalance(
|
|
84
|
-
|
|
85
|
-
uint256 lpBalance
|
|
86
|
-
) internal virtual returns (uint256) {
|
|
87
|
-
(uint256 vePendleSupply, uint256 vePendleBalance) = vePENDLE.totalSupplyAndBalanceCurrent(
|
|
88
|
-
user
|
|
89
|
-
);
|
|
78
|
+
function _calcVeBoostedLpBalance(address user, uint256 lpBalance) internal virtual returns (uint256) {
|
|
79
|
+
(uint256 vePendleSupply, uint256 vePendleBalance) = vePENDLE.totalSupplyAndBalanceCurrent(user);
|
|
90
80
|
// Inspired by Curve's Gauge
|
|
91
81
|
uint256 veBoostedLpBalance = (lpBalance * TOKENLESS_PRODUCTION) / 100;
|
|
92
82
|
if (vePendleSupply > 0) {
|
|
93
83
|
veBoostedLpBalance +=
|
|
94
|
-
(((_totalStaked() * vePendleBalance) / vePendleSupply) *
|
|
95
|
-
(100 - TOKENLESS_PRODUCTION)) /
|
|
84
|
+
(((_totalStaked() * vePendleBalance) / vePendleSupply) * (100 - TOKENLESS_PRODUCTION)) /
|
|
96
85
|
100;
|
|
97
86
|
}
|
|
98
87
|
return veBoostedLpBalance;
|
|
@@ -116,16 +105,11 @@ abstract contract PendleGaugeV2 is RewardManager, IPGauge {
|
|
|
116
105
|
return activeBalance[user];
|
|
117
106
|
}
|
|
118
107
|
|
|
119
|
-
function _getRewardTokens()
|
|
120
|
-
internal
|
|
121
|
-
view
|
|
122
|
-
virtual
|
|
123
|
-
override
|
|
124
|
-
returns (address[] memory rewardTokens)
|
|
125
|
-
{
|
|
108
|
+
function _getRewardTokens() internal view virtual override returns (address[] memory rewardTokens) {
|
|
126
109
|
address[] memory SYRewards = IStandardizedYield(SY).getRewardTokens();
|
|
127
|
-
address[] memory externalRewards = IPExternalRewardDistributor(externalRewardDistributor)
|
|
128
|
-
|
|
110
|
+
address[] memory externalRewards = IPExternalRewardDistributor(externalRewardDistributor).getRewardTokens(
|
|
111
|
+
address(this)
|
|
112
|
+
);
|
|
129
113
|
|
|
130
114
|
rewardTokens = SYRewards.merge(externalRewards);
|
|
131
115
|
if (rewardTokens.contains(PENDLE)) return rewardTokens;
|
|
@@ -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/utils/structs/EnumerableSet.sol";
|
|
5
5
|
|
|
@@ -75,17 +75,11 @@ contract PendleMarketFactoryV2 is BoringOwnableUpgradeable, IPMarketFactory {
|
|
|
75
75
|
* @notice Create a market between PT and its corresponding SY with scalar & anchor config.
|
|
76
76
|
* Anyone is allowed to create a market on their own.
|
|
77
77
|
*/
|
|
78
|
-
function createNewMarket(
|
|
79
|
-
|
|
80
|
-
int256 scalarRoot,
|
|
81
|
-
int256 initialAnchor
|
|
82
|
-
) external returns (address market) {
|
|
83
|
-
if (!IPYieldContractFactory(yieldContractFactory).isPT(PT))
|
|
84
|
-
revert Errors.MarketFactoryInvalidPt();
|
|
78
|
+
function createNewMarket(address PT, int256 scalarRoot, int256 initialAnchor) external returns (address market) {
|
|
79
|
+
if (!IPYieldContractFactory(yieldContractFactory).isPT(PT)) revert Errors.MarketFactoryInvalidPt();
|
|
85
80
|
if (IPPrincipalToken(PT).isExpired()) revert Errors.MarketFactoryExpiredPt();
|
|
86
81
|
|
|
87
|
-
if (markets[PT][scalarRoot][initialAnchor] != address(0))
|
|
88
|
-
revert Errors.MarketFactoryMarketExists();
|
|
82
|
+
if (markets[PT][scalarRoot][initialAnchor] != address(0)) revert Errors.MarketFactoryMarketExists();
|
|
89
83
|
|
|
90
84
|
if (initialAnchor < minInitialAnchor)
|
|
91
85
|
revert Errors.MarketFactoryInitialAnchorTooLow(initialAnchor, minInitialAnchor);
|
|
@@ -93,14 +87,7 @@ contract PendleMarketFactoryV2 is BoringOwnableUpgradeable, IPMarketFactory {
|
|
|
93
87
|
market = BaseSplitCodeFactory._create2(
|
|
94
88
|
0,
|
|
95
89
|
bytes32(block.chainid),
|
|
96
|
-
abi.encode(
|
|
97
|
-
PT,
|
|
98
|
-
scalarRoot,
|
|
99
|
-
initialAnchor,
|
|
100
|
-
vePendle,
|
|
101
|
-
gaugeController,
|
|
102
|
-
externalRewardDistributor
|
|
103
|
-
),
|
|
90
|
+
abi.encode(PT, scalarRoot, initialAnchor, vePendle, gaugeController, externalRewardDistributor),
|
|
104
91
|
marketCreationCodeContractA,
|
|
105
92
|
marketCreationCodeSizeA,
|
|
106
93
|
marketCreationCodeContractB,
|
|
@@ -147,11 +134,7 @@ contract PendleMarketFactoryV2 is BoringOwnableUpgradeable, IPMarketFactory {
|
|
|
147
134
|
_emitNewMarketConfigEvent();
|
|
148
135
|
}
|
|
149
136
|
|
|
150
|
-
function setOverriddenFee(
|
|
151
|
-
address router,
|
|
152
|
-
uint80 newLnFeeRateRoot,
|
|
153
|
-
uint8 newReserveFeePercent
|
|
154
|
-
) public onlyOwner {
|
|
137
|
+
function setOverriddenFee(address router, uint80 newLnFeeRateRoot, uint8 newReserveFeePercent) public onlyOwner {
|
|
155
138
|
_verifyFeeConfig(newLnFeeRateRoot, newReserveFeePercent);
|
|
156
139
|
overriddenFee[router] = FeeConfig(newLnFeeRateRoot, newReserveFeePercent, true);
|
|
157
140
|
emit SetOverriddenFee(router, newLnFeeRateRoot, newReserveFeePercent);
|
|
@@ -166,10 +149,7 @@ contract PendleMarketFactoryV2 is BoringOwnableUpgradeable, IPMarketFactory {
|
|
|
166
149
|
if (newLnFeeRateRoot > maxLnFeeRateRoot)
|
|
167
150
|
revert Errors.MarketFactoryLnFeeRateRootTooHigh(newLnFeeRateRoot, maxLnFeeRateRoot);
|
|
168
151
|
if (newReserveFeePercent > maxReserveFeePercent)
|
|
169
|
-
revert Errors.MarketFactoryReserveFeePercentTooHigh(
|
|
170
|
-
newReserveFeePercent,
|
|
171
|
-
maxReserveFeePercent
|
|
172
|
-
);
|
|
152
|
+
revert Errors.MarketFactoryReserveFeePercentTooHigh(newReserveFeePercent, maxReserveFeePercent);
|
|
173
153
|
}
|
|
174
154
|
|
|
175
155
|
function _emitNewMarketConfigEvent() internal {
|
|
@@ -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/IPMarket.sol";
|
|
5
5
|
import "../../../interfaces/IPMarketFactory.sol";
|
|
@@ -64,19 +64,15 @@ contract PendleMarketV2 is PendleERC20Permit, PendleGaugeV2, IPMarket {
|
|
|
64
64
|
address _externalRewardDistributor
|
|
65
65
|
)
|
|
66
66
|
PendleERC20Permit(NAME, SYMBOL, 18)
|
|
67
|
-
PendleGaugeV2(
|
|
68
|
-
IPPrincipalToken(_PT).SY(),
|
|
69
|
-
_vePendle,
|
|
70
|
-
_gaugeController,
|
|
71
|
-
_externalRewardDistributor
|
|
72
|
-
)
|
|
67
|
+
PendleGaugeV2(IPPrincipalToken(_PT).SY(), _vePendle, _gaugeController, _externalRewardDistributor)
|
|
73
68
|
{
|
|
74
69
|
PT = IPPrincipalToken(_PT);
|
|
75
70
|
SY = IStandardizedYield(PT.SY());
|
|
76
71
|
YT = IPYieldToken(PT.YT());
|
|
77
72
|
|
|
78
|
-
(_storage.observationCardinality, _storage.observationCardinalityNext) = observations
|
|
79
|
-
|
|
73
|
+
(_storage.observationCardinality, _storage.observationCardinalityNext) = observations.initialize(
|
|
74
|
+
uint32(block.timestamp)
|
|
75
|
+
);
|
|
80
76
|
|
|
81
77
|
if (_scalarRoot <= 0) revert Errors.MarketScalarRootBelowZero(_scalarRoot);
|
|
82
78
|
|
|
@@ -98,12 +94,7 @@ contract PendleMarketV2 is PendleERC20Permit, PendleGaugeV2, IPMarket {
|
|
|
98
94
|
address receiver,
|
|
99
95
|
uint256 netSyDesired,
|
|
100
96
|
uint256 netPtDesired
|
|
101
|
-
)
|
|
102
|
-
external
|
|
103
|
-
nonReentrant
|
|
104
|
-
notExpired
|
|
105
|
-
returns (uint256 netLpOut, uint256 netSyUsed, uint256 netPtUsed)
|
|
106
|
-
{
|
|
97
|
+
) external nonReentrant notExpired returns (uint256 netLpOut, uint256 netSyUsed, uint256 netPtUsed) {
|
|
107
98
|
MarketState memory market = readState(msg.sender);
|
|
108
99
|
PYIndex index = YT.newIndex();
|
|
109
100
|
|
|
@@ -175,11 +166,7 @@ contract PendleMarketV2 is PendleERC20Permit, PendleGaugeV2, IPMarket {
|
|
|
175
166
|
MarketState memory market = readState(msg.sender);
|
|
176
167
|
|
|
177
168
|
uint256 netSyToReserve;
|
|
178
|
-
(netSyOut, netSyFee, netSyToReserve) = market.swapExactPtForSy(
|
|
179
|
-
YT.newIndex(),
|
|
180
|
-
exactPtIn,
|
|
181
|
-
block.timestamp
|
|
182
|
-
);
|
|
169
|
+
(netSyOut, netSyFee, netSyToReserve) = market.swapExactPtForSy(YT.newIndex(), exactPtIn, block.timestamp);
|
|
183
170
|
|
|
184
171
|
if (receiver != address(this)) IERC20(SY).safeTransfer(receiver, netSyOut);
|
|
185
172
|
IERC20(SY).safeTransfer(market.treasury, netSyToReserve);
|
|
@@ -214,11 +201,7 @@ contract PendleMarketV2 is PendleERC20Permit, PendleGaugeV2, IPMarket {
|
|
|
214
201
|
MarketState memory market = readState(msg.sender);
|
|
215
202
|
|
|
216
203
|
uint256 netSyToReserve;
|
|
217
|
-
(netSyIn, netSyFee, netSyToReserve) = market.swapSyForExactPt(
|
|
218
|
-
YT.newIndex(),
|
|
219
|
-
exactPtOut,
|
|
220
|
-
block.timestamp
|
|
221
|
-
);
|
|
204
|
+
(netSyIn, netSyFee, netSyToReserve) = market.swapSyForExactPt(YT.newIndex(), exactPtOut, block.timestamp);
|
|
222
205
|
|
|
223
206
|
if (receiver != address(this)) IERC20(PT).safeTransfer(receiver, exactPtOut);
|
|
224
207
|
IERC20(SY).safeTransfer(market.treasury, netSyToReserve);
|
|
@@ -262,9 +245,7 @@ contract PendleMarketV2 is PendleERC20Permit, PendleGaugeV2, IPMarket {
|
|
|
262
245
|
ORACLE
|
|
263
246
|
//////////////////////////////////////////////////////////////*/
|
|
264
247
|
|
|
265
|
-
function observe(
|
|
266
|
-
uint32[] memory secondsAgos
|
|
267
|
-
) external view returns (uint216[] memory lnImpliedRateCumulative) {
|
|
248
|
+
function observe(uint32[] memory secondsAgos) external view returns (uint216[] memory lnImpliedRateCumulative) {
|
|
268
249
|
return
|
|
269
250
|
observations.observe(
|
|
270
251
|
uint32(block.timestamp),
|
|
@@ -296,9 +277,9 @@ contract PendleMarketV2 is PendleERC20Permit, PendleGaugeV2, IPMarket {
|
|
|
296
277
|
market.totalSy = _storage.totalSy;
|
|
297
278
|
market.totalLp = totalSupply().Int();
|
|
298
279
|
|
|
299
|
-
(market.treasury, market.lnFeeRateRoot, market.reserveFeePercent) = IPMarketFactory(
|
|
300
|
-
|
|
301
|
-
)
|
|
280
|
+
(market.treasury, market.lnFeeRateRoot, market.reserveFeePercent) = IPMarketFactory(factory).getMarketConfig(
|
|
281
|
+
router
|
|
282
|
+
);
|
|
302
283
|
|
|
303
284
|
market.scalarRoot = scalarRoot;
|
|
304
285
|
market.expiry = expiry;
|
|
@@ -333,11 +314,7 @@ contract PendleMarketV2 is PendleERC20Permit, PendleGaugeV2, IPMarket {
|
|
|
333
314
|
TRIVIAL FUNCTIONS
|
|
334
315
|
//////////////////////////////////////////////////////////////*/
|
|
335
316
|
|
|
336
|
-
function readTokens()
|
|
337
|
-
external
|
|
338
|
-
view
|
|
339
|
-
returns (IStandardizedYield _SY, IPPrincipalToken _PT, IPYieldToken _YT)
|
|
340
|
-
{
|
|
317
|
+
function readTokens() external view returns (IStandardizedYield _SY, IPPrincipalToken _PT, IPYieldToken _YT) {
|
|
341
318
|
_SY = SY;
|
|
342
319
|
_PT = PT;
|
|
343
320
|
_YT = YT;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity ^0.8.17;
|
|
3
|
+
import "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
|
4
|
+
|
|
5
|
+
import "../../../interfaces/IPMarketV3.sol";
|
|
6
|
+
import "../../../interfaces/IPYieldContractFactory.sol";
|
|
7
|
+
import "../../../interfaces/IPMarketFactoryV3.sol";
|
|
8
|
+
|
|
9
|
+
import "../../libraries/BaseSplitCodeFactory.sol";
|
|
10
|
+
import "../../libraries/Errors.sol";
|
|
11
|
+
import "../../libraries/BoringOwnableUpgradeable.sol";
|
|
12
|
+
|
|
13
|
+
contract PendleMarketFactoryV3 is BoringOwnableUpgradeable, IPMarketFactoryV3 {
|
|
14
|
+
using EnumerableSet for EnumerableSet.AddressSet;
|
|
15
|
+
|
|
16
|
+
address public immutable marketCreationCodeContractA;
|
|
17
|
+
uint256 public immutable marketCreationCodeSizeA;
|
|
18
|
+
address public immutable marketCreationCodeContractB;
|
|
19
|
+
uint256 public immutable marketCreationCodeSizeB;
|
|
20
|
+
|
|
21
|
+
address public immutable yieldContractFactory;
|
|
22
|
+
address public immutable vePendle;
|
|
23
|
+
address public immutable gaugeController;
|
|
24
|
+
|
|
25
|
+
uint256 public immutable maxLnFeeRateRoot;
|
|
26
|
+
uint8 public constant maxReserveFeePercent = 100;
|
|
27
|
+
int256 public constant minInitialAnchor = PMath.IONE;
|
|
28
|
+
|
|
29
|
+
address public treasury;
|
|
30
|
+
uint8 public reserveFeePercent;
|
|
31
|
+
|
|
32
|
+
// router -> market -> lnFeeRateRoot. lnFeeRateRoot == 0 means no override
|
|
33
|
+
mapping(address => mapping(address => uint80)) internal overriddenFee;
|
|
34
|
+
|
|
35
|
+
// PT -> scalarRoot -> initialAnchor
|
|
36
|
+
mapping(address => mapping(int256 => mapping(int256 => mapping(uint80 => address)))) internal markets;
|
|
37
|
+
EnumerableSet.AddressSet internal allMarkets;
|
|
38
|
+
|
|
39
|
+
constructor(
|
|
40
|
+
address _yieldContractFactory,
|
|
41
|
+
address _marketCreationCodeContractA,
|
|
42
|
+
uint256 _marketCreationCodeSizeA,
|
|
43
|
+
address _marketCreationCodeContractB,
|
|
44
|
+
uint256 _marketCreationCodeSizeB,
|
|
45
|
+
address _treasury,
|
|
46
|
+
uint8 _reserveFeePercent,
|
|
47
|
+
address _vePendle,
|
|
48
|
+
address _gaugeController
|
|
49
|
+
) initializer {
|
|
50
|
+
yieldContractFactory = _yieldContractFactory;
|
|
51
|
+
maxLnFeeRateRoot = uint256(LogExpMath.ln(int256((105 * PMath.IONE) / 100))); // ln(1.05)
|
|
52
|
+
|
|
53
|
+
marketCreationCodeContractA = _marketCreationCodeContractA;
|
|
54
|
+
marketCreationCodeSizeA = _marketCreationCodeSizeA;
|
|
55
|
+
marketCreationCodeContractB = _marketCreationCodeContractB;
|
|
56
|
+
marketCreationCodeSizeB = _marketCreationCodeSizeB;
|
|
57
|
+
|
|
58
|
+
__BoringOwnable_init();
|
|
59
|
+
setTreasuryAndFeeReserve(_treasury, _reserveFeePercent);
|
|
60
|
+
|
|
61
|
+
vePendle = _vePendle;
|
|
62
|
+
gaugeController = _gaugeController;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @notice Create a market between PT and its corresponding SY with scalar & anchor config.
|
|
67
|
+
* Anyone is allowed to create a market on their own.
|
|
68
|
+
*/
|
|
69
|
+
function createNewMarket(
|
|
70
|
+
address PT,
|
|
71
|
+
int256 scalarRoot,
|
|
72
|
+
int256 initialAnchor,
|
|
73
|
+
uint80 lnFeeRateRoot
|
|
74
|
+
) external returns (address market) {
|
|
75
|
+
if (!IPYieldContractFactory(yieldContractFactory).isPT(PT)) revert Errors.MarketFactoryInvalidPt();
|
|
76
|
+
if (IPPrincipalToken(PT).isExpired()) revert Errors.MarketFactoryExpiredPt();
|
|
77
|
+
if (lnFeeRateRoot > maxLnFeeRateRoot)
|
|
78
|
+
revert Errors.MarketFactoryLnFeeRateRootTooHigh(lnFeeRateRoot, maxLnFeeRateRoot);
|
|
79
|
+
|
|
80
|
+
if (markets[PT][scalarRoot][initialAnchor][lnFeeRateRoot] != address(0))
|
|
81
|
+
revert Errors.MarketFactoryMarketExists();
|
|
82
|
+
|
|
83
|
+
if (initialAnchor < minInitialAnchor)
|
|
84
|
+
revert Errors.MarketFactoryInitialAnchorTooLow(initialAnchor, minInitialAnchor);
|
|
85
|
+
|
|
86
|
+
market = BaseSplitCodeFactory._create2(
|
|
87
|
+
0,
|
|
88
|
+
bytes32(block.chainid),
|
|
89
|
+
abi.encode(PT, scalarRoot, initialAnchor, lnFeeRateRoot, vePendle, gaugeController),
|
|
90
|
+
marketCreationCodeContractA,
|
|
91
|
+
marketCreationCodeSizeA,
|
|
92
|
+
marketCreationCodeContractB,
|
|
93
|
+
marketCreationCodeSizeB
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
markets[PT][scalarRoot][initialAnchor][lnFeeRateRoot] = market;
|
|
97
|
+
|
|
98
|
+
if (!allMarkets.add(market)) assert(false);
|
|
99
|
+
|
|
100
|
+
emit CreateNewMarket(market, PT, scalarRoot, initialAnchor, lnFeeRateRoot);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
function getMarketConfig(
|
|
104
|
+
address market,
|
|
105
|
+
address router
|
|
106
|
+
) external view returns (address _treasury, uint80 _overriddenFee, uint8 _reserveFeePercent) {
|
|
107
|
+
(_treasury, _reserveFeePercent) = (treasury, reserveFeePercent);
|
|
108
|
+
_overriddenFee = overriddenFee[router][market];
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/// @dev for gas-efficient verification of market
|
|
112
|
+
function isValidMarket(address market) external view returns (bool) {
|
|
113
|
+
return allMarkets.contains(market);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function setTreasuryAndFeeReserve(address newTreasury, uint8 newReserveFeePercent) public onlyOwner {
|
|
117
|
+
if (newTreasury == address(0)) revert Errors.MarketFactoryZeroTreasury();
|
|
118
|
+
if (newReserveFeePercent > maxReserveFeePercent)
|
|
119
|
+
revert Errors.MarketFactoryReserveFeePercentTooHigh(newReserveFeePercent, maxReserveFeePercent);
|
|
120
|
+
|
|
121
|
+
treasury = newTreasury;
|
|
122
|
+
reserveFeePercent = newReserveFeePercent;
|
|
123
|
+
|
|
124
|
+
emit NewTreasuryAndFeeReserve(newTreasury, newReserveFeePercent);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
function setOverriddenFee(address router, address market, uint80 newFee) public onlyOwner {
|
|
128
|
+
if (!allMarkets.contains(market)) revert Errors.MFNotPendleMarket(market);
|
|
129
|
+
|
|
130
|
+
uint80 marketFee = IPMarketV3(market).getNonOverrideLnFeeRateRoot();
|
|
131
|
+
if (newFee >= marketFee) revert Errors.MarketFactoryOverriddenFeeTooHigh(newFee, marketFee);
|
|
132
|
+
|
|
133
|
+
// NOTE: newFee = 0 allowed !!
|
|
134
|
+
overriddenFee[router][market] = newFee;
|
|
135
|
+
emit SetOverriddenFee(router, market, newFee);
|
|
136
|
+
}
|
|
137
|
+
}
|