@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
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "./CalldataReader.sol";
|
|
5
|
+
|
|
6
|
+
library Common {
|
|
7
|
+
using CalldataReader for bytes;
|
|
8
|
+
|
|
9
|
+
function _readPool(bytes memory data, uint256 startByte) internal pure returns (address, uint256) {
|
|
10
|
+
uint24 poolId;
|
|
11
|
+
address poolAddress;
|
|
12
|
+
(poolId, startByte) = data._readUint24(startByte);
|
|
13
|
+
if (poolId == 0) {
|
|
14
|
+
(poolAddress, startByte) = data._readAddress(startByte);
|
|
15
|
+
}
|
|
16
|
+
return (poolAddress, startByte);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function _readRecipient(bytes memory data, uint256 startByte) internal pure returns (address, uint256) {
|
|
20
|
+
uint8 recipientFlag;
|
|
21
|
+
address recipient;
|
|
22
|
+
(recipientFlag, startByte) = data._readUint8(startByte);
|
|
23
|
+
if (recipientFlag != 2 && recipientFlag != 1) {
|
|
24
|
+
(recipient, startByte) = data._readAddress(startByte);
|
|
25
|
+
}
|
|
26
|
+
return (recipient, startByte);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function _readBytes32Array(
|
|
30
|
+
bytes memory data,
|
|
31
|
+
uint256 startByte
|
|
32
|
+
) internal pure returns (bytes32[] memory bytesArray, uint256) {
|
|
33
|
+
bytes memory ret;
|
|
34
|
+
(ret, startByte) = data._calldataVal(startByte, 1);
|
|
35
|
+
uint256 length = uint256(uint8(bytes1(ret)));
|
|
36
|
+
bytesArray = new bytes32[](length);
|
|
37
|
+
for (uint8 i = 0; i < length; ++i) {
|
|
38
|
+
(bytesArray[i], startByte) = data._readBytes32(startByte);
|
|
39
|
+
}
|
|
40
|
+
return (bytesArray, startByte);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "./CalldataReader.sol";
|
|
5
|
+
import "../interfaces/IExecutorHelperL2.sol";
|
|
6
|
+
import {BytesHelper} from "./BytesHelper.sol";
|
|
7
|
+
import {Common} from "./Common.sol";
|
|
8
|
+
|
|
9
|
+
/// @title DexScaler
|
|
10
|
+
/// @notice Contain functions to scale DEX structs
|
|
11
|
+
/// @dev For this repo's scope, we only care about swap amounts, so we just need to decode until we get swap amounts
|
|
12
|
+
library DexScaler {
|
|
13
|
+
using BytesHelper for bytes;
|
|
14
|
+
using CalldataReader for bytes;
|
|
15
|
+
using Common for bytes;
|
|
16
|
+
|
|
17
|
+
function scaleUniSwap(
|
|
18
|
+
bytes memory data,
|
|
19
|
+
uint256 oldAmount,
|
|
20
|
+
uint256 newAmount
|
|
21
|
+
) internal pure returns (bytes memory) {
|
|
22
|
+
uint256 startByte;
|
|
23
|
+
// decode
|
|
24
|
+
(, startByte) = data._readPool(startByte);
|
|
25
|
+
(, startByte) = data._readRecipient(startByte);
|
|
26
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
27
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleUniSwap");
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function scaleStableSwap(
|
|
31
|
+
bytes memory data,
|
|
32
|
+
uint256 oldAmount,
|
|
33
|
+
uint256 newAmount
|
|
34
|
+
) internal pure returns (bytes memory) {
|
|
35
|
+
uint256 startByte;
|
|
36
|
+
(, startByte) = data._readPool(startByte);
|
|
37
|
+
(, startByte) = data._readUint8(startByte);
|
|
38
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
39
|
+
return
|
|
40
|
+
data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleStableSwap");
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function scaleCurveSwap(
|
|
44
|
+
bytes memory data,
|
|
45
|
+
uint256 oldAmount,
|
|
46
|
+
uint256 newAmount
|
|
47
|
+
) internal pure returns (bytes memory) {
|
|
48
|
+
uint256 startByte;
|
|
49
|
+
bool canGetIndex;
|
|
50
|
+
(canGetIndex, startByte) = data._readBool(0);
|
|
51
|
+
(, startByte) = data._readPool(startByte);
|
|
52
|
+
if (!canGetIndex) {
|
|
53
|
+
(, startByte) = data._readAddress(startByte);
|
|
54
|
+
(, startByte) = data._readUint8(startByte);
|
|
55
|
+
}
|
|
56
|
+
(, startByte) = data._readUint8(startByte);
|
|
57
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
58
|
+
return
|
|
59
|
+
data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleCurveSwap");
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function scaleUniswapV3KSElastic(
|
|
63
|
+
bytes memory data,
|
|
64
|
+
uint256 oldAmount,
|
|
65
|
+
uint256 newAmount
|
|
66
|
+
) internal pure returns (bytes memory) {
|
|
67
|
+
uint256 startByte;
|
|
68
|
+
(, startByte) = data._readRecipient(startByte);
|
|
69
|
+
(, startByte) = data._readPool(startByte);
|
|
70
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
71
|
+
return
|
|
72
|
+
data.write16Bytes(
|
|
73
|
+
startByte,
|
|
74
|
+
oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount,
|
|
75
|
+
"scaleUniswapV3KSElastic"
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function scaleBalancerV2(
|
|
80
|
+
bytes memory data,
|
|
81
|
+
uint256 oldAmount,
|
|
82
|
+
uint256 newAmount
|
|
83
|
+
) internal pure returns (bytes memory) {
|
|
84
|
+
uint256 startByte;
|
|
85
|
+
(, startByte) = data._readPool(startByte);
|
|
86
|
+
(, startByte) = data._readBytes32(startByte);
|
|
87
|
+
(, startByte) = data._readUint8(startByte);
|
|
88
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
89
|
+
return
|
|
90
|
+
data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleBalancerV2");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function scaleDODO(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
|
|
94
|
+
uint256 startByte;
|
|
95
|
+
(, startByte) = data._readRecipient(startByte);
|
|
96
|
+
(, startByte) = data._readPool(startByte);
|
|
97
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
98
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleDODO");
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function scaleGMX(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
|
|
102
|
+
uint256 startByte;
|
|
103
|
+
// decode
|
|
104
|
+
(, startByte) = data._readPool(startByte);
|
|
105
|
+
|
|
106
|
+
(, startByte) = data._readAddress(startByte);
|
|
107
|
+
|
|
108
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
109
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleGMX");
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function scaleSynthetix(
|
|
113
|
+
bytes memory data,
|
|
114
|
+
uint256 oldAmount,
|
|
115
|
+
uint256 newAmount
|
|
116
|
+
) internal pure returns (bytes memory) {
|
|
117
|
+
uint256 startByte;
|
|
118
|
+
|
|
119
|
+
// decode
|
|
120
|
+
(, startByte) = data._readPool(startByte);
|
|
121
|
+
|
|
122
|
+
(, startByte) = data._readAddress(startByte);
|
|
123
|
+
(, startByte) = data._readBytes32(startByte);
|
|
124
|
+
|
|
125
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
126
|
+
return
|
|
127
|
+
data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleSynthetix");
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function scaleWrappedstETH(
|
|
131
|
+
bytes memory data,
|
|
132
|
+
uint256 oldAmount,
|
|
133
|
+
uint256 newAmount
|
|
134
|
+
) internal pure returns (bytes memory) {
|
|
135
|
+
uint256 startByte;
|
|
136
|
+
|
|
137
|
+
// decode
|
|
138
|
+
(, startByte) = data._readPool(startByte);
|
|
139
|
+
|
|
140
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
141
|
+
return
|
|
142
|
+
data.write16Bytes(
|
|
143
|
+
startByte,
|
|
144
|
+
oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount,
|
|
145
|
+
"scaleWrappedstETH"
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function scaleStETH(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
|
|
150
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(0);
|
|
151
|
+
return data.write16Bytes(0, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleStETH");
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function scalePlatypus(
|
|
155
|
+
bytes memory data,
|
|
156
|
+
uint256 oldAmount,
|
|
157
|
+
uint256 newAmount
|
|
158
|
+
) internal pure returns (bytes memory) {
|
|
159
|
+
uint256 startByte;
|
|
160
|
+
|
|
161
|
+
// decode
|
|
162
|
+
(, startByte) = data._readPool(startByte);
|
|
163
|
+
|
|
164
|
+
(, startByte) = data._readAddress(startByte);
|
|
165
|
+
|
|
166
|
+
(, startByte) = data._readRecipient(startByte);
|
|
167
|
+
|
|
168
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
169
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scalePlatypus");
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function scalePSM(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
|
|
173
|
+
uint256 startByte;
|
|
174
|
+
|
|
175
|
+
// decode
|
|
176
|
+
(, startByte) = data._readPool(startByte);
|
|
177
|
+
|
|
178
|
+
(, startByte) = data._readAddress(startByte);
|
|
179
|
+
|
|
180
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
181
|
+
|
|
182
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scalePSM");
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function scaleMaverick(
|
|
186
|
+
bytes memory data,
|
|
187
|
+
uint256 oldAmount,
|
|
188
|
+
uint256 newAmount
|
|
189
|
+
) internal pure returns (bytes memory) {
|
|
190
|
+
uint256 startByte;
|
|
191
|
+
|
|
192
|
+
// decode
|
|
193
|
+
(, startByte) = data._readPool(startByte);
|
|
194
|
+
|
|
195
|
+
(, startByte) = data._readAddress(startByte);
|
|
196
|
+
|
|
197
|
+
(, startByte) = data._readRecipient(startByte);
|
|
198
|
+
|
|
199
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
200
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleMaverick");
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function scaleSyncSwap(
|
|
204
|
+
bytes memory data,
|
|
205
|
+
uint256 oldAmount,
|
|
206
|
+
uint256 newAmount
|
|
207
|
+
) internal pure returns (bytes memory) {
|
|
208
|
+
uint256 startByte;
|
|
209
|
+
|
|
210
|
+
// decode
|
|
211
|
+
(, startByte) = data._readBytes(startByte);
|
|
212
|
+
(, startByte) = data._readPool(startByte);
|
|
213
|
+
|
|
214
|
+
(, startByte) = data._readAddress(startByte);
|
|
215
|
+
|
|
216
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
217
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleSyncSwap");
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function scaleAlgebraV1(
|
|
221
|
+
bytes memory data,
|
|
222
|
+
uint256 oldAmount,
|
|
223
|
+
uint256 newAmount
|
|
224
|
+
) internal pure returns (bytes memory) {
|
|
225
|
+
uint256 startByte;
|
|
226
|
+
|
|
227
|
+
(, startByte) = data._readRecipient(startByte);
|
|
228
|
+
|
|
229
|
+
(, startByte) = data._readPool(startByte);
|
|
230
|
+
|
|
231
|
+
(, startByte) = data._readAddress(startByte);
|
|
232
|
+
|
|
233
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
234
|
+
|
|
235
|
+
return
|
|
236
|
+
data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleAlgebraV1");
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function scaleBalancerBatch(
|
|
240
|
+
bytes memory data,
|
|
241
|
+
uint256 oldAmount,
|
|
242
|
+
uint256 newAmount
|
|
243
|
+
) internal pure returns (bytes memory) {
|
|
244
|
+
uint256 startByte;
|
|
245
|
+
|
|
246
|
+
// decode
|
|
247
|
+
(, startByte) = data._readPool(startByte);
|
|
248
|
+
|
|
249
|
+
(, startByte) = data._readBytes32Array(startByte);
|
|
250
|
+
(, startByte) = data._readAddressArray(startByte);
|
|
251
|
+
(, startByte) = data._readBytesArray(startByte);
|
|
252
|
+
|
|
253
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte);
|
|
254
|
+
return
|
|
255
|
+
data.write16Bytes(
|
|
256
|
+
startByte,
|
|
257
|
+
oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount,
|
|
258
|
+
"scaleBalancerBatch"
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function scaleMantis(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
|
|
263
|
+
uint256 startByte;
|
|
264
|
+
|
|
265
|
+
(, startByte) = data._readPool(startByte); // pool
|
|
266
|
+
|
|
267
|
+
(, startByte) = data._readAddress(startByte); // tokenOut
|
|
268
|
+
|
|
269
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte); // amount
|
|
270
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleMantis");
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function scaleIziSwap(
|
|
274
|
+
bytes memory data,
|
|
275
|
+
uint256 oldAmount,
|
|
276
|
+
uint256 newAmount
|
|
277
|
+
) internal pure returns (bytes memory) {
|
|
278
|
+
uint256 startByte;
|
|
279
|
+
|
|
280
|
+
(, startByte) = data._readPool(startByte); // pool
|
|
281
|
+
|
|
282
|
+
(, startByte) = data._readAddress(startByte); // tokenOut
|
|
283
|
+
|
|
284
|
+
// recipient
|
|
285
|
+
(, startByte) = data._readRecipient(startByte);
|
|
286
|
+
|
|
287
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte); // amount
|
|
288
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleIziSwap");
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function scaleTraderJoeV2(
|
|
292
|
+
bytes memory data,
|
|
293
|
+
uint256 oldAmount,
|
|
294
|
+
uint256 newAmount
|
|
295
|
+
) internal pure returns (bytes memory) {
|
|
296
|
+
uint256 startByte;
|
|
297
|
+
|
|
298
|
+
// recipient
|
|
299
|
+
(, startByte) = data._readRecipient(startByte);
|
|
300
|
+
|
|
301
|
+
(, startByte) = data._readPool(startByte); // pool
|
|
302
|
+
|
|
303
|
+
(, startByte) = data._readAddress(startByte); // tokenOut
|
|
304
|
+
|
|
305
|
+
(, startByte) = data._readBool(startByte); // isV2
|
|
306
|
+
|
|
307
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte); // amount
|
|
308
|
+
return
|
|
309
|
+
data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleTraderJoeV2");
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
function scaleLevelFiV2(
|
|
313
|
+
bytes memory data,
|
|
314
|
+
uint256 oldAmount,
|
|
315
|
+
uint256 newAmount
|
|
316
|
+
) internal pure returns (bytes memory) {
|
|
317
|
+
uint256 startByte;
|
|
318
|
+
|
|
319
|
+
(, startByte) = data._readPool(startByte); // pool
|
|
320
|
+
|
|
321
|
+
(, startByte) = data._readAddress(startByte); // tokenOut
|
|
322
|
+
|
|
323
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte); // amount
|
|
324
|
+
return
|
|
325
|
+
data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleLevelFiV2");
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
function scaleGMXGLP(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
|
|
329
|
+
uint256 startByte;
|
|
330
|
+
|
|
331
|
+
(, startByte) = data._readPool(startByte); // pool
|
|
332
|
+
|
|
333
|
+
(, startByte) = data._readAddress(startByte); // yearnVault
|
|
334
|
+
|
|
335
|
+
uint8 directionFlag;
|
|
336
|
+
(directionFlag, startByte) = data._readUint8(startByte);
|
|
337
|
+
if (directionFlag == 1) (, startByte) = data._readAddress(startByte); // tokenOut
|
|
338
|
+
|
|
339
|
+
(uint256 swapAmount, ) = data._readUint128AsUint256(startByte); // amount
|
|
340
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (swapAmount * newAmount) / oldAmount, "scaleGMXGLP");
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
function scaleVooi(bytes memory data, uint256 oldAmount, uint256 newAmount) internal pure returns (bytes memory) {
|
|
344
|
+
uint256 startByte;
|
|
345
|
+
|
|
346
|
+
(, startByte) = data._readPool(startByte); // pool
|
|
347
|
+
|
|
348
|
+
(, startByte) = data._readUint8(startByte); // toId
|
|
349
|
+
|
|
350
|
+
(uint256 fromAmount, ) = data._readUint128AsUint256(startByte); // amount
|
|
351
|
+
|
|
352
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (fromAmount * newAmount) / oldAmount, "scaleVooi");
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
function scaleVelocoreV2(
|
|
356
|
+
bytes memory data,
|
|
357
|
+
uint256 oldAmount,
|
|
358
|
+
uint256 newAmount
|
|
359
|
+
) internal pure returns (bytes memory) {
|
|
360
|
+
uint256 startByte;
|
|
361
|
+
|
|
362
|
+
(, startByte) = data._readPool(startByte); // pool
|
|
363
|
+
|
|
364
|
+
(, startByte) = data._readAddress(startByte); // tokenOut
|
|
365
|
+
|
|
366
|
+
(uint256 amount, ) = data._readUint128AsUint256(startByte); // amount
|
|
367
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (amount * newAmount) / oldAmount, "scaleVelocoreV2");
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
function scaleKokonut(
|
|
371
|
+
bytes memory data,
|
|
372
|
+
uint256 oldAmount,
|
|
373
|
+
uint256 newAmount
|
|
374
|
+
) internal pure returns (bytes memory) {
|
|
375
|
+
uint256 startByte;
|
|
376
|
+
|
|
377
|
+
(, startByte) = data._readPool(startByte); // pool
|
|
378
|
+
|
|
379
|
+
(uint256 amount, ) = data._readUint128AsUint256(startByte); // amount
|
|
380
|
+
return data.write16Bytes(startByte, oldAmount == 0 ? 0 : (amount * newAmount) / oldAmount, "scaleKokonut");
|
|
381
|
+
}
|
|
382
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import "./CalldataReader.sol";
|
|
5
|
+
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
6
|
+
import "../interfaces/IAggregationExecutorOptimistic.sol";
|
|
7
|
+
|
|
8
|
+
library ExecutorReader {
|
|
9
|
+
function readSwapExecutorDescription(bytes memory data) internal pure returns (bytes memory) {
|
|
10
|
+
uint256 startByte = 0;
|
|
11
|
+
IAggregationExecutorOptimistic.SwapExecutorDescription memory desc;
|
|
12
|
+
|
|
13
|
+
// Swap array
|
|
14
|
+
bytes memory ret;
|
|
15
|
+
(ret, startByte) = CalldataReader._calldataVal(data, startByte, 1);
|
|
16
|
+
uint256 lX = uint256(uint8(bytes1(ret)));
|
|
17
|
+
desc.swapSequences = new IAggregationExecutorOptimistic.Swap[][](lX);
|
|
18
|
+
for (uint8 i = 0; i < lX; ++i) {
|
|
19
|
+
(ret, startByte) = CalldataReader._calldataVal(data, startByte, 1);
|
|
20
|
+
uint256 lY = uint256(uint8(bytes1(ret)));
|
|
21
|
+
desc.swapSequences[i] = new IAggregationExecutorOptimistic.Swap[](lY);
|
|
22
|
+
for (uint8 j = 0; j < lY; ++j) {
|
|
23
|
+
(desc.swapSequences[i][j], startByte) = _readSwap(data, startByte);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// basic members
|
|
28
|
+
(desc.tokenIn, startByte) = CalldataReader._readAddress(data, startByte);
|
|
29
|
+
(desc.tokenOut, startByte) = CalldataReader._readAddress(data, startByte);
|
|
30
|
+
(desc.to, startByte) = CalldataReader._readAddress(data, startByte);
|
|
31
|
+
(desc.deadline, startByte) = CalldataReader._readUint128AsUint256(data, startByte);
|
|
32
|
+
(desc.positiveSlippageData, startByte) = CalldataReader._readBytes(data, startByte);
|
|
33
|
+
|
|
34
|
+
return abi.encode(desc);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function readSwapSingleSequence(
|
|
38
|
+
bytes memory data
|
|
39
|
+
) internal pure returns (IAggregationExecutorOptimistic.Swap[] memory swaps, address tokenIn) {
|
|
40
|
+
uint256 startByte = 0;
|
|
41
|
+
bytes memory ret;
|
|
42
|
+
(ret, startByte) = CalldataReader._calldataVal(data, startByte, 1);
|
|
43
|
+
uint256 len = uint256(uint8(bytes1(ret)));
|
|
44
|
+
swaps = new IAggregationExecutorOptimistic.Swap[](len);
|
|
45
|
+
for (uint8 i = 0; i < len; ++i) {
|
|
46
|
+
(swaps[i], startByte) = _readSwap(data, startByte);
|
|
47
|
+
}
|
|
48
|
+
(tokenIn, startByte) = CalldataReader._readAddress(data, startByte);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function _readSwap(
|
|
52
|
+
bytes memory data,
|
|
53
|
+
uint256 startByte
|
|
54
|
+
) internal pure returns (IAggregationExecutorOptimistic.Swap memory swap, uint256) {
|
|
55
|
+
(swap.data, startByte) = CalldataReader._readBytes(data, startByte);
|
|
56
|
+
bytes1 t;
|
|
57
|
+
(t, startByte) = CalldataReader._readBytes1(data, startByte);
|
|
58
|
+
swap.functionSelector = bytes4(uint32(uint8(t)));
|
|
59
|
+
return (swap, startByte);
|
|
60
|
+
}
|
|
61
|
+
}
|