@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
|
@@ -37,7 +37,7 @@ contract PendleRouterV3 is Proxy, IDiamondLoupe {
|
|
|
37
37
|
uint256 nFacets = facets_.length;
|
|
38
38
|
|
|
39
39
|
IDiamondCut.FacetCut[] memory cuts = new IDiamondCut.FacetCut[](nFacets);
|
|
40
|
-
for (uint256 i; i < nFacets;) {
|
|
40
|
+
for (uint256 i; i < nFacets; ) {
|
|
41
41
|
cuts[i].facetAddress = facets_[i].facetAddress;
|
|
42
42
|
cuts[i].action = IDiamondCut.FacetCutAction.Add;
|
|
43
43
|
cuts[i].functionSelectors = facets_[i].functionSelectors;
|
|
@@ -58,7 +58,7 @@ contract PendleRouterV3 is Proxy, IDiamondLoupe {
|
|
|
58
58
|
uint256 numFacets = facetAddresses_.length;
|
|
59
59
|
|
|
60
60
|
facets_ = new Facet[](numFacets);
|
|
61
|
-
for (uint256 i; i < numFacets;) {
|
|
61
|
+
for (uint256 i; i < numFacets; ) {
|
|
62
62
|
facets_[i].facetAddress = facetAddresses_[i];
|
|
63
63
|
facets_[i].functionSelectors = facetFunctionSelectors(facetAddresses_[i]);
|
|
64
64
|
unchecked {
|
|
@@ -77,38 +77,38 @@ contract PendleRouterV3 is Proxy, IDiamondLoupe {
|
|
|
77
77
|
}
|
|
78
78
|
if (facet == ACTION_ADD_REMOVE_LIQ) {
|
|
79
79
|
res = new bytes4[](12);
|
|
80
|
-
res[0] =
|
|
80
|
+
res[0] = 0x12599ac6; // addLiquiditySingleToken
|
|
81
81
|
res[1] = 0x2756ce06; // addLiquidityDualTokenAndPt
|
|
82
82
|
res[2] = 0x3dbe1c55; // addLiquiditySingleTokenKeepYt
|
|
83
|
-
res[3] =
|
|
84
|
-
res[4] =
|
|
85
|
-
res[5] =
|
|
86
|
-
res[6] =
|
|
87
|
-
res[7] =
|
|
88
|
-
res[8] =
|
|
89
|
-
res[9] =
|
|
90
|
-
res[10] =
|
|
91
|
-
res[11] =
|
|
83
|
+
res[3] = 0x4e390267; // addLiquiditySinglePt
|
|
84
|
+
res[4] = 0x58bda475; // addLiquiditySingleSy
|
|
85
|
+
res[5] = 0x60da0860; // removeLiquiditySingleToken
|
|
86
|
+
res[6] = 0x6b77ac9e; // removeLiquiditySinglePt
|
|
87
|
+
res[7] = 0x844384aa; // addLiquiditySingleSyKeepYt
|
|
88
|
+
res[8] = 0x97ee279e; // addLiquidityDualSyAndPt
|
|
89
|
+
res[9] = 0xb00f09d7; // removeLiquidityDualTokenAndPt
|
|
90
|
+
res[10] = 0xb7d75b8b; // removeLiquidityDualSyAndPt
|
|
91
|
+
res[11] = 0xd13b4fdc; // removeLiquiditySingleSy
|
|
92
92
|
}
|
|
93
93
|
if (facet == ACTION_SWAP_YT) {
|
|
94
94
|
res = new bytes4[](6);
|
|
95
|
-
res[0] =
|
|
95
|
+
res[0] = 0x05eb5327; // swapExactYtForToken
|
|
96
96
|
res[1] = 0x448b9b95; // swapExactYtForPt
|
|
97
|
-
res[2] =
|
|
98
|
-
res[3] =
|
|
97
|
+
res[2] = 0x7b8b4b95; // swapExactSyForYt
|
|
98
|
+
res[3] = 0x80c4d566; // swapExactYtForSy
|
|
99
99
|
res[4] = 0xc861a898; // swapExactPtForYt
|
|
100
|
-
res[5] =
|
|
100
|
+
res[5] = 0xed48907e; // swapExactTokenForYt
|
|
101
101
|
}
|
|
102
102
|
if (facet == ACTION_SWAP_PT) {
|
|
103
103
|
res = new bytes4[](4);
|
|
104
|
-
res[0] =
|
|
105
|
-
res[1] =
|
|
106
|
-
res[2] =
|
|
107
|
-
res[3] =
|
|
104
|
+
res[0] = 0x2a50917c; // swapExactSyForPt
|
|
105
|
+
res[1] = 0x3346d3a3; // swapExactPtForSy
|
|
106
|
+
res[2] = 0x594a88cc; // swapExactPtForToken
|
|
107
|
+
res[3] = 0xc81f847a; // swapExactTokenForPt
|
|
108
108
|
}
|
|
109
109
|
if (facet == ACTION_CALLBACK) {
|
|
110
110
|
res = new bytes4[](2);
|
|
111
|
-
res[0] =
|
|
111
|
+
res[0] = 0xeb3a7d47; // limitRouterCallback
|
|
112
112
|
res[1] = 0xfa483e72; // swapCallback
|
|
113
113
|
}
|
|
114
114
|
if (facet == ACTION_MISC) {
|
|
@@ -129,86 +129,86 @@ contract PendleRouterV3 is Proxy, IDiamondLoupe {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
function facetAddress(bytes4 sig) public view returns (address) {
|
|
132
|
-
if (sig <
|
|
132
|
+
if (sig < 0x6b77ac9e) {
|
|
133
133
|
if (sig < 0x3dbe1c55) {
|
|
134
134
|
if (sig < 0x2d8f9d8d) {
|
|
135
135
|
if (sig < 0x1a8631b2) {
|
|
136
|
-
if (sig ==
|
|
137
|
-
if (sig ==
|
|
136
|
+
if (sig == 0x05eb5327) return ACTION_SWAP_YT; //swapExactYtForToken
|
|
137
|
+
if (sig == 0x12599ac6) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleToken
|
|
138
138
|
} else {
|
|
139
139
|
if (sig == 0x1a8631b2) return ACTION_MISC; //mintPyFromSy
|
|
140
|
-
if (sig == 0x237287c8) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySinglePt
|
|
141
140
|
if (sig == 0x2756ce06) return ACTION_ADD_REMOVE_LIQ; //addLiquidityDualTokenAndPt
|
|
141
|
+
if (sig == 0x2a50917c) return ACTION_SWAP_PT; //swapExactSyForPt
|
|
142
142
|
}
|
|
143
143
|
} else {
|
|
144
|
-
if (sig <
|
|
144
|
+
if (sig < 0x3346d3a3) {
|
|
145
145
|
if (sig == 0x2d8f9d8d) return ACTION_MISC; //boostMarkets
|
|
146
146
|
if (sig == 0x2e071dc6) return ACTION_MISC; //mintSyFromToken
|
|
147
147
|
} else {
|
|
148
|
-
if (sig ==
|
|
148
|
+
if (sig == 0x3346d3a3) return ACTION_SWAP_PT; //swapExactPtForSy
|
|
149
149
|
if (sig == 0x339748cb) return ACTION_MISC; //redeemPyToSy
|
|
150
150
|
if (sig == 0x339a5572) return ACTION_MISC; //redeemSyToToken
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
} else {
|
|
154
|
-
if (sig <
|
|
154
|
+
if (sig < 0x58bda475) {
|
|
155
155
|
if (sig < 0x47f1de22) {
|
|
156
156
|
if (sig == 0x3dbe1c55) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleTokenKeepYt
|
|
157
157
|
if (sig == 0x448b9b95) return ACTION_SWAP_YT; //swapExactYtForPt
|
|
158
158
|
} else {
|
|
159
159
|
if (sig == 0x47f1de22) return ACTION_MISC; //redeemPyToToken
|
|
160
|
+
if (sig == 0x4e390267) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySinglePt
|
|
160
161
|
if (sig == 0x52ef6b2c) return address(this); //facetAddresses
|
|
161
|
-
if (sig == 0x587e3950) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySingleToken
|
|
162
162
|
}
|
|
163
163
|
} else {
|
|
164
|
-
if (sig <
|
|
165
|
-
if (sig ==
|
|
166
|
-
if (sig ==
|
|
164
|
+
if (sig < 0x5d3e105c) {
|
|
165
|
+
if (sig == 0x58bda475) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleSy
|
|
166
|
+
if (sig == 0x594a88cc) return ACTION_SWAP_PT; //swapExactPtForToken
|
|
167
167
|
} else {
|
|
168
|
+
if (sig == 0x5d3e105c) return ACTION_MISC; //swapTokenToToken
|
|
169
|
+
if (sig == 0x60da0860) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySingleToken
|
|
168
170
|
if (sig == 0x60fc8466) return ACTION_MISC; //multicall
|
|
169
|
-
if (sig == 0x7a0ed627) return address(this); //facets
|
|
170
|
-
if (sig == 0x7a95dddd) return ACTION_SWAP_PT; //swapExactPtForSy
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
}
|
|
174
174
|
} else {
|
|
175
175
|
if (sig < 0xbd61951d) {
|
|
176
|
-
if (sig <
|
|
177
|
-
if (sig <
|
|
178
|
-
if (sig ==
|
|
179
|
-
if (sig ==
|
|
176
|
+
if (sig < 0x97ee279e) {
|
|
177
|
+
if (sig < 0x7b8b4b95) {
|
|
178
|
+
if (sig == 0x6b77ac9e) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySinglePt
|
|
179
|
+
if (sig == 0x7a0ed627) return address(this); //facets
|
|
180
180
|
} else {
|
|
181
|
-
if (sig ==
|
|
182
|
-
if (sig ==
|
|
183
|
-
if (sig ==
|
|
181
|
+
if (sig == 0x7b8b4b95) return ACTION_SWAP_YT; //swapExactSyForYt
|
|
182
|
+
if (sig == 0x80c4d566) return ACTION_SWAP_YT; //swapExactYtForSy
|
|
183
|
+
if (sig == 0x844384aa) return ACTION_ADD_REMOVE_LIQ; //addLiquiditySingleSyKeepYt
|
|
184
184
|
}
|
|
185
185
|
} else {
|
|
186
|
-
if (sig <
|
|
186
|
+
if (sig < 0xadfca15e) {
|
|
187
|
+
if (sig == 0x97ee279e) return ACTION_ADD_REMOVE_LIQ; //addLiquidityDualSyAndPt
|
|
187
188
|
if (sig == 0xa89eba4a) return ACTION_MISC; //swapTokenToTokenViaSy
|
|
188
|
-
if (sig == 0xadfca15e) return address(this); //facetFunctionSelectors
|
|
189
189
|
} else {
|
|
190
|
+
if (sig == 0xadfca15e) return address(this); //facetFunctionSelectors
|
|
190
191
|
if (sig == 0xb00f09d7) return ACTION_ADD_REMOVE_LIQ; //removeLiquidityDualTokenAndPt
|
|
191
|
-
if (sig == 0xb5617576) return ACTION_CALLBACK; //normalFillCallback
|
|
192
192
|
if (sig == 0xb7d75b8b) return ACTION_ADD_REMOVE_LIQ; //removeLiquidityDualSyAndPt
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
} else {
|
|
196
|
-
if (sig <
|
|
196
|
+
if (sig < 0xd13b4fdc) {
|
|
197
197
|
if (sig < 0xc861a898) {
|
|
198
198
|
if (sig == 0xbd61951d) return ACTION_MISC; //simulate
|
|
199
|
-
if (sig ==
|
|
199
|
+
if (sig == 0xc81f847a) return ACTION_SWAP_PT; //swapExactTokenForPt
|
|
200
200
|
} else {
|
|
201
201
|
if (sig == 0xc861a898) return ACTION_SWAP_YT; //swapExactPtForYt
|
|
202
202
|
if (sig == 0xcdffacc6) return address(this); //facetAddress
|
|
203
203
|
if (sig == 0xd0f42385) return ACTION_MISC; //mintPyFromToken
|
|
204
204
|
}
|
|
205
205
|
} else {
|
|
206
|
-
if (sig <
|
|
207
|
-
if (sig ==
|
|
208
|
-
if (sig ==
|
|
206
|
+
if (sig < 0xed48907e) {
|
|
207
|
+
if (sig == 0xd13b4fdc) return ACTION_ADD_REMOVE_LIQ; //removeLiquiditySingleSy
|
|
208
|
+
if (sig == 0xeb3a7d47) return ACTION_CALLBACK; //limitRouterCallback
|
|
209
209
|
} else {
|
|
210
|
+
if (sig == 0xed48907e) return ACTION_SWAP_YT; //swapExactTokenForYt
|
|
210
211
|
if (sig == 0xf7e375e8) return ACTION_MISC; //redeemDueInterestAndRewards
|
|
211
|
-
if (sig == 0xf80915bc) return ACTION_SWAP_YT; //swapExactSyForYt
|
|
212
212
|
if (sig == 0xfa483e72) return ACTION_CALLBACK; //swapCallback
|
|
213
213
|
}
|
|
214
214
|
}
|
|
@@ -11,7 +11,7 @@ import "../../router/base/MarketApproxLib.sol";
|
|
|
11
11
|
import "../../core/libraries/Errors.sol";
|
|
12
12
|
import "../swap-aggregator/IPSwapAggregator.sol";
|
|
13
13
|
|
|
14
|
-
abstract contract ActionBase is TokenHelper,
|
|
14
|
+
abstract contract ActionBase is TokenHelper, IPLimitOrderType {
|
|
15
15
|
using MarketApproxPtOutLib for MarketState;
|
|
16
16
|
using PMath for uint256;
|
|
17
17
|
using PYIndexLib for IPYieldToken;
|
|
@@ -21,10 +21,12 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
21
21
|
|
|
22
22
|
// ----------------- MINT REDEEM SY PY -----------------
|
|
23
23
|
|
|
24
|
-
function _mintSyFromToken(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
24
|
+
function _mintSyFromToken(
|
|
25
|
+
address receiver,
|
|
26
|
+
address SY,
|
|
27
|
+
uint256 minSyOut,
|
|
28
|
+
TokenInput calldata inp
|
|
29
|
+
) internal returns (uint256 netSyOut) {
|
|
28
30
|
SwapType swapType = inp.swapData.swapType;
|
|
29
31
|
|
|
30
32
|
uint256 netTokenMintSy;
|
|
@@ -49,23 +51,36 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
49
51
|
else _transferFrom(IERC20(inp.tokenIn), msg.sender, inp.pendleSwap, inp.netTokenIn);
|
|
50
52
|
|
|
51
53
|
IPSwapAggregator(inp.pendleSwap).swap{value: inp.tokenIn == NATIVE ? inp.netTokenIn : 0}(
|
|
52
|
-
inp.tokenIn,
|
|
54
|
+
inp.tokenIn,
|
|
55
|
+
inp.netTokenIn,
|
|
56
|
+
inp.swapData
|
|
53
57
|
);
|
|
54
58
|
}
|
|
55
59
|
|
|
56
|
-
function __mintSy(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
function __mintSy(
|
|
61
|
+
address receiver,
|
|
62
|
+
address SY,
|
|
63
|
+
uint256 netTokenMintSy,
|
|
64
|
+
uint256 minSyOut,
|
|
65
|
+
TokenInput calldata inp
|
|
66
|
+
) private returns (uint256 netSyOut) {
|
|
60
67
|
uint256 netNative = inp.tokenMintSy == NATIVE ? netTokenMintSy : 0;
|
|
61
68
|
_safeApproveInf(inp.tokenMintSy, SY);
|
|
62
|
-
netSyOut = IStandardizedYield(SY).deposit{value: netNative}(
|
|
69
|
+
netSyOut = IStandardizedYield(SY).deposit{value: netNative}(
|
|
70
|
+
receiver,
|
|
71
|
+
inp.tokenMintSy,
|
|
72
|
+
netTokenMintSy,
|
|
73
|
+
minSyOut
|
|
74
|
+
);
|
|
63
75
|
}
|
|
64
76
|
|
|
65
|
-
function _redeemSyToToken(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
77
|
+
function _redeemSyToToken(
|
|
78
|
+
address receiver,
|
|
79
|
+
address SY,
|
|
80
|
+
uint256 netSyIn,
|
|
81
|
+
TokenOutput calldata out,
|
|
82
|
+
bool doPull
|
|
83
|
+
) internal returns (uint256 netTokenOut) {
|
|
69
84
|
SwapType swapType = out.swapData.swapType;
|
|
70
85
|
|
|
71
86
|
if (swapType == SwapType.NONE) {
|
|
@@ -91,10 +106,13 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
91
106
|
}
|
|
92
107
|
}
|
|
93
108
|
|
|
94
|
-
function __redeemSy(
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
109
|
+
function __redeemSy(
|
|
110
|
+
address receiver,
|
|
111
|
+
address SY,
|
|
112
|
+
uint256 netSyIn,
|
|
113
|
+
TokenOutput calldata out,
|
|
114
|
+
bool doPull
|
|
115
|
+
) private returns (uint256 netTokenRedeemed) {
|
|
98
116
|
if (doPull) {
|
|
99
117
|
_transferFrom(IERC20(SY), msg.sender, SY, netSyIn);
|
|
100
118
|
}
|
|
@@ -102,10 +120,14 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
102
120
|
netTokenRedeemed = IStandardizedYield(SY).redeem(receiver, netSyIn, out.tokenRedeemSy, 0, true);
|
|
103
121
|
}
|
|
104
122
|
|
|
105
|
-
function _mintPyFromSy(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
123
|
+
function _mintPyFromSy(
|
|
124
|
+
address receiver,
|
|
125
|
+
address SY,
|
|
126
|
+
address YT,
|
|
127
|
+
uint256 netSyIn,
|
|
128
|
+
uint256 minPyOut,
|
|
129
|
+
bool doPull
|
|
130
|
+
) internal returns (uint256 netPyOut) {
|
|
109
131
|
if (doPull) {
|
|
110
132
|
_transferFrom(IERC20(SY), msg.sender, YT, netSyIn);
|
|
111
133
|
}
|
|
@@ -114,10 +136,12 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
114
136
|
if (netPyOut < minPyOut) revert Errors.RouterInsufficientPYOut(netPyOut, minPyOut);
|
|
115
137
|
}
|
|
116
138
|
|
|
117
|
-
function _redeemPyToSy(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
139
|
+
function _redeemPyToSy(
|
|
140
|
+
address receiver,
|
|
141
|
+
address YT,
|
|
142
|
+
uint256 netPyIn,
|
|
143
|
+
uint256 minSyOut
|
|
144
|
+
) internal returns (uint256 netSyOut) {
|
|
121
145
|
address PT = IPYieldToken(YT).PT();
|
|
122
146
|
|
|
123
147
|
_transferFrom(IERC20(PT), msg.sender, YT, netPyIn);
|
|
@@ -148,7 +172,7 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
148
172
|
uint256 minSyOut,
|
|
149
173
|
LimitOrderData calldata limit
|
|
150
174
|
) internal returns (uint256 netSyOut, uint256 netSyFee) {
|
|
151
|
-
(, IPPrincipalToken PT,) = IPMarket(market).readTokens();
|
|
175
|
+
(, IPPrincipalToken PT, ) = IPMarket(market).readTokens();
|
|
152
176
|
|
|
153
177
|
uint256 netPtLeft = exactPtIn;
|
|
154
178
|
bool doMarketOrder = true;
|
|
@@ -161,8 +185,11 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
161
185
|
}
|
|
162
186
|
|
|
163
187
|
if (doMarketOrder) {
|
|
164
|
-
(uint256 netSyOutMarket, uint256 netSyFeeMarket) =
|
|
165
|
-
|
|
188
|
+
(uint256 netSyOutMarket, uint256 netSyFeeMarket) = IPMarket(market).swapExactPtForSy(
|
|
189
|
+
receiver,
|
|
190
|
+
netPtLeft,
|
|
191
|
+
EMPTY_BYTES
|
|
192
|
+
);
|
|
166
193
|
|
|
167
194
|
netSyOut += netSyOutMarket;
|
|
168
195
|
netSyFee += netSyFeeMarket;
|
|
@@ -183,7 +210,7 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
183
210
|
ApproxParams calldata guessPtOut,
|
|
184
211
|
LimitOrderData calldata limit
|
|
185
212
|
) internal returns (uint256 netPtOut, uint256 netSyFee) {
|
|
186
|
-
(IStandardizedYield SY
|
|
213
|
+
(IStandardizedYield SY, , IPYieldToken YT) = IPMarket(market).readTokens();
|
|
187
214
|
uint256 netSyLeft = exactSyIn;
|
|
188
215
|
bool doMarketOrder = true;
|
|
189
216
|
|
|
@@ -195,8 +222,12 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
195
222
|
}
|
|
196
223
|
|
|
197
224
|
if (doMarketOrder) {
|
|
198
|
-
(uint256 netPtOutMarket,) =
|
|
199
|
-
|
|
225
|
+
(uint256 netPtOutMarket, ) = _readMarket(market).approxSwapExactSyForPt(
|
|
226
|
+
YT.newIndex(),
|
|
227
|
+
netSyLeft,
|
|
228
|
+
block.timestamp,
|
|
229
|
+
guessPtOut
|
|
230
|
+
);
|
|
200
231
|
|
|
201
232
|
(, uint256 netSyFeeMarket) = IPMarket(market).swapSyForExactPt(receiver, netPtOutMarket, EMPTY_BYTES);
|
|
202
233
|
|
|
@@ -208,33 +239,45 @@ abstract contract ActionBase is TokenHelper, IPOrderMixinType {
|
|
|
208
239
|
}
|
|
209
240
|
|
|
210
241
|
// ----------------- LIMIT ORDERS -----------------
|
|
211
|
-
function _fillLimit(
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
242
|
+
function _fillLimit(
|
|
243
|
+
address receiver,
|
|
244
|
+
IERC20 tokenIn,
|
|
245
|
+
uint256 netInput,
|
|
246
|
+
LimitOrderData calldata lim
|
|
247
|
+
) internal returns (uint256 netLeft, uint256 netOut, uint256 netSyFee, bool doMarketOrder) {
|
|
215
248
|
IPLimitRouter router = IPLimitRouter(lim.limitRouter);
|
|
216
249
|
netLeft = netInput;
|
|
217
250
|
|
|
218
251
|
if (lim.normalFills.length != 0) {
|
|
219
252
|
_safeApproveInf(address(tokenIn), lim.limitRouter);
|
|
220
|
-
(uint256 actualMaking, uint256 actualTaking, uint256 totalFee,) =
|
|
221
|
-
|
|
253
|
+
(uint256 actualMaking, uint256 actualTaking, uint256 totalFee, ) = router.fill(
|
|
254
|
+
lim.normalFills,
|
|
255
|
+
receiver,
|
|
256
|
+
netLeft,
|
|
257
|
+
lim.optData,
|
|
258
|
+
EMPTY_BYTES
|
|
259
|
+
);
|
|
222
260
|
netOut += actualMaking;
|
|
223
|
-
netSyFee += totalFee;
|
|
224
261
|
netLeft -= actualTaking;
|
|
262
|
+
netSyFee += totalFee;
|
|
225
263
|
}
|
|
226
264
|
|
|
227
265
|
if (lim.flashFills.length != 0) {
|
|
228
266
|
address YT = lim.flashFills[0].order.YT;
|
|
229
267
|
OrderType orderType = lim.flashFills[0].order.orderType;
|
|
230
268
|
|
|
231
|
-
(
|
|
232
|
-
|
|
269
|
+
(, , uint256 totalFee, bytes memory ret) = router.fill(
|
|
270
|
+
lim.flashFills,
|
|
271
|
+
YT,
|
|
272
|
+
type(uint256).max,
|
|
273
|
+
lim.optData,
|
|
274
|
+
abi.encode(orderType, YT, netLeft, receiver)
|
|
275
|
+
);
|
|
233
276
|
(uint256 netUse, uint256 netReceived) = abi.decode(ret, (uint256, uint256));
|
|
234
277
|
|
|
235
278
|
netOut += netReceived;
|
|
236
|
-
netSyFee += totalFee;
|
|
237
279
|
netLeft -= netUse;
|
|
280
|
+
netSyFee += totalFee;
|
|
238
281
|
}
|
|
239
282
|
|
|
240
283
|
doMarketOrder = netLeft > netInput.mulDown(lim.epsSkipMarket);
|
|
@@ -59,11 +59,12 @@ abstract contract CallbackHelper {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
function _encodeSwapExactYtForPt(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
function _encodeSwapExactYtForPt(
|
|
63
|
+
address receiver,
|
|
64
|
+
uint256 netPtOut,
|
|
65
|
+
IPPrincipalToken PT,
|
|
66
|
+
IPYieldToken YT
|
|
67
|
+
) internal pure returns (bytes memory res) {
|
|
67
68
|
res = new bytes(160);
|
|
68
69
|
uint256 actionType = uint256(ActionType.SwapExactYtForPt);
|
|
69
70
|
|
|
@@ -76,11 +77,9 @@ abstract contract CallbackHelper {
|
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
79
|
|
|
79
|
-
function _decodeSwapExactYtForPt(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
returns (address receiver, uint256 netPtOut, IPPrincipalToken PT, IPYieldToken YT)
|
|
83
|
-
{
|
|
80
|
+
function _decodeSwapExactYtForPt(
|
|
81
|
+
bytes calldata data
|
|
82
|
+
) internal pure returns (address receiver, uint256 netPtOut, IPPrincipalToken PT, IPYieldToken YT) {
|
|
84
83
|
assembly {
|
|
85
84
|
// first 32 bytes is ActionType
|
|
86
85
|
receiver := calldataload(add(data.offset, 32))
|
|
@@ -90,11 +89,12 @@ abstract contract CallbackHelper {
|
|
|
90
89
|
}
|
|
91
90
|
}
|
|
92
91
|
|
|
93
|
-
function _encodeSwapExactPtForYt(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
92
|
+
function _encodeSwapExactPtForYt(
|
|
93
|
+
address receiver,
|
|
94
|
+
uint256 exactPtIn,
|
|
95
|
+
uint256 minYtOut,
|
|
96
|
+
IPYieldToken YT
|
|
97
|
+
) internal pure returns (bytes memory res) {
|
|
98
98
|
res = new bytes(160);
|
|
99
99
|
uint256 actionType = uint256(ActionType.SwapExactPtForYt);
|
|
100
100
|
|
|
@@ -107,11 +107,9 @@ abstract contract CallbackHelper {
|
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
function _decodeSwapExactPtForYt(
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
returns (address receiver, uint256 exactPtIn, uint256 minYtOut, IPYieldToken YT)
|
|
114
|
-
{
|
|
110
|
+
function _decodeSwapExactPtForYt(
|
|
111
|
+
bytes calldata data
|
|
112
|
+
) internal pure returns (address receiver, uint256 exactPtIn, uint256 minYtOut, IPYieldToken YT) {
|
|
115
113
|
assembly {
|
|
116
114
|
// first 32 bytes is ActionType
|
|
117
115
|
receiver := calldataload(add(data.offset, 32))
|