@pendle/core-v2 0.20.0-testnet → 0.20.2-testnet
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/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.json +2 -2
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
- package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.json +2 -2
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.json +2 -2
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +2 -2
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
- package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
- package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/StEthHelper.sol/StEthHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol/PendleAura3EthSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol/PendleAuraCbethWstethSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol/PendleAuraWethRethSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol/PendleAuraWethWstethSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol/FixedPoint.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol/MetaStableMath.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol/PendleAuraBalancerStableLPSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol/StablePoolUserData.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.json +2 -2
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
- package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +2 -2
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
- package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +2 -2
- package/build/artifacts/contracts/core/libraries/ArrayLib.sol/ArrayLib.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
- package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.json +39 -2
- package/build/artifacts/contracts/interfaces/Balancer/IAsset.sol/IAsset.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerFees.sol/IBalancerFees.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IBasePool.sol/IBasePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IComposableStable.sol/IComposableStable.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IGauge.sol/IGauge.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol/ILiquidityGaugeFactory.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IMetaStablePool.sol/IMetaStablePool.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IRateProvider.sol/IRateProvider.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/ConvexCurve/IRewards.sol/IRewards.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IApeStaking.sol/IApeStaking.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.json +80 -32
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.json +100 -40
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.json +40 -16
- package/build/artifacts/contracts/interfaces/IPActionSwapPTYT.sol/IPActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.json +40 -16
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +260 -104
- package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPFeeDistributor.sol/IPFeeDistributor.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
- package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/MarketMathStatic.sol/MarketMathStatic.json +2 -2
- package/build/artifacts/contracts/offchain-helpers/Multicall2.sol/Multicall2.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
- package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +2 -2
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.json +96 -53
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionCallback.sol/ActionCallback.json +2 -2
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.json +116 -61
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionMisc.sol/ActionMisc.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.json +44 -25
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapPTYT.sol/ActionSwapPTYT.json +2 -2
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
- package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.json +44 -25
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
- package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.json +2 -2
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
- package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
- package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol/I1inchAggregationRouterV5.json +160 -0
- package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol/OneInchAggregationRouterHelper.json +10 -0
- package/build/artifacts/contracts/router/swap-aggregator/ISwapAggregator.sol/ISwapAggregator.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/ISwapAggregator.sol/ISwapAggregator.json +51 -0
- package/build/artifacts/contracts/router/swap-aggregator/SwapAggregator.sol/SwapAggregator.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/SwapAggregator.sol/SwapAggregator.json +256 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol/KyberAggregationRouterHelper.json +10 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol/ScaleDataHelperEthereum1.json +10 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol/IAggregationExecutor.json +65 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol/IExecutorHelperEthereum1.json +359 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol/IHashflow.json +101 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouter.sol/IMetaAggregationRouter.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouter.sol/IMetaAggregationRouter.json +183 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +4 -0
- package/build/artifacts/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.json +215 -0
- package/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol +7 -9
- package/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol +10 -0
- package/contracts/core/StandardizedYield/SYBase.sol +23 -5
- package/contracts/core/StandardizedYield/StEthHelper.sol +71 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAura3EthSY.sol +170 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraCbethWstethSY.sol +162 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRethSY.sol +134 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSY.sol +154 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol +289 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol +618 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/FixedPoint.sol +68 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStableMath.sol +322 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol +390 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSY.sol +329 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePoolUserData.sol +30 -0
- package/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol +189 -0
- package/contracts/core/libraries/ArrayLib.sol +6 -3
- package/contracts/core/libraries/Errors.sol +8 -0
- package/contracts/interfaces/Balancer/IAsset.sol +4 -0
- package/contracts/interfaces/Balancer/IBalancerFees.sol +6 -0
- package/contracts/interfaces/Balancer/IBalancerStablePreview.sol +22 -0
- package/contracts/interfaces/Balancer/IBasePool.sol +30 -0
- package/contracts/interfaces/Balancer/IComposableStable.sol +39 -0
- package/contracts/interfaces/Balancer/IGauge.sol +10 -0
- package/contracts/interfaces/Balancer/ILiquidityGaugeFactory.sol +6 -0
- package/contracts/interfaces/Balancer/IMetaStablePool.sol +31 -0
- package/contracts/interfaces/Balancer/IRateProvider.sol +6 -0
- package/contracts/interfaces/Balancer/IVault.sol +78 -0
- package/contracts/interfaces/ConvexCurve/IRewards.sol +5 -0
- package/contracts/interfaces/IPActionAddRemoveLiq.sol +1 -1
- package/contracts/interfaces/IPActionMintRedeem.sol +2 -3
- package/contracts/interfaces/IPActionSwapPT.sol +1 -1
- package/contracts/interfaces/IPActionSwapPTYT.sol +1 -1
- package/contracts/interfaces/IPActionSwapYT.sol +1 -1
- package/contracts/interfaces/IPFeeDistributor.sol +2 -0
- package/contracts/offchain-helpers/Multicall2.sol +103 -0
- package/contracts/router/ActionAddRemoveLiq.sol +2 -2
- package/contracts/router/ActionMintRedeem.sol +7 -9
- package/contracts/router/ActionSwapPT.sol +2 -2
- package/contracts/router/ActionSwapYT.sol +2 -2
- package/contracts/router/base/ActionBaseMintRedeem.sol +51 -14
- package/contracts/router/swap-aggregator/1inch/I1inchAggregationRouterV5.sol +45 -0
- package/contracts/router/swap-aggregator/1inch/OneInchAggregationRouterHelper.sol +71 -0
- package/contracts/router/swap-aggregator/ISwapAggregator.sol +21 -0
- package/contracts/router/swap-aggregator/SwapAggregator.sol +62 -0
- package/contracts/router/swap-aggregator/kyberswap/KyberAggregationRouterHelper.sol +302 -0
- package/contracts/router/swap-aggregator/kyberswap/ScaleDataHelperEthereum1.sol +134 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IAggregationExecutor.sol +17 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IExecutorHelperEthereum1.sol +185 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IHashflow.sol +30 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouter.sol +33 -0
- package/contracts/router/swap-aggregator/kyberswap/interfaces/IMetaAggregationRouterV2.sol +42 -0
- package/deployments/43113-core.json +1 -1
- package/deployments/80001-core.json +1 -1
- package/package.json +6 -6
- package/typechain-types/ActionAddRemoveLiq.ts +41 -35
- package/typechain-types/ActionBaseMintRedeem.ts +8 -8
- package/typechain-types/ActionMintRedeem.ts +45 -42
- package/typechain-types/ActionSwapPT.ts +28 -22
- package/typechain-types/ActionSwapYT.ts +28 -22
- package/typechain-types/I1inchAggregationRouterV5.ts +257 -0
- package/typechain-types/IAggregationExecutor.ts +182 -0
- package/typechain-types/IExecutorHelperEthereum1.ts +599 -0
- package/typechain-types/IHashflow.ts +159 -0
- package/typechain-types/IKyberSwapAggregationRouterHelper.ts +109 -0
- package/typechain-types/IMetaAggregationRouter.ts +213 -0
- package/typechain-types/IMetaAggregationRouterV2.ts +221 -0
- package/typechain-types/IPActionAddRemoveLiq.ts +22 -16
- package/typechain-types/IPActionMintRedeem.ts +26 -23
- package/typechain-types/IPActionSwapPT.ts +20 -14
- package/typechain-types/IPActionSwapYT.ts +20 -14
- package/typechain-types/IPAllAction.ts +34 -31
- package/typechain-types/ISwapAggregator.ts +124 -0
- package/typechain-types/SwapAggregator.ts +406 -0
- package/typechain-types/factories/ActionAddRemoveLiq__factory.ts +99 -56
- package/typechain-types/factories/ActionBaseMintRedeem__factory.ts +1 -1
- package/typechain-types/factories/ActionCallback__factory.ts +1 -1
- package/typechain-types/factories/ActionMintRedeem__factory.ts +119 -64
- package/typechain-types/factories/ActionMisc__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPTYT__factory.ts +1 -1
- package/typechain-types/factories/ActionSwapPT__factory.ts +47 -28
- package/typechain-types/factories/ActionSwapYT__factory.ts +47 -28
- package/typechain-types/factories/AggregationRouterHelper__factory.ts +1 -1
- package/typechain-types/factories/BulkSellerFactory__factory.ts +1 -1
- package/typechain-types/factories/BulkSellerOffchain__factory.ts +1 -1
- package/typechain-types/factories/BulkSeller__factory.ts +1 -1
- package/typechain-types/factories/Errors__factory.ts +38 -1
- package/typechain-types/factories/I1inchAggregationRouterV5__factory.ts +179 -0
- package/typechain-types/factories/IAggregationExecutor__factory.ts +84 -0
- package/typechain-types/factories/IExecutorHelperEthereum1__factory.ts +378 -0
- package/typechain-types/factories/IHashflow__factory.ts +113 -0
- package/typechain-types/factories/IKyberSwapAggregationRouterHelper__factory.ts +56 -0
- package/typechain-types/factories/IMetaAggregationRouterV2__factory.ts +234 -0
- package/typechain-types/factories/IMetaAggregationRouter__factory.ts +202 -0
- package/typechain-types/factories/IPActionAddRemoveLiq__factory.ts +80 -32
- package/typechain-types/factories/IPActionMintRedeem__factory.ts +100 -40
- package/typechain-types/factories/IPActionSwapPT__factory.ts +40 -16
- package/typechain-types/factories/IPActionSwapYT__factory.ts +40 -16
- package/typechain-types/factories/IPAllAction__factory.ts +260 -104
- package/typechain-types/factories/ISwapAggregator__factory.ts +66 -0
- package/typechain-types/factories/MarketMathStatic__factory.ts +1 -1
- package/typechain-types/factories/OracleLib__factory.ts +1 -1
- package/typechain-types/factories/PendleAura3EthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraCbethWstethSY__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraWethRethSY__factory.ts +1 -1
- package/typechain-types/factories/PendleAuraWethWstethSY__factory.ts +1 -1
- package/typechain-types/factories/PendleCurveFraxUsdcSY__factory.ts +1 -1
- package/typechain-types/factories/PendleCurveUsdd3CrvSY__factory.ts +1 -1
- package/typechain-types/factories/PendleFeeDistributor__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleLooksStakingSY__factory.ts +1 -1
- package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleMarket__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgReceiveEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleMsgSendEndpointUpg__factory.ts +1 -1
- package/typechain-types/factories/PendlePrincipalToken__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
- package/typechain-types/factories/PendleQiTokenSY__factory.ts +1 -1
- package/typechain-types/factories/PendleRouter__factory.ts +1 -1
- package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
- package/typechain-types/factories/PendleWstEthSY__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldContractFactory__factory.ts +1 -1
- package/typechain-types/factories/PendleYieldToken__factory.ts +1 -1
- package/typechain-types/factories/RouterStatic__factory.ts +1 -1
- package/typechain-types/factories/SAPE__factory.ts +1 -1
- package/typechain-types/factories/SwapAggregator__factory.ts +309 -0
- package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
- package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
- package/typechain-types/hardhat.d.ts +56 -20
- package/typechain-types/index.ts +16 -8
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/kyberswap/AggregationRouterHelper.sol/AggregationRouterHelper.json +0 -224
- package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/kyberswap/IAggregatorRouterHelper.sol/IAggregationRouterHelper.json +0 -35
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.dbg.json +0 -4
- package/build/artifacts/contracts/router/kyberswap/IMultihopRouterEthereum.sol/IMultihopRouterEthereum.json +0 -136
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.dbg.json +0 -4
- package/build/artifacts/contracts/router/kyberswap/KyberSwapHelper.sol/KyberSwapHelper.json +0 -24
- package/contracts/router/kyberswap/AggregationRouterHelper.sol +0 -331
- package/contracts/router/kyberswap/IAggregatorRouterHelper.sol +0 -10
- package/contracts/router/kyberswap/IMultihopRouterEthereum.sol +0 -141
- package/contracts/router/kyberswap/KyberSwapHelper.sol +0 -79
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
struct SwapData {
|
|
5
|
+
AGGREGATOR aggregatorType;
|
|
6
|
+
address router;
|
|
7
|
+
bytes callData;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
enum AGGREGATOR {
|
|
11
|
+
KYBERSWAP,
|
|
12
|
+
ONE_INCH
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface ISwapAggregator {
|
|
16
|
+
function swap(
|
|
17
|
+
address tokenIn,
|
|
18
|
+
uint256 amountIn,
|
|
19
|
+
SwapData calldata swapData
|
|
20
|
+
) external payable;
|
|
21
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
|
|
5
|
+
import "@openzeppelin/contracts/utils/Address.sol";
|
|
6
|
+
import "../../core/libraries/BoringOwnableUpgradeable.sol";
|
|
7
|
+
import "../../core/libraries/TokenHelper.sol";
|
|
8
|
+
import "../../core/libraries/Errors.sol";
|
|
9
|
+
import "./ISwapAggregator.sol";
|
|
10
|
+
import "./1inch/OneInchAggregationRouterHelper.sol";
|
|
11
|
+
import "./kyberswap/KyberAggregationRouterHelper.sol";
|
|
12
|
+
|
|
13
|
+
contract SwapAggregator is
|
|
14
|
+
ISwapAggregator,
|
|
15
|
+
TokenHelper,
|
|
16
|
+
KyberAggregationRouterHelper,
|
|
17
|
+
OneInchAggregationRouterHelper,
|
|
18
|
+
Initializable,
|
|
19
|
+
UUPSUpgradeable,
|
|
20
|
+
BoringOwnableUpgradeable
|
|
21
|
+
{
|
|
22
|
+
using Address for address;
|
|
23
|
+
|
|
24
|
+
constructor() initializer {}
|
|
25
|
+
|
|
26
|
+
function initialize() external initializer {
|
|
27
|
+
__BoringOwnable_init();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function swap(
|
|
31
|
+
address tokenIn,
|
|
32
|
+
uint256 amountIn,
|
|
33
|
+
SwapData calldata swapData
|
|
34
|
+
) external payable {
|
|
35
|
+
_safeApproveInf(tokenIn, swapData.router);
|
|
36
|
+
bytes memory scaledCallData = _getScaledInputData(
|
|
37
|
+
swapData.aggregatorType,
|
|
38
|
+
swapData.callData,
|
|
39
|
+
amountIn
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
swapData.router.functionCallWithValue(scaledCallData, tokenIn == NATIVE ? amountIn : 0);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function _getScaledInputData(
|
|
46
|
+
AGGREGATOR aggregatorType,
|
|
47
|
+
bytes calldata rawCallData,
|
|
48
|
+
uint256 amountIn
|
|
49
|
+
) internal pure returns (bytes memory scaledCallData) {
|
|
50
|
+
if (aggregatorType == AGGREGATOR.KYBERSWAP) {
|
|
51
|
+
scaledCallData = _getKyberScaledInputData(rawCallData, amountIn);
|
|
52
|
+
} else if (aggregatorType == AGGREGATOR.ONE_INCH) {
|
|
53
|
+
scaledCallData = _get1inchScaledInputData(rawCallData, amountIn);
|
|
54
|
+
} else {
|
|
55
|
+
assert(false);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ====================== UPGRADE ======================
|
|
60
|
+
|
|
61
|
+
function _authorizeUpgrade(address) internal virtual override onlyOwner {}
|
|
62
|
+
}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity 0.8.17;
|
|
4
|
+
import "@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol";
|
|
5
|
+
import "../../../core/libraries/BoringOwnableUpgradeable.sol";
|
|
6
|
+
|
|
7
|
+
import "../../../interfaces/IWETH.sol";
|
|
8
|
+
|
|
9
|
+
import "./interfaces/IMetaAggregationRouter.sol";
|
|
10
|
+
import "./interfaces/IMetaAggregationRouterV2.sol";
|
|
11
|
+
import "./interfaces/IHashflow.sol";
|
|
12
|
+
import "./interfaces/IExecutorHelperEthereum1.sol";
|
|
13
|
+
import "./ScaleDataHelperEthereum1.sol";
|
|
14
|
+
|
|
15
|
+
abstract contract KyberAggregationRouterHelper {
|
|
16
|
+
uint256 private constant _PARTIAL_FILL = 0x01;
|
|
17
|
+
uint256 private constant _REQUIRES_EXTRA_ETH = 0x02;
|
|
18
|
+
uint256 private constant _SHOULD_CLAIM = 0x04;
|
|
19
|
+
uint256 private constant _BURN_FROM_MSG_SENDER = 0x08;
|
|
20
|
+
uint256 private constant _BURN_FROM_TX_ORIGIN = 0x10;
|
|
21
|
+
uint256 private constant _SIMPLE_SWAP = 0x20;
|
|
22
|
+
|
|
23
|
+
struct Swap {
|
|
24
|
+
bytes data;
|
|
25
|
+
bytes4 selector;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
struct SimpleSwapData {
|
|
29
|
+
address[] firstPools;
|
|
30
|
+
uint256[] firstSwapAmounts;
|
|
31
|
+
bytes[] swapDatas;
|
|
32
|
+
uint256 deadline;
|
|
33
|
+
bytes destTokenFeeData;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
struct SwapExecutorDescription {
|
|
37
|
+
Swap[][] swapSequences;
|
|
38
|
+
address tokenIn;
|
|
39
|
+
address tokenOut;
|
|
40
|
+
uint256 minTotalAmountOut;
|
|
41
|
+
address to;
|
|
42
|
+
uint256 deadline;
|
|
43
|
+
bytes destTokenFeeData;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function _getKyberScaledInputData(bytes calldata kybercall, uint256 newAmount)
|
|
47
|
+
internal
|
|
48
|
+
pure
|
|
49
|
+
returns (bytes memory)
|
|
50
|
+
{
|
|
51
|
+
bytes4 selector = bytes4(kybercall[:4]);
|
|
52
|
+
|
|
53
|
+
if (selector == IWETH.deposit.selector) {
|
|
54
|
+
return kybercall; // no scaling needed
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (selector == IWETH.withdraw.selector) {
|
|
58
|
+
return abi.encodeWithSelector(selector, newAmount);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (
|
|
62
|
+
selector == IMetaAggregationRouter.swap.selector ||
|
|
63
|
+
selector == IMetaAggregationRouter.swapSimpleMode.selector
|
|
64
|
+
) {
|
|
65
|
+
(
|
|
66
|
+
address callTarget,
|
|
67
|
+
IMetaAggregationRouter.SwapDescription memory desc,
|
|
68
|
+
bytes memory targetData,
|
|
69
|
+
bytes memory clientData
|
|
70
|
+
) = abi.decode(
|
|
71
|
+
kybercall[4:],
|
|
72
|
+
(address, IMetaAggregationRouter.SwapDescription, bytes, bytes)
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
(desc, targetData) = _getScaledInputDataV1(
|
|
76
|
+
desc,
|
|
77
|
+
targetData,
|
|
78
|
+
newAmount,
|
|
79
|
+
selector == IMetaAggregationRouter.swapSimpleMode.selector ||
|
|
80
|
+
_flagsChecked(desc.flags, _SIMPLE_SWAP)
|
|
81
|
+
);
|
|
82
|
+
return abi.encodeWithSelector(selector, callTarget, desc, targetData, clientData);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (selector == IMetaAggregationRouterV2.swap.selector) {
|
|
86
|
+
IMetaAggregationRouterV2.SwapExecutionParams memory params = abi.decode(
|
|
87
|
+
kybercall[4:],
|
|
88
|
+
(IMetaAggregationRouterV2.SwapExecutionParams)
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
(params.desc, params.targetData) = _getScaledInputDataV2(
|
|
92
|
+
params.desc,
|
|
93
|
+
params.targetData,
|
|
94
|
+
newAmount,
|
|
95
|
+
_flagsChecked(params.desc.flags, _SIMPLE_SWAP)
|
|
96
|
+
);
|
|
97
|
+
return abi.encodeWithSelector(selector, params);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (selector == IMetaAggregationRouterV2.swapSimpleMode.selector) {
|
|
101
|
+
(
|
|
102
|
+
address callTarget,
|
|
103
|
+
IMetaAggregationRouterV2.SwapDescriptionV2 memory desc,
|
|
104
|
+
bytes memory targetData,
|
|
105
|
+
bytes memory clientData
|
|
106
|
+
) = abi.decode(
|
|
107
|
+
kybercall[4:],
|
|
108
|
+
(address, IMetaAggregationRouterV2.SwapDescriptionV2, bytes, bytes)
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
(desc, targetData) = _getScaledInputDataV2(desc, targetData, newAmount, true);
|
|
112
|
+
return abi.encodeWithSelector(selector, callTarget, desc, targetData, clientData);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
revert("InputScalingHelper: Invalid selector");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function _getScaledInputDataV1(
|
|
119
|
+
IMetaAggregationRouter.SwapDescription memory desc,
|
|
120
|
+
bytes memory executorData,
|
|
121
|
+
uint256 newAmount,
|
|
122
|
+
bool isSimpleMode
|
|
123
|
+
) internal pure returns (IMetaAggregationRouter.SwapDescription memory, bytes memory) {
|
|
124
|
+
uint256 oldAmount = desc.amount;
|
|
125
|
+
if (oldAmount == newAmount) {
|
|
126
|
+
return (desc, executorData);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// simple mode swap
|
|
130
|
+
if (isSimpleMode) {
|
|
131
|
+
return (
|
|
132
|
+
_scaledSwapDescriptionV1(desc, oldAmount, newAmount),
|
|
133
|
+
_scaledSimpleSwapData(executorData, oldAmount, newAmount)
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
//normal mode swap
|
|
138
|
+
return (
|
|
139
|
+
_scaledSwapDescriptionV1(desc, oldAmount, newAmount),
|
|
140
|
+
_scaledExecutorCallBytesData(executorData, oldAmount, newAmount)
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function _getScaledInputDataV2(
|
|
145
|
+
IMetaAggregationRouterV2.SwapDescriptionV2 memory desc,
|
|
146
|
+
bytes memory executorData,
|
|
147
|
+
uint256 newAmount,
|
|
148
|
+
bool isSimpleMode
|
|
149
|
+
) internal pure returns (IMetaAggregationRouterV2.SwapDescriptionV2 memory, bytes memory) {
|
|
150
|
+
uint256 oldAmount = desc.amount;
|
|
151
|
+
if (oldAmount == newAmount) {
|
|
152
|
+
return (desc, executorData);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// simple mode swap
|
|
156
|
+
if (isSimpleMode) {
|
|
157
|
+
return (
|
|
158
|
+
_scaledSwapDescriptionV2(desc, oldAmount, newAmount),
|
|
159
|
+
_scaledSimpleSwapData(executorData, oldAmount, newAmount)
|
|
160
|
+
);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
//normal mode swap
|
|
164
|
+
return (
|
|
165
|
+
_scaledSwapDescriptionV2(desc, oldAmount, newAmount),
|
|
166
|
+
_scaledExecutorCallBytesData(executorData, oldAmount, newAmount)
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
function _scaledSwapDescriptionV1(
|
|
171
|
+
IMetaAggregationRouter.SwapDescription memory desc,
|
|
172
|
+
uint256 oldAmount,
|
|
173
|
+
uint256 newAmount
|
|
174
|
+
) internal pure returns (IMetaAggregationRouter.SwapDescription memory) {
|
|
175
|
+
uint256 oldMinReturnAmount = desc.minReturnAmount;
|
|
176
|
+
desc.minReturnAmount = (desc.minReturnAmount * newAmount) / oldAmount;
|
|
177
|
+
//newMinReturnAmount should no be 0 if oldMinReturnAmount > 0
|
|
178
|
+
if (oldMinReturnAmount > 0 && desc.minReturnAmount == 0) desc.minReturnAmount = 1;
|
|
179
|
+
desc.amount = newAmount;
|
|
180
|
+
if (desc.srcReceivers.length == 0) {
|
|
181
|
+
return desc;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
uint256 newTotal;
|
|
185
|
+
for (uint256 i = 0; i < desc.srcReceivers.length; i++) {
|
|
186
|
+
if (i == desc.srcReceivers.length - 1) {
|
|
187
|
+
desc.srcAmounts[i] = newAmount - newTotal;
|
|
188
|
+
} else {
|
|
189
|
+
desc.srcAmounts[i] = (desc.srcAmounts[i] * newAmount) / oldAmount;
|
|
190
|
+
}
|
|
191
|
+
newTotal += desc.srcAmounts[i];
|
|
192
|
+
}
|
|
193
|
+
return desc;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function _scaledSimpleSwapData(
|
|
197
|
+
bytes memory data,
|
|
198
|
+
uint256 oldAmount,
|
|
199
|
+
uint256 newAmount
|
|
200
|
+
) internal pure returns (bytes memory) {
|
|
201
|
+
SimpleSwapData memory swapData = abi.decode(data, (SimpleSwapData));
|
|
202
|
+
uint256 numberSeq = swapData.firstPools.length;
|
|
203
|
+
uint256 newTotalSwapAmount;
|
|
204
|
+
for (uint256 i = 0; i < numberSeq; i++) {
|
|
205
|
+
if (i == numberSeq - 1) {
|
|
206
|
+
swapData.firstSwapAmounts[i] = newAmount - newTotalSwapAmount;
|
|
207
|
+
} else {
|
|
208
|
+
swapData.firstSwapAmounts[i] =
|
|
209
|
+
(swapData.firstSwapAmounts[i] * newAmount) /
|
|
210
|
+
oldAmount;
|
|
211
|
+
}
|
|
212
|
+
newTotalSwapAmount += swapData.firstSwapAmounts[i];
|
|
213
|
+
}
|
|
214
|
+
return abi.encode(swapData);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function _scaledExecutorCallBytesData(
|
|
218
|
+
bytes memory data,
|
|
219
|
+
uint256 oldAmount,
|
|
220
|
+
uint256 newAmount
|
|
221
|
+
) internal pure returns (bytes memory) {
|
|
222
|
+
SwapExecutorDescription memory executorDesc = abi.decode(data, (SwapExecutorDescription));
|
|
223
|
+
executorDesc.minTotalAmountOut = (executorDesc.minTotalAmountOut * newAmount) / oldAmount;
|
|
224
|
+
for (uint256 i = 0; i < executorDesc.swapSequences.length; i++) {
|
|
225
|
+
Swap memory swap = executorDesc.swapSequences[i][0];
|
|
226
|
+
bytes4 selector = swap.selector;
|
|
227
|
+
|
|
228
|
+
if (selector == IExecutorHelperEthereum1.executeUniSwap.selector) {
|
|
229
|
+
swap.data = ScaleDataHelperEthereum1.newUniSwap(swap.data, oldAmount, newAmount);
|
|
230
|
+
} else if (selector == IExecutorHelperEthereum1.executeStableSwap.selector) {
|
|
231
|
+
swap.data = ScaleDataHelperEthereum1.newStableSwap(
|
|
232
|
+
swap.data,
|
|
233
|
+
oldAmount,
|
|
234
|
+
newAmount
|
|
235
|
+
);
|
|
236
|
+
} else if (selector == IExecutorHelperEthereum1.executeCurveSwap.selector) {
|
|
237
|
+
swap.data = ScaleDataHelperEthereum1.newCurveSwap(swap.data, oldAmount, newAmount);
|
|
238
|
+
} else if (selector == IExecutorHelperEthereum1.executeKyberDMMSwap.selector) {
|
|
239
|
+
swap.data = ScaleDataHelperEthereum1.newKyberDMM(swap.data, oldAmount, newAmount);
|
|
240
|
+
} else if (selector == IExecutorHelperEthereum1.executeUniV3ProMMSwap.selector) {
|
|
241
|
+
swap.data = ScaleDataHelperEthereum1.newUniV3ProMM(
|
|
242
|
+
swap.data,
|
|
243
|
+
oldAmount,
|
|
244
|
+
newAmount
|
|
245
|
+
);
|
|
246
|
+
} else if (selector == IExecutorHelperEthereum1.executeRfqSwap.selector) {
|
|
247
|
+
revert("InputScalingHelper: Can not scale RFQ swap");
|
|
248
|
+
} else if (selector == IExecutorHelperEthereum1.executeBalV2Swap.selector) {
|
|
249
|
+
swap.data = ScaleDataHelperEthereum1.newBalancerV2(
|
|
250
|
+
swap.data,
|
|
251
|
+
oldAmount,
|
|
252
|
+
newAmount
|
|
253
|
+
);
|
|
254
|
+
} else if (selector == IExecutorHelperEthereum1.executeDODOSwap.selector) {
|
|
255
|
+
swap.data = ScaleDataHelperEthereum1.newDODO(swap.data, oldAmount, newAmount);
|
|
256
|
+
} else if (selector == IExecutorHelperEthereum1.executeWrappedstETHSwap.selector) {
|
|
257
|
+
swap.data = ScaleDataHelperEthereum1.newWrappedstETHSwap(
|
|
258
|
+
swap.data,
|
|
259
|
+
oldAmount,
|
|
260
|
+
newAmount
|
|
261
|
+
);
|
|
262
|
+
} else if (selector == IExecutorHelperEthereum1.executeSynthetixSwap.selector) {
|
|
263
|
+
swap.data = ScaleDataHelperEthereum1.newSynthetix(swap.data, oldAmount, newAmount);
|
|
264
|
+
} else if (selector == IExecutorHelperEthereum1.executePSMSwap.selector) {
|
|
265
|
+
swap.data = ScaleDataHelperEthereum1.newPSM(swap.data, oldAmount, newAmount);
|
|
266
|
+
} else if (selector == IExecutorHelperEthereum1.executeHashflowSwap.selector) {
|
|
267
|
+
revert("InputScalingHelper: Can not scale RFQ swap");
|
|
268
|
+
} else revert("AggregationExecutor: Dex type not supported");
|
|
269
|
+
}
|
|
270
|
+
return abi.encode(executorDesc);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function _scaledSwapDescriptionV2(
|
|
274
|
+
IMetaAggregationRouterV2.SwapDescriptionV2 memory desc,
|
|
275
|
+
uint256 oldAmount,
|
|
276
|
+
uint256 newAmount
|
|
277
|
+
) internal pure returns (IMetaAggregationRouterV2.SwapDescriptionV2 memory) {
|
|
278
|
+
uint256 oldMinReturnAmount = desc.minReturnAmount;
|
|
279
|
+
desc.minReturnAmount = (desc.minReturnAmount * newAmount) / oldAmount;
|
|
280
|
+
//newMinReturnAmount should no be 0 if oldMinReturnAmount > 0
|
|
281
|
+
if (oldMinReturnAmount > 0 && desc.minReturnAmount == 0) desc.minReturnAmount = 1;
|
|
282
|
+
desc.amount = newAmount;
|
|
283
|
+
if (desc.srcReceivers.length == 0) {
|
|
284
|
+
return desc;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
uint256 newTotal;
|
|
288
|
+
for (uint256 i = 0; i < desc.srcReceivers.length; i++) {
|
|
289
|
+
if (i == desc.srcReceivers.length - 1) {
|
|
290
|
+
desc.srcAmounts[i] = newAmount - newTotal;
|
|
291
|
+
} else {
|
|
292
|
+
desc.srcAmounts[i] = (desc.srcAmounts[i] * newAmount) / oldAmount;
|
|
293
|
+
}
|
|
294
|
+
newTotal += desc.srcAmounts[i];
|
|
295
|
+
}
|
|
296
|
+
return desc;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
function _flagsChecked(uint256 number, uint256 flag) internal pure returns (bool) {
|
|
300
|
+
return number & flag != 0;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity 0.8.17;
|
|
3
|
+
|
|
4
|
+
import "./interfaces/IExecutorHelperEthereum1.sol";
|
|
5
|
+
|
|
6
|
+
library ScaleDataHelperEthereum1 {
|
|
7
|
+
function newUniSwap(
|
|
8
|
+
bytes memory data,
|
|
9
|
+
uint256 oldAmount,
|
|
10
|
+
uint256 newAmount
|
|
11
|
+
) internal pure returns (bytes memory) {
|
|
12
|
+
IExecutorHelperEthereum1.UniSwap memory uniSwap = abi.decode(
|
|
13
|
+
data,
|
|
14
|
+
(IExecutorHelperEthereum1.UniSwap)
|
|
15
|
+
);
|
|
16
|
+
uniSwap.collectAmount = (uniSwap.collectAmount * newAmount) / oldAmount;
|
|
17
|
+
return abi.encode(uniSwap);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function newStableSwap(
|
|
21
|
+
bytes memory data,
|
|
22
|
+
uint256 oldAmount,
|
|
23
|
+
uint256 newAmount
|
|
24
|
+
) internal pure returns (bytes memory) {
|
|
25
|
+
IExecutorHelperEthereum1.StableSwap memory stableSwap = abi.decode(
|
|
26
|
+
data,
|
|
27
|
+
(IExecutorHelperEthereum1.StableSwap)
|
|
28
|
+
);
|
|
29
|
+
stableSwap.dx = (stableSwap.dx * newAmount) / oldAmount;
|
|
30
|
+
return abi.encode(stableSwap);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function newCurveSwap(
|
|
34
|
+
bytes memory data,
|
|
35
|
+
uint256 oldAmount,
|
|
36
|
+
uint256 newAmount
|
|
37
|
+
) internal pure returns (bytes memory) {
|
|
38
|
+
IExecutorHelperEthereum1.CurveSwap memory curveSwap = abi.decode(
|
|
39
|
+
data,
|
|
40
|
+
(IExecutorHelperEthereum1.CurveSwap)
|
|
41
|
+
);
|
|
42
|
+
curveSwap.dx = (curveSwap.dx * newAmount) / oldAmount;
|
|
43
|
+
return abi.encode(curveSwap);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function newKyberDMM(
|
|
47
|
+
bytes memory data,
|
|
48
|
+
uint256 oldAmount,
|
|
49
|
+
uint256 newAmount
|
|
50
|
+
) internal pure returns (bytes memory) {
|
|
51
|
+
IExecutorHelperEthereum1.UniSwap memory kyberDMMSwap = abi.decode(
|
|
52
|
+
data,
|
|
53
|
+
(IExecutorHelperEthereum1.UniSwap)
|
|
54
|
+
);
|
|
55
|
+
kyberDMMSwap.collectAmount = (kyberDMMSwap.collectAmount * newAmount) / oldAmount;
|
|
56
|
+
return abi.encode(kyberDMMSwap);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function newUniV3ProMM(
|
|
60
|
+
bytes memory data,
|
|
61
|
+
uint256 oldAmount,
|
|
62
|
+
uint256 newAmount
|
|
63
|
+
) internal pure returns (bytes memory) {
|
|
64
|
+
IExecutorHelperEthereum1.UniSwapV3ProMM memory uniSwapV3ProMM = abi.decode(
|
|
65
|
+
data,
|
|
66
|
+
(IExecutorHelperEthereum1.UniSwapV3ProMM)
|
|
67
|
+
);
|
|
68
|
+
uniSwapV3ProMM.swapAmount = (uniSwapV3ProMM.swapAmount * newAmount) / oldAmount;
|
|
69
|
+
|
|
70
|
+
return abi.encode(uniSwapV3ProMM);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function newBalancerV2(
|
|
74
|
+
bytes memory data,
|
|
75
|
+
uint256 oldAmount,
|
|
76
|
+
uint256 newAmount
|
|
77
|
+
) internal pure returns (bytes memory) {
|
|
78
|
+
IExecutorHelperEthereum1.BalancerV2 memory balancerV2 = abi.decode(
|
|
79
|
+
data,
|
|
80
|
+
(IExecutorHelperEthereum1.BalancerV2)
|
|
81
|
+
);
|
|
82
|
+
balancerV2.amount = (balancerV2.amount * newAmount) / oldAmount;
|
|
83
|
+
return abi.encode(balancerV2);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function newDODO(
|
|
87
|
+
bytes memory data,
|
|
88
|
+
uint256 oldAmount,
|
|
89
|
+
uint256 newAmount
|
|
90
|
+
) internal pure returns (bytes memory) {
|
|
91
|
+
IExecutorHelperEthereum1.DODO memory dodo = abi.decode(
|
|
92
|
+
data,
|
|
93
|
+
(IExecutorHelperEthereum1.DODO)
|
|
94
|
+
);
|
|
95
|
+
dodo.amount = (dodo.amount * newAmount) / oldAmount;
|
|
96
|
+
return abi.encode(dodo);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
function newSynthetix(
|
|
100
|
+
bytes memory data,
|
|
101
|
+
uint256 oldAmount,
|
|
102
|
+
uint256 newAmount
|
|
103
|
+
) internal pure returns (bytes memory) {
|
|
104
|
+
IExecutorHelperEthereum1.Synthetix memory synthetix = abi.decode(
|
|
105
|
+
data,
|
|
106
|
+
(IExecutorHelperEthereum1.Synthetix)
|
|
107
|
+
);
|
|
108
|
+
synthetix.sourceAmount = (synthetix.sourceAmount * newAmount) / oldAmount;
|
|
109
|
+
return abi.encode(synthetix);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function newWrappedstETHSwap(
|
|
113
|
+
bytes memory data,
|
|
114
|
+
uint256 oldAmount,
|
|
115
|
+
uint256 newAmount
|
|
116
|
+
) internal pure returns (bytes memory) {
|
|
117
|
+
IExecutorHelperEthereum1.WSTETH memory wstEthData = abi.decode(
|
|
118
|
+
data,
|
|
119
|
+
(IExecutorHelperEthereum1.WSTETH)
|
|
120
|
+
);
|
|
121
|
+
wstEthData.amount = (wstEthData.amount * newAmount) / oldAmount;
|
|
122
|
+
return abi.encode(wstEthData);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function newPSM(
|
|
126
|
+
bytes memory data,
|
|
127
|
+
uint256 oldAmount,
|
|
128
|
+
uint256 newAmount
|
|
129
|
+
) internal pure returns (bytes memory) {
|
|
130
|
+
IExecutorHelperEthereum1.PSM memory psm = abi.decode(data, (IExecutorHelperEthereum1.PSM));
|
|
131
|
+
psm.amountIn = (psm.amountIn * newAmount) / oldAmount;
|
|
132
|
+
return abi.encode(psm);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
|
|
3
|
+
pragma solidity >=0.6.12;
|
|
4
|
+
|
|
5
|
+
interface IAggregationExecutor {
|
|
6
|
+
function callBytes(bytes calldata data) external payable; // 0xd9c45357
|
|
7
|
+
|
|
8
|
+
// callbytes per swap sequence
|
|
9
|
+
function swapSingleSequence(bytes calldata data) external;
|
|
10
|
+
|
|
11
|
+
function finalTransactionProcessing(
|
|
12
|
+
address tokenIn,
|
|
13
|
+
address tokenOut,
|
|
14
|
+
address to,
|
|
15
|
+
bytes calldata destTokenFeeData
|
|
16
|
+
) external;
|
|
17
|
+
}
|