From ecd59be1d838ffa59675b1478e152e2c28cdc2b4 Mon Sep 17 00:00:00 2001 From: DhruvJain1122 Date: Tue, 15 Mar 2022 10:28:22 +0530 Subject: [PATCH 1/4] feat: refractor trader plugins --- .../Trader/trader/uniswap/useUniswapV2Hook.ts | 27 ++++ .../Trader/trader/useAllTradeComputed.ts | 143 ++++++------------ 2 files changed, 74 insertions(+), 96 deletions(-) create mode 100644 packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Hook.ts diff --git a/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Hook.ts b/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Hook.ts new file mode 100644 index 000000000000..016e665f22d8 --- /dev/null +++ b/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Hook.ts @@ -0,0 +1,27 @@ +import type { FungibleTokenDetailed } from '@masknet/web3-shared-evm' +import { TradeProvider } from '@masknet/public-api' + +import { useV2Trade as useUniswapV2Trade } from './useTrade' +import { TradeStrategy } from '../../types' +import { useTradeComputed as useUniswapTradeComputed } from './useTradeComputed' +import { useTradeGasLimit as useUniswapTradeGasLimit } from './useTradeGasLimit' +export function useUniswapV2Hook( + tradeProviders: TradeProvider[], + traderProvider: TradeProvider, + inputAmount_: string, + inputToken?: FungibleTokenDetailed, + outputToken?: FungibleTokenDetailed, +) { + const isTrader = tradeProviders.some((x) => x === traderProvider) + const trader_ = useUniswapV2Trade( + traderProvider, + TradeStrategy.ExactIn, + inputAmount_, + '0', + isTrader ? inputToken : undefined, + isTrader ? outputToken : undefined, + ) + const trader = useUniswapTradeComputed(trader_.value, inputToken, outputToken) + const traderEstimateGas = useUniswapTradeGasLimit(trader, traderProvider) + return { trader_, trader, traderEstimateGas } +} diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index 085da9903ab5..f76a2a38dd48 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -3,9 +3,10 @@ import { multipliedBy, pow10 } from '@masknet/web3-shared-base' import { useTrade as useNativeTokenTrade } from './native/useTrade' import { useTradeComputed as useNativeTokenTradeComputed } from './native/useTradeComputed' import { SwapOOData, TagType, TradeInfo, TradeStrategy } from '../types' -import { useV2Trade as useUniswapV2Trade, useV3Trade as useUniswapV3Trade } from './uniswap/useTrade' +import { useV3Trade as useUniswapV3Trade } from './uniswap/useTrade' import { useTradeComputed as useUniswapTradeComputed } from './uniswap/useTradeComputed' import { useTradeGasLimit as useUniswapTradeGasLimit } from './uniswap/useTradeGasLimit' +import { useUniswapV2Hook } from './uniswap/useUniswapV2Hook' import { useTrade as useZrxTrade } from './0x/useTrade' import { useTradeComputed as useZrxTradeComputed } from './0x/useTradeComputed' import { useTradeGasLimit as useZrxTradeGasLimit } from './0x/useTradeGasLimit' @@ -54,69 +55,39 @@ export function useAllTradeComputed( const nativeTradeGasLimit = useNativeTradeGasLimit(nativeToken, targetChainId) // uniswap-v2 - const uniswapV2_ = useUniswapV2Trade( - TradeProvider.UNISWAP_V2, - TradeStrategy.ExactIn, - inputAmount_, - '0', - tradeProviders.some((x) => x === TradeProvider.UNISWAP_V2) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.UNISWAP_V2) ? outputToken : undefined, - ) - const uniswapV2 = useUniswapTradeComputed( - uniswapV2_.value, - tradeProviders.some((x) => x === TradeProvider.UNISWAP_V2) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.UNISWAP_V2) ? outputToken : undefined, - temporarySlippage, - ) - const uniswapV2EstimateGas = useUniswapTradeGasLimit(uniswapV2, TradeProvider.UNISWAP_V2) + const { + trader_: uniswapV2_, + trader: uniswapV2, + traderEstimateGas: uniswapV2EstimateGas, + } = useUniswapV2Hook(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) // sushi swap - const sushiSwap_ = useUniswapV2Trade( - TradeProvider.SUSHISWAP, - TradeStrategy.ExactIn, - inputAmount_, - '0', - tradeProviders.some((x) => x === TradeProvider.SUSHISWAP) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.SUSHISWAP) ? outputToken : undefined, - ) - const sushiSwap = useUniswapTradeComputed(sushiSwap_.value, inputToken, outputToken, temporarySlippage) - const sushiSwapEstimateGas = useUniswapTradeGasLimit(sushiSwap, TradeProvider.SUSHISWAP) + const { + trader_: sushiSwap_, + trader: sushiSwap, + traderEstimateGas: sushiSwapEstimateGas, + } = useUniswapV2Hook(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) // sashimi swap - const sashimiSwap_ = useUniswapV2Trade( - TradeProvider.SASHIMISWAP, - TradeStrategy.ExactIn, - inputAmount_, - '0', - tradeProviders.some((x) => x === TradeProvider.SASHIMISWAP) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.SASHIMISWAP) ? outputToken : undefined, - ) - const sashimiSwap = useUniswapTradeComputed(sashimiSwap_.value, inputToken, outputToken, temporarySlippage) - const sashimiSwapEstimateGas = useUniswapTradeGasLimit(sashimiSwap, TradeProvider.SASHIMISWAP) + const { + trader_: sashimiSwap_, + trader: sashimiSwap, + traderEstimateGas: sashimiSwapEstimateGas, + } = useUniswapV2Hook(tradeProviders, TradeProvider.SASHIMISWAP, inputAmount_, inputToken, outputToken) // quick swap - const quickSwap_ = useUniswapV2Trade( - TradeProvider.QUICKSWAP, - TradeStrategy.ExactIn, - inputAmount_, - '0', - tradeProviders.some((x) => x === TradeProvider.QUICKSWAP) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.QUICKSWAP) ? outputToken : undefined, - ) - const quickSwap = useUniswapTradeComputed(quickSwap_.value, inputToken, outputToken, temporarySlippage) - const quickSwapEstimateGas = useUniswapTradeGasLimit(quickSwap, TradeProvider.QUICKSWAP) + const { + trader_: quickSwap_, + trader: quickSwap, + traderEstimateGas: quickSwapEstimateGas, + } = useUniswapV2Hook(tradeProviders, TradeProvider.QUICKSWAP, inputAmount_, inputToken, outputToken) // pancake swap - const pancakeSwap_ = useUniswapV2Trade( - TradeProvider.PANCAKESWAP, - TradeStrategy.ExactIn, - inputAmount_, - '0', - tradeProviders.some((x) => x === TradeProvider.PANCAKESWAP) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.PANCAKESWAP) ? outputToken : undefined, - ) - const pancakeSwap = useUniswapTradeComputed(pancakeSwap_.value, inputToken, outputToken, temporarySlippage) - const pancakeSwapEstimateGas = useUniswapTradeGasLimit(pancakeSwap, TradeProvider.PANCAKESWAP) + const { + trader_: pancakeSwap_, + trader: pancakeSwap, + traderEstimateGas: pancakeSwapEstimateGas, + } = useUniswapV2Hook(tradeProviders, TradeProvider.PANCAKESWAP, inputAmount_, inputToken, outputToken) // uniswap-v3 like providers const uniswapV3_ = useUniswapV3Trade( @@ -183,28 +154,18 @@ export function useAllTradeComputed( const bancorSwapEstimateGas = useBancorTradeGasLimit(bancor) // traderjoe - const traderJoe_ = useUniswapV2Trade( - TradeProvider.TRADERJOE, - TradeStrategy.ExactIn, - inputAmount_, - '0', - tradeProviders.some((x) => x === TradeProvider.TRADERJOE) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.TRADERJOE) ? outputToken : undefined, - ) - const traderJoe = useUniswapTradeComputed(traderJoe_.value, inputToken, outputToken) - const traderJoeEstimateGas = useUniswapTradeGasLimit(traderJoe, TradeProvider.TRADERJOE) + const { + trader_: traderJoe_, + trader: traderJoe, + traderEstimateGas: traderJoeEstimateGas, + } = useUniswapV2Hook(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) // pangolindex - const pangolindex_ = useUniswapV2Trade( - TradeProvider.PANGOLIN, - TradeStrategy.ExactIn, - inputAmount_, - '0', - tradeProviders.some((x) => x === TradeProvider.PANGOLIN) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.PANGOLIN) ? outputToken : undefined, - ) - const pangolindex = useUniswapTradeComputed(pangolindex_.value, inputToken, outputToken) - const pangolinEstimateGas = useUniswapTradeGasLimit(pangolindex, TradeProvider.PANGOLIN) + const { + trader_: pangolindex_, + trader: pangolindex, + traderEstimateGas: pangolinEstimateGas, + } = useUniswapV2Hook(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) // openocean const openocean_ = useOpenOceanTrade( @@ -224,28 +185,18 @@ export function useAllTradeComputed( const openoceanSwapEstimateGas = useOpenOceanTradeGasLimit(openocean as TradeComputed | null) // trisolaris - const trisolaris_ = useUniswapV2Trade( - TradeProvider.TRISOLARIS, - TradeStrategy.ExactIn, - inputAmount_, - '0', - tradeProviders.some((x) => x === TradeProvider.TRISOLARIS) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.TRISOLARIS) ? outputToken : undefined, - ) - const trisolaris = useUniswapTradeComputed(trisolaris_.value, inputToken, outputToken) - const trisolarisEstimateGas = useUniswapTradeGasLimit(trisolaris, TradeProvider.TRISOLARIS) + const { + trader_: trisolaris_, + trader: trisolaris, + traderEstimateGas: trisolarisEstimateGas, + } = useUniswapV2Hook(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) // WannaSwap - const wannaswap_ = useUniswapV2Trade( - TradeProvider.WANNASWAP, - TradeStrategy.ExactIn, - inputAmount_, - '0', - tradeProviders.some((x) => x === TradeProvider.WANNASWAP) ? inputToken : undefined, - tradeProviders.some((x) => x === TradeProvider.WANNASWAP) ? outputToken : undefined, - ) - const wannaswap = useUniswapTradeComputed(wannaswap_.value, inputToken, outputToken) - const wannaSwapEstimateGas = useUniswapTradeGasLimit(wannaswap, TradeProvider.WANNASWAP) + const { + trader_: wannaswap_, + trader: wannaswap, + traderEstimateGas: wannaSwapEstimateGas, + } = useUniswapV2Hook(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) const allTradeResult = [ { provider: TradeProvider.UNISWAP_V2, ...uniswapV2_, value: uniswapV2, gas: uniswapV2EstimateGas }, From 1d0736def0236fe999a2152e9f7afa266b1781d7 Mon Sep 17 00:00:00 2001 From: DhruvJain1122 Date: Tue, 15 Mar 2022 10:59:08 +0530 Subject: [PATCH 2/4] fix: refractor useUniswapV2Like --- ...seUniswapV2Hook.ts => useUniswapV2Like.ts} | 2 +- .../Trader/trader/useAllTradeComputed.ts | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) rename packages/mask/src/plugins/Trader/trader/uniswap/{useUniswapV2Hook.ts => useUniswapV2Like.ts} (96%) diff --git a/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Hook.ts b/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Like.ts similarity index 96% rename from packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Hook.ts rename to packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Like.ts index 016e665f22d8..82a2188b574d 100644 --- a/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Hook.ts +++ b/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Like.ts @@ -5,7 +5,7 @@ import { useV2Trade as useUniswapV2Trade } from './useTrade' import { TradeStrategy } from '../../types' import { useTradeComputed as useUniswapTradeComputed } from './useTradeComputed' import { useTradeGasLimit as useUniswapTradeGasLimit } from './useTradeGasLimit' -export function useUniswapV2Hook( +export function useUniswapV2Like( tradeProviders: TradeProvider[], traderProvider: TradeProvider, inputAmount_: string, diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index f76a2a38dd48..9f7b2d229a2b 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -6,7 +6,7 @@ import { SwapOOData, TagType, TradeInfo, TradeStrategy } from '../types' import { useV3Trade as useUniswapV3Trade } from './uniswap/useTrade' import { useTradeComputed as useUniswapTradeComputed } from './uniswap/useTradeComputed' import { useTradeGasLimit as useUniswapTradeGasLimit } from './uniswap/useTradeGasLimit' -import { useUniswapV2Hook } from './uniswap/useUniswapV2Hook' +import { useUniswapV2Like } from './uniswap/useUniswapV2Like' import { useTrade as useZrxTrade } from './0x/useTrade' import { useTradeComputed as useZrxTradeComputed } from './0x/useTradeComputed' import { useTradeGasLimit as useZrxTradeGasLimit } from './0x/useTradeGasLimit' @@ -59,35 +59,35 @@ export function useAllTradeComputed( trader_: uniswapV2_, trader: uniswapV2, traderEstimateGas: uniswapV2EstimateGas, - } = useUniswapV2Hook(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) // sushi swap const { trader_: sushiSwap_, trader: sushiSwap, traderEstimateGas: sushiSwapEstimateGas, - } = useUniswapV2Hook(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) // sashimi swap const { trader_: sashimiSwap_, trader: sashimiSwap, traderEstimateGas: sashimiSwapEstimateGas, - } = useUniswapV2Hook(tradeProviders, TradeProvider.SASHIMISWAP, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.SASHIMISWAP, inputAmount_, inputToken, outputToken) // quick swap const { trader_: quickSwap_, trader: quickSwap, traderEstimateGas: quickSwapEstimateGas, - } = useUniswapV2Hook(tradeProviders, TradeProvider.QUICKSWAP, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.QUICKSWAP, inputAmount_, inputToken, outputToken) // pancake swap const { trader_: pancakeSwap_, trader: pancakeSwap, traderEstimateGas: pancakeSwapEstimateGas, - } = useUniswapV2Hook(tradeProviders, TradeProvider.PANCAKESWAP, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.PANCAKESWAP, inputAmount_, inputToken, outputToken) // uniswap-v3 like providers const uniswapV3_ = useUniswapV3Trade( @@ -158,14 +158,14 @@ export function useAllTradeComputed( trader_: traderJoe_, trader: traderJoe, traderEstimateGas: traderJoeEstimateGas, - } = useUniswapV2Hook(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) // pangolindex const { trader_: pangolindex_, trader: pangolindex, traderEstimateGas: pangolinEstimateGas, - } = useUniswapV2Hook(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) // openocean const openocean_ = useOpenOceanTrade( @@ -189,14 +189,14 @@ export function useAllTradeComputed( trader_: trisolaris_, trader: trisolaris, traderEstimateGas: trisolarisEstimateGas, - } = useUniswapV2Hook(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) // WannaSwap const { trader_: wannaswap_, trader: wannaswap, traderEstimateGas: wannaSwapEstimateGas, - } = useUniswapV2Hook(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) const allTradeResult = [ { provider: TradeProvider.UNISWAP_V2, ...uniswapV2_, value: uniswapV2, gas: uniswapV2EstimateGas }, From 14fda049329715fdd73f1fcc939e6e7c92a8d7f6 Mon Sep 17 00:00:00 2001 From: DhruvJain1122 Date: Tue, 15 Mar 2022 11:04:57 +0530 Subject: [PATCH 3/4] fix: trade provider --- .../mask/src/plugins/Trader/trader/uniswap/useUniswapV2Like.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Like.ts b/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Like.ts index 82a2188b574d..8810653e8857 100644 --- a/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Like.ts +++ b/packages/mask/src/plugins/Trader/trader/uniswap/useUniswapV2Like.ts @@ -1,5 +1,5 @@ import type { FungibleTokenDetailed } from '@masknet/web3-shared-evm' -import { TradeProvider } from '@masknet/public-api' +import type { TradeProvider } from '@masknet/public-api' import { useV2Trade as useUniswapV2Trade } from './useTrade' import { TradeStrategy } from '../../types' From d79b54d249a058562d1f56d19d8b039c03fdf80c Mon Sep 17 00:00:00 2001 From: DhruvJain1122 Date: Wed, 16 Mar 2022 22:56:36 +0530 Subject: [PATCH 4/4] fix: tradeprovider --- .../mask/src/plugins/Trader/trader/useAllTradeComputed.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index 9f7b2d229a2b..c8144face12a 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -59,14 +59,14 @@ export function useAllTradeComputed( trader_: uniswapV2_, trader: uniswapV2, traderEstimateGas: uniswapV2EstimateGas, - } = useUniswapV2Like(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.UNISWAP_V2, inputAmount_, inputToken, outputToken) // sushi swap const { trader_: sushiSwap_, trader: sushiSwap, traderEstimateGas: sushiSwapEstimateGas, - } = useUniswapV2Like(tradeProviders, TradeProvider.WANNASWAP, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.SUSHISWAP, inputAmount_, inputToken, outputToken) // sashimi swap const { @@ -165,7 +165,7 @@ export function useAllTradeComputed( trader_: pangolindex_, trader: pangolindex, traderEstimateGas: pangolinEstimateGas, - } = useUniswapV2Like(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.PANGOLIN, inputAmount_, inputToken, outputToken) // openocean const openocean_ = useOpenOceanTrade( @@ -189,7 +189,7 @@ export function useAllTradeComputed( trader_: trisolaris_, trader: trisolaris, traderEstimateGas: trisolarisEstimateGas, - } = useUniswapV2Like(tradeProviders, TradeProvider.TRADERJOE, inputAmount_, inputToken, outputToken) + } = useUniswapV2Like(tradeProviders, TradeProvider.TRISOLARIS, inputAmount_, inputToken, outputToken) // WannaSwap const {