From 36fc24db22d56b4e440b727ba89090dd09822e10 Mon Sep 17 00:00:00 2001 From: codingsh Date: Fri, 24 Dec 2021 19:01:09 +0000 Subject: [PATCH 01/37] feat(avalanche): integrate avalanche network #4864 --- cspell.json | 2 + .../Labs/components/SwapSettingDialog.tsx | 9 + packages/dashboard/src/pages/Settings/api.ts | 5 + .../background-script/SettingsService.ts | 5 + .../plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx | 9 +- packages/maskbook/src/plugins/ITO/base.ts | 1 + .../maskbook/src/plugins/RedPacket/base.ts | 9 +- .../src/plugins/Trader/apis/trader/index.ts | 2 + .../plugins/Trader/apis/trending/hotfix.ts | 2 + .../src/plugins/Trader/constants/0x.ts | 1 + .../src/plugins/Trader/constants/dodo.ts | 1 + .../src/plugins/Trader/constants/sushiswap.ts | 1 + .../src/plugins/Trader/constants/trader.ts | 2 + packages/maskbook/src/plugins/Trader/pipes.ts | 4 + .../maskbook/src/plugins/Trader/services.ts | 9 + .../maskbook/src/plugins/Trader/settings.ts | 6 + .../src/plugins/Trader/trader/0x/useTrade.ts | 2 + .../trending/useCurrentTradeProvider.ts | 4 + .../src/plugins/UnlockProtocol/base.ts | 8 +- .../src/plugins/UnlockProtocol/constants.ts | 1 + .../src/plugins/Wallet/apis/debank.ts | 1 + .../src/plugins/Wallet/pipes/index.ts | 3 + .../src/plugins/Wallet/services/assets.ts | 2 +- packages/maskbook/src/settings/listener.ts | 2 + packages/maskbook/src/utils/flags.ts | 1 + packages/maskbook/src/utils/native-rpc/Web.ts | 4 + packages/public-api/src/web.ts | 1 + .../src/UI/components/NetworkIcon/index.tsx | 1 + .../wallet-network-icon/avalanche.png | Bin 0 -> 6790 bytes packages/web3-constants/compile-constants.ts | 2 + packages/web3-constants/evm/airdrop.json | 4 +- packages/web3-constants/evm/chain.json | 8 +- packages/web3-constants/evm/dhedge.json | 8 +- packages/web3-constants/evm/ethereum.json | 24 ++- packages/web3-constants/evm/gitcoin.json | 16 +- .../web3-constants/evm/good-ghosting.json | 4 +- packages/web3-constants/evm/ito.json | 4 +- packages/web3-constants/evm/lbp.json | 4 +- .../web3-constants/evm/nft-red-packet.json | 8 +- packages/web3-constants/evm/opensea-api.json | 12 +- packages/web3-constants/evm/red-packet.json | 20 ++- packages/web3-constants/evm/rpc.json | 8 +- .../evm/space-station-galaxy.json | 8 +- .../evm/token-asset-base-url.json | 4 +- packages/web3-constants/evm/token.json | 164 +++++++++++++----- packages/web3-constants/evm/trader.json | 128 ++++++++++---- packages/web3-constants/evm/trending.json | 12 +- .../evm/assets/coingecko-coin-list.json | 6 + packages/web3-shared/evm/pipes/index.ts | 4 + packages/web3-shared/evm/types/index.ts | 5 + .../web3-shared/evm/utils/chainDetailed.ts | 2 + pnpm-lock.yaml | 74 +++----- 52 files changed, 464 insertions(+), 163 deletions(-) create mode 100644 packages/shared/src/UI/components/NetworkIcon/wallet-network-icon/avalanche.png diff --git a/cspell.json b/cspell.json index 79225a9b37b1..c73f723c6f66 100644 --- a/cspell.json +++ b/cspell.json @@ -212,6 +212,8 @@ "wmatic", "wnative", "xdai", + "avalanche", + "avax", "xlarge", "xlink", "zerion", diff --git a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx index 62099f1d293a..452a3654fdee 100644 --- a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx +++ b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx @@ -9,6 +9,7 @@ import { usePolygonNetworkTradeProvider, useArbitrumNetworkTradeProvider, useXDaiNetworkTradeProvider, + useAvalancheNetworkTradeProvider, } from '../../Settings/api' import SettingItem from './SettingItem' @@ -47,6 +48,8 @@ export default function SwapSettingDialog({ open, onClose }: SettingDialogProps) const xDaiOptions = [{ label: 'SushiSwap', value: TradeProvider.SUSHISWAP }] + const avalancheOptions = [{ label: 'SushiSwap', value: TradeProvider.SUSHISWAP }] + const t = useDashboardI18N() const items = [ @@ -80,6 +83,12 @@ export default function SwapSettingDialog({ open, onClose }: SettingDialogProps) options: xDaiOptions, onChange: (value: any) => Services.Settings.setxDaiNetworkTradeProvider(+value), }, + { + legend: t.labs_settings_swap_network({ network: 'Avalanche' }), + value: useAvalancheNetworkTradeProvider(), + options: avalancheOptions, + onChange: (value: any) => Services.Settings.setAvalancheNetworkTradeProvider(+value), + }, ] return ( diff --git a/packages/dashboard/src/pages/Settings/api.ts b/packages/dashboard/src/pages/Settings/api.ts index ccc70b2202cb..573581b12c64 100644 --- a/packages/dashboard/src/pages/Settings/api.ts +++ b/packages/dashboard/src/pages/Settings/api.ts @@ -34,6 +34,11 @@ export const [useXDaiNetworkTradeProvider] = createGlobalState( Messages.events.xdaiNetworkTradeProviderSettings.on, ) +export const [useAvalancheNetworkTradeProvider] = createGlobalState( + Services.Settings.getAvalancheNetworkTradeProvider, + Messages.events.avalancheNetworkTradeProviderSettings.on, +) + const BASE_RUL = 'https://vaalh28dbi.execute-api.ap-east-1.amazonaws.com/api' interface BackupBaseRequest { diff --git a/packages/maskbook/src/extension/background-script/SettingsService.ts b/packages/maskbook/src/extension/background-script/SettingsService.ts index 8fa6888fba50..b682f73a8c5a 100644 --- a/packages/maskbook/src/extension/background-script/SettingsService.ts +++ b/packages/maskbook/src/extension/background-script/SettingsService.ts @@ -14,6 +14,7 @@ import { polygonNetworkTradeProviderSettings, arbitrumNetworkTradeProviderSettings, xdaiNetworkTradeProviderSettings, + avalancheNetworkTradeProviderSettings, } from '../../plugins/Trader/settings' import { queryMyPersonas } from './IdentityService' import { @@ -70,6 +71,10 @@ export const [getArbitrumNetworkTradeProvider, setArbitrumNetworkTradeProvider] ) export const [getxDaiNetworkTradeProvider, setxDaiNetworkTradeProvider] = create(xdaiNetworkTradeProviderSettings) +export const [getAvalancheNetworkTradeProvider, setAvalancheNetworkTradeProvider] = create( + avalancheNetworkTradeProviderSettings, +) + export const [getCurrentSelectedWalletProvider, setCurrentSelectedWalletProvider] = create(currentProviderSettings) export const [getCurrentSelectedWalletNetwork, setCurrentSelectedWalletNetwork] = create(currentNetworkSettings) diff --git a/packages/maskbook/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx b/packages/maskbook/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx index 8c74396be10b..918e1e2763bb 100644 --- a/packages/maskbook/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx +++ b/packages/maskbook/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx @@ -224,7 +224,9 @@ export function ClaimAllDialog(props: ClaimAllDialogProps) { } = useSpaceStationCampaignInfo(account, Flags.nft_airdrop_enabled) const [chainId, setChainId] = useState( - [ChainId.Mainnet, ChainId.BSC, ChainId.Matic, ChainId.Arbitrum, ChainId.xDai].includes(currentChainId) + [ChainId.Mainnet, ChainId.BSC, ChainId.Matic, ChainId.Arbitrum, ChainId.xDai, ChainId.Avalanche].includes( + currentChainId, + ) ? currentChainId : ChainId.Mainnet, ) @@ -352,8 +354,11 @@ export function ClaimAllDialog(props: ClaimAllDialogProps) { createTabItem('Polygon/Matic', ChainId.Matic), createTabItem('Arbitrum', ChainId.Arbitrum), createTabItem('xDai', ChainId.xDai), + createTabItem('Avalanche', ChainId.Avalanche), ], - index: [ChainId.Mainnet, ChainId.BSC, ChainId.Matic, ChainId.Arbitrum, ChainId.xDai].indexOf(chainId), + index: [ChainId.Mainnet, ChainId.BSC, ChainId.Matic, ChainId.Arbitrum, ChainId.xDai, ChainId.Avalanche].indexOf( + chainId, + ), classes, hasOnlyOneChild: true, } diff --git a/packages/maskbook/src/plugins/ITO/base.ts b/packages/maskbook/src/plugins/ITO/base.ts index bce8360ab138..b37237f7ab75 100644 --- a/packages/maskbook/src/plugins/ITO/base.ts +++ b/packages/maskbook/src/plugins/ITO/base.ts @@ -22,6 +22,7 @@ export const base: Plugin.Shared.Definition = { ChainId.Mumbai, ChainId.Arbitrum, ChainId.xDai, + ChainId.Avalanche, ], }, }, diff --git a/packages/maskbook/src/plugins/RedPacket/base.ts b/packages/maskbook/src/plugins/RedPacket/base.ts index be212cf0834d..dd8493d61083 100644 --- a/packages/maskbook/src/plugins/RedPacket/base.ts +++ b/packages/maskbook/src/plugins/RedPacket/base.ts @@ -16,7 +16,14 @@ export const base: Plugin.Shared.Definition = { networks: { type: 'opt-out', networks: {} }, target: 'stable', web3: { - operatingSupportedChains: [ChainId.Mainnet, ChainId.BSC, ChainId.Matic, ChainId.Arbitrum, ChainId.xDai], + operatingSupportedChains: [ + ChainId.Mainnet, + ChainId.BSC, + ChainId.Matic, + ChainId.Arbitrum, + ChainId.xDai, + ChainId.Avalanche, + ], }, }, } diff --git a/packages/maskbook/src/plugins/Trader/apis/trader/index.ts b/packages/maskbook/src/plugins/Trader/apis/trader/index.ts index b9ba608d5120..42d9309969fc 100644 --- a/packages/maskbook/src/plugins/Trader/apis/trader/index.ts +++ b/packages/maskbook/src/plugins/Trader/apis/trader/index.ts @@ -25,6 +25,8 @@ export async function getAvailableTraderProviders(chainId: ChainId) { return [TradeProvider.UNISWAP_V3] case NetworkType.xDai: return [TradeProvider.SUSHISWAP] + case NetworkType.Avalanche: + return [TradeProvider.SUSHISWAP] default: safeUnreachable(networkType) return [] diff --git a/packages/maskbook/src/plugins/Trader/apis/trending/hotfix.ts b/packages/maskbook/src/plugins/Trader/apis/trending/hotfix.ts index b66a813fad81..9b5c60639a47 100644 --- a/packages/maskbook/src/plugins/Trader/apis/trending/hotfix.ts +++ b/packages/maskbook/src/plugins/Trader/apis/trending/hotfix.ts @@ -95,6 +95,7 @@ const ID_NETWORK_MAP: Record> = { 'polygon-pos': NetworkType.Polygon, 'arbitrum-one': NetworkType.Arbitrum, xdai: NetworkType.xDai, + avalanche: NetworkType.Avalanche, }, [DataProvider.COIN_MARKET_CAP]: { '1027': NetworkType.Ethereum, @@ -102,6 +103,7 @@ const ID_NETWORK_MAP: Record> = { '3890': NetworkType.Polygon, '11841': NetworkType.Arbitrum, '5601': NetworkType.xDai, + '43114': NetworkType.Avalanche, }, [DataProvider.UNISWAP_INFO]: {}, } diff --git a/packages/maskbook/src/plugins/Trader/constants/0x.ts b/packages/maskbook/src/plugins/Trader/constants/0x.ts index db334f246cfd..e370f0e9d72c 100644 --- a/packages/maskbook/src/plugins/Trader/constants/0x.ts +++ b/packages/maskbook/src/plugins/Trader/constants/0x.ts @@ -6,6 +6,7 @@ export const ZRX_BASE_URL: Record = { [NetworkType.Polygon]: 'https://polygon.api.0x.org/', [NetworkType.Arbitrum]: 'https://arbitrum.api.0x.org/', [NetworkType.xDai]: 'https://xdai.api.0x.org/', + [NetworkType.Avalanche]: 'https://avalanche.api.0x.org/', } export const ZRX_AFFILIATE_ADDRESS = '0x934B510D4C9103E6a87AEf13b816fb080286D649' diff --git a/packages/maskbook/src/plugins/Trader/constants/dodo.ts b/packages/maskbook/src/plugins/Trader/constants/dodo.ts index d351190412fd..0ca1d152f2ba 100644 --- a/packages/maskbook/src/plugins/Trader/constants/dodo.ts +++ b/packages/maskbook/src/plugins/Trader/constants/dodo.ts @@ -8,4 +8,5 @@ export const networkNames: Record = { [NetworkType.Polygon]: 'matic', [NetworkType.Arbitrum]: 'arbitrum', [NetworkType.xDai]: 'xdai', + [NetworkType.Avalanche]: 'avalanche', } diff --git a/packages/maskbook/src/plugins/Trader/constants/sushiswap.ts b/packages/maskbook/src/plugins/Trader/constants/sushiswap.ts index b6981063f81d..4fc865ee360d 100644 --- a/packages/maskbook/src/plugins/Trader/constants/sushiswap.ts +++ b/packages/maskbook/src/plugins/Trader/constants/sushiswap.ts @@ -15,4 +15,5 @@ export const SUSHISWAP_BASE_AGAINST_TOKENS: ERC20AgainstToken = { [ChainId.Matic]: [WNATIVE, USDC, WBTC, DAI, USDT].map((x) => x[ChainId.Matic]), [ChainId.BSC]: [WNATIVE, DAI, BUSD, USDC, USDT, BTCB].map((x) => x[ChainId.BSC]), [ChainId.xDai]: [WNATIVE, USDC, USDT, WBTC].map((x) => x[ChainId.xDai]), + [ChainId.Avalanche]: [WNATIVE, USDC, USDT, WBTC].map((x) => x[ChainId.Avalanche]), } diff --git a/packages/maskbook/src/plugins/Trader/constants/trader.ts b/packages/maskbook/src/plugins/Trader/constants/trader.ts index 90933745a6c0..551ae39faf27 100644 --- a/packages/maskbook/src/plugins/Trader/constants/trader.ts +++ b/packages/maskbook/src/plugins/Trader/constants/trader.ts @@ -60,6 +60,8 @@ export const WNATIVE_ONLY: ERC20AgainstToken = { [ChainId.Arbitrum]: [WNATIVE[ChainId.Arbitrum]], [ChainId.Arbitrum_Rinkeby]: [WNATIVE[ChainId.Arbitrum_Rinkeby]], [ChainId.xDai]: [WNATIVE[ChainId.xDai]], + [ChainId.Avalanche]: [WNATIVE[ChainId.Avalanche]], + [ChainId.Avalanche_Fuji]: [WNATIVE[ChainId.Avalanche_Fuji]], } export const BIPS_BASE = new BigNumber(10000) diff --git a/packages/maskbook/src/plugins/Trader/pipes.ts b/packages/maskbook/src/plugins/Trader/pipes.ts index 432b56a9b5b8..feb4538bfe79 100644 --- a/packages/maskbook/src/plugins/Trader/pipes.ts +++ b/packages/maskbook/src/plugins/Trader/pipes.ts @@ -80,6 +80,8 @@ export function resolveTradeProviderLink(tradeProvider: TradeProvider, networkTy return 'https://aribitrum.api.0x.org/' case NetworkType.xDai: return 'https://xdai.api.0x.org/' + case NetworkType.Avalanche: + return '' default: safeUnreachable(networkType) return '' @@ -134,6 +136,8 @@ export function resolveTradePairLink(tradeProvider: TradeProvider, address: stri return `https://analytics-aribtrum.sushi.com/pairs/${address}` case NetworkType.xDai: return `https://analytics-xdai.sushi.com/pairs/${address}` + case NetworkType.Avalanche: + return `` // sushiswap avax doesn't have analytics yet. default: safeUnreachable(networkType) return '' diff --git a/packages/maskbook/src/plugins/Trader/services.ts b/packages/maskbook/src/plugins/Trader/services.ts index 9039ed24bf41..57f029117883 100644 --- a/packages/maskbook/src/plugins/Trader/services.ts +++ b/packages/maskbook/src/plugins/Trader/services.ts @@ -11,6 +11,7 @@ import { polygonNetworkTradeProviderSettings, arbitrumNetworkTradeProviderSettings, xdaiNetworkTradeProviderSettings, + avalancheNetworkTradeProviderSettings, } from './settings' import { DataProvider, TradeProvider } from '@masknet/public-api' @@ -41,6 +42,11 @@ currentChainIdSettings.addListener((chainId: ChainId) => { if (currentDataProviderSettings.value === DataProvider.UNISWAP_INFO) currentDataProviderSettings.value = DataProvider.COIN_MARKET_CAP break + case NetworkType.Avalanche: + currentTradeProviderSettings.value = TradeProvider.SUSHISWAP + if (currentDataProviderSettings.value === DataProvider.UNISWAP_INFO) + currentDataProviderSettings.value = DataProvider.COIN_MARKET_CAP + break default: unreachable(networkType) } @@ -65,6 +71,9 @@ currentTradeProviderSettings.addListener((tradeProvider: TradeProvider) => { case NetworkType.xDai: xdaiNetworkTradeProviderSettings.value = tradeProvider break + case NetworkType.Avalanche: + avalancheNetworkTradeProviderSettings.value = tradeProvider + break default: unreachable(networkType) } diff --git a/packages/maskbook/src/plugins/Trader/settings.ts b/packages/maskbook/src/plugins/Trader/settings.ts index c7231cc1d3c5..6a5fe8586cbf 100644 --- a/packages/maskbook/src/plugins/Trader/settings.ts +++ b/packages/maskbook/src/plugins/Trader/settings.ts @@ -77,6 +77,12 @@ export const xdaiNetworkTradeProviderSettings = createGlobalSettings '' }, ) +export const avalancheNetworkTradeProviderSettings = createGlobalSettings( + `${PLUGIN_IDENTIFIER}+avalanche+tradeProvider`, + TradeProvider.SUSHISWAP, + { primary: () => '' }, +) + //#region trade provider general settings export interface TradeProviderSettings { pools: ZrxTradePool[] diff --git a/packages/maskbook/src/plugins/Trader/trader/0x/useTrade.ts b/packages/maskbook/src/plugins/Trader/trader/0x/useTrade.ts index d35c8afb4992..edff481c51c5 100644 --- a/packages/maskbook/src/plugins/Trader/trader/0x/useTrade.ts +++ b/packages/maskbook/src/plugins/Trader/trader/0x/useTrade.ts @@ -27,6 +27,8 @@ export function getNativeTokenLabel(networkType: NetworkType) { return '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' case NetworkType.xDai: return '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' + case NetworkType.Avalanche: + return '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee' default: safeUnreachable(networkType) return '' diff --git a/packages/maskbook/src/plugins/Trader/trending/useCurrentTradeProvider.ts b/packages/maskbook/src/plugins/Trader/trending/useCurrentTradeProvider.ts index 116302a5f34a..546adfe7583a 100644 --- a/packages/maskbook/src/plugins/Trader/trending/useCurrentTradeProvider.ts +++ b/packages/maskbook/src/plugins/Trader/trending/useCurrentTradeProvider.ts @@ -5,6 +5,7 @@ import { binanceNetworkTradeProviderSettings, arbitrumNetworkTradeProviderSettings, xdaiNetworkTradeProviderSettings, + avalancheNetworkTradeProviderSettings, } from '../settings' import { ChainId, getNetworkTypeFromChainId, NetworkType } from '@masknet/web3-shared-evm' import { unreachable } from '@dimensiondev/kit' @@ -18,6 +19,7 @@ export function useCurrentTradeProvider(chainId?: ChainId) { const binanceNetworkTradeProvider = useValueRef(binanceNetworkTradeProviderSettings) const arbitrumNetworkTradeProvider = useValueRef(arbitrumNetworkTradeProviderSettings) const xdaiNetworkTradeProvider = useValueRef(xdaiNetworkTradeProviderSettings) + const avalancheNetworkTradeProvider = useValueRef(avalancheNetworkTradeProviderSettings) if (!networkType) return TradeProvider.UNISWAP_V2 switch (networkType) { @@ -31,6 +33,8 @@ export function useCurrentTradeProvider(chainId?: ChainId) { return arbitrumNetworkTradeProvider case NetworkType.xDai: return xdaiNetworkTradeProvider + case NetworkType.Avalanche: + return avalancheNetworkTradeProvider default: unreachable(networkType) } diff --git a/packages/maskbook/src/plugins/UnlockProtocol/base.ts b/packages/maskbook/src/plugins/UnlockProtocol/base.ts index 84e4f26d6a7b..38857c572994 100644 --- a/packages/maskbook/src/plugins/UnlockProtocol/base.ts +++ b/packages/maskbook/src/plugins/UnlockProtocol/base.ts @@ -13,7 +13,13 @@ export const base: Plugin.Shared.Definition = { networks: { type: 'opt-out', networks: {} }, target: 'stable', web3: { - operatingSupportedChains: [ChainId.Mainnet, ChainId.xDai, ChainId.Matic, ChainId.Rinkeby], + operatingSupportedChains: [ + ChainId.Mainnet, + ChainId.xDai, + ChainId.Matic, + ChainId.Rinkeby, + ChainId.Avalanche, + ], }, }, } diff --git a/packages/maskbook/src/plugins/UnlockProtocol/constants.ts b/packages/maskbook/src/plugins/UnlockProtocol/constants.ts index a91ebaa9346f..3cd5c22d6c3c 100644 --- a/packages/maskbook/src/plugins/UnlockProtocol/constants.ts +++ b/packages/maskbook/src/plugins/UnlockProtocol/constants.ts @@ -12,6 +12,7 @@ export const graphEndpointKeyVal = { [ChainId.Rinkeby]: 'https://api.thegraph.com/subgraphs/name/unlock-protocol/unlock-rinkeby', [ChainId.xDai]: 'https://api.thegraph.com/subgraphs/name/unlock-protocol/xdai', [ChainId.Matic]: 'https://api.thegraph.com/subgraphs/name/unlock-protocol/polygon', + [ChainId.Avalanche]: '', } export const keyServerEndpoint = 'https://unlock.r2d2.to/' diff --git a/packages/maskbook/src/plugins/Wallet/apis/debank.ts b/packages/maskbook/src/plugins/Wallet/apis/debank.ts index 0f92b3262246..d44d9bd79f08 100644 --- a/packages/maskbook/src/plugins/Wallet/apis/debank.ts +++ b/packages/maskbook/src/plugins/Wallet/apis/debank.ts @@ -20,6 +20,7 @@ const chainIdMap: Record = { [ChainId.xDai]: 'xdai', [ChainId.Matic]: 'matic', [ChainId.Arbitrum]: 'arb', + [ChainId.Avalanche]: 'avax', } const getDebankChain = (chainId: number) => { diff --git a/packages/maskbook/src/plugins/Wallet/pipes/index.ts b/packages/maskbook/src/plugins/Wallet/pipes/index.ts index b51f32d8cbb6..ea6abec2343e 100644 --- a/packages/maskbook/src/plugins/Wallet/pipes/index.ts +++ b/packages/maskbook/src/plugins/Wallet/pipes/index.ts @@ -37,6 +37,7 @@ export const resolveDebankChainName = createLookupTableResolver = { [NetworkType.Polygon]: new URL('./wallet-network-icon/polygon.png', import.meta.url).toString(), [NetworkType.Arbitrum]: new URL('./wallet-network-icon/arbitrum.png', import.meta.url).toString(), [NetworkType.xDai]: new URL('./wallet-network-icon/xdai.png', import.meta.url).toString(), + [NetworkType.Avalanche]: new URL('./wallet-network-icon/avalanche.png', import.meta.url).toString(), } export function NetworkIcon(props: NetworkIconProps) { diff --git a/packages/shared/src/UI/components/NetworkIcon/wallet-network-icon/avalanche.png b/packages/shared/src/UI/components/NetworkIcon/wallet-network-icon/avalanche.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa7ccab8d1d109c359cc386953c20d19806049b GIT binary patch literal 6790 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 [NetworkType.Ethereum]: 'Ethereum', [NetworkType.Arbitrum]: 'Arbitrum', [NetworkType.xDai]: 'xDai', + [NetworkType.Avalanche]: 'Avalanche', }, 'Unknown', ) @@ -68,6 +70,8 @@ export const resolveChainColor = createLookupTableResolver( [ChainId.Arbitrum]: 'rgb(36, 150, 238)', [ChainId.Arbitrum_Rinkeby]: 'rgb(36, 150, 238)', [ChainId.xDai]: 'rgb(73, 169, 166)', + [ChainId.Avalanche]: 'rgb(232, 65, 66)', + [ChainId.Avalanche_Fuji]: 'rgb(232, 65, 66)', }, 'rgb(214, 217, 220)', ) diff --git a/packages/web3-shared/evm/types/index.ts b/packages/web3-shared/evm/types/index.ts index 2306ac03a7bf..37a34504dd88 100644 --- a/packages/web3-shared/evm/types/index.ts +++ b/packages/web3-shared/evm/types/index.ts @@ -40,6 +40,10 @@ export enum ChainId { // xDai xDai = 100, + + // Avalanche + Avalanche = 43114, + Avalanche_Fuji = 43113, } export enum ProviderType { @@ -63,6 +67,7 @@ export enum NetworkType { Polygon = 'Polygon', Arbitrum = 'Arbitrum', xDai = 'xDai', + Avalanche = 'Avalanche', } export interface Wallet { diff --git a/packages/web3-shared/evm/utils/chainDetailed.ts b/packages/web3-shared/evm/utils/chainDetailed.ts index 33dfa7af8f65..26a9f1a9d77f 100644 --- a/packages/web3-shared/evm/utils/chainDetailed.ts +++ b/packages/web3-shared/evm/utils/chainDetailed.ts @@ -85,6 +85,7 @@ export const getChainIdFromNetworkType = createLookupTableResolver { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3289fffcb1bc..1881416b22c3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -569,7 +569,7 @@ importers: '@masknet/theme': link:../../theme '@masknet/web3-shared-evm': link:../../web3-shared/evm bignumber.js: 9.0.1 - react-use: 17.3.1 + react-use: 17.3.1_809e898db569a1fe7ae9ea851da8594e web3-core-helpers: 1.5.2 packages/plugins/example: @@ -11871,7 +11871,7 @@ packages: /core-js/2.6.12: resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. + deprecated: core-js@<3.4 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js. requiresBuild: true dev: false @@ -13799,6 +13799,7 @@ packages: /eth-sig-util/1.4.2: resolution: {integrity: sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA=} + deprecated: Deprecated in favor of '@metamask/eth-sig-util' dependencies: ethereumjs-abi: github.com/ethereumjs/ethereumjs-abi/ee3994657fa7a427238e6ba92a84d0b529bbcde0 ethereumjs-util: 5.2.1 @@ -18536,22 +18537,6 @@ packages: resolution: {integrity: sha1-ulSMh578+5DaHE2eCX20pGySVe8=} dev: false - /nano-css/5.3.1: - resolution: {integrity: sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA==} - peerDependencies: - react: '*' - react-dom: '*' - dependencies: - css-tree: 1.1.3 - csstype: 3.0.8 - fastest-stable-stringify: 2.0.2 - inline-style-prefixer: 6.0.0 - rtl-css-js: 1.14.2 - sourcemap-codec: 1.4.8 - stacktrace-js: 2.0.2 - stylis: 4.0.10 - dev: false - /nano-css/5.3.1_809e898db569a1fe7ae9ea851da8594e: resolution: {integrity: sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA==} peerDependencies: @@ -20471,15 +20456,6 @@ packages: tslib: 2.3.1 dev: false - /react-universal-interface/0.6.2_tslib@2.3.1: - resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} - peerDependencies: - react: '*' - tslib: '*' - dependencies: - tslib: 2.3.1 - dev: false - /react-use/15.3.8_809e898db569a1fe7ae9ea851da8594e: resolution: {integrity: sha512-GeGcrmGuUvZrY5wER3Lnph9DSYhZt5nEjped4eKDq8BRGr2CnLf9bDQWG9RFc7oCPphnscUUdOovzq0E5F2c6Q==} peerDependencies: @@ -20504,28 +20480,6 @@ packages: tslib: 2.3.1 dev: false - /react-use/17.3.1: - resolution: {integrity: sha512-hs7+tS4rRm1QLHPfanLCqXIi632tP4V7Sai1ENUP2WTufU6am++tU9uSw9YrNCFqbABiEv0ndKU1XCUcfu2tXA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - react-dom: ^16.8.0 || ^17.0.0 - dependencies: - '@types/js-cookie': 2.2.7 - '@xobotyi/scrollbar-width': 1.9.5 - copy-to-clipboard: 3.3.1 - fast-deep-equal: 3.1.3 - fast-shallow-equal: 1.0.0 - js-cookie: 2.2.1 - nano-css: 5.3.1 - react-universal-interface: 0.6.2_tslib@2.3.1 - resize-observer-polyfill: 1.5.1 - screenfull: 5.1.0 - set-harmonic-interval: 1.0.1 - throttle-debounce: 3.0.1 - ts-easing: 0.2.0 - tslib: 2.3.1 - dev: false - /react-use/17.3.1_809e898db569a1fe7ae9ea851da8594e: resolution: {integrity: sha512-hs7+tS4rRm1QLHPfanLCqXIi632tP4V7Sai1ENUP2WTufU6am++tU9uSw9YrNCFqbABiEv0ndKU1XCUcfu2tXA==} peerDependencies: @@ -25218,6 +25172,26 @@ packages: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} dev: true + github.com/ProjectOpenSea/wyvern-js/1634ad0e2f9961accca62edbf4ac624effa18552: + resolution: {tarball: https://codeload.github.com/ProjectOpenSea/wyvern-js/tar.gz/1634ad0e2f9961accca62edbf4ac624effa18552} + name: wyvern-js + version: 3.2.0 + dependencies: + '@0xproject/abi-gen': 0.1.7 + '@0xproject/assert': 0.0.11 + '@0xproject/json-schemas': 0.7.24 + '@0xproject/utils': 0.1.3 + '@0xproject/web3-wrapper': 0.1.14 + 0x.js: 0.29.2 + bn.js: 4.12.0 + ethereumjs-abi: github.com/ProjectWyvern/ethereumjs-abi/3d2d89641a6ad5984929b6ca4b646452ec74f73d + ethereumjs-util: 5.2.1 + json-loader: 0.5.7 + jsonschema: 1.4.0 + lodash: 4.17.21 + web3: 0.20.7 + dev: false + github.com/ProjectOpenSea/wyvern-js/fabb7660f23f2252c141077e32193d281036299e: resolution: {tarball: https://codeload.github.com/ProjectOpenSea/wyvern-js/tar.gz/fabb7660f23f2252c141077e32193d281036299e} name: wyvern-js @@ -25260,7 +25234,7 @@ packages: bignumber.js: 6.0.0 typed-promisify: 0.4.0 web3-provider-engine: 13.8.0 - wyvern-js: github.com/ProjectOpenSea/wyvern-js/fabb7660f23f2252c141077e32193d281036299e + wyvern-js: github.com/ProjectOpenSea/wyvern-js/1634ad0e2f9961accca62edbf4ac624effa18552 transitivePeerDependencies: - debug dev: false From 7ce7dc7fdc43b918c1929d48f444b9c68495293a Mon Sep 17 00:00:00 2001 From: codingsh Date: Fri, 31 Dec 2021 13:42:23 +0000 Subject: [PATCH 02/37] feat(avalanche): add traderjoe dex --- cspell.json | 138 +++++++++--------- .../Labs/components/SwapSettingDialog.tsx | 5 +- .../SNSAdaptor/trader/TradeProviderIcon.tsx | 9 ++ .../src/plugins/Trader/apis/trader/index.ts | 2 +- .../src/plugins/Trader/constants/trader.ts | 4 + .../src/plugins/Trader/constants/traderjoe.ts | 14 ++ packages/mask/src/plugins/Trader/pipes.ts | 7 + packages/mask/src/plugins/Trader/settings.ts | 3 + .../Trader/trader/useAllTradeComputed.ts | 13 ++ .../Trader/trader/useGetTradeContext.ts | 14 ++ .../plugins/Trader/trader/useTradeCallback.ts | 4 + .../plugins/Trader/trader/useTradeContext.ts | 14 ++ .../mask/src/plugins/Trader/types/trader.ts | 1 + packages/mask/src/resources/traderjoe.png | Bin 0 -> 43219 bytes packages/public-api/src/web.ts | 1 + packages/web3-constants/evm/token.json | 24 ++- packages/web3-constants/evm/trader.json | 72 +++++++++ 17 files changed, 252 insertions(+), 73 deletions(-) create mode 100644 packages/mask/src/plugins/Trader/constants/traderjoe.ts create mode 100644 packages/mask/src/resources/traderjoe.png diff --git a/cspell.json b/cspell.json index fef53b9c7f14..f0b4c76e53bc 100644 --- a/cspell.json +++ b/cspell.json @@ -12,54 +12,20 @@ "*.snap" ], "words": [ - "AMPL", - "Adai", - "Amountstate", - "Ampleforth", - "ARETH", - "Bolivarian", - "Bouvet", - "Burkina", - "CAIP", - "Caicos", - "Celo", - "Checksummed", - "Cunha", - "Cura", - "DHEDGE", - "Darussalam", - "ECID", - "Eustatius", - "Exchangetoken", - "Faso", - "Futuna", - "IDBP", - "IHDR", - "Kitts", - "Leste", - "Maarten", - "Marino", - "Maskbook", - "Mastdon", - "Mayen", - "Merkle", - "Mutex", - "Plurinational", - "Polkadot", - "Pooltogether", - "Rhonin", - "Rica", - "Sint", - "Tokelau", - "Transak", - "Vcent", - "Viet", "aave", + "Adai", "addrs", + "Amountstate", "ampl", + "AMPL", + "Ampleforth", "anchorme", + "apikey", "arbitrum", + "ARETH", "arweave", + "avalanche", + "avax", "bgcolor", "bignumber", "bips", @@ -67,9 +33,17 @@ "blockie", "blockies", "bluebar", + "Bolivarian", + "Bouvet", "builtins", + "Burkina", + "Caicos", + "CAIP", "canonify", "cashtag", + "Celo", + "Checksummed", + "Choudhary", "cipherparams", "ciphertext", "clearfix", @@ -78,9 +52,15 @@ "commentid", "consolas", "contenteditable", + "contrib", + "contribs", "cooldown", + "counterparty", "crwdne", + "Cunha", + "Cura", "d'Ivoire", + "Darussalam", "datas", "debank", "denorm", @@ -88,30 +68,40 @@ "deserialization", "destory", "dfyn", + "DHEDGE", "dimensiondev", "dklen", "dompurify", + "ECID", "ecsign", "elec", "encryptedmsg", "endregion", "ethersproject", + "Eustatius", "everytime", + "Exchangetoken", + "Faso", "fbid", "filelist", "fileservice", "formating", "fullfilled", "furucombo", + "Futuna", "gasnow", "geckoview", "gltf", "goodghosting", + "Görli", "gundb", "hashmasks", + "hexlify", "holoflows", "iconbar", + "IDBP", "ifclaimed", + "IHDR", "imagebitmap", "immer", "importmap", @@ -120,27 +110,41 @@ "ipfs", "ipfsurl", "ittr", + "jailbroken", "jsbi", "jsonml", + "juicebox", "kdfparams", "keccak", + "Kitts", "kred", "labelledby", "languagedetector", "lemy", + "Leste", "linkedin", "linkswap", "locationchange", "lowercased", + "Maarten", + "macbinary", + "majeure", + "Marino", + "Maskbook", "maskbookjsonrpc", "maskface", "masknet", "masknetwork", "masknightly", "masktext", + "Mastdon", + "Mayen", + "Merkle", "messagepack", "metas", + "metaverse", "millify", + "misoperation", "monofont", "monospace", "mooniswap", @@ -150,18 +154,25 @@ "mskc", "multicall", "multihop", + "Mutex", "newsfeed", + "NFTRSS", + "nftscan", "nowallet", "nums", "opensea", "overridable", "overscan", + "Pageable", "pagelet", "pancakeswap", "pathnames", "perma", "pid", "pids", + "Plurinational", + "Polkadot", + "Pooltogether", "popper", "popperjs", "porportion", @@ -170,7 +181,6 @@ "promi", "proxied", "pushstate", - "unstyled", "pvtsutils", "qrcode", "quickswap", @@ -180,6 +190,9 @@ "redpacket", "replacestate", "repost", + "resizer", + "Rhonin", + "Rica", "rindexed", "rpid", "rpids", @@ -187,7 +200,10 @@ "sashimiswap", "scroller", "secp", + "Serializers", "shink", + "Sint", + "solana", "steelblue", "steganographic", "steganography", @@ -196,6 +212,7 @@ "superrare", "sushiswap", "swappable", + "Swither", "tabindex", "tablist", "testid", @@ -203,6 +220,12 @@ "thegraph", "timelock", "timelocked", + "Tokelau", + "tokenid", + "tradejoe", + "TRADERJOE", + "Transak", + "Treder", "twimg", "txid", "typechain", @@ -211,9 +234,12 @@ "unencrypted", "unreviewed", "unstake", + "unstyled", "untrusted", "urlcat", "usermenu", + "Vcent", + "Viet", "viewbox", "visualcompletion", "walletconnect", @@ -224,34 +250,10 @@ "wmatic", "wnative", "xdai", - "avalanche", - "avax", "xlarge", "xlink", "zerion", - "Zubin", - "Choudhary", - "macbinary", - "Choudhary", - "counterparty", - "jailbroken", - "misoperation", - "majeure", - "Serializers", - "Swither", - "nftscan", - "apikey", - "tokenid", - "NFTRSS", - "solana", - "Görli", - "resizer", - "Pageable", - "metaverse", - "hexlify", - "contribs", - "contrib", - "juicebox" + "Zubin" ], "ignoreWords": [ "cryptopunks", diff --git a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx index d291990e628c..de52d1064c80 100644 --- a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx +++ b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx @@ -53,7 +53,10 @@ export default function SwapSettingDialog({ open, onClose }: SettingDialogProps) const celoOptions = [{ label: 'SushiSwap', value: TradeProvider.SUSHISWAP }] - const avalancheOptions = [{ label: 'SushiSwap', value: TradeProvider.SUSHISWAP }] + const avalancheOptions = [ + { label: 'SushiSwap', value: TradeProvider.SUSHISWAP }, + { label: 'TraderJoe', value: TradeProvider.TRADERJOE }, + ] const t = useDashboardI18N() diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeProviderIcon.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeProviderIcon.tsx index 1edffc16c22f..b3e5e0513363 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeProviderIcon.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeProviderIcon.tsx @@ -12,6 +12,7 @@ import { resolveTradeProviderName } from '../../pipes' const quickswapIcon = new URL('../../../../resources/quickswap.png', import.meta.url).toString() const pancakeswapIcon = new URL('../../../../resources/pancakeswap.png', import.meta.url).toString() +const traderjoeIcon = new URL('../../../../resources/traderjoe.png', import.meta.url).toString() const useStyles = makeStyles()((theme) => ({ icon: { @@ -59,6 +60,14 @@ export function TradeProviderIcon(props: TradeProviderIconProps) { return case TradeProvider.BANCOR: return + case TradeProvider.TRADERJOE: + return ( + {resolveTradeProviderName(TradeProvider.TRADERJOE)} + ) default: unreachable(props.provider) } diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index 73c37b40fa99..eca3c5de73ee 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -26,7 +26,7 @@ export async function getAvailableTraderProviders(chainId: ChainId) { case NetworkType.xDai: return [TradeProvider.SUSHISWAP] case NetworkType.Avalanche: - return [TradeProvider.SUSHISWAP] + return [TradeProvider.SUSHISWAP, TradeProvider.TRADERJOE] case NetworkType.Celo: return [TradeProvider.SUSHISWAP] case NetworkType.Fantom: diff --git a/packages/mask/src/plugins/Trader/constants/trader.ts b/packages/mask/src/plugins/Trader/constants/trader.ts index e7d1366102b8..4c4d3095bb0e 100644 --- a/packages/mask/src/plugins/Trader/constants/trader.ts +++ b/packages/mask/src/plugins/Trader/constants/trader.ts @@ -43,6 +43,10 @@ export const NFTX = createERC20Tokens('NFTX_ADDRESS', 'NFTX', 'NFTX', 18) export const STETH = createERC20Tokens('stETH_ADDRESS', 'stakedETH', 'stETH', 18) export const CUSD = createERC20Tokens('cUSD_ADDRESS', 'Celo Dollar', 'cUSD', 18) export const CEUR = createERC20Tokens('cEUR_ADDRESS', 'Celo Euro', 'cEUR', 18) +export const USDTe = createERC20Tokens('USDT_ADDRESS', 'Tether USD', 'USDT.e', 6) +export const DAIe = createERC20Tokens('DAI_ADDRESS', 'Celo Euro', 'cEUR', 18) +export const WBTCe = createERC20Tokens('WBTC_ADDRESS', 'Wrapped BTC', 'WBTCe', 18) +export const JOE = createERC20Tokens('JOE_ADDRESS', 'JoeToken', 'JOE', 18) export const WNATIVE = createERC20Tokens( 'WNATIVE_ADDRESS', diff --git a/packages/mask/src/plugins/Trader/constants/traderjoe.ts b/packages/mask/src/plugins/Trader/constants/traderjoe.ts new file mode 100644 index 000000000000..1247d778caa0 --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/traderjoe.ts @@ -0,0 +1,14 @@ +import { ChainId } from '@masknet/web3-shared-evm' +import { ETHER, WNATIVE, WBTCe, DAIe, USDTe, WNATIVE_ONLY } from './trader' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const TRADERJOE_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const TRADERJOE_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Avalanche]: [WNATIVE, DAIe, USDTe, ETHER, WBTCe].map((x) => x[ChainId.Avalanche]), +} diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index c0504cfb9598..40c4f1e86d35 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -56,6 +56,7 @@ export const resolveTradeProviderName = createLookupTableResolver { throw new Error(`Unknown provider type: ${tradeProvider}`) @@ -104,6 +105,8 @@ export function resolveTradeProviderLink(tradeProvider: TradeProvider, networkTy return 'https://app.dodoex.io' case TradeProvider.BANCOR: return 'https://app.bancor.network/eth/swap' + case TradeProvider.TRADERJOE: + return 'https://traderjoexyz.com/#/trade' default: unreachable(tradeProvider) } @@ -161,6 +164,9 @@ export function resolveTradePairLink(tradeProvider: TradeProvider, address: stri case TradeProvider.BANCOR: // TODO - Bancor analytics should be available with V3 return `` + case TradeProvider.TRADERJOE: + // TODO - Trader Joe Analytics + return `` default: unreachable(tradeProvider) } @@ -250,6 +256,7 @@ export const resolveZrxTradePoolName = createLookupTableResolver(`${PLUGIN_ID}+tradePr const balancerSettings = createInternalSettings(`${PLUGIN_ID}+tradeProvider+balancer`, '') const dodoSettings = createInternalSettings(`${PLUGIN_ID}+tradeProvider+dodo`, '') const bancorSettings = createInternalSettings(`${PLUGIN_ID}+tradeProvider+bancor`, '') +const traderjoeSettings = createInternalSettings(`${PLUGIN_ID}+tradeProvider+traderjoe`, '') /** * The general settings of specific tarde provider @@ -135,6 +136,8 @@ export function getCurrentTradeProviderGeneralSettings(tradeProvider: TradeProvi return dodoSettings case TradeProvider.BANCOR: return bancorSettings + case TradeProvider.TRADERJOE: + return traderjoeSettings default: unreachable(tradeProvider) } diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index f9e0745096b5..b3ffd5362e14 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -174,6 +174,18 @@ export function useAllTradeComputed( const bancor = useBancorTradeComputed(bancor_.value ?? null, TradeStrategy.ExactIn, inputToken, outputToken) 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 allTradeResult = [ { provider: TradeProvider.UNISWAP_V2, ...uniswapV2_, value: uniswapV2, gas: uniswapV2EstimateGas }, { provider: TradeProvider.SUSHISWAP, ...sushiSwap_, value: sushiSwap, gas: sushiSwapEstimateGas }, @@ -185,6 +197,7 @@ export function useAllTradeComputed( { provider: TradeProvider.BALANCER, ...balancer_, value: balancer, gas: balancerSwapEstimateGas }, { provider: TradeProvider.DODO, ...dodo_, value: dodo, gas: dodoSwapEstimateGas }, { provider: TradeProvider.BANCOR, ...bancor_, value: bancor, gas: bancorSwapEstimateGas }, + { provider: TradeProvider.TRADERJOE, ...traderJoe_, value: traderJoe, gas: traderJoeEstimateGas }, ] return nativeToken_.value diff --git a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts index c0eb7e4df671..08c0620ae96b 100644 --- a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts @@ -13,6 +13,8 @@ import { SUSHISWAP_CUSTOM_BASES, UNISWAP_BASE_AGAINST_TOKENS, UNISWAP_CUSTOM_BASES, + TRADERJOE_BASE_AGAINST_TOKENS, + TRADERJOE_CUSTOM_BASES, } from '../constants' import { unreachable } from '@dimensiondev/kit' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -113,6 +115,18 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { TYPE: tradeProvider, ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).BANCOR_EXCHANGE_PROXY_ADDRESS, } + case TradeProvider.TRADERJOE: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: getTraderConstants(chainId).TRADERJOE_THEGRAPH, + INIT_CODE_HASH: getTraderConstants(chainId).TRADERJOE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_FACTORY_ADDRESS, + AGAINST_TOKENS: TRADERJOE_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: TRADERJOE_CUSTOM_BASES, + } default: if (tradeProvider) unreachable(tradeProvider) return null diff --git a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts index 5994a0906bcd..cd1bd5dba3bc 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts @@ -88,6 +88,8 @@ export function useTradeCallback( return uniswapV2Like case TradeProvider.PANCAKESWAP: return uniswapV2Like + case TradeProvider.TRADERJOE: + return uniswapV2Like case TradeProvider.ZRX: return zrx case TradeProvider.BALANCER: @@ -96,6 +98,8 @@ export function useTradeCallback( return dodo case TradeProvider.BANCOR: return bancor + case TradeProvider.TRADERJOE: + return uniswapV2Like default: if (provider) unreachable(provider) return [] diff --git a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts index b5b6dfc7f350..d24707fb1566 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts @@ -13,6 +13,8 @@ import { SUSHISWAP_CUSTOM_BASES, UNISWAP_BASE_AGAINST_TOKENS, UNISWAP_CUSTOM_BASES, + TRADERJOE_BASE_AGAINST_TOKENS, + TRADERJOE_CUSTOM_BASES, } from '../constants' import type { TradeContext as TradeContext_ } from '../types' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -114,6 +116,18 @@ export function useTradeContext(tradeProvider: TradeProvider) { TYPE: tradeProvider, ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).BANCOR_EXCHANGE_PROXY_ADDRESS, } + case TradeProvider.TRADERJOE: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: getTraderConstants(chainId).TRADERJOE_THEGRAPH, + INIT_CODE_HASH: getTraderConstants(chainId).TRADERJOE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_FACTORY_ADDRESS, + AGAINST_TOKENS: TRADERJOE_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: TRADERJOE_CUSTOM_BASES, + } default: unreachable(tradeProvider) } diff --git a/packages/mask/src/plugins/Trader/types/trader.ts b/packages/mask/src/plugins/Trader/types/trader.ts index 2ac65f17e4be..33f15d8a711f 100644 --- a/packages/mask/src/plugins/Trader/types/trader.ts +++ b/packages/mask/src/plugins/Trader/types/trader.ts @@ -66,6 +66,7 @@ export enum ZrxTradePool { UniswapV3 = 'Uniswap_V3', WaultSwap = 'WaultSwap', xSigma = 'xSigma', + TraderJoe = 'TraderJoe', } export interface TradeComputed { diff --git a/packages/mask/src/resources/traderjoe.png b/packages/mask/src/resources/traderjoe.png new file mode 100644 index 0000000000000000000000000000000000000000..61ec8915aa6006aca02b18d5951c27d5da97d097 GIT binary patch literal 43219 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 ifHjFpOkxrjJN|#atwu05rKhw20000 Date: Fri, 31 Dec 2021 17:48:23 +0000 Subject: [PATCH 03/37] chore(avalanche): fixed traderjoe --- packages/mask/src/plugins/Trader/constants/index.ts | 1 + packages/mask/src/plugins/Trader/constants/openocean.ts | 1 + packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/mask/src/plugins/Trader/constants/index.ts b/packages/mask/src/plugins/Trader/constants/index.ts index 1b15553734b4..a1a9242ce288 100644 --- a/packages/mask/src/plugins/Trader/constants/index.ts +++ b/packages/mask/src/plugins/Trader/constants/index.ts @@ -9,4 +9,5 @@ export * from './quickswap' export * from './pancakeswap' export * from './dodo' export * from './bancor' +export * from './traderjoe' export type { ERC20TokenCustomizedBase, ERC20AgainstToken } from './types' diff --git a/packages/mask/src/plugins/Trader/constants/openocean.ts b/packages/mask/src/plugins/Trader/constants/openocean.ts index e3412435e2bc..58f0c1ab3c0e 100644 --- a/packages/mask/src/plugins/Trader/constants/openocean.ts +++ b/packages/mask/src/plugins/Trader/constants/openocean.ts @@ -10,4 +10,5 @@ export const networkNames: Record = { [NetworkType.xDai]: 'xdai', [NetworkType.Celo]: 'celo', [NetworkType.Fantom]: 'fantom', + [NetworkType.Avalanche]: 'avalanche', } diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index 17fc53541af6..62dde8e6604d 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -187,7 +187,7 @@ export function useAllTradeComputed( tradeProviders.some((x) => x === TradeProvider.TRADERJOE) ? outputToken : undefined, ) const traderJoe = useUniswapTradeComputed(traderJoe_.value, inputToken, outputToken) - const traderJoeEstimateGas = useUniswapTradeGasLimit(traderJoe_, TradeProvider.TRADERJOE) + const traderJoeEstimateGas = useUniswapTradeGasLimit(traderJoe, TradeProvider.TRADERJOE) // openocean const openocean_ = useOpenOceanTrade(TradeStrategy.ExactIn, inputAmount_, '0', inputToken, outputToken) From 4d17a077f5d2d9c1f476512e9d560c180448c701 Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 3 Jan 2022 23:20:43 +0000 Subject: [PATCH 04/37] feat(avalanche): add assets avalanche logo --- docs/evm-integration.md | 23 +++++++++--------- .../components/shared/ApplicationBoard.tsx | 2 ++ .../mask/src/plugins/EVM/assets/avalanche.png | Bin 0 -> 6790 bytes .../plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx | 1 + packages/mask/src/plugins/Trader/pipes.ts | 6 ++--- .../web3-shared/evm/utils/chainDetailed.ts | 12 ++++----- 6 files changed, 24 insertions(+), 20 deletions(-) create mode 100644 packages/mask/src/plugins/EVM/assets/avalanche.png diff --git a/docs/evm-integration.md b/docs/evm-integration.md index 4bb9084f6125..a685b4c87e96 100644 --- a/docs/evm-integration.md +++ b/docs/evm-integration.md @@ -28,7 +28,7 @@ Mask Network fetches on-chain data from various data sources. Therefore, you can #### Learn more -- https://api.coingecko.com/api/v3/asset_platforms +- ### Token List @@ -44,10 +44,10 @@ Mask Network has integrated Uniswap V2 and Uniswap V3 into the trader plugin. If For API-based DEX, please ref to how other DEXes integrated: -| DEX | Pull Request Link | -| --------- | -------------------------------------------------- | -| DODO | https://github.com/DimensionDev/Maskbook/pull/3882 | -| OpenOcean | https://github.com/DimensionDev/Maskbook/pull/5198 | +| DEX | Pull Request Link | +| --------- | ---------------------------------------------------- | +| DODO | | +| OpenOcean | | ### Deploy Contracts @@ -87,9 +87,10 @@ Goto `chrome-extension://jkoeaghipilijlahjplgbfiocjhldnap/dashboard.html#/wallet ## Learn More -| Chain | Pull Request Link | -| -------- | -------------------------------------------------- | -| CELO | https://github.com/DimensionDev/Maskbook/pull/5052 | -| Fantom | https://github.com/DimensionDev/Maskbook/pull/5036 | -| xDai | https://github.com/DimensionDev/Maskbook/pull/4140 | -| Arbitrum | https://github.com/DimensionDev/Maskbook/pull/3558 | +| Chain | Pull Request Link | +| --------- | ---------------------------------------------------- | +| CELO | | +| Fantom | | +| xDai | | +| Arbitrum | | +| Avalanche | | diff --git a/packages/mask/src/components/shared/ApplicationBoard.tsx b/packages/mask/src/components/shared/ApplicationBoard.tsx index 8dedbed99845..d93929add3b6 100644 --- a/packages/mask/src/components/shared/ApplicationBoard.tsx +++ b/packages/mask/src/components/shared/ApplicationBoard.tsx @@ -289,6 +289,7 @@ export function ApplicationBoard({ secondEntries, secondEntryChainTabs }: MaskAp ChainId.xDai, ChainId.Celo, ChainId.Fantom, + ChainId.Avalanche, ], ), undefined, @@ -316,6 +317,7 @@ export function ApplicationBoard({ secondEntries, secondEntryChainTabs }: MaskAp ChainId.xDai, ChainId.Celo, ChainId.Fantom, + ChainId.Avalanche, ], ), undefined, diff --git a/packages/mask/src/plugins/EVM/assets/avalanche.png b/packages/mask/src/plugins/EVM/assets/avalanche.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa7ccab8d1d109c359cc386953c20d19806049b GIT binary patch literal 6790 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 diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index 1f652b9c5909..da2d1380c59a 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -166,13 +166,13 @@ export function resolveTradePairLink(tradeProvider: TradeProvider, address: stri return `https://pancakeswap.info/pool/${address}` case TradeProvider.BANCOR: // TODO - Bancor analytics should be available with V3 - return `` + return '' case TradeProvider.OPENOCEAN: // TODO - OpenOcean - return `` + return '' case TradeProvider.TRADERJOE: // TODO - Trader Joe Analytics - return `` + return '' default: unreachable(tradeProvider) } diff --git a/packages/web3-shared/evm/utils/chainDetailed.ts b/packages/web3-shared/evm/utils/chainDetailed.ts index 6706dad31906..9ff2b1127cf9 100644 --- a/packages/web3-shared/evm/utils/chainDetailed.ts +++ b/packages/web3-shared/evm/utils/chainDetailed.ts @@ -87,13 +87,13 @@ export function getChainIdFromName(name: string) { export const getChainIdFromNetworkType = createLookupTableResolver( { [NetworkType.Ethereum]: ChainId.Mainnet, - [NetworkType.Binance]: ChainId.BSC, - [NetworkType.Polygon]: ChainId.Matic, [NetworkType.Arbitrum]: ChainId.Arbitrum, - [NetworkType.xDai]: ChainId.xDai, [NetworkType.Avalanche]: ChainId.Avalanche, + [NetworkType.Binance]: ChainId.BSC, [NetworkType.Celo]: ChainId.Celo, [NetworkType.Fantom]: ChainId.Fantom, + [NetworkType.Polygon]: ChainId.Matic, + [NetworkType.xDai]: ChainId.xDai, }, ChainId.Mainnet, ) @@ -101,13 +101,13 @@ export const getChainIdFromNetworkType = createLookupTableResolver = { [NetworkType.Ethereum]: 'ETH', - [NetworkType.Binance]: 'BSC', - [NetworkType.Polygon]: 'Polygon', [NetworkType.Arbitrum]: 'Arbitrum', - [NetworkType.xDai]: 'xDai', [NetworkType.Avalanche]: 'Avalanche', + [NetworkType.Binance]: 'BSC', [NetworkType.Celo]: 'CELO', [NetworkType.Fantom]: 'FTM', + [NetworkType.Polygon]: 'Polygon', + [NetworkType.xDai]: 'xDai', } const chainDetailed = getChainDetailed(chainId) const entry = Object.entries(map).find(([key, value]) => { From 14b85819a6f479ea710138a1760d57ea40611bc0 Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 3 Jan 2022 23:54:12 +0000 Subject: [PATCH 05/37] chore(avalanche): fixed labs_settings_swap_network --- .../pages/Labs/components/SwapSettingDialog.tsx | 2 +- packages/mask/src/plugins/Trader/pipes.ts | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx index 6ab68d56ed29..0c8eb1b8f920 100644 --- a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx +++ b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx @@ -116,7 +116,7 @@ export default function SwapSettingDialog({ open, onClose }: SettingDialogProps) legend: t.labs_settings_swap_network({ network: 'Avalanche' }), value: useAvalancheNetworkTradeProvider(), options: avalancheOptions, - onChange: (value: string) => Services.Settings.setAvalancheNetworkTradeProvider(+value), + onChange: (value: string) => Services.Settings.setAvalancheNetworkTradeProvider(Number.parseInt(value, 10)), }, ] diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index da2d1380c59a..40a2cee83bd4 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -56,8 +56,8 @@ export const resolveTradeProviderName = createLookupTableResolver { throw new Error(`Unknown provider type: ${tradeProvider}`) @@ -82,12 +82,12 @@ export function resolveTradeProviderLink(tradeProvider: TradeProvider, networkTy return 'https://aribitrum.api.0x.org/' case NetworkType.xDai: return 'https://xdai.api.0x.org/' - case NetworkType.Avalanche: - return '' case NetworkType.Celo: return 'https://celo.api.0x.org/' case NetworkType.Fantom: return 'https://fantom.api.0x.org/' + case NetworkType.Avalanche: + return 'https://fantom.api.0x.org/' default: safeUnreachable(networkType) return '' @@ -106,10 +106,10 @@ export function resolveTradeProviderLink(tradeProvider: TradeProvider, networkTy return 'https://app.dodoex.io' case TradeProvider.BANCOR: return 'https://app.bancor.network/eth/swap' - case TradeProvider.TRADERJOE: - return 'https://traderjoexyz.com/#/trade' case TradeProvider.OPENOCEAN: return 'https://openocean.finance/classic' + case TradeProvider.TRADERJOE: + return 'https://traderjoexyz.com/#/trade' default: unreachable(tradeProvider) } @@ -146,12 +146,12 @@ export function resolveTradePairLink(tradeProvider: TradeProvider, address: stri return `https://analytics-aribtrum.sushi.com/pairs/${address}` case NetworkType.xDai: return `https://analytics-xdai.sushi.com/pairs/${address}` - case NetworkType.Avalanche: - return `` // sushiswap avax doesn't have analytics yet. case NetworkType.Celo: return `https://analytics-celo.sushi.com/pairs/${address}` case NetworkType.Fantom: return `https://analytics-ftm.sushi.com/pairs/${address}` + case NetworkType.Avalanche: + return `https://analytics-avx.sushi.com/pairs/${address}` default: safeUnreachable(networkType) return '' From b24852064d8de531292e3b83f7ec4b8ccb340c42 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 4 Jan 2022 13:38:37 +0000 Subject: [PATCH 06/37] chore(avalanche): add openocea contract on avalanche network --- .../src/pages/Labs/components/SwapSettingDialog.tsx | 1 + packages/mask/src/plugins/EVM/constants.ts | 10 ++++++++++ packages/web3-constants/evm/trader.json | 9 ++++++--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx index 0c8eb1b8f920..9912d64c825f 100644 --- a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx +++ b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx @@ -65,6 +65,7 @@ export default function SwapSettingDialog({ open, onClose }: SettingDialogProps) const avalancheOptions = [ { label: 'SushiSwap', value: TradeProvider.SUSHISWAP }, { label: 'TraderJoe', value: TradeProvider.TRADERJOE }, + { label: 'OpenOcean', value: TradeProvider.OPENOCEAN }, ] const t = useDashboardI18N() diff --git a/packages/mask/src/plugins/EVM/constants.ts b/packages/mask/src/plugins/EVM/constants.ts index 960067629005..b8f26744af3a 100644 --- a/packages/mask/src/plugins/EVM/constants.ts +++ b/packages/mask/src/plugins/EVM/constants.ts @@ -147,6 +147,16 @@ export const PLUGIN_NETWORKS: Web3Plugin.NetworkDescriptor[] = [ iconColor: 'rgb(73, 169, 166)', isMainnet: true, }, + { + ID: `${PLUGIN_ID}_avalanche`, + networkSupporterPluginID: PLUGIN_ID, + chainId: ChainId.Avalanche, + type: NetworkType.Avalanche, + name: 'Avalanche', + icon: new URL('./assets/avalanche.png', import.meta.url), + iconColor: 'rgb(232 65 66)', + isMainnet: true, + }, ] export const PLUGIN_PROVIDERS: Web3Plugin.ProviderDescriptor[] = [ { diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index 91ab838f42a0..577a24179128 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -661,7 +661,9 @@ "Arbitrum_Rinkeby": "", "xDai": "0x0000000000000000000000000000000000000000", "Celo": "", - "Fantom": "" + "Fantom": "", + "Avalanche": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + "Avalanche_Fuji": "" }, "OPENOCEAN_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", @@ -676,8 +678,9 @@ "Arbitrum": "0x6352a56caadc4f1e25cd6c75970fa768a3304e64", "Arbitrum_Rinkeby": "", "xDai": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", - "xDai": "", "Celo": "", - "Fantom": "" + "Fantom": "", + "Avalanche": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", + "Avalanche_Fuji": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64" } } From 7a3918668c0d7154cc05b54230656bc3ed1ffcce Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 4 Jan 2022 14:00:29 +0000 Subject: [PATCH 07/37] chore(avalanche): setup avalanche for debank, coingeck, coinmarketcap --- packages/web3-constants/evm/coingecko.json | 6 ++++-- packages/web3-constants/evm/coinmarketcap.json | 3 ++- packages/web3-constants/evm/debank.json | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/web3-constants/evm/coingecko.json b/packages/web3-constants/evm/coingecko.json index f7077b1cdc09..37dd106ae12e 100644 --- a/packages/web3-constants/evm/coingecko.json +++ b/packages/web3-constants/evm/coingecko.json @@ -13,7 +13,8 @@ "Arbitrum_Rinkeby": "", "xDai": "xdai", "Celo": "celo", - "Fantom": "fantom" + "Fantom": "fantom", + "Avalanche": "avalanche" }, "COIN_ID": { "Mainnet": "ethereum", @@ -29,6 +30,7 @@ "Arbitrum_Rinkeby": "", "xDai": "xdai", "Celo": "celo", - "Fantom": "fantom" + "Fantom": "fantom", + "Avalanche": "avalanche" } } diff --git a/packages/web3-constants/evm/coinmarketcap.json b/packages/web3-constants/evm/coinmarketcap.json index 79d9ae0c806c..2d8fc1eace77 100644 --- a/packages/web3-constants/evm/coinmarketcap.json +++ b/packages/web3-constants/evm/coinmarketcap.json @@ -13,6 +13,7 @@ "Arbitrum_Rinkeby": "", "xDai": "5601", "Celo": "5567", - "Fantom": "3513" + "Fantom": "3513", + "Avalanche": "43113" } } diff --git a/packages/web3-constants/evm/debank.json b/packages/web3-constants/evm/debank.json index 8a9740338d66..6f763105577c 100644 --- a/packages/web3-constants/evm/debank.json +++ b/packages/web3-constants/evm/debank.json @@ -13,6 +13,7 @@ "Arbitrum_Rinkeby": "", "xDai": "xdai", "Celo": "celo", - "Fantom": "ftm" + "Fantom": "ftm", + "Avalanche": "avax" } } From d5854974046dd52624c2db861447ae0ea3d44ba0 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 4 Jan 2022 14:22:01 +0000 Subject: [PATCH 08/37] chore(avalanche): add tokens address --- packages/mask/src/plugins/Trader/constants/sushiswap.ts | 2 +- packages/mask/src/plugins/Trader/constants/trader.ts | 3 ++- packages/mask/src/plugins/Trader/constants/traderjoe.ts | 4 ++-- packages/web3-constants/evm/token.json | 4 ++-- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/mask/src/plugins/Trader/constants/sushiswap.ts b/packages/mask/src/plugins/Trader/constants/sushiswap.ts index 1d0079039658..1c77a8e30c71 100644 --- a/packages/mask/src/plugins/Trader/constants/sushiswap.ts +++ b/packages/mask/src/plugins/Trader/constants/sushiswap.ts @@ -35,5 +35,5 @@ export const SUSHISWAP_BASE_AGAINST_TOKENS: ERC20AgainstToken = { [ChainId.xDai]: [WNATIVE, USDC, USDT, WBTC].map((x) => x[ChainId.xDai]), [ChainId.Celo]: [WNATIVE, CUSD, CEUR].map((x) => x[ChainId.Celo]), [ChainId.Fantom]: [WNATIVE, DAI, USDC, fUSDT, WBTC].map((x) => x[ChainId.Fantom]), - [ChainId.Avalanche]: [WNATIVE, DAI, USDC, WBTC].map((x) => x[ChainId.Avalanche]), + [ChainId.Avalanche]: [WNATIVE, DAI, USDC, WBTC, USDT].map((x) => x[ChainId.Avalanche]), } diff --git a/packages/mask/src/plugins/Trader/constants/trader.ts b/packages/mask/src/plugins/Trader/constants/trader.ts index 4c4d3095bb0e..a5914b140df2 100644 --- a/packages/mask/src/plugins/Trader/constants/trader.ts +++ b/packages/mask/src/plugins/Trader/constants/trader.ts @@ -44,8 +44,9 @@ export const STETH = createERC20Tokens('stETH_ADDRESS', 'stakedETH', 'stETH', 18 export const CUSD = createERC20Tokens('cUSD_ADDRESS', 'Celo Dollar', 'cUSD', 18) export const CEUR = createERC20Tokens('cEUR_ADDRESS', 'Celo Euro', 'cEUR', 18) export const USDTe = createERC20Tokens('USDT_ADDRESS', 'Tether USD', 'USDT.e', 6) -export const DAIe = createERC20Tokens('DAI_ADDRESS', 'Celo Euro', 'cEUR', 18) +export const DAIe = createERC20Tokens('DAI_ADDRESS', 'Dai Stablecoin', 'DAI.e ', 18) export const WBTCe = createERC20Tokens('WBTC_ADDRESS', 'Wrapped BTC', 'WBTCe', 18) +export const USDCe = createERC20Tokens('USDC_ADDRESS', ' USD Coin', 'USDCe', 18) export const JOE = createERC20Tokens('JOE_ADDRESS', 'JoeToken', 'JOE', 18) export const WNATIVE = createERC20Tokens( diff --git a/packages/mask/src/plugins/Trader/constants/traderjoe.ts b/packages/mask/src/plugins/Trader/constants/traderjoe.ts index 1247d778caa0..9e895c928b04 100644 --- a/packages/mask/src/plugins/Trader/constants/traderjoe.ts +++ b/packages/mask/src/plugins/Trader/constants/traderjoe.ts @@ -1,5 +1,5 @@ import { ChainId } from '@masknet/web3-shared-evm' -import { ETHER, WNATIVE, WBTCe, DAIe, USDTe, WNATIVE_ONLY } from './trader' +import { ETHER, WNATIVE, WBTCe, DAIe, USDTe, USDCe, WNATIVE_ONLY } from './trader' import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' /** @@ -10,5 +10,5 @@ export const TRADERJOE_CUSTOM_BASES: ERC20TokenCustomizedBase = {} export const TRADERJOE_BASE_AGAINST_TOKENS: ERC20AgainstToken = { ...WNATIVE_ONLY, - [ChainId.Avalanche]: [WNATIVE, DAIe, USDTe, ETHER, WBTCe].map((x) => x[ChainId.Avalanche]), + [ChainId.Avalanche]: [WNATIVE, DAIe, USDTe, USDCe, ETHER, WBTCe].map((x) => x[ChainId.Avalanche]), } diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index 7c4899b63d58..a241bb053553 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -478,7 +478,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "0x8e5bBbb09Ed1ebdE8674Cda39A0c169401db4252", - "Avalanche": "", + "Avalanche": "0x50b7545627a5162F82A992c33b87aDc75187B218", "Avalanche_Fuji": "", "Celo": "0xBe50a3013A1c94768A1ABb78c3cB79AB28fc1aCE", "Fantom": "0x321162Cd933E2Be498Cd2267a90534A804051b11" @@ -766,7 +766,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", + "Avalanche": "0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB", "Avalanche_Fuji": "", "Celo": "", "Fantom": "" From cca7208747ae5c09eb4fbc481ad89458806e6da5 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 4 Jan 2022 15:48:53 +0000 Subject: [PATCH 09/37] feat(Avalanche): add Pangolin Dex --- cspell.json | 2 + .../Labs/components/SwapSettingDialog.tsx | 1 + .../SNSAdaptor/trader/TradeProviderIcon.tsx | 3 + .../src/plugins/Trader/apis/trader/index.ts | 2 +- .../src/plugins/Trader/constants/index.ts | 1 + .../plugins/Trader/constants/pangolindex.ts | 14 ++++ packages/mask/src/plugins/Trader/pipes.ts | 6 ++ packages/mask/src/plugins/Trader/settings.ts | 3 + .../Trader/trader/useAllTradeComputed.ts | 13 ++++ .../Trader/trader/useGetTradeContext.ts | 38 +++++++--- .../plugins/Trader/trader/useTradeCallback.ts | 2 + .../plugins/Trader/trader/useTradeContext.ts | 14 ++++ .../mask/src/plugins/Trader/types/trader.ts | 1 + .../src/plugins/Wallet/services/account.ts | 1 + packages/mask/src/resources/PangolinIcon.tsx | 15 ++++ packages/public-api/src/web.ts | 1 + packages/web3-constants/evm/trader.json | 74 ++++++++++++++++++- 17 files changed, 177 insertions(+), 14 deletions(-) create mode 100644 packages/mask/src/plugins/Trader/constants/pangolindex.ts create mode 100644 packages/mask/src/resources/PangolinIcon.tsx diff --git a/cspell.json b/cspell.json index 7b99faf44c0e..fc7a7150e28f 100644 --- a/cspell.json +++ b/cspell.json @@ -224,6 +224,8 @@ "tokenid", "tradejoe", "TRADERJOE", + "pangolindex", + "pangolin", "Transak", "Treder", "twimg", diff --git a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx index 9912d64c825f..f4b35a5ee52c 100644 --- a/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx +++ b/packages/dashboard/src/pages/Labs/components/SwapSettingDialog.tsx @@ -66,6 +66,7 @@ export default function SwapSettingDialog({ open, onClose }: SettingDialogProps) { label: 'SushiSwap', value: TradeProvider.SUSHISWAP }, { label: 'TraderJoe', value: TradeProvider.TRADERJOE }, { label: 'OpenOcean', value: TradeProvider.OPENOCEAN }, + { label: 'PangolinDex', value: TradeProvider.PANGOLIN }, ] const t = useDashboardI18N() diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeProviderIcon.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeProviderIcon.tsx index d8cc65e1bb6c..97ec3a24040b 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeProviderIcon.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trader/TradeProviderIcon.tsx @@ -9,6 +9,7 @@ import { UniswapIcon } from '../../../../resources/UniswapIcon' import { ZRXIcon } from '../../../../resources/ZRXIcon' import { DODOIcon } from '../../../../resources/DODOIcon' import { OpenOceanIcon } from '../../../../resources/OpenOceanIcon' +import { PangolinIcon } from '../../../../resources/PangolinIcon' import { resolveTradeProviderName } from '../../pipes' const quickswapIcon = new URL('../../../../resources/quickswap.png', import.meta.url).toString() @@ -71,6 +72,8 @@ export function TradeProviderIcon(props: TradeProviderIconProps) { ) case TradeProvider.OPENOCEAN: return + case TradeProvider.PANGOLIN: + return default: unreachable(props.provider) } diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index 79a8343c8ad6..c6e2f2300368 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -40,7 +40,7 @@ export async function getAvailableTraderProviders(chainId: ChainId) { case NetworkType.xDai: return [TradeProvider.SUSHISWAP] case NetworkType.Avalanche: - return [TradeProvider.SUSHISWAP, TradeProvider.TRADERJOE] + return [TradeProvider.SUSHISWAP, TradeProvider.TRADERJOE, TradeProvider.OPENOCEAN, TradeProvider.PANGOLIN] case NetworkType.xDai: return [TradeProvider.SUSHISWAP, TradeProvider.OPENOCEAN] case NetworkType.Celo: diff --git a/packages/mask/src/plugins/Trader/constants/index.ts b/packages/mask/src/plugins/Trader/constants/index.ts index a1a9242ce288..83e062513f89 100644 --- a/packages/mask/src/plugins/Trader/constants/index.ts +++ b/packages/mask/src/plugins/Trader/constants/index.ts @@ -10,4 +10,5 @@ export * from './pancakeswap' export * from './dodo' export * from './bancor' export * from './traderjoe' +export * from './pangolindex' export type { ERC20TokenCustomizedBase, ERC20AgainstToken } from './types' diff --git a/packages/mask/src/plugins/Trader/constants/pangolindex.ts b/packages/mask/src/plugins/Trader/constants/pangolindex.ts new file mode 100644 index 000000000000..417b98c1b83c --- /dev/null +++ b/packages/mask/src/plugins/Trader/constants/pangolindex.ts @@ -0,0 +1,14 @@ +import { ChainId } from '@masknet/web3-shared-evm' +import { ETHER, WNATIVE, WBTCe, DAIe, USDTe, USDCe, WNATIVE_ONLY } from './trader' +import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' + +/** + * Some tokens can only be swapped via certain pairs, + * so we override the list of bases that are considered for these tokens. + */ +export const PANGOLIN_CUSTOM_BASES: ERC20TokenCustomizedBase = {} + +export const PANGOLIN_BASE_AGAINST_TOKENS: ERC20AgainstToken = { + ...WNATIVE_ONLY, + [ChainId.Avalanche]: [WNATIVE, DAIe, USDTe, USDCe, ETHER, WBTCe].map((x) => x[ChainId.Avalanche]), +} diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index 40a2cee83bd4..01cde5f30802 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -58,6 +58,7 @@ export const resolveTradeProviderName = createLookupTableResolver { throw new Error(`Unknown provider type: ${tradeProvider}`) @@ -110,6 +111,8 @@ export function resolveTradeProviderLink(tradeProvider: TradeProvider, networkTy return 'https://openocean.finance/classic' case TradeProvider.TRADERJOE: return 'https://traderjoexyz.com/#/trade' + case TradeProvider.PANGOLIN: + return 'https://app.pangolin.exchange/#/swap' default: unreachable(tradeProvider) } @@ -173,6 +176,8 @@ export function resolveTradePairLink(tradeProvider: TradeProvider, address: stri case TradeProvider.TRADERJOE: // TODO - Trader Joe Analytics return '' + case TradeProvider.PANGOLIN: + return `https://info.pangolin.exchange/pair/${address}` default: unreachable(tradeProvider) } @@ -263,6 +268,7 @@ export const resolveZrxTradePoolName = createLookupTableResolver(`${PLUGIN_ID}+tradeProvi const dodoSettings = createInternalSettings(`${PLUGIN_ID}+tradeProvider+dodo`, '') const bancorSettings = createInternalSettings(`${PLUGIN_ID}+tradeProvider+bancor`, '') const traderjoeSettings = createInternalSettings(`${PLUGIN_ID}+tradeProvider+traderjoe`, '') +const pangolinSettings = createInternalSettings(`${PLUGIN_ID}+tradeProvider+pangolin`, '') const openoceanSettings = createInternalSettings(`${PLUGIN_ID}+tradeProvider+openocean`, '') /** @@ -141,6 +142,8 @@ export function getCurrentTradeProviderGeneralSettings(tradeProvider: TradeProvi return traderjoeSettings case TradeProvider.OPENOCEAN: return openoceanSettings + case TradeProvider.PANGOLIN: + return pangolinSettings default: unreachable(tradeProvider) } diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index 62dde8e6604d..b2db80add036 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -189,6 +189,18 @@ export function useAllTradeComputed( const traderJoe = useUniswapTradeComputed(traderJoe_.value, inputToken, outputToken) const traderJoeEstimateGas = useUniswapTradeGasLimit(traderJoe, TradeProvider.TRADERJOE) + // 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 pangolindexEstimateGas = useUniswapTradeGasLimit(pangolindex, TradeProvider.PANGOLIN) + // openocean const openocean_ = useOpenOceanTrade(TradeStrategy.ExactIn, inputAmount_, '0', inputToken, outputToken) const openocean = useOpenOceanTradeComputed( @@ -211,6 +223,7 @@ export function useAllTradeComputed( { provider: TradeProvider.DODO, ...dodo_, value: dodo, gas: dodoSwapEstimateGas }, { provider: TradeProvider.BANCOR, ...bancor_, value: bancor, gas: bancorSwapEstimateGas }, { provider: TradeProvider.TRADERJOE, ...traderJoe_, value: traderJoe, gas: traderJoeEstimateGas }, + { provider: TradeProvider.PANGOLIN, ...pangolindex_, value: pangolindex, gas: pangolindexEstimateGas }, { provider: TradeProvider.OPENOCEAN, ...openocean_, value: openocean, gas: openoceanSwapEstimateGas }, ] diff --git a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts index e12f4e7ac1c7..909b85ad193a 100644 --- a/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useGetTradeContext.ts @@ -15,6 +15,8 @@ import { UNISWAP_CUSTOM_BASES, TRADERJOE_BASE_AGAINST_TOKENS, TRADERJOE_CUSTOM_BASES, + PANGOLIN_BASE_AGAINST_TOKENS, + PANGOLIN_CUSTOM_BASES, } from '../constants' import { unreachable } from '@dimensiondev/kit' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -96,6 +98,30 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: PANCAKESWAP_CUSTOM_BASES, } + case TradeProvider.TRADERJOE: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: getTraderConstants(chainId).TRADERJOE_THEGRAPH, + INIT_CODE_HASH: getTraderConstants(chainId).TRADERJOE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_FACTORY_ADDRESS, + AGAINST_TOKENS: TRADERJOE_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: TRADERJOE_CUSTOM_BASES, + } + case TradeProvider.PANGOLIN: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: getTraderConstants(chainId).PANGOLIN_THEGRAPH, + INIT_CODE_HASH: getTraderConstants(chainId).PANGOLIN_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).PANGOLIN_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).PANGOLIN_FACTORY_ADDRESS, + AGAINST_TOKENS: PANGOLIN_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: PANGOLIN_CUSTOM_BASES, + } case TradeProvider.ZRX: return { TYPE: tradeProvider, @@ -115,18 +141,6 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { TYPE: tradeProvider, ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).BANCOR_EXCHANGE_PROXY_ADDRESS, } - case TradeProvider.TRADERJOE: - return { - TYPE: tradeProvider, - IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).TRADERJOE_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).TRADERJOE_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_FACTORY_ADDRESS, - AGAINST_TOKENS: TRADERJOE_BASE_AGAINST_TOKENS, - ADDITIONAL_TOKENS: {}, - CUSTOM_TOKENS: TRADERJOE_CUSTOM_BASES, - } case TradeProvider.OPENOCEAN: return { TYPE: tradeProvider, diff --git a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts index ac619cb031ab..1aee064739ad 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts @@ -108,6 +108,8 @@ export function useTradeCallback( return bancor case TradeProvider.TRADERJOE: return uniswapV2Like + case TradeProvider.PANGOLIN: + return uniswapV2Like case TradeProvider.OPENOCEAN: return openocean default: diff --git a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts index 280b1753f22e..2a8894b6e2a3 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts @@ -15,6 +15,8 @@ import { UNISWAP_CUSTOM_BASES, TRADERJOE_BASE_AGAINST_TOKENS, TRADERJOE_CUSTOM_BASES, + PANGOLIN_BASE_AGAINST_TOKENS, + PANGOLIN_CUSTOM_BASES, } from '../constants' import type { TradeContext as TradeContext_ } from '../types' import { TargetChainIdContext } from './useTargetChainIdContext' @@ -128,6 +130,18 @@ export function useTradeContext(tradeProvider: TradeProvider) { ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: TRADERJOE_CUSTOM_BASES, } + case TradeProvider.PANGOLIN: + return { + TYPE: tradeProvider, + IS_UNISWAP_V2_LIKE: true, + GRAPH_API: getTraderConstants(chainId).PANGOLIN_THEGRAPH, + INIT_CODE_HASH: getTraderConstants(chainId).PANGOLIN_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).PANGOLIN_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).PANGOLIN_FACTORY_ADDRESS, + AGAINST_TOKENS: PANGOLIN_BASE_AGAINST_TOKENS, + ADDITIONAL_TOKENS: {}, + CUSTOM_TOKENS: PANGOLIN_CUSTOM_BASES, + } case TradeProvider.OPENOCEAN: return { TYPE: tradeProvider, diff --git a/packages/mask/src/plugins/Trader/types/trader.ts b/packages/mask/src/plugins/Trader/types/trader.ts index 33f15d8a711f..e8d266bc2adb 100644 --- a/packages/mask/src/plugins/Trader/types/trader.ts +++ b/packages/mask/src/plugins/Trader/types/trader.ts @@ -67,6 +67,7 @@ export enum ZrxTradePool { WaultSwap = 'WaultSwap', xSigma = 'xSigma', TraderJoe = 'TraderJoe', + PangolinDex = 'PangolinDex', } export interface TradeComputed { diff --git a/packages/mask/src/plugins/Wallet/services/account.ts b/packages/mask/src/plugins/Wallet/services/account.ts index 5d0e988a81fa..b5c13bc00f27 100644 --- a/packages/mask/src/plugins/Wallet/services/account.ts +++ b/packages/mask/src/plugins/Wallet/services/account.ts @@ -126,5 +126,6 @@ export async function getSupportedNetworks() { Flags.xdai_enabled ? NetworkType.xDai : undefined, Flags.celo_enabled ? NetworkType.Celo : undefined, Flags.fantom_enabled ? NetworkType.Fantom : undefined, + Flags.avalanche_enabled ? NetworkType.Avalanche : undefined, ].filter(Boolean) as NetworkType[] } diff --git a/packages/mask/src/resources/PangolinIcon.tsx b/packages/mask/src/resources/PangolinIcon.tsx new file mode 100644 index 000000000000..8f0a12b4e1f5 --- /dev/null +++ b/packages/mask/src/resources/PangolinIcon.tsx @@ -0,0 +1,15 @@ +import { SvgIconProps, SvgIcon } from '@mui/material' + +const svg = ( + + + + + + + +) + +export function PangolinIcon(props: SvgIconProps) { + return {svg} +} diff --git a/packages/public-api/src/web.ts b/packages/public-api/src/web.ts index 279cb042b4d3..a115ed60e907 100644 --- a/packages/public-api/src/web.ts +++ b/packages/public-api/src/web.ts @@ -215,6 +215,7 @@ export enum TradeProvider { BANCOR = 9, OPENOCEAN = 10, TRADERJOE = 11, + PANGOLIN = 12, } /** Supported language settings */ export enum LanguageOptions { diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index 577a24179128..b6e6ba201f66 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -612,7 +612,7 @@ "Fantom": "" }, "TRADERJOE_THEGRAPH": { - "Mainnet": "https://api.thegraph.com/subgraphs/name/zippoxer/traderjoe-subgraph-fork", + "Mainnet": "https://api.thegraph.com/subgraphs/name/traderjoe-xyz/exchange", "Ropsten": "", "Rinkeby": "", "Kovan": "", @@ -682,5 +682,77 @@ "Fantom": "", "Avalanche": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", "Avalanche_Fuji": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64" + }, + "PANGOLIN_ROUTER_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "0x7E2528476b14507f003aE9D123334977F5Ad7B14", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "0xE54Ca86531e17Ef3616d22Ca28b0D458b6C89106", + "Avalanche_Fuji": "0xE54Ca86531e17Ef3616d22Ca28b0D458b6C89106", + "Celo": "", + "Fantom": "" + }, + "PANGOLIN_FACTORY_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "0xefa94DE7a4656D787667C749f7E1223D71E9FD88", + "Avalanche_Fuji": "0xE4A575550C2b460d2307b82dCd7aFe84AD1484dd", + "Celo": "", + "Fantom": "" + }, + "PANGOLIN_THEGRAPH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "https://api.thegraph.com/subgraphs/name/dasconnor/pangolin-dex'", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "" + }, + "PANGOLIN_INIT_CODE_HASH": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "0x40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545", + "Avalanche_Fuji": "0x40231f6b438bce0797c9ada29b718a87ea0a5cea3fe9a771abdd76bd41a3e545", + "Celo": "", + "Fantom": "" } } From 8a749b0d453b7c50b55feb5b356807b414bb56cb Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 4 Jan 2022 17:44:01 +0000 Subject: [PATCH 10/37] feat(avalanche): add balanceChecker contract address --- packages/web3-constants/evm/ethereum.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-constants/evm/ethereum.json b/packages/web3-constants/evm/ethereum.json index 7e28615eaba4..f14f3a541411 100644 --- a/packages/web3-constants/evm/ethereum.json +++ b/packages/web3-constants/evm/ethereum.json @@ -12,7 +12,7 @@ "Arbitrum": "0xAb7B1bE4233A04e5C43a810E75657ECED8E5463B", "Arbitrum_Rinkeby": "0xF98dC9391273c5ab9fa2c980A8d4F875ece802db", "xDai": "0x96c7D011cdFD467f551605f0f5Fce279F86F4186", - "Avalanche": "", + "Avalanche": "0xC119574D5Fb333F5AC018658D4d8b5035E16bf39", "Avalanche_Fuji": "", "Celo": "0x8e28F1d64ceD52b9A09aB1AA3071Aa3c05802d1F", "Fantom": "0xc119574d5fb333f5ac018658d4d8b5035e16bf39" From fe47d157fc45f935a797af1c15905de1f03ead55 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 5 Jan 2022 04:30:01 +0000 Subject: [PATCH 11/37] chore(avalanche): update assets and json infos --- .../TokenIcon/TokenIconSpecialIconList.json | 5 ++++ .../web3-constants/evm/coinmarketcap.json | 2 +- packages/web3-constants/evm/explorer.json | 4 +-- packages/web3-constants/evm/red-packet.json | 6 ++--- .../evm/token-asset-base-url.json | 5 +++- packages/web3-constants/evm/token-list.json | 5 +++- packages/web3-constants/evm/token.json | 2 +- packages/web3-shared/evm/assets/chains.json | 27 ++++++++++++++----- pnpm-lock.yaml | 1 + 9 files changed, 42 insertions(+), 15 deletions(-) diff --git a/packages/shared/src/UI/components/TokenIcon/TokenIconSpecialIconList.json b/packages/shared/src/UI/components/TokenIcon/TokenIconSpecialIconList.json index 612fed4150a6..2909c44aacdf 100644 --- a/packages/shared/src/UI/components/TokenIcon/TokenIconSpecialIconList.json +++ b/packages/shared/src/UI/components/TokenIcon/TokenIconSpecialIconList.json @@ -188,5 +188,10 @@ "name": "tUSD", "address": "0xcfdd90d4a00f7b5b", "logo_url": "data:image/png;base64,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dElkPgogICAgIDxBdHRyaWI6RmJJZD41MjUyNjU5MTQxNzk1ODA8L0F0dHJpYjpGYklkPgogICAgIDxBdHRyaWI6VG91Y2hUeXBlPjI8L0F0dHJpYjpUb3VjaFR5cGU+CiAgICA8L3JkZjpsaT4KICAgPC9yZGY6U2VxPgogIDwvQXR0cmliOkFkcz4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6ZGM9J2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvJz4KICA8ZGM6dGl0bGU+CiAgIDxyZGY6QWx0PgogICAgPHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz7mnKrlkb3lkI0g55qE6KSH5pysPC9yZGY6bGk+CiAgIDwvcmRmOkFsdD4KICA8L2RjOnRpdGxlPgogPC9yZGY6RGVzY3JpcHRpb24+CgogPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9JycKICB4bWxuczpwZGY9J2h0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8nPgogIDxwZGY6QXV0aG9yPkhzdWFuIExlZTwvcGRmOkF1dGhvcj4KIDwvcmRmOkRlc2NyaXB0aW9uPgoKIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PScnCiAgeG1sbnM6eG1wPSdodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvJz4KICA8eG1wOkNyZWF0b3JUb29sPkNhbnZhPC94bXA6Q3JlYXRvclRvb2w+CiA8L3JkZjpEZXNjcmlwdGlvbj4KPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KPD94cGFja2V0IGVuZD0ncic/PolbVtwAAAAASUVORK5CYII=" + }, + { + "name": "AVAX", + "address": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + "logo_url": "https://raw.githubusercontent.com/sushiswap/icons/master/network/avalanche.jpg'" } ] diff --git a/packages/web3-constants/evm/coinmarketcap.json b/packages/web3-constants/evm/coinmarketcap.json index 2d8fc1eace77..b843221ee9b5 100644 --- a/packages/web3-constants/evm/coinmarketcap.json +++ b/packages/web3-constants/evm/coinmarketcap.json @@ -14,6 +14,6 @@ "xDai": "5601", "Celo": "5567", "Fantom": "3513", - "Avalanche": "43113" + "Avalanche": "43114" } } diff --git a/packages/web3-constants/evm/explorer.json b/packages/web3-constants/evm/explorer.json index 6f3aebb33815..6f9316f48837 100644 --- a/packages/web3-constants/evm/explorer.json +++ b/packages/web3-constants/evm/explorer.json @@ -12,8 +12,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", - "Avalanche_Fuji": "", + "Avalanche": "https://api.snowtrace.io/api", + "Avalanche_Fuji": "https://api-testnet.snowtrace.io/api", "Celo": "", "Fantom": "https://api.ftmscan.com/api" }, diff --git a/packages/web3-constants/evm/red-packet.json b/packages/web3-constants/evm/red-packet.json index f4fd5a072a9d..d9b3a002125b 100644 --- a/packages/web3-constants/evm/red-packet.json +++ b/packages/web3-constants/evm/red-packet.json @@ -100,9 +100,9 @@ "Arbitrum": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-arbitrum-one", "Arbitrum_Rinkeby": "", "xDai": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-xdai", - "Avalanche": "", + "Avalanche": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-avalanche", "Avalanche_Fuji": "", - "Celo": "", - "Fantom": "" + "Celo": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-celo", + "Fantom": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-red-packet-fantom" } } diff --git a/packages/web3-constants/evm/token-asset-base-url.json b/packages/web3-constants/evm/token-asset-base-url.json index ec95df615755..5de7f5bb1954 100644 --- a/packages/web3-constants/evm/token-asset-base-url.json +++ b/packages/web3-constants/evm/token-asset-base-url.json @@ -39,7 +39,10 @@ "Arbitrum": [], "Arbitrum_Rinkeby": [], "xDai": [], - "Avalanche": [], + "Avalanche": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/avalanchec" + ], "Avalanche_Fuji": [], "Celo": [], "Fantom": [] diff --git a/packages/web3-constants/evm/token-list.json b/packages/web3-constants/evm/token-list.json index 6b18d73e9def..5b7e0e979d4e 100644 --- a/packages/web3-constants/evm/token-list.json +++ b/packages/web3-constants/evm/token-list.json @@ -26,6 +26,9 @@ ], "xDai": ["https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/100/tokens.json"], "Celo": ["https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/42220/tokens.json"], - "Fantom": ["https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/250/tokens.json"] + "Fantom": ["https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/250/tokens.json"], + "Avalanche": [ + "https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/43114/tokens.json" + ] } } diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index a241bb053553..8c358ecfaeee 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -12,7 +12,7 @@ "Arbitrum": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", "Arbitrum_Rinkeby": "0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681", "xDai": "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", - "Avalanche": "", + "Avalanche": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", "Avalanche_Fuji": "", "Celo": "0x471EcE3750Da237f93B8E339c536989b8978a438", "Fantom": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83" diff --git a/packages/web3-shared/evm/assets/chains.json b/packages/web3-shared/evm/assets/chains.json index 02d2a9cb8cb1..448d782d18cc 100644 --- a/packages/web3-shared/evm/assets/chains.json +++ b/packages/web3-shared/evm/assets/chains.json @@ -2080,20 +2080,35 @@ "infoURL": "https://cchain.explorer.avax-test.network", "shortName": "Fuji", "chainId": 43113, - "networkId": 1 + "networkId": 43113 }, { "name": "Avalanche Mainnet", - "chain": "AVAX", + "chain": "Avalanche", "network": "mainnet", "rpc": ["https://api.avax.network/ext/bc/C/rpc"], "faucets": [], "features": [], - "nativeCurrency": { "name": "Avalanche", "symbol": "AVAX", "decimals": 18 }, - "infoURL": "https://cchain.explorer.avax.network/", - "shortName": "Avalanche", + "nativeCurrency": { + "name": "Avalanche", + "symbol": "AVAX", + "decimals": 18, + "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/network/avalanche.jpg" + }, + "infoURL": "https://www.avax.network/", + "shortName": "AVAX", "chainId": 43114, - "networkId": 1 + "networkId": 43114, + "icon": "avalanche", + "explorers": [ + { + "name": "snowtrace", + "url": "https://snowtrace.io/", + "icon": "avalanche", + "standard": "EIP3091", + "logoURI": "https://snowtrace.io/images/svg/brands/main.svg?v=21.12.4.1" + } + ] }, { "name": "Celo Alfajores Testnet", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2608eb3873c0..2fc7454794cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3433,6 +3433,7 @@ packages: /@dimensiondev/eslint-plugin/0.0.1-20220104011158-0905fa1_eslint@8.5.0: resolution: {integrity: sha512-DyAzOQp2Dp9Nzll6dTbujqyBAXOLhlWXvDdmnfX3+cHixhvaupbMeoh4MmujkOY681N5ohVm2eKWJd/ApC4lrQ==, tarball: download/@dimensiondev/eslint-plugin/0.0.1-20220104011158-0905fa1/931c157d880a7f8a78e87326a2840ad7d4583b5c714f155e045f73a11969fc82} + engines: {node: '>= 14'} peerDependencies: eslint: '>= 8' dependencies: From fff2c142eb72c00b1597e8bca69d032117fbbe51 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 5 Jan 2022 09:38:47 +0000 Subject: [PATCH 12/37] chore(avalanche): update wavax addres --- packages/web3-constants/evm/token.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index 8c358ecfaeee..adf35fe92378 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -12,7 +12,7 @@ "Arbitrum": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", "Arbitrum_Rinkeby": "0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681", "xDai": "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", - "Avalanche": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", + "Avalanche": "0xc778417E063141139Fce010982780140Aa0cD5Ab", "Avalanche_Fuji": "", "Celo": "0x471EcE3750Da237f93B8E339c536989b8978a438", "Fantom": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83" From 51dc9f8117da40767c303524c0e74c38cc3bdd71 Mon Sep 17 00:00:00 2001 From: Septs Date: Wed, 5 Jan 2022 20:51:01 +0800 Subject: [PATCH 13/37] chore: improve chain id --- .../components/shared/ApplicationBoard.tsx | 30 ++++++++----------- .../plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx | 24 +++++++-------- .../src/plugins/Trader/trader/0x/constants.ts | 3 ++ .../Trader/trader/0x/useTradeCallback.ts | 13 ++------ .../Trader/trader/0x/useTradeGasLimit.ts | 4 +-- 5 files changed, 31 insertions(+), 43 deletions(-) create mode 100644 packages/mask/src/plugins/Trader/trader/0x/constants.ts diff --git a/packages/mask/src/components/shared/ApplicationBoard.tsx b/packages/mask/src/components/shared/ApplicationBoard.tsx index 97cc5d144006..c53d508f20fb 100644 --- a/packages/mask/src/components/shared/ApplicationBoard.tsx +++ b/packages/mask/src/components/shared/ApplicationBoard.tsx @@ -84,6 +84,16 @@ const useStyles = makeStyles()((theme) => ({ }, })) +const SUPPORTED_CHAIN_ID_LIST = [ + ChainId.Mainnet, + ChainId.BSC, + ChainId.Matic, + ChainId.Arbitrum, + ChainId.xDai, + ChainId.Celo, + ChainId.Fantom, +] + export interface MaskAppEntry { title: string img: string @@ -281,15 +291,7 @@ export function ApplicationBoard({ secondEntries, secondEntryChainTabs }: MaskAp ]), createEntry('dHEDGE', new URL('./assets/dHEDGE.png', import.meta.url).toString(), () => {}), ], - [ - ChainId.Mainnet, - ChainId.BSC, - ChainId.Matic, - ChainId.Arbitrum, - ChainId.xDai, - ChainId.Celo, - ChainId.Fantom, - ], + SUPPORTED_CHAIN_ID_LIST, ), undefined, true, @@ -308,15 +310,7 @@ export function ApplicationBoard({ secondEntries, secondEntryChainTabs }: MaskAp () => {}, ), ], - [ - ChainId.Mainnet, - ChainId.BSC, - ChainId.Matic, - ChainId.Arbitrum, - ChainId.xDai, - ChainId.Celo, - ChainId.Fantom, - ], + SUPPORTED_CHAIN_ID_LIST, ), undefined, true, diff --git a/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx b/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx index c310bc6448d0..27140adaf83d 100644 --- a/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx +++ b/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx @@ -214,6 +214,15 @@ interface ClaimAllDialogProps { open: boolean } +const SUPPORTED_CHAIN_ID_LIST = [ + ChainId.Mainnet, + ChainId.BSC, + ChainId.Matic, + ChainId.Arbitrum, + ChainId.xDai, + ChainId.Fantom, +] + export function ClaimAllDialog(props: ClaimAllDialogProps) { const { t } = useI18N() const { open, onClose } = props @@ -227,11 +236,7 @@ export function ClaimAllDialog(props: ClaimAllDialogProps) { } = useSpaceStationCampaignInfo(account, Flags.nft_airdrop_enabled) const [chainId, setChainId] = useState( - [ChainId.Mainnet, ChainId.BSC, ChainId.Matic, ChainId.Arbitrum, ChainId.xDai, ChainId.Fantom].includes( - currentChainId, - ) - ? currentChainId - : ChainId.Mainnet, + SUPPORTED_CHAIN_ID_LIST.includes(currentChainId) ? currentChainId : ChainId.Mainnet, ) const { value: swappedTokens, loading, retry } = useClaimablePools(chainId) const { ITO_CONTRACT_ADDRESS: ITO_CONTRACT_ADDRESS_MAINNET } = useITOConstants(ChainId.Mainnet) @@ -368,14 +373,7 @@ export function ClaimAllDialog(props: ClaimAllDialogProps) { chainId={chainId} setChainId={setChainId} classes={classes} - chains={[ - ChainId.Mainnet, - ChainId.BSC, - ChainId.Matic, - ChainId.Arbitrum, - ChainId.xDai, - ChainId.Fantom, - ]} + chains={SUPPORTED_CHAIN_ID_LIST} />
diff --git a/packages/mask/src/plugins/Trader/trader/0x/constants.ts b/packages/mask/src/plugins/Trader/trader/0x/constants.ts new file mode 100644 index 000000000000..f7e8ee3aefe7 --- /dev/null +++ b/packages/mask/src/plugins/Trader/trader/0x/constants.ts @@ -0,0 +1,3 @@ +import { ChainId } from '@masknet/web3-shared-evm' + +export const SUPPORTED_CHAIN_IDS = [ChainId.Mainnet, ChainId.BSC, ChainId.Matic] diff --git a/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts index bb4a414cc730..56a0a3d26657 100644 --- a/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/0x/useTradeCallback.ts @@ -2,16 +2,10 @@ import { useCallback, useMemo, useState } from 'react' import stringify from 'json-stable-stringify' import { pick } from 'lodash-unified' import type { TransactionConfig } from 'web3-core' -import { - ChainId, - GasOptionConfig, - TransactionState, - TransactionStateType, - useAccount, - useWeb3, -} from '@masknet/web3-shared-evm' +import { GasOptionConfig, TransactionState, TransactionStateType, useAccount, useWeb3 } from '@masknet/web3-shared-evm' import type { SwapQuoteResponse, TradeComputed } from '../../types' import { TargetChainIdContext } from '../useTargetChainIdContext' +import { SUPPORTED_CHAIN_IDS } from './constants' export function useTradeCallback(tradeComputed: TradeComputed | null, gasConfig?: GasOptionConfig) { const account = useAccount() @@ -24,8 +18,7 @@ export function useTradeCallback(tradeComputed: TradeComputed // compose transaction config const config = useMemo(() => { - if (!account || !tradeComputed?.trade_ || ![ChainId.Mainnet, ChainId.BSC, ChainId.Matic].includes(chainId)) - return null + if (!account || !tradeComputed?.trade_ || !SUPPORTED_CHAIN_IDS.includes(chainId)) return null return { from: account, ...pick(tradeComputed.trade_, ['to', 'data', 'value', 'gas', 'gasPrice']), diff --git a/packages/mask/src/plugins/Trader/trader/0x/useTradeGasLimit.ts b/packages/mask/src/plugins/Trader/trader/0x/useTradeGasLimit.ts index 40bb83acbda7..3375072b1bda 100644 --- a/packages/mask/src/plugins/Trader/trader/0x/useTradeGasLimit.ts +++ b/packages/mask/src/plugins/Trader/trader/0x/useTradeGasLimit.ts @@ -1,14 +1,14 @@ import type { TradeComputed, SwapQuoteResponse } from '../../types' import { useMemo } from 'react' import { TargetChainIdContext } from '../useTargetChainIdContext' -import { ChainId } from '../../../../../../web3-shared/evm' import BigNumber from 'bignumber.js' +import { SUPPORTED_CHAIN_IDS } from './constants' export function useTradeGasLimit(tradeComputed: TradeComputed | null) { const { targetChainId } = TargetChainIdContext.useContainer() return useMemo(() => { - if (!tradeComputed?.trade_ || ![ChainId.Mainnet, ChainId.BSC, ChainId.Matic].includes(targetChainId)) return 0 + if (!tradeComputed?.trade_ || !SUPPORTED_CHAIN_IDS.includes(targetChainId)) return 0 return new BigNumber(tradeComputed.trade_.gas).toNumber() }, [targetChainId, tradeComputed]) } From e4fa11a4cc9fac04b407482644c7d21cfa1e6f0b Mon Sep 17 00:00:00 2001 From: Septs Date: Wed, 5 Jan 2022 21:23:54 +0800 Subject: [PATCH 14/37] refactor: opensea api --- .../mask/src/plugins/Wallet/apis/opensea.ts | 84 +++++++------------ 1 file changed, 32 insertions(+), 52 deletions(-) diff --git a/packages/mask/src/plugins/Wallet/apis/opensea.ts b/packages/mask/src/plugins/Wallet/apis/opensea.ts index 2fc239fa9339..f483dd5b9707 100644 --- a/packages/mask/src/plugins/Wallet/apis/opensea.ts +++ b/packages/mask/src/plugins/Wallet/apis/opensea.ts @@ -1,4 +1,5 @@ import { ChainId } from '@masknet/web3-shared-evm' +import urlcat from 'urlcat' import { OPENSEA_API_KEY } from '../constants' interface AssetContract { @@ -120,62 +121,41 @@ export interface CollectionsResponse { collections: AssetCollection[] } -export async function getAssetsList( - from: string, - opts: { chainId?: ChainId; page?: number; size?: number; collection?: string }, -) { - const { chainId = ChainId.Mainnet, page = 0, size = 50, collection } = opts - const params = new URLSearchParams() - params.append('owner', from.toLowerCase()) - params.append('limit', String(size)) - params.append('offset', String(size * page)) - if (collection) { - params.append('collection', collection) - } +interface BaseOptions { + chainId?: ChainId + page?: number + size?: number +} - if (![ChainId.Mainnet, ChainId.Rinkeby].includes(chainId)) - return { - assets: [], - } as AssetsListResponse +const SUPPORTED_CHAIN_ID_LIST = [ChainId.Mainnet, ChainId.Rinkeby] - const response = await fetch( - `https://${chainId === ChainId.Mainnet ? 'api' : 'rinkeby-api'}.opensea.io/api/v1/assets?${params.toString()}`, - { - method: 'GET', - mode: 'cors', - headers: { - 'x-api-key': OPENSEA_API_KEY, - }, - }, - ) - return (await response.json()) as AssetsListResponse +export function getAssetsList(from: string, opts: BaseOptions & { collection?: string }): Promise { + const { chainId = ChainId.Mainnet, page = 0, size = 50, collection } = opts + if (!SUPPORTED_CHAIN_ID_LIST.includes(chainId)) return Promise.resolve({ assets: [] }) + return request(chainId, '/api/v1/assets', { + owner: from.toLowerCase(), + limit: size, + offset: size * page, + collection, + }) } -export async function getCollections(owner: string, opts: { chainId?: ChainId; page?: number; size?: number }) { +export function getCollections(owner: string, opts: BaseOptions): Promise { const { chainId = ChainId.Mainnet, page = 0, size = 300 } = opts - const params = new URLSearchParams() - params.append('asset_owner', owner.toLowerCase()) - params.append('limit', String(size)) - params.append('offset', String(size * page)) - - if (![ChainId.Mainnet, ChainId.Rinkeby].includes(chainId)) - return { - collections: [], - } as CollectionsResponse - - const response = await fetch( - `https://${ - chainId === ChainId.Mainnet ? 'api' : 'rinkeby-api' - }.opensea.io/api/v1/collections?${params.toString()}`, - { - method: 'GET', - mode: 'cors', - headers: { - 'x-api-key': OPENSEA_API_KEY, - }, - }, - ) - const collections = (await response.json()) as AssetCollection[] + if (!SUPPORTED_CHAIN_ID_LIST.includes(chainId)) return Promise.resolve({ collections: [] }) + return request(chainId, '/api/v1/collections', { + asset_owner: owner.toLowerCase(), + limit: size, + offset: size * page, + }) +} - return { collections } +async function request(chainId: ChainId, requestPath: string, params: object): Promise { + const domain = chainId === ChainId.Mainnet ? 'https://api.opensea.io' : 'https://rinkeby-api.opensea.io' + const response = await fetch(urlcat(domain, requestPath, params), { + method: 'GET', + mode: 'cors', + headers: { 'x-api-key': OPENSEA_API_KEY }, + }) + return response.json() } From 4b083d02ad23d29a521cc028ef08d677604e934c Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 5 Jan 2022 18:08:53 +0000 Subject: [PATCH 15/37] chore(avalanche): add native tokens variable and circle avax brand --- .../mask/src/plugins/EVM/assets/avalanche.png | Bin 6790 -> 13712 bytes .../src/plugins/Trader/trader/0x/useTrade.ts | 10 +-- .../Trader/trader/useGetTradeContext.ts | 73 +++++++++--------- .../plugins/Trader/trader/useTradeContext.ts | 73 +++++++++--------- 4 files changed, 77 insertions(+), 79 deletions(-) diff --git a/packages/mask/src/plugins/EVM/assets/avalanche.png b/packages/mask/src/plugins/EVM/assets/avalanche.png index 6fa7ccab8d1d109c359cc386953c20d19806049b..a7d618493c597591390e8bd82f6219711b0151b1 100644 GIT binary patch literal 13712 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 => { switch (tradeProvider) { @@ -30,10 +31,10 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).UNISWAP_V2_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).UNISWAP_V2_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).UNISWAP_V2_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).UNISWAP_V2_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.UNISWAP_V2_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.UNISWAP_V2_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.UNISWAP_V2_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.UNISWAP_V2_FACTORY_ADDRESS, AGAINST_TOKENS: UNISWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: UNISWAP_CUSTOM_BASES, @@ -42,10 +43,10 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V3_LIKE: true, - GRAPH_API: getTraderConstants(chainId).UNISWAP_V3_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).UNISWAP_V3_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).UNISWAP_SWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).UNISWAP_V3_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.UNISWAP_V3_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.UNISWAP_V3_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.UNISWAP_SWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.UNISWAP_V3_FACTORY_ADDRESS, AGAINST_TOKENS: UNISWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: UNISWAP_CUSTOM_BASES, @@ -54,10 +55,10 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).SUSHISWAP_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).SUSHISWAP_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).SUSHISWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).SUSHISWAP_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.SUSHISWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.SUSHISWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.SUSHISWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.SUSHISWAP_FACTORY_ADDRESS, AGAINST_TOKENS: SUSHISWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: SUSHISWAP_CUSTOM_BASES, @@ -66,10 +67,10 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).SASHIMISWAP_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).SASHIMISWAP_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).SASHIMISWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).SASHIMISWAP_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.SASHIMISWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.SASHIMISWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.SASHIMISWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.SASHIMISWAP_FACTORY_ADDRESS, AGAINST_TOKENS: SASHIMISWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: SASHIMISWAP_CUSTOM_BASES, @@ -78,10 +79,10 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).QUICKSWAP_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).QUICKSWAP_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).QUICKSWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).QUICKSWAP_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.QUICKSWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.QUICKSWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.QUICKSWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.QUICKSWAP_FACTORY_ADDRESS, AGAINST_TOKENS: QUICKSWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: QUICKSWAP_CUSTOM_BASES, @@ -90,10 +91,10 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).PANCAKESWAP_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).PANCAKESWAP_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).PANCAKESWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).PANCAKESWAP_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.PANCAKESWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.PANCAKESWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.PANCAKESWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.PANCAKESWAP_FACTORY_ADDRESS, AGAINST_TOKENS: PANCAKESWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: PANCAKESWAP_CUSTOM_BASES, @@ -102,10 +103,10 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).TRADERJOE_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).TRADERJOE_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.TRADERJOE_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.TRADERJOE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.TRADERJOE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.TRADERJOE_FACTORY_ADDRESS, AGAINST_TOKENS: TRADERJOE_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: TRADERJOE_CUSTOM_BASES, @@ -114,10 +115,10 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).PANGOLIN_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).PANGOLIN_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).PANGOLIN_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).PANGOLIN_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.PANGOLIN_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.PANGOLIN_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.PANGOLIN_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.PANGOLIN_FACTORY_ADDRESS, AGAINST_TOKENS: PANGOLIN_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: PANGOLIN_CUSTOM_BASES, @@ -129,22 +130,22 @@ export function useGetTradeContext(tradeProvider?: TradeProvider) { case TradeProvider.BALANCER: return { TYPE: tradeProvider, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).BALANCER_EXCHANGE_PROXY_ADDRESS, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.BALANCER_EXCHANGE_PROXY_ADDRESS, } case TradeProvider.DODO: return { TYPE: tradeProvider, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).DODO_EXCHANGE_PROXY_ADDRESS, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.DODO_EXCHANGE_PROXY_ADDRESS, } case TradeProvider.BANCOR: return { TYPE: tradeProvider, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).BANCOR_EXCHANGE_PROXY_ADDRESS, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.BANCOR_EXCHANGE_PROXY_ADDRESS, } case TradeProvider.OPENOCEAN: return { TYPE: tradeProvider, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).BANCOR_EXCHANGE_PROXY_ADDRESS, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.BANCOR_EXCHANGE_PROXY_ADDRESS, } default: if (tradeProvider) unreachable(tradeProvider) diff --git a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts index 2a8894b6e2a3..487f468b0f13 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts @@ -25,16 +25,17 @@ export const TradeContext = createContext(null) export function useTradeContext(tradeProvider: TradeProvider) { const { targetChainId: chainId } = TargetChainIdContext.useContainer() + const DEX_TRADE = getTraderConstants(chainId) return useMemo(() => { switch (tradeProvider) { case TradeProvider.UNISWAP_V2: return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).UNISWAP_V2_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).UNISWAP_V2_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).UNISWAP_V2_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).UNISWAP_V2_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.UNISWAP_V2_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.UNISWAP_V2_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.UNISWAP_V2_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.UNISWAP_V2_FACTORY_ADDRESS, AGAINST_TOKENS: UNISWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: UNISWAP_CUSTOM_BASES, @@ -43,10 +44,10 @@ export function useTradeContext(tradeProvider: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V3_LIKE: true, - GRAPH_API: getTraderConstants(chainId).UNISWAP_V3_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).UNISWAP_V3_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).UNISWAP_SWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).UNISWAP_V3_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.UNISWAP_V3_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.UNISWAP_V3_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.UNISWAP_SWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.UNISWAP_V3_FACTORY_ADDRESS, AGAINST_TOKENS: UNISWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: UNISWAP_CUSTOM_BASES, @@ -55,10 +56,10 @@ export function useTradeContext(tradeProvider: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).SUSHISWAP_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).SUSHISWAP_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).SUSHISWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).SUSHISWAP_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.SUSHISWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.SUSHISWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.SUSHISWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.SUSHISWAP_FACTORY_ADDRESS, AGAINST_TOKENS: SUSHISWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: SUSHISWAP_CUSTOM_BASES, @@ -67,10 +68,10 @@ export function useTradeContext(tradeProvider: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).SASHIMISWAP_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).SASHIMISWAP_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).SASHIMISWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).SASHIMISWAP_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.SASHIMISWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.SASHIMISWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.SASHIMISWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.SASHIMISWAP_FACTORY_ADDRESS, AGAINST_TOKENS: SASHIMISWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: SASHIMISWAP_CUSTOM_BASES, @@ -79,10 +80,10 @@ export function useTradeContext(tradeProvider: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).QUICKSWAP_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).QUICKSWAP_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).QUICKSWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).QUICKSWAP_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.QUICKSWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.QUICKSWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.QUICKSWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.QUICKSWAP_FACTORY_ADDRESS, AGAINST_TOKENS: QUICKSWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: QUICKSWAP_CUSTOM_BASES, @@ -91,10 +92,10 @@ export function useTradeContext(tradeProvider: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).PANCAKESWAP_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).PANCAKESWAP_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).PANCAKESWAP_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).PANCAKESWAP_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.PANCAKESWAP_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.PANCAKESWAP_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.PANCAKESWAP_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.PANCAKESWAP_FACTORY_ADDRESS, AGAINST_TOKENS: PANCAKESWAP_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: PANCAKESWAP_CUSTOM_BASES, @@ -106,26 +107,26 @@ export function useTradeContext(tradeProvider: TradeProvider) { case TradeProvider.BALANCER: return { TYPE: tradeProvider, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).BALANCER_EXCHANGE_PROXY_ADDRESS, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.BALANCER_EXCHANGE_PROXY_ADDRESS, } case TradeProvider.DODO: return { TYPE: tradeProvider, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).DODO_EXCHANGE_PROXY_ADDRESS, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.DODO_EXCHANGE_PROXY_ADDRESS, } case TradeProvider.BANCOR: return { TYPE: tradeProvider, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).BANCOR_EXCHANGE_PROXY_ADDRESS, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.BANCOR_EXCHANGE_PROXY_ADDRESS, } case TradeProvider.TRADERJOE: return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).TRADERJOE_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).TRADERJOE_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).TRADERJOE_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.TRADERJOE_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.TRADERJOE_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.TRADERJOE_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.TRADERJOE_FACTORY_ADDRESS, AGAINST_TOKENS: TRADERJOE_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: TRADERJOE_CUSTOM_BASES, @@ -134,10 +135,10 @@ export function useTradeContext(tradeProvider: TradeProvider) { return { TYPE: tradeProvider, IS_UNISWAP_V2_LIKE: true, - GRAPH_API: getTraderConstants(chainId).PANGOLIN_THEGRAPH, - INIT_CODE_HASH: getTraderConstants(chainId).PANGOLIN_INIT_CODE_HASH, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).PANGOLIN_ROUTER_ADDRESS, - FACTORY_CONTRACT_ADDRESS: getTraderConstants(chainId).PANGOLIN_FACTORY_ADDRESS, + GRAPH_API: DEX_TRADE.PANGOLIN_THEGRAPH, + INIT_CODE_HASH: DEX_TRADE.PANGOLIN_INIT_CODE_HASH, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.PANGOLIN_ROUTER_ADDRESS, + FACTORY_CONTRACT_ADDRESS: DEX_TRADE.PANGOLIN_FACTORY_ADDRESS, AGAINST_TOKENS: PANGOLIN_BASE_AGAINST_TOKENS, ADDITIONAL_TOKENS: {}, CUSTOM_TOKENS: PANGOLIN_CUSTOM_BASES, @@ -145,7 +146,7 @@ export function useTradeContext(tradeProvider: TradeProvider) { case TradeProvider.OPENOCEAN: return { TYPE: tradeProvider, - ROUTER_CONTRACT_ADDRESS: getTraderConstants(chainId).OPENOCEAN_EXCHANGE_PROXY_ADDRESS, + ROUTER_CONTRACT_ADDRESS: DEX_TRADE.OPENOCEAN_EXCHANGE_PROXY_ADDRESS, } default: unreachable(tradeProvider) From 587ac3b2a43f69a64b68cb627749e67dbda8ee81 Mon Sep 17 00:00:00 2001 From: codingsh Date: Thu, 6 Jan 2022 22:43:12 +0000 Subject: [PATCH 16/37] feat(avalanche): add mainnet contracts --- packages/web3-constants/evm/coingecko.json | 10 ++++++---- .../web3-constants/evm/coinmarketcap.json | 5 +++-- packages/web3-constants/evm/cryptoartai.json | 6 ++++++ packages/web3-constants/evm/debank.json | 5 +++-- packages/web3-constants/evm/gitcoin.json | 4 ++-- .../web3-constants/evm/good-ghosting.json | 2 ++ packages/web3-constants/evm/ito.json | 18 ++++++++++++++--- packages/web3-constants/evm/mask-box.json | 10 ++++++++++ .../web3-constants/evm/nft-red-packet.json | 2 +- packages/web3-constants/evm/pooltogether.json | 4 ++++ packages/web3-constants/evm/red-packet.json | 2 ++ packages/web3-constants/evm/token-list.json | 7 ++++--- packages/web3-constants/evm/token.json | 20 ++++++++++--------- packages/web3-constants/evm/trader.json | 12 +++++------ packages/web3-constants/evm/zerion.json | 4 ++++ 15 files changed, 79 insertions(+), 32 deletions(-) diff --git a/packages/web3-constants/evm/coingecko.json b/packages/web3-constants/evm/coingecko.json index 37dd106ae12e..e0e8a7bdd1c5 100644 --- a/packages/web3-constants/evm/coingecko.json +++ b/packages/web3-constants/evm/coingecko.json @@ -12,9 +12,10 @@ "Arbitrum": "arbitrum-one", "Arbitrum_Rinkeby": "", "xDai": "xdai", + "Avalanche": "avalanche", + "Avalanche_Fuji": "", "Celo": "celo", - "Fantom": "fantom", - "Avalanche": "avalanche" + "Fantom": "fantom" }, "COIN_ID": { "Mainnet": "ethereum", @@ -29,8 +30,9 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "xdai", + "Avalanche": "avalanche", + "Avalanche_Fuji": "", "Celo": "celo", - "Fantom": "fantom", - "Avalanche": "avalanche" + "Fantom": "fantom" } } diff --git a/packages/web3-constants/evm/coinmarketcap.json b/packages/web3-constants/evm/coinmarketcap.json index b843221ee9b5..9aa9d8fc15fd 100644 --- a/packages/web3-constants/evm/coinmarketcap.json +++ b/packages/web3-constants/evm/coinmarketcap.json @@ -12,8 +12,9 @@ "Arbitrum": "11841", "Arbitrum_Rinkeby": "", "xDai": "5601", + "Avalanche": "43114", + "Avalanche_Fuji": "", "Celo": "5567", - "Fantom": "3513", - "Avalanche": "43114" + "Fantom": "3513" } } diff --git a/packages/web3-constants/evm/cryptoartai.json b/packages/web3-constants/evm/cryptoartai.json index d4e9200b7a36..268603935756 100644 --- a/packages/web3-constants/evm/cryptoartai.json +++ b/packages/web3-constants/evm/cryptoartai.json @@ -12,6 +12,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -28,6 +30,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -44,6 +48,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" } diff --git a/packages/web3-constants/evm/debank.json b/packages/web3-constants/evm/debank.json index 6f763105577c..6655a7d9a836 100644 --- a/packages/web3-constants/evm/debank.json +++ b/packages/web3-constants/evm/debank.json @@ -12,8 +12,9 @@ "Arbitrum": "arb", "Arbitrum_Rinkeby": "", "xDai": "xdai", + "Avalanche": "avax", + "Avalanche_Fuji": "", "Celo": "celo", - "Fantom": "ftm", - "Avalanche": "avax" + "Fantom": "ftm" } } diff --git a/packages/web3-constants/evm/gitcoin.json b/packages/web3-constants/evm/gitcoin.json index a22c92ded897..43f12556b61d 100644 --- a/packages/web3-constants/evm/gitcoin.json +++ b/packages/web3-constants/evm/gitcoin.json @@ -63,11 +63,11 @@ "BSCT": 5, "Matic": 5, "Mumbai": 5, - "Avalanche": 5, - "Avalanche_Fuji": 0, "Arbitrum": 5, "Arbitrum_Rinkeby": 5, "xDai": 5, + "Avalanche": 5, + "Avalanche_Fuji": 0, "Celo": 0, "Fantom": 0 } diff --git a/packages/web3-constants/evm/good-ghosting.json b/packages/web3-constants/evm/good-ghosting.json index 3145442ced77..3ce487daf91c 100644 --- a/packages/web3-constants/evm/good-ghosting.json +++ b/packages/web3-constants/evm/good-ghosting.json @@ -12,6 +12,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, diff --git a/packages/web3-constants/evm/ito.json b/packages/web3-constants/evm/ito.json index 62fc6c7711ad..467939327157 100644 --- a/packages/web3-constants/evm/ito.json +++ b/packages/web3-constants/evm/ito.json @@ -12,6 +12,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -28,6 +30,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -44,6 +48,8 @@ "Arbitrum": "0x71834a3FDeA3E70F14a93ED85c6be70925D0CAd9", "Arbitrum_Rinkeby": "0x9b3649eC8C9f68484acC76D437B145a4e58Bf2A2", "xDai": "0x913975af2Bb8a6Be4100D7dc5e9765B77F6A5d6c", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -60,8 +66,10 @@ "Arbitrum": 102022, "Arbitrum_Rinkeby": 708696, "xDai": 17865755, - "Celo": "", - "Fantom": "" + "Avalanche": 0, + "Avalanche_Fuji": 0, + "Celo": 0, + "Fantom": 0 }, "DEFAULT_QUALIFICATION_ADDRESS": { "Mainnet": "0x81b6ae377e360dcad63611846a2516f4ba8c88ac", @@ -76,6 +84,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -92,6 +102,8 @@ "Arbitrum": "0x913975af2Bb8a6Be4100D7dc5e9765B77F6A5d6c", "Arbitrum_Rinkeby": "0xEbd753E66649C824241E63894301BA8Db5DBF5Bb", "xDai": "0x71834a3FDeA3E70F14a93ED85c6be70925D0CAd9", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -108,7 +120,7 @@ "Arbitrum": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-arbitrum-one", "Arbitrum_Rinkeby": "", "xDai": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-xdai", - "Avalanche": "", + "Avalanche": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-avalanche", "Avalanche_Fuji": "", "Celo": "", "Fantom": "" diff --git a/packages/web3-constants/evm/mask-box.json b/packages/web3-constants/evm/mask-box.json index 1384cbdf1247..f2e1e971f006 100644 --- a/packages/web3-constants/evm/mask-box.json +++ b/packages/web3-constants/evm/mask-box.json @@ -12,6 +12,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "0x0477524B070F73BE7f84f3326d104899e1beBb12", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -28,6 +30,8 @@ "Arbitrum": 0, "Arbitrum_Rinkeby": 0, "xDai": 0, + "Avalanche": 9212180, + "Avalanche_Fuji": 0, "Celo": 0, "Fantom": 0 }, @@ -44,6 +48,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -60,6 +66,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -76,6 +84,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" } diff --git a/packages/web3-constants/evm/nft-red-packet.json b/packages/web3-constants/evm/nft-red-packet.json index 5d8749a0b558..306702cc89b3 100644 --- a/packages/web3-constants/evm/nft-red-packet.json +++ b/packages/web3-constants/evm/nft-red-packet.json @@ -12,7 +12,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", + "Avalanche": "0x3e99d32b8c601a6628d301673bc28b17f2adb326", "Avalanche_Fuji": "", "Celo": "", "Fantom": "" diff --git a/packages/web3-constants/evm/pooltogether.json b/packages/web3-constants/evm/pooltogether.json index 769b467b92c2..95c2c796ab85 100644 --- a/packages/web3-constants/evm/pooltogether.json +++ b/packages/web3-constants/evm/pooltogether.json @@ -12,6 +12,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" }, @@ -28,6 +30,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "" } diff --git a/packages/web3-constants/evm/red-packet.json b/packages/web3-constants/evm/red-packet.json index d9b3a002125b..1dd0592ee406 100644 --- a/packages/web3-constants/evm/red-packet.json +++ b/packages/web3-constants/evm/red-packet.json @@ -84,6 +84,8 @@ "Arbitrum": 909051, "Arbitrum_Rinkeby": 0, "xDai": 18101937, + "Avalanche": 0, + "Avalanche_Fuji": 0, "Celo": 0, "Fantom": 0 }, diff --git a/packages/web3-constants/evm/token-list.json b/packages/web3-constants/evm/token-list.json index 5b7e0e979d4e..f39669d3692f 100644 --- a/packages/web3-constants/evm/token-list.json +++ b/packages/web3-constants/evm/token-list.json @@ -25,10 +25,11 @@ "https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/421611/tokens.json" ], "xDai": ["https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/100/tokens.json"], - "Celo": ["https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/42220/tokens.json"], - "Fantom": ["https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/250/tokens.json"], "Avalanche": [ "https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/43114/tokens.json" - ] + ], + "Avalanche_Fuji": [], + "Celo": ["https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/42220/tokens.json"], + "Fantom": ["https://raw.githubusercontent.com/DimensionDev/Mask-Token-List/gh-pages/latest/250/tokens.json"] } } diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index adf35fe92378..6362aebfd058 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -372,6 +372,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", + "Avalanche": "", + "Avalanche_Fuji": "", "Celo": "", "Fantom": "0x049d68029688eAbF473097a2fC38ef61633A3C7A" }, @@ -712,10 +714,10 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Celo": "0x765de816845861e75a25fca122bb6898b8b1282a", - "Fantom": "", "Avalanche": "", - "Avalanche_Fuji": "" + "Avalanche_Fuji": "", + "Celo": "0x765de816845861e75a25fca122bb6898b8b1282a", + "Fantom": "" }, "cEUR_ADDRESS": { "Mainnet": "", @@ -730,10 +732,10 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Celo": "0x765de816845861e75a25fca122bb6898b8b1282a", - "Fantom": "", "Avalanche": "", - "Avalanche_Fuji": "" + "Avalanche_Fuji": "", + "Celo": "0x765de816845861e75a25fca122bb6898b8b1282a", + "Fantom": "" }, "JOE_ADDRESS": { "Mainnet": "", @@ -748,10 +750,10 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Celo": "", - "Fantom": "", "Avalanche": "0xce347E069B68C53A9ED5e7DA5952529cAF8ACCd4", - "Avalanche_Fuji": "" + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "" }, "ETHER_ADDRESS": { "Mainnet": "", diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index b6e6ba201f66..e41d094ab292 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -660,10 +660,10 @@ "Arbitrum": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", "Arbitrum_Rinkeby": "", "xDai": "0x0000000000000000000000000000000000000000", - "Celo": "", - "Fantom": "", "Avalanche": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - "Avalanche_Fuji": "" + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "" }, "OPENOCEAN_EXCHANGE_PROXY_ADDRESS": { "Mainnet": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", @@ -678,10 +678,10 @@ "Arbitrum": "0x6352a56caadc4f1e25cd6c75970fa768a3304e64", "Arbitrum_Rinkeby": "", "xDai": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", - "Celo": "", - "Fantom": "", "Avalanche": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", - "Avalanche_Fuji": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64" + "Avalanche_Fuji": "0x6352a56caadC4F1E25CD6c75970Fa768A3304e64", + "Celo": "", + "Fantom": "" }, "PANGOLIN_ROUTER_ADDRESS": { "Mainnet": "", diff --git a/packages/web3-constants/evm/zerion.json b/packages/web3-constants/evm/zerion.json index 98708cd1b302..ed7540d16372 100644 --- a/packages/web3-constants/evm/zerion.json +++ b/packages/web3-constants/evm/zerion.json @@ -12,6 +12,8 @@ "Arbitrum": "arbitrum-assets", "Arbitrum_Rinkeby": "", "xDai": "xdai-assets", + "Avalanche": "avalanche-assets", + "Avalanche_Fuji": "", "Celo": "celo-assets", "Fantom": "fantom-assets" }, @@ -28,6 +30,8 @@ "Arbitrum": "arbitrum-transactions", "Arbitrum_Rinkeby": "", "xDai": "xdai-transactions", + "Avalanche": "avalanche-transactions", + "Avalanche_Fuji": "", "Celo": "celo-transactions", "Fantom": "fantom-transactions" } From 561596868ac899eda256101af9b08c8e93b0b789 Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 11 Jan 2022 23:24:04 +0100 Subject: [PATCH 17/37] chore(avalanche): fixed show price --- packages/web3-constants/evm/coingecko.json | 2 +- packages/web3-constants/evm/token.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web3-constants/evm/coingecko.json b/packages/web3-constants/evm/coingecko.json index e0e8a7bdd1c5..a198fed87028 100644 --- a/packages/web3-constants/evm/coingecko.json +++ b/packages/web3-constants/evm/coingecko.json @@ -30,7 +30,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "xdai", - "Avalanche": "avalanche", + "Avalanche": "binance-peg-avalanche", "Avalanche_Fuji": "", "Celo": "celo", "Fantom": "fantom" diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index 6362aebfd058..27f9a82c531c 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -12,7 +12,7 @@ "Arbitrum": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", "Arbitrum_Rinkeby": "0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681", "xDai": "0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d", - "Avalanche": "0xc778417E063141139Fce010982780140Aa0cD5Ab", + "Avalanche": "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7", "Avalanche_Fuji": "", "Celo": "0x471EcE3750Da237f93B8E339c536989b8978a438", "Fantom": "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83" From e8119b0ed2fa2146919723cb391e2096a19327cd Mon Sep 17 00:00:00 2001 From: codingsh Date: Tue, 11 Jan 2022 23:56:19 +0100 Subject: [PATCH 18/37] =?UTF-8?q?chore(avalanche):=20minimizer=20pangolinI?= =?UTF-8?q?con=202.73k=20=E2=86=92=201.35k?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/mask/src/resources/PangolinIcon.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/mask/src/resources/PangolinIcon.tsx b/packages/mask/src/resources/PangolinIcon.tsx index 8f0a12b4e1f5..a92a0378c8da 100644 --- a/packages/mask/src/resources/PangolinIcon.tsx +++ b/packages/mask/src/resources/PangolinIcon.tsx @@ -2,11 +2,11 @@ import { SvgIconProps, SvgIcon } from '@mui/material' const svg = ( - - - - - + + + + + ) From fa39a055a97dcc217096c8051326b83d65c574a5 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 12 Jan 2022 00:43:07 +0100 Subject: [PATCH 19/37] chore(avalanche): fixed trading view for avalanche default token --- .../mask/src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx | 2 +- packages/web3-shared/evm/assets/chains.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx index f95b935300e5..060865f80a8a 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx @@ -205,7 +205,7 @@ export function TraderView(props: TraderViewProps) { const isSwappable = (!!trending?.coin.contract_address || - ['eth', 'matic', 'bnb'].includes(trending?.coin.symbol.toLowerCase() ?? '')) && + ['eth', 'matic', 'bnb', 'avax'].includes(trending?.coin.symbol.toLowerCase() ?? '')) && chainIdValid && tradeProviders.length //#endregion diff --git a/packages/web3-shared/evm/assets/chains.json b/packages/web3-shared/evm/assets/chains.json index 448d782d18cc..3135f7d4c79b 100644 --- a/packages/web3-shared/evm/assets/chains.json +++ b/packages/web3-shared/evm/assets/chains.json @@ -2084,7 +2084,7 @@ }, { "name": "Avalanche Mainnet", - "chain": "Avalanche", + "chain": "AVAX", "network": "mainnet", "rpc": ["https://api.avax.network/ext/bc/C/rpc"], "faucets": [], From 4d1d545f2b8717d964af636e899d309c215168f8 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 12 Jan 2022 01:48:36 +0100 Subject: [PATCH 20/37] chore(avalanche): fix swap issues --- packages/mask/src/plugins/EVM/constants.ts | 2 +- .../plugins/Trader/constants/pangolindex.ts | 4 ++-- .../src/plugins/Trader/constants/trader.ts | 1 + packages/mask/src/plugins/Trader/pipes.ts | 3 +-- .../plugins/Trader/trader/useTradeCallback.ts | 2 -- packages/web3-constants/evm/token.json | 18 ++++++++++++++++++ packages/web3-shared/evm/assets/chains.json | 9 +++++++-- 7 files changed, 30 insertions(+), 9 deletions(-) diff --git a/packages/mask/src/plugins/EVM/constants.ts b/packages/mask/src/plugins/EVM/constants.ts index b8f26744af3a..ca310e932049 100644 --- a/packages/mask/src/plugins/EVM/constants.ts +++ b/packages/mask/src/plugins/EVM/constants.ts @@ -154,7 +154,7 @@ export const PLUGIN_NETWORKS: Web3Plugin.NetworkDescriptor[] = [ type: NetworkType.Avalanche, name: 'Avalanche', icon: new URL('./assets/avalanche.png', import.meta.url), - iconColor: 'rgb(232 65 66)', + iconColor: 'rgb(232, 65, 66)', isMainnet: true, }, ] diff --git a/packages/mask/src/plugins/Trader/constants/pangolindex.ts b/packages/mask/src/plugins/Trader/constants/pangolindex.ts index 417b98c1b83c..5c04317b85ab 100644 --- a/packages/mask/src/plugins/Trader/constants/pangolindex.ts +++ b/packages/mask/src/plugins/Trader/constants/pangolindex.ts @@ -1,5 +1,5 @@ import { ChainId } from '@masknet/web3-shared-evm' -import { ETHER, WNATIVE, WBTCe, DAIe, USDTe, USDCe, WNATIVE_ONLY } from './trader' +import { ETHER, WNATIVE, WBTCe, DAIe, PNG, USDTe, USDCe, WNATIVE_ONLY } from './trader' import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' /** @@ -10,5 +10,5 @@ export const PANGOLIN_CUSTOM_BASES: ERC20TokenCustomizedBase = {} export const PANGOLIN_BASE_AGAINST_TOKENS: ERC20AgainstToken = { ...WNATIVE_ONLY, - [ChainId.Avalanche]: [WNATIVE, DAIe, USDTe, USDCe, ETHER, WBTCe].map((x) => x[ChainId.Avalanche]), + [ChainId.Avalanche]: [WNATIVE, DAIe, PNG, USDTe, USDCe, ETHER, WBTCe].map((x) => x[ChainId.Avalanche]), } diff --git a/packages/mask/src/plugins/Trader/constants/trader.ts b/packages/mask/src/plugins/Trader/constants/trader.ts index a5914b140df2..8050dd38bce7 100644 --- a/packages/mask/src/plugins/Trader/constants/trader.ts +++ b/packages/mask/src/plugins/Trader/constants/trader.ts @@ -48,6 +48,7 @@ export const DAIe = createERC20Tokens('DAI_ADDRESS', 'Dai Stablecoin', 'DAI.e ', export const WBTCe = createERC20Tokens('WBTC_ADDRESS', 'Wrapped BTC', 'WBTCe', 18) export const USDCe = createERC20Tokens('USDC_ADDRESS', ' USD Coin', 'USDCe', 18) export const JOE = createERC20Tokens('JOE_ADDRESS', 'JoeToken', 'JOE', 18) +export const PNG = createERC20Tokens('PNG_ADDRESS', 'Pangolin', 'PG', 18) export const WNATIVE = createERC20Tokens( 'WNATIVE_ADDRESS', diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index 01cde5f30802..ef1cd4980b4f 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -174,8 +174,7 @@ export function resolveTradePairLink(tradeProvider: TradeProvider, address: stri // TODO - OpenOcean return '' case TradeProvider.TRADERJOE: - // TODO - Trader Joe Analytics - return '' + return `https://analytics.traderjoexyz.com/pairs/${address}` case TradeProvider.PANGOLIN: return `https://info.pangolin.exchange/pair/${address}` default: diff --git a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts index 1aee064739ad..6077f5d1ab06 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeCallback.ts @@ -96,8 +96,6 @@ export function useTradeCallback( return uniswapV2Like case TradeProvider.PANCAKESWAP: return uniswapV2Like - case TradeProvider.TRADERJOE: - return uniswapV2Like case TradeProvider.ZRX: return zrx case TradeProvider.BALANCER: diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index 27f9a82c531c..2d87c89da5b3 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -755,6 +755,24 @@ "Celo": "", "Fantom": "" }, + "PNG_ADDRESS": { + "Mainnet": "", + "Ropsten": "", + "Rinkeby": "", + "Kovan": "", + "Gorli": "", + "BSC": "", + "BSCT": "", + "Matic": "", + "Mumbai": "", + "Arbitrum": "", + "Arbitrum_Rinkeby": "", + "xDai": "", + "Avalanche": "0x60781C2586D68229fde47564546784ab3fACA982", + "Avalanche_Fuji": "", + "Celo": "", + "Fantom": "" + }, "ETHER_ADDRESS": { "Mainnet": "", "Ropsten": "", diff --git a/packages/web3-shared/evm/assets/chains.json b/packages/web3-shared/evm/assets/chains.json index 3135f7d4c79b..9a8c0f145c4d 100644 --- a/packages/web3-shared/evm/assets/chains.json +++ b/packages/web3-shared/evm/assets/chains.json @@ -14,6 +14,7 @@ "logoURI": "https://static.debank.com/image/token/logo_url/eth/935ae4e4d1d12d59a99717a24f2540b5.png" }, "faucets": [], + "features": ["EIP1559"], "explorers": [ { @@ -2076,7 +2077,11 @@ "rpc": ["https://api.avax-test.network/ext/bc/C/rpc"], "faucets": ["https://faucet.avax-test.network/"], "features": [], - "nativeCurrency": { "name": "Avalanche", "symbol": "AVAX", "decimals": 18 }, + "nativeCurrency": { + "name": "Avalanche", + "symbol": "AVAX", + "decimals": 18 + }, "infoURL": "https://cchain.explorer.avax-test.network", "shortName": "Fuji", "chainId": 43113, @@ -2084,7 +2089,7 @@ }, { "name": "Avalanche Mainnet", - "chain": "AVAX", + "chain": "Avalanche", "network": "mainnet", "rpc": ["https://api.avax.network/ext/bc/C/rpc"], "faucets": [], From 08e74b8cfe63d8ff5eca4236d3f60c113f2f9348 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 12 Jan 2022 13:33:21 +0100 Subject: [PATCH 21/37] feat(avalanche): add ito, mask-box, nftredpacket, redpacket contracts mainnet/fuji --- packages/web3-constants/evm/ito.json | 8 ++++---- packages/web3-constants/evm/mask-box.json | 4 ++-- packages/web3-constants/evm/nft-red-packet.json | 2 +- packages/web3-constants/evm/red-packet.json | 6 +++--- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/web3-constants/evm/ito.json b/packages/web3-constants/evm/ito.json index 467939327157..423d9f4ebf67 100644 --- a/packages/web3-constants/evm/ito.json +++ b/packages/web3-constants/evm/ito.json @@ -48,8 +48,8 @@ "Arbitrum": "0x71834a3FDeA3E70F14a93ED85c6be70925D0CAd9", "Arbitrum_Rinkeby": "0x9b3649eC8C9f68484acC76D437B145a4e58Bf2A2", "xDai": "0x913975af2Bb8a6Be4100D7dc5e9765B77F6A5d6c", - "Avalanche": "", - "Avalanche_Fuji": "", + "Avalanche": "0x452F3023f0E163056bEFFFcA719B12e0dD7Af451", + "Avalanche_Fuji": "0xf5056B96ab242C566002852d0b98ce0BcDf1af51", "Celo": "", "Fantom": "" }, @@ -66,8 +66,8 @@ "Arbitrum": 102022, "Arbitrum_Rinkeby": 708696, "xDai": 17865755, - "Avalanche": 0, - "Avalanche_Fuji": 0, + "Avalanche": 9469997, + "Avalanche_Fuji": 4751103, "Celo": 0, "Fantom": 0 }, diff --git a/packages/web3-constants/evm/mask-box.json b/packages/web3-constants/evm/mask-box.json index f2e1e971f006..4561444a5b8e 100644 --- a/packages/web3-constants/evm/mask-box.json +++ b/packages/web3-constants/evm/mask-box.json @@ -13,7 +13,7 @@ "Arbitrum_Rinkeby": "", "xDai": "", "Avalanche": "0x0477524B070F73BE7f84f3326d104899e1beBb12", - "Avalanche_Fuji": "", + "Avalanche_Fuji": "0xae5c53294003f72b27cef476680979453193673d", "Celo": "", "Fantom": "" }, @@ -31,7 +31,7 @@ "Arbitrum_Rinkeby": 0, "xDai": 0, "Avalanche": 9212180, - "Avalanche_Fuji": 0, + "Avalanche_Fuji": 4752026, "Celo": 0, "Fantom": 0 }, diff --git a/packages/web3-constants/evm/nft-red-packet.json b/packages/web3-constants/evm/nft-red-packet.json index 306702cc89b3..0b600de06980 100644 --- a/packages/web3-constants/evm/nft-red-packet.json +++ b/packages/web3-constants/evm/nft-red-packet.json @@ -13,7 +13,7 @@ "Arbitrum_Rinkeby": "", "xDai": "", "Avalanche": "0x3e99d32b8c601a6628d301673bc28b17f2adb326", - "Avalanche_Fuji": "", + "Avalanche_Fuji": "0x5de932BD252DD79231C9eDB5F2e30D488B785109", "Celo": "", "Fantom": "" }, diff --git a/packages/web3-constants/evm/red-packet.json b/packages/web3-constants/evm/red-packet.json index 1dd0592ee406..4db48ecc5e59 100644 --- a/packages/web3-constants/evm/red-packet.json +++ b/packages/web3-constants/evm/red-packet.json @@ -66,8 +66,8 @@ "Arbitrum": "0x83D6b366f21e413f214EB077D5378478e71a5eD2", "Arbitrum_Rinkeby": "0x4A77E797031257db72F7D2C3Ec08a4FAc5c8CfE9", "xDai": "0x54a0A221C25Fc0a347EC929cFC5db0be17fA2a2B", - "Avalanche": "", - "Avalanche_Fuji": "", + "Avalanche": "0x525Da0e87199940EDea5BfB6D9c057333D915F57", + "Avalanche_Fuji": "0x3f64DFB6009d138DfD7b62916f3322A438d8b00D", "Celo": "", "Fantom": "" }, @@ -85,7 +85,7 @@ "Arbitrum_Rinkeby": 0, "xDai": 18101937, "Avalanche": 0, - "Avalanche_Fuji": 0, + "Avalanche_Fuji": 4751550, "Celo": 0, "Fantom": 0 }, From 864aa166679e7f5518590ac8f8b0409190b4dfbf Mon Sep 17 00:00:00 2001 From: codingsh Date: Fri, 14 Jan 2022 10:39:08 +0100 Subject: [PATCH 22/37] chore(avalanche): change chain to avax and add redPacket contracts addres --- packages/web3-constants/evm/nft-red-packet.json | 4 ++-- packages/web3-constants/evm/red-packet.json | 4 ++-- packages/web3-shared/evm/assets/chains.json | 2 +- packages/web3-shared/evm/utils/chainDetailed.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/web3-constants/evm/nft-red-packet.json b/packages/web3-constants/evm/nft-red-packet.json index 0b600de06980..325cbcc8181e 100644 --- a/packages/web3-constants/evm/nft-red-packet.json +++ b/packages/web3-constants/evm/nft-red-packet.json @@ -12,7 +12,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "0x3e99d32b8c601a6628d301673bc28b17f2adb326", + "Avalanche": "0x96c7D011cdFD467f551605f0f5Fce279F86F4186", "Avalanche_Fuji": "0x5de932BD252DD79231C9eDB5F2e30D488B785109", "Celo": "", "Fantom": "" @@ -30,7 +30,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", + "Avalanche": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-nft-red-packet-avalanche", "Avalanche_Fuji": "", "Celo": "", "Fantom": "" diff --git a/packages/web3-constants/evm/red-packet.json b/packages/web3-constants/evm/red-packet.json index 4db48ecc5e59..0fdddd3a2f76 100644 --- a/packages/web3-constants/evm/red-packet.json +++ b/packages/web3-constants/evm/red-packet.json @@ -66,7 +66,7 @@ "Arbitrum": "0x83D6b366f21e413f214EB077D5378478e71a5eD2", "Arbitrum_Rinkeby": "0x4A77E797031257db72F7D2C3Ec08a4FAc5c8CfE9", "xDai": "0x54a0A221C25Fc0a347EC929cFC5db0be17fA2a2B", - "Avalanche": "0x525Da0e87199940EDea5BfB6D9c057333D915F57", + "Avalanche": "0xF9F7C1496c21bC0180f4B64daBE0754ebFc8A8c0", "Avalanche_Fuji": "0x3f64DFB6009d138DfD7b62916f3322A438d8b00D", "Celo": "", "Fantom": "" @@ -84,7 +84,7 @@ "Arbitrum": 909051, "Arbitrum_Rinkeby": 0, "xDai": 18101937, - "Avalanche": 0, + "Avalanche": 8306507, "Avalanche_Fuji": 4751550, "Celo": 0, "Fantom": 0 diff --git a/packages/web3-shared/evm/assets/chains.json b/packages/web3-shared/evm/assets/chains.json index 9a8c0f145c4d..e71415f8a684 100644 --- a/packages/web3-shared/evm/assets/chains.json +++ b/packages/web3-shared/evm/assets/chains.json @@ -2089,7 +2089,7 @@ }, { "name": "Avalanche Mainnet", - "chain": "Avalanche", + "chain": "AVAX", "network": "mainnet", "rpc": ["https://api.avax.network/ext/bc/C/rpc"], "faucets": [], diff --git a/packages/web3-shared/evm/utils/chainDetailed.ts b/packages/web3-shared/evm/utils/chainDetailed.ts index 9ff2b1127cf9..cb6533379b8b 100644 --- a/packages/web3-shared/evm/utils/chainDetailed.ts +++ b/packages/web3-shared/evm/utils/chainDetailed.ts @@ -102,7 +102,7 @@ export function getNetworkTypeFromChainId(chainId: ChainId, value?: boolean) { const map: Record = { [NetworkType.Ethereum]: 'ETH', [NetworkType.Arbitrum]: 'Arbitrum', - [NetworkType.Avalanche]: 'Avalanche', + [NetworkType.Avalanche]: 'AVAX', [NetworkType.Binance]: 'BSC', [NetworkType.Celo]: 'CELO', [NetworkType.Fantom]: 'FTM', From e7abc6f3528b0f7686276c6914b035131326f98e Mon Sep 17 00:00:00 2001 From: codingsh Date: Fri, 14 Jan 2022 15:21:31 +0100 Subject: [PATCH 23/37] chore(avalanche): fixed tokens symbols variables --- .../mask/src/plugins/Trader/constants/pangolindex.ts | 4 ++-- packages/mask/src/plugins/Trader/constants/trader.ts | 6 +----- .../mask/src/plugins/Trader/constants/traderjoe.ts | 4 ++-- packages/web3-constants/evm/explorer.json | 12 ++++++------ packages/web3-constants/evm/openocean.json | 2 ++ packages/web3-constants/evm/token.json | 4 ++-- packages/web3-constants/evm/trader.json | 2 +- 7 files changed, 16 insertions(+), 18 deletions(-) diff --git a/packages/mask/src/plugins/Trader/constants/pangolindex.ts b/packages/mask/src/plugins/Trader/constants/pangolindex.ts index 5c04317b85ab..e8a7c2b769f5 100644 --- a/packages/mask/src/plugins/Trader/constants/pangolindex.ts +++ b/packages/mask/src/plugins/Trader/constants/pangolindex.ts @@ -1,5 +1,5 @@ import { ChainId } from '@masknet/web3-shared-evm' -import { ETHER, WNATIVE, WBTCe, DAIe, PNG, USDTe, USDCe, WNATIVE_ONLY } from './trader' +import { ETHER, WNATIVE, WBTC, DAI, PNG, USDT, USDC, WNATIVE_ONLY } from './trader' import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' /** @@ -10,5 +10,5 @@ export const PANGOLIN_CUSTOM_BASES: ERC20TokenCustomizedBase = {} export const PANGOLIN_BASE_AGAINST_TOKENS: ERC20AgainstToken = { ...WNATIVE_ONLY, - [ChainId.Avalanche]: [WNATIVE, DAIe, PNG, USDTe, USDCe, ETHER, WBTCe].map((x) => x[ChainId.Avalanche]), + [ChainId.Avalanche]: [WNATIVE, DAI, PNG, USDT, USDC, ETHER, WBTC, PNG].map((x) => x[ChainId.Avalanche]), } diff --git a/packages/mask/src/plugins/Trader/constants/trader.ts b/packages/mask/src/plugins/Trader/constants/trader.ts index 8050dd38bce7..2bd845ebc88d 100644 --- a/packages/mask/src/plugins/Trader/constants/trader.ts +++ b/packages/mask/src/plugins/Trader/constants/trader.ts @@ -43,12 +43,8 @@ export const NFTX = createERC20Tokens('NFTX_ADDRESS', 'NFTX', 'NFTX', 18) export const STETH = createERC20Tokens('stETH_ADDRESS', 'stakedETH', 'stETH', 18) export const CUSD = createERC20Tokens('cUSD_ADDRESS', 'Celo Dollar', 'cUSD', 18) export const CEUR = createERC20Tokens('cEUR_ADDRESS', 'Celo Euro', 'cEUR', 18) -export const USDTe = createERC20Tokens('USDT_ADDRESS', 'Tether USD', 'USDT.e', 6) -export const DAIe = createERC20Tokens('DAI_ADDRESS', 'Dai Stablecoin', 'DAI.e ', 18) -export const WBTCe = createERC20Tokens('WBTC_ADDRESS', 'Wrapped BTC', 'WBTCe', 18) -export const USDCe = createERC20Tokens('USDC_ADDRESS', ' USD Coin', 'USDCe', 18) export const JOE = createERC20Tokens('JOE_ADDRESS', 'JoeToken', 'JOE', 18) -export const PNG = createERC20Tokens('PNG_ADDRESS', 'Pangolin', 'PG', 18) +export const PNG = createERC20Tokens('PNG_ADDRESS', 'Pangolin', 'PNG', 18) export const WNATIVE = createERC20Tokens( 'WNATIVE_ADDRESS', diff --git a/packages/mask/src/plugins/Trader/constants/traderjoe.ts b/packages/mask/src/plugins/Trader/constants/traderjoe.ts index 9e895c928b04..f147c7573e79 100644 --- a/packages/mask/src/plugins/Trader/constants/traderjoe.ts +++ b/packages/mask/src/plugins/Trader/constants/traderjoe.ts @@ -1,5 +1,5 @@ import { ChainId } from '@masknet/web3-shared-evm' -import { ETHER, WNATIVE, WBTCe, DAIe, USDTe, USDCe, WNATIVE_ONLY } from './trader' +import { WNATIVE, WBTC, DAI, USDT, USDC, WNATIVE_ONLY } from './trader' import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' /** @@ -10,5 +10,5 @@ export const TRADERJOE_CUSTOM_BASES: ERC20TokenCustomizedBase = {} export const TRADERJOE_BASE_AGAINST_TOKENS: ERC20AgainstToken = { ...WNATIVE_ONLY, - [ChainId.Avalanche]: [WNATIVE, DAIe, USDTe, USDCe, ETHER, WBTCe].map((x) => x[ChainId.Avalanche]), + [ChainId.Avalanche]: [WNATIVE, DAI, USDT, USDC, WBTC].map((x) => x[ChainId.Avalanche]), } diff --git a/packages/web3-constants/evm/explorer.json b/packages/web3-constants/evm/explorer.json index 8f582e14dd97..7e3372bc71f4 100644 --- a/packages/web3-constants/evm/explorer.json +++ b/packages/web3-constants/evm/explorer.json @@ -12,10 +12,10 @@ "Arbitrum": ["BE8VU1P9FUKRT15FBHKQMU84829VITWWF2"], "Arbitrum_Rinkeby": [], "xDai": [], - "Celo": [], - "Fantom": ["AST4WWPNEYDURUXG2GH32JZMYWEFDP999S"], "Avalanche": [], - "Avalanche_Fuji": [] + "Avalanche_Fuji": [], + "Celo": [], + "Fantom": ["AST4WWPNEYDURUXG2GH32JZMYWEFDP999S"] }, "EXPLORER_API": { "Mainnet": "https://api.etherscan.io/api", @@ -30,9 +30,9 @@ "Arbitrum": "https://api.arbiscan.io/api", "Arbitrum_Rinkeby": "", "xDai": "", - "Celo": "", - "Fantom": "https://api.ftmscan.com/api", "Avalanche": "https://api.snowtrace.io/api", - "Avalanche_Fuji": "https://api-testnet.snowtrace.io/api" + "Avalanche_Fuji": "https://api-testnet.snowtrace.io/api", + "Celo": "", + "Fantom": "https://api.ftmscan.com/api" } } diff --git a/packages/web3-constants/evm/openocean.json b/packages/web3-constants/evm/openocean.json index fc2575110fc0..bf004352c88c 100644 --- a/packages/web3-constants/evm/openocean.json +++ b/packages/web3-constants/evm/openocean.json @@ -12,6 +12,8 @@ "Arbitrum": "0x934B510D4C9103E6a87AEf13b816fb080286D649", "Arbitrum_Rinkeby": "", "xDai": "0x934B510D4C9103E6a87AEf13b816fb080286D649", + "Avalanche": "0x934B510D4C9103E6a87AEf13b816fb080286D649", + "Avalanche_Fuji": "0x934B510D4C9103E6a87AEf13b816fb080286D649", "Celo": "0x934B510D4C9103E6a87AEf13b816fb080286D649", "Fantom": "0x934B510D4C9103E6a87AEf13b816fb080286D649" } diff --git a/packages/web3-constants/evm/token.json b/packages/web3-constants/evm/token.json index 2d87c89da5b3..d41af5592d8f 100644 --- a/packages/web3-constants/evm/token.json +++ b/packages/web3-constants/evm/token.json @@ -84,7 +84,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "0xdd96B45877d0E8361a4DDb732da741e97f3191Ff", - "Avalanche": "", + "Avalanche": "0x19860ccb0a68fd4213ab9d8266f7bbf05a8dde98", "Avalanche_Fuji": "", "Celo": "", "Fantom": "" @@ -102,7 +102,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", + "Avalanche": "0xc3048e19e76cb9a3aa9d77d8c03c29fc906e2437", "Avalanche_Fuji": "", "Celo": "", "Fantom": "" diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index e41d094ab292..0ae4dfe517b1 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -660,7 +660,7 @@ "Arbitrum": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", "Arbitrum_Rinkeby": "", "xDai": "0x0000000000000000000000000000000000000000", - "Avalanche": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + "Avalanche": "", "Avalanche_Fuji": "", "Celo": "", "Fantom": "" From 4d259f35557c8856e003c56fe145d5f890fe33a2 Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 17 Jan 2022 07:39:17 +0100 Subject: [PATCH 24/37] chore(avalanche): fixed coingecko api and add fixed ITO contracts --- packages/web3-constants/evm/coingecko.json | 2 +- packages/web3-constants/evm/ito.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/web3-constants/evm/coingecko.json b/packages/web3-constants/evm/coingecko.json index a198fed87028..161d121797e2 100644 --- a/packages/web3-constants/evm/coingecko.json +++ b/packages/web3-constants/evm/coingecko.json @@ -30,7 +30,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "xdai", - "Avalanche": "binance-peg-avalanche", + "Avalanche": "avalanche-2", "Avalanche_Fuji": "", "Celo": "celo", "Fantom": "fantom" diff --git a/packages/web3-constants/evm/ito.json b/packages/web3-constants/evm/ito.json index 423d9f4ebf67..06f1f521e949 100644 --- a/packages/web3-constants/evm/ito.json +++ b/packages/web3-constants/evm/ito.json @@ -66,7 +66,7 @@ "Arbitrum": 102022, "Arbitrum_Rinkeby": 708696, "xDai": 17865755, - "Avalanche": 9469997, + "Avalanche": 8289892, "Avalanche_Fuji": 4751103, "Celo": 0, "Fantom": 0 @@ -102,7 +102,7 @@ "Arbitrum": "0x913975af2Bb8a6Be4100D7dc5e9765B77F6A5d6c", "Arbitrum_Rinkeby": "0xEbd753E66649C824241E63894301BA8Db5DBF5Bb", "xDai": "0x71834a3FDeA3E70F14a93ED85c6be70925D0CAd9", - "Avalanche": "", + "Avalanche": "0x54a0A221C25Fc0a347EC929cFC5db0be17fA2a2B", "Avalanche_Fuji": "", "Celo": "", "Fantom": "" From c0206441c4e2c2291a34b208dc923683745d7a28 Mon Sep 17 00:00:00 2001 From: codingsh Date: Mon, 17 Jan 2022 14:33:10 +0100 Subject: [PATCH 25/37] chore(avalanche): update maskbook contracts --- packages/web3-constants/evm/ito.json | 4 ++-- packages/web3-constants/evm/mask-box.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/web3-constants/evm/ito.json b/packages/web3-constants/evm/ito.json index 863633325383..abf4305b8404 100644 --- a/packages/web3-constants/evm/ito.json +++ b/packages/web3-constants/evm/ito.json @@ -52,7 +52,7 @@ "Arbitrum": "0x71834a3FDeA3E70F14a93ED85c6be70925D0CAd9", "Arbitrum_Rinkeby": "0x9b3649eC8C9f68484acC76D437B145a4e58Bf2A2", "xDai": "0x913975af2Bb8a6Be4100D7dc5e9765B77F6A5d6c", - "Avalanche": "0x452F3023f0E163056bEFFFcA719B12e0dD7Af451", + "Avalanche": "0x02Ea0720254F7fa4eca7d09A1b9C783F1020EbEF", "Avalanche_Fuji": "0xf5056B96ab242C566002852d0b98ce0BcDf1af51", "Celo": "0xaA5bfd7355637eA7405CB194a55303e821c4c569", "Fantom": "", @@ -92,7 +92,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", + "Avalanche": "0x02Ea0720254F7fa4eca7d09A1b9C783F1020EbEF", "Avalanche_Fuji": "", "Celo": "", "Fantom": "", diff --git a/packages/web3-constants/evm/mask-box.json b/packages/web3-constants/evm/mask-box.json index bc0b76685540..b06a9d7d38dc 100644 --- a/packages/web3-constants/evm/mask-box.json +++ b/packages/web3-constants/evm/mask-box.json @@ -12,7 +12,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "0x0477524B070F73BE7f84f3326d104899e1beBb12", + "Avalanche": "0x05ee315E407C21a594f807D61d6CC11306D1F149", "Avalanche_Fuji": "0xae5c53294003f72b27cef476680979453193673d", "Celo": "", "Fantom": "", @@ -32,7 +32,7 @@ "Arbitrum": 0, "Arbitrum_Rinkeby": 0, "xDai": 0, - "Avalanche": 9212180, + "Avalanche": 8351767, "Avalanche_Fuji": 4752026, "Celo": 0, "Fantom": 0, @@ -52,7 +52,7 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", + "Avalanche": "0x812463356F58fc8194645A1838ee6C52D8ca2D26", "Avalanche_Fuji": "", "Celo": "", "Fantom": "", From 3c041074fe189d4c53a6e1867e1237e49a8bf2c2 Mon Sep 17 00:00:00 2001 From: unclebill Date: Tue, 18 Jan 2022 12:51:53 +0800 Subject: [PATCH 26/37] fix: fix swap --- .../mask/src/plugins/Trader/constants/pangolindex.ts | 4 ++-- packages/mask/src/plugins/Trader/constants/trader.ts | 4 ++++ .../mask/src/plugins/Trader/constants/traderjoe.ts | 4 ++-- packages/mask/src/plugins/Trader/pipes.ts | 2 +- .../mask/src/plugins/Trader/trader/0x/useTrade.ts | 3 ++- .../src/plugins/Trader/trader/useTradeContext.ts | 1 - packages/web3-constants/evm/ethereum.json | 2 +- packages/web3-constants/evm/trader.json | 12 ++++++------ packages/web3-shared/evm/assets/chains.json | 2 +- 9 files changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/mask/src/plugins/Trader/constants/pangolindex.ts b/packages/mask/src/plugins/Trader/constants/pangolindex.ts index e8a7c2b769f5..009fd8235f6f 100644 --- a/packages/mask/src/plugins/Trader/constants/pangolindex.ts +++ b/packages/mask/src/plugins/Trader/constants/pangolindex.ts @@ -1,5 +1,5 @@ import { ChainId } from '@masknet/web3-shared-evm' -import { ETHER, WNATIVE, WBTC, DAI, PNG, USDT, USDC, WNATIVE_ONLY } from './trader' +import { DAIe, ETHER, PNG, USDCe, USDTe, WBTCe, WNATIVE, WNATIVE_ONLY } from './trader' import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' /** @@ -10,5 +10,5 @@ export const PANGOLIN_CUSTOM_BASES: ERC20TokenCustomizedBase = {} export const PANGOLIN_BASE_AGAINST_TOKENS: ERC20AgainstToken = { ...WNATIVE_ONLY, - [ChainId.Avalanche]: [WNATIVE, DAI, PNG, USDT, USDC, ETHER, WBTC, PNG].map((x) => x[ChainId.Avalanche]), + [ChainId.Avalanche]: [WNATIVE, DAIe, PNG, USDTe, USDCe, ETHER, WBTCe].map((x) => x[ChainId.Avalanche]), } diff --git a/packages/mask/src/plugins/Trader/constants/trader.ts b/packages/mask/src/plugins/Trader/constants/trader.ts index e258527d849f..6f8cdc2d5594 100644 --- a/packages/mask/src/plugins/Trader/constants/trader.ts +++ b/packages/mask/src/plugins/Trader/constants/trader.ts @@ -4,7 +4,9 @@ import BigNumber from 'bignumber.js' import type { ERC20AgainstToken } from './types' export const USDC = createERC20Tokens('USDC_ADDRESS', 'USD Coin', 'USDC', 6) +export const USDCe = createERC20Tokens('USDC_ADDRESS', 'USD Coin', 'USDCe', 6) export const USDT = createERC20Tokens('USDT_ADDRESS', 'Tether USD', 'USDT', 6) +export const USDTe = createERC20Tokens('USDT_ADDRESS', 'Tether USD', 'USDT.e', 6) export const fUSDT = createERC20Tokens('fUSDT_ADDRESS', 'Frapped USDT', 'fUSDT', 6) export const HUSD = createERC20Tokens('HUSD_ADDRESS', 'Huobi USD', 'HUSD', 6) export const BUSD = createERC20Tokens('BUSD_ADDRESS', 'Huobi USD', 'BUSD', 6) @@ -16,6 +18,7 @@ export const MSKC = createERC20Tokens('MSKC_ADDRESS', 'Mask C', 'MSKC', 18) export const MSKD = createERC20Tokens('MSKD_ADDRESS', 'Mask D', 'MSKD', 18) export const MSKE = createERC20Tokens('MSKE_ADDRESS', 'Mask E', 'MSKE', 18) export const DAI = createERC20Tokens('DAI_ADDRESS', 'Dai Stablecoin', 'DAI', 18) +export const DAIe = createERC20Tokens('DAI_ADDRESS', 'Dai Stablecoin', 'DAI.e', 18) export const AMPL = createERC20Tokens('AMPL_ADDRESS', 'Ampleforth', 'AMPL', 18) export const OKB = createERC20Tokens('OKB_ADDRESS', 'Ampleforth', 'OKB', 18) export const UST = createERC20Tokens('UST_ADDRESS', 'Wrapped UST Token', 'UST', 18) @@ -31,6 +34,7 @@ export const ETHER = createERC20Tokens('ETHER_ADDRESS', 'Ether', 'ETH', 18) export const QUICK = createERC20Tokens('QUICK_ADDRESS', 'Quickswap', 'QUICK', 18) export const WANNA = createERC20Tokens('WANNA_ADDRESS', 'Wannaswap', 'WANNA', 18) export const WBTC = createERC20Tokens('WBTC_ADDRESS', 'Wrapped Bitcoin', 'WBTC', 18) +export const WBTCe = createERC20Tokens('WBTC_ADDRESS', 'Wrapped Bitcoin', 'WBTCe', 18) export const IGG = createERC20Tokens('IGG_ADDRESS', 'IG Gold', 'IGG', 18) export const OM = createERC20Tokens('OM_ADDRESS', 'OM Token', 'OM', 18) export const SUSHI = createERC20Tokens('SUSHI_ADDRESS', 'SushiToken', 'SUSHI', 18) diff --git a/packages/mask/src/plugins/Trader/constants/traderjoe.ts b/packages/mask/src/plugins/Trader/constants/traderjoe.ts index f147c7573e79..65e45a755bca 100644 --- a/packages/mask/src/plugins/Trader/constants/traderjoe.ts +++ b/packages/mask/src/plugins/Trader/constants/traderjoe.ts @@ -1,5 +1,5 @@ import { ChainId } from '@masknet/web3-shared-evm' -import { WNATIVE, WBTC, DAI, USDT, USDC, WNATIVE_ONLY } from './trader' +import { DAIe, USDCe, USDTe, WBTCe, WNATIVE, WNATIVE_ONLY } from './trader' import type { ERC20AgainstToken, ERC20TokenCustomizedBase } from './types' /** @@ -10,5 +10,5 @@ export const TRADERJOE_CUSTOM_BASES: ERC20TokenCustomizedBase = {} export const TRADERJOE_BASE_AGAINST_TOKENS: ERC20AgainstToken = { ...WNATIVE_ONLY, - [ChainId.Avalanche]: [WNATIVE, DAI, USDT, USDC, WBTC].map((x) => x[ChainId.Avalanche]), + [ChainId.Avalanche]: [WNATIVE, DAIe, USDTe, USDCe, WBTCe].map((x) => x[ChainId.Avalanche]), } diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index 6e9fce31c5c1..e45fdd3ce488 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -90,7 +90,7 @@ export function resolveTradeProviderLink(tradeProvider: TradeProvider, networkTy case NetworkType.Fantom: return 'https://fantom.api.0x.org/' case NetworkType.Avalanche: - return 'https://fantom.api.0x.org/' + return 'https://avalanche.api.0x.org/' case NetworkType.Aurora: return 'https://aurora.api.0x.org/' default: diff --git a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts index ff7e8a4b2f5d..8e31a4deb946 100644 --- a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts +++ b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts @@ -30,9 +30,10 @@ export function getNativeTokenLabel(networkType: NetworkType) { case NetworkType.xDai: case NetworkType.Celo: case NetworkType.Fantom: - case NetworkType.Avalanche: case NetworkType.Aurora: return NATIVE_TOKEN_ADDRESS + case NetworkType.Avalanche: + return 'AVAX' default: safeUnreachable(networkType) return '' diff --git a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts index 076bfee036c9..3db649333430 100644 --- a/packages/mask/src/plugins/Trader/trader/useTradeContext.ts +++ b/packages/mask/src/plugins/Trader/trader/useTradeContext.ts @@ -29,7 +29,6 @@ export const TradeContext = createContext(null) export function useTradeContext(tradeProvider: TradeProvider) { const { targetChainId: chainId } = TargetChainIdContext.useContainer() - const DEX_TRADE = getTraderConstants(chainId) return useMemo(() => { const DEX_TRADE = getTraderConstants(chainId) switch (tradeProvider) { diff --git a/packages/web3-constants/evm/ethereum.json b/packages/web3-constants/evm/ethereum.json index 8b9589a364d7..f4ca94106031 100644 --- a/packages/web3-constants/evm/ethereum.json +++ b/packages/web3-constants/evm/ethereum.json @@ -32,7 +32,7 @@ "Arbitrum": "0xadF885960B47eA2CD9B55E6DAc6B42b7Cb2806dB", "Arbitrum_Rinkeby": "0xa501c031958F579dB7676fF1CE78AD305794d579", "xDai": "0xAb7B1bE4233A04e5C43a810E75657ECED8E5463B", - "Avalanche": "0x98e2060F672FD1656a07bc12D7253b5e41bF3876", + "Avalanche": "0x6cc1b1058F9153358278C35E0b2D382f1585854B", "Avalanche_Fuji": "", "Celo": "0x072453AdEC16cFC7FB6Af1517c3f25407180cccC", "Fantom": "0x913975af2Bb8a6Be4100D7dc5e9765B77F6A5d6c", diff --git a/packages/web3-constants/evm/trader.json b/packages/web3-constants/evm/trader.json index a6dcff4cea52..b656354c3839 100644 --- a/packages/web3-constants/evm/trader.json +++ b/packages/web3-constants/evm/trader.json @@ -12,8 +12,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", - "Avalanche_Fuji": "", + "Avalanche": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", + "Avalanche_Fuji": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", "Celo": "", "Fantom": "", "Aurora": "", @@ -32,8 +32,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", - "Avalanche_Fuji": "", + "Avalanche": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", + "Avalanche_Fuji": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", "Celo": "", "Fantom": "", "Aurora": "", @@ -72,8 +72,8 @@ "Arbitrum": "", "Arbitrum_Rinkeby": "", "xDai": "", - "Avalanche": "", - "Avalanche_Fuji": "", + "Avalanche": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "Avalanche_Fuji": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", "Celo": "", "Fantom": "", "Aurora": "", diff --git a/packages/web3-shared/evm/assets/chains.json b/packages/web3-shared/evm/assets/chains.json index 00cb0e8ebb35..7b723cb9b6c5 100644 --- a/packages/web3-shared/evm/assets/chains.json +++ b/packages/web3-shared/evm/assets/chains.json @@ -2105,7 +2105,7 @@ "decimals": 18, "logoURI": "https://raw.githubusercontent.com/sushiswap/icons/master/network/avalanche.jpg" }, - "infoURL": "https://www.avax.network/", + "infoURL": "https://snowtrace.io/", "shortName": "AVAX", "chainId": 43114, "networkId": 43114, From 714d102ef67102e64fadf4ec742f43b864bebd27 Mon Sep 17 00:00:00 2001 From: unclebill Date: Wed, 19 Jan 2022 13:57:05 +0800 Subject: [PATCH 27/37] fix: wrong config for avalanche --- packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx | 1 + packages/web3-shared/evm/utils/chainDetailed.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx b/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx index e148690d4cc0..0633067ffc60 100644 --- a/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx +++ b/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx @@ -220,6 +220,7 @@ const SUPPORTED_CHAIN_ID_LIST = [ ChainId.Arbitrum, ChainId.xDai, ChainId.Fantom, + ChainId.Avalanche, ] export function ClaimAllDialog(props: ClaimAllDialogProps) { diff --git a/packages/web3-shared/evm/utils/chainDetailed.ts b/packages/web3-shared/evm/utils/chainDetailed.ts index b4c5dfea5996..1cceb01fa697 100644 --- a/packages/web3-shared/evm/utils/chainDetailed.ts +++ b/packages/web3-shared/evm/utils/chainDetailed.ts @@ -99,6 +99,7 @@ export const getChainIdFromNetworkType = createLookupTableResolver = { [NetworkType.Ethereum]: 'ETH', [NetworkType.Binance]: 'BSC', @@ -108,7 +109,7 @@ const chainNameMap: Record = { [NetworkType.Celo]: 'CELO', [NetworkType.Fantom]: 'FTM', [NetworkType.Aurora]: 'Aurora', - [NetworkType.Avalanche]: 'Avalanche', + [NetworkType.Avalanche]: 'AVAX', [NetworkType.Boba]: 'Boba', [NetworkType.Fuse]: 'Fuse', [NetworkType.Metis]: 'Metis', From 1c1c8c03baf6a2ca8f987239863fcc1586e1f58e Mon Sep 17 00:00:00 2001 From: unclebill Date: Wed, 19 Jan 2022 14:23:39 +0800 Subject: [PATCH 28/37] fix: sort avalanche chains --- packages/web3-constants/evm/debank.json | 1 - packages/web3-shared/evm/assets/chains.json | 34 ++++++++++----------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/web3-constants/evm/debank.json b/packages/web3-constants/evm/debank.json index 4f987fea2d76..b06600c43005 100644 --- a/packages/web3-constants/evm/debank.json +++ b/packages/web3-constants/evm/debank.json @@ -12,7 +12,6 @@ "Arbitrum": "arb", "Arbitrum_Rinkeby": "", "xDai": "xdai", - "Avalanche": "avax", "Avalanche_Fuji": "", "Celo": "celo", "Fantom": "ftm", diff --git a/packages/web3-shared/evm/assets/chains.json b/packages/web3-shared/evm/assets/chains.json index 7b723cb9b6c5..32262888076c 100644 --- a/packages/web3-shared/evm/assets/chains.json +++ b/packages/web3-shared/evm/assets/chains.json @@ -2075,23 +2075,6 @@ "chainId": 43110, "networkId": 43110 }, - { - "name": "Avalanche Fuji Testnet", - "chain": "AVAX", - "network": "testnet", - "rpc": ["https://api.avax-test.network/ext/bc/C/rpc"], - "faucets": ["https://faucet.avax-test.network/"], - "features": [], - "nativeCurrency": { - "name": "Avalanche", - "symbol": "AVAX", - "decimals": 18 - }, - "infoURL": "https://cchain.explorer.avax-test.network", - "shortName": "Fuji", - "chainId": 43113, - "networkId": 43113 - }, { "name": "Avalanche Mainnet", "chain": "AVAX", @@ -2120,6 +2103,23 @@ } ] }, + { + "name": "Avalanche Fuji Testnet", + "chain": "AVAX", + "network": "testnet", + "rpc": ["https://api.avax-test.network/ext/bc/C/rpc"], + "faucets": ["https://faucet.avax-test.network/"], + "features": [], + "nativeCurrency": { + "name": "Avalanche", + "symbol": "AVAX", + "decimals": 18 + }, + "infoURL": "https://cchain.explorer.avax-test.network", + "shortName": "Fuji", + "chainId": 43113, + "networkId": 43113 + }, { "name": "Celo Alfajores Testnet", "chainId": 44787, From d6da432e20954b2520484d7ccd2717840bd2a7a3 Mon Sep 17 00:00:00 2001 From: codingsh Date: Wed, 19 Jan 2022 08:09:45 +0100 Subject: [PATCH 29/37] chore(avalanche): improve ito contracts and subgraphs --- packages/web3-constants/evm/ito.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/web3-constants/evm/ito.json b/packages/web3-constants/evm/ito.json index abf4305b8404..74b33df77961 100644 --- a/packages/web3-constants/evm/ito.json +++ b/packages/web3-constants/evm/ito.json @@ -55,7 +55,7 @@ "Avalanche": "0x02Ea0720254F7fa4eca7d09A1b9C783F1020EbEF", "Avalanche_Fuji": "0xf5056B96ab242C566002852d0b98ce0BcDf1af51", "Celo": "0xaA5bfd7355637eA7405CB194a55303e821c4c569", - "Fantom": "", + "Fantom": "0x981be454a930479d92C91a0092D204b64845A5D6", "Aurora": "0x5de932BD252DD79231C9eDB5F2e30D488B785109", "Aurora_Testnet": "0xdcA6F476EebCDE8FE8b072e3fC80dBC28dC209b3" }, @@ -75,8 +75,8 @@ "Avalanche": 8289892, "Avalanche_Fuji": 4751103, "Celo": 10278776, - "Fantom": "", - "Aurora": 0, + "Fantom": 25071597, + "Aurora": 57350598, "Aurora_Testnet": 77919102 }, "DEFAULT_QUALIFICATION_ADDRESS": { @@ -114,9 +114,9 @@ "xDai": "0x71834a3FDeA3E70F14a93ED85c6be70925D0CAd9", "Avalanche": "0x54a0A221C25Fc0a347EC929cFC5db0be17fA2a2B", "Avalanche_Fuji": "", - "Celo": "", - "Fantom": "", - "Aurora": "", + "Celo": "0x2cB220F925E603A04BEE05F210252120deBA29d7", + "Fantom": "0x83D6b366f21e413f214EB077D5378478e71a5eD2", + "Aurora": "0x578a7Fee5f0D8CEc7d00578Bf37374C5b95C4b98", "Aurora_Testnet": "" }, "SUBGRAPH_URL": { @@ -134,9 +134,9 @@ "xDai": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-xdai", "Avalanche": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-avalanche", "Avalanche_Fuji": "", - "Celo": "", - "Fantom": "", - "Aurora": "", + "Celo": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-celo", + "Fantom": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-fantom", + "Aurora": "https://api.thegraph.com/subgraphs/name/dimensiondev/mask-ito-aurora", "Aurora_Testnet": "" } } From 44d98cab760651642f5c3d8c41438cec702efd43 Mon Sep 17 00:00:00 2001 From: codingsh Date: Fri, 21 Jan 2022 09:59:43 +0100 Subject: [PATCH 30/37] chore(avalanche): use trustwallet fork repository --- .../src/plugins/Trader/apis/trending/index.ts | 2 +- .../src/plugins/Trader/apis/uniswap/index.ts | 2 +- .../Trader/trader/useAllTradeComputed.ts | 4 ++-- .../evm/token-asset-base-url.json | 20 +++++++++---------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/mask/src/plugins/Trader/apis/trending/index.ts b/packages/mask/src/plugins/Trader/apis/trending/index.ts index 91bb038c4761..d52bec2cb5b7 100644 --- a/packages/mask/src/plugins/Trader/apis/trending/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trending/index.ts @@ -339,7 +339,7 @@ async function getCoinTrending(id: string, currency: Currency, dataProvider: Dat decimals: Number(token?.decimals || '0'), is_mirrored: isMirroredKeyword(token?.symbol || ''), blockchain_urls: [`https://info.uniswap.org/token/${id}`, `https://etherscan.io/address/${id}`], - image_url: `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/${id}/logo.png`, + image_url: `https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum/assets/${id}/logo.png`, platform_url: `https://info.uniswap.org/token/${id}`, contract_address: id, }, diff --git a/packages/mask/src/plugins/Trader/apis/uniswap/index.ts b/packages/mask/src/plugins/Trader/apis/uniswap/index.ts index 4a888ce607fe..85b7e50d3775 100644 --- a/packages/mask/src/plugins/Trader/apis/uniswap/index.ts +++ b/packages/mask/src/plugins/Trader/apis/uniswap/index.ts @@ -286,7 +286,7 @@ export async function getCoinInfo(id: string) { .map(([pairAddress, pairData]) => { return { logo_url: - 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984/logo.png', + 'https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum/assets/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984/logo.png', trade_url: `https://info.uniswap.org/pair/${pairAddress}`, market_name: 'Uniswap (V2)', base_name: pairData.token0.symbol, diff --git a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts index 6f1e4f8443cc..3a849211b895 100644 --- a/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts +++ b/packages/mask/src/plugins/Trader/trader/useAllTradeComputed.ts @@ -200,7 +200,7 @@ export function useAllTradeComputed( tradeProviders.some((x) => x === TradeProvider.PANGOLIN) ? outputToken : undefined, ) const pangolindex = useUniswapTradeComputed(pangolindex_.value, inputToken, outputToken) - const pangolindexEstimateGas = useUniswapTradeGasLimit(pangolindex, TradeProvider.PANGOLIN) + const pangolinEstimateGas = useUniswapTradeGasLimit(pangolindex, TradeProvider.PANGOLIN) // openocean const openocean_ = useOpenOceanTrade(TradeStrategy.ExactIn, inputAmount_, '0', inputToken, outputToken) @@ -248,7 +248,7 @@ export function useAllTradeComputed( { provider: TradeProvider.DODO, ...dodo_, value: dodo, gas: dodoSwapEstimateGas }, { provider: TradeProvider.BANCOR, ...bancor_, value: bancor, gas: bancorSwapEstimateGas }, { provider: TradeProvider.TRADERJOE, ...traderJoe_, value: traderJoe, gas: traderJoeEstimateGas }, - { provider: TradeProvider.PANGOLIN, ...pangolindex_, value: pangolindex, gas: pangolindexEstimateGas }, + { provider: TradeProvider.PANGOLIN, ...pangolindex_, value: pangolindex, gas: pangolinEstimateGas }, { provider: TradeProvider.OPENOCEAN, ...openocean_, value: openocean, gas: openoceanSwapEstimateGas }, { provider: TradeProvider.WANNASWAP, ...wannaswap_, value: wannaswap, gas: wannaSwapEstimateGas }, { provider: TradeProvider.TRISOLARIS, ...trisolaris_, value: trisolaris, gas: trisolarisEstimateGas }, diff --git a/packages/web3-constants/evm/token-asset-base-url.json b/packages/web3-constants/evm/token-asset-base-url.json index 88d02b58ded6..592b6dd1c11c 100644 --- a/packages/web3-constants/evm/token-asset-base-url.json +++ b/packages/web3-constants/evm/token-asset-base-url.json @@ -1,46 +1,46 @@ { "TOKEN_ASSET_BASE_URI": { "Mainnet": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" ], "Ropsten": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" ], "Rinkeby": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" ], "Kovan": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" ], "Gorli": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" ], "BSC": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/smartchain", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/smartchain" ], "BSCT": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/smartchain", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/smartchain" ], "Matic": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/polygon", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/polygon" ], "Mumbai": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/polygon", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/polygon" ], "Arbitrum": [], "Arbitrum_Rinkeby": [], "xDai": [], "Avalanche": [ - "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/avalanchec", + "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/avalanchec", "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/avalanchec" ], "Avalanche_Fuji": [], From b95185edb4deada17702ecbd24e528a3672d8fd5 Mon Sep 17 00:00:00 2001 From: codingsh Date: Fri, 21 Jan 2022 16:13:01 +0100 Subject: [PATCH 31/37] chore(avalanche): add avax on deBank json and fixed swap --- packages/mask/src/components/shared/ApplicationBoard.tsx | 1 + packages/mask/src/plugins/Trader/apis/trader/index.ts | 1 - packages/mask/src/plugins/Trader/constants/0x.ts | 1 - packages/mask/src/plugins/Trader/constants/dodo.ts | 1 - packages/mask/src/plugins/Trader/constants/openocean.ts | 1 - packages/mask/src/plugins/Trader/pipes.ts | 1 - packages/mask/src/plugins/Trader/services.ts | 1 - packages/mask/src/plugins/Trader/trader/0x/useTrade.ts | 3 +-- .../src/plugins/Trader/trending/useCurrentTradeProvider.ts | 1 - packages/web3-constants/evm/debank.json | 2 +- 10 files changed, 3 insertions(+), 10 deletions(-) diff --git a/packages/mask/src/components/shared/ApplicationBoard.tsx b/packages/mask/src/components/shared/ApplicationBoard.tsx index d0797a53a301..c3aa2870db30 100644 --- a/packages/mask/src/components/shared/ApplicationBoard.tsx +++ b/packages/mask/src/components/shared/ApplicationBoard.tsx @@ -93,6 +93,7 @@ const SUPPORTED_CHAIN_ID_LIST = [ ChainId.Celo, ChainId.Fantom, ChainId.Aurora, + ChainId.Avalanche, ] export interface MaskAppEntry { diff --git a/packages/mask/src/plugins/Trader/apis/trader/index.ts b/packages/mask/src/plugins/Trader/apis/trader/index.ts index f445ca652822..9578f390370d 100644 --- a/packages/mask/src/plugins/Trader/apis/trader/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trader/index.ts @@ -53,7 +53,6 @@ export async function getAvailableTraderProviders(chainId: ChainId) { case NetworkType.Boba: case NetworkType.Fuse: case NetworkType.Metis: - case NetworkType.Avalanche: case NetworkType.Optimistic: console.error('To be implement network: ', networkType) return [] diff --git a/packages/mask/src/plugins/Trader/constants/0x.ts b/packages/mask/src/plugins/Trader/constants/0x.ts index 3c1d70cfdb09..06be52d5c29f 100644 --- a/packages/mask/src/plugins/Trader/constants/0x.ts +++ b/packages/mask/src/plugins/Trader/constants/0x.ts @@ -13,7 +13,6 @@ export const ZRX_BASE_URL: Record = { [NetworkType.Boba]: '', [NetworkType.Fuse]: '', [NetworkType.Metis]: '', - [NetworkType.Avalanche]: '', [NetworkType.Optimistic]: '', } diff --git a/packages/mask/src/plugins/Trader/constants/dodo.ts b/packages/mask/src/plugins/Trader/constants/dodo.ts index 89b4ed70785e..7996fe13525e 100644 --- a/packages/mask/src/plugins/Trader/constants/dodo.ts +++ b/packages/mask/src/plugins/Trader/constants/dodo.ts @@ -15,6 +15,5 @@ export const networkNames: Record = { [NetworkType.Boba]: '', [NetworkType.Fuse]: '', [NetworkType.Metis]: '', - [NetworkType.Avalanche]: '', [NetworkType.Optimistic]: '', } diff --git a/packages/mask/src/plugins/Trader/constants/openocean.ts b/packages/mask/src/plugins/Trader/constants/openocean.ts index bd8889e3b0ba..862e158999b1 100644 --- a/packages/mask/src/plugins/Trader/constants/openocean.ts +++ b/packages/mask/src/plugins/Trader/constants/openocean.ts @@ -15,6 +15,5 @@ export const networkNames: Record = { [NetworkType.Boba]: '', [NetworkType.Fuse]: '', [NetworkType.Metis]: '', - [NetworkType.Avalanche]: '', [NetworkType.Optimistic]: '', } diff --git a/packages/mask/src/plugins/Trader/pipes.ts b/packages/mask/src/plugins/Trader/pipes.ts index 9d51c73ed975..ea9434a4858a 100644 --- a/packages/mask/src/plugins/Trader/pipes.ts +++ b/packages/mask/src/plugins/Trader/pipes.ts @@ -175,7 +175,6 @@ export function resolveTradePairLink(tradeProvider: TradeProvider, address: stri case NetworkType.Boba: case NetworkType.Fuse: case NetworkType.Metis: - case NetworkType.Avalanche: case NetworkType.Optimistic: console.error('To be implement network: ', networkType) return '' diff --git a/packages/mask/src/plugins/Trader/services.ts b/packages/mask/src/plugins/Trader/services.ts index ac1da344c04c..377f1a60fc32 100644 --- a/packages/mask/src/plugins/Trader/services.ts +++ b/packages/mask/src/plugins/Trader/services.ts @@ -111,7 +111,6 @@ currentTradeProviderSettings.addListener((tradeProvider: TradeProvider) => { case NetworkType.Boba: case NetworkType.Fuse: case NetworkType.Metis: - case NetworkType.Avalanche: case NetworkType.Optimistic: throw new Error(`To be implement network: ${networkType}`) default: diff --git a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts index 4992c55be81d..df46dbc60b9b 100644 --- a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts +++ b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts @@ -35,10 +35,9 @@ export function getNativeTokenLabel(networkType: NetworkType) { case NetworkType.Fuse: case NetworkType.Metis: case NetworkType.Avalanche: + return 'AVAX' case NetworkType.Optimistic: return NATIVE_TOKEN_ADDRESS - case NetworkType.Avalanche: - return 'AVAX' default: safeUnreachable(networkType) return '' diff --git a/packages/mask/src/plugins/Trader/trending/useCurrentTradeProvider.ts b/packages/mask/src/plugins/Trader/trending/useCurrentTradeProvider.ts index 38a07124a145..c05b5209bb59 100644 --- a/packages/mask/src/plugins/Trader/trending/useCurrentTradeProvider.ts +++ b/packages/mask/src/plugins/Trader/trending/useCurrentTradeProvider.ts @@ -50,7 +50,6 @@ export function useCurrentTradeProvider(chainId?: ChainId) { case NetworkType.Boba: case NetworkType.Fuse: case NetworkType.Metis: - case NetworkType.Avalanche: case NetworkType.Optimistic: throw new Error(`To be implement network: ${networkType}`) default: diff --git a/packages/web3-constants/evm/debank.json b/packages/web3-constants/evm/debank.json index 5fddf9642c28..070df0c683df 100644 --- a/packages/web3-constants/evm/debank.json +++ b/packages/web3-constants/evm/debank.json @@ -12,7 +12,7 @@ "Arbitrum": "arb", "Arbitrum_Rinkeby": "", "xDai": "xdai", - "Avalanche": "", + "Avalanche": "avax", "Avalanche_Fuji": "", "Celo": "celo", "Fantom": "ftm", From 0cd1ba5fdc1ab07ecaca44f2d0070829e4fa0054 Mon Sep 17 00:00:00 2001 From: codingsh Date: Sun, 23 Jan 2022 00:22:09 +0100 Subject: [PATCH 32/37] chore(dex): enable traderJoe pangolindex and fixed ClaimAllDialog --- cspell.json | 1 + .../plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx | 4 +- .../src/plugins/Trader/apis/trader/index.ts | 2 +- .../trader/uniswap/useTradeParameters.ts | 41 +++++++++- packages/web3-contracts/abis/RouterV2.json | 82 +++++++++++++++++++ .../CryptoArtAIArtistAcceptingBidsV2.d.ts | 2 +- .../types/CryptoArtAICANFTMarket.d.ts | 2 +- .../CryptoArtAIKnownOriginDigitalAssetV2.d.ts | 2 +- packages/web3-contracts/types/ERC20.d.ts | 6 +- packages/web3-contracts/types/RouterV2.d.ts | 47 +++++++++++ packages/web3-contracts/types/types.d.ts | 2 - 11 files changed, 177 insertions(+), 14 deletions(-) diff --git a/cspell.json b/cspell.json index a56285529f03..f3a5d389c622 100644 --- a/cspell.json +++ b/cspell.json @@ -254,6 +254,7 @@ "walletconnect", "WANNASWAP", "wault", + "WAVAX", "webextension", "webm", "withdrawed", diff --git a/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx b/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx index 6c6dbdf7dd04..bc28e89e1cd0 100644 --- a/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx +++ b/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx @@ -333,7 +333,7 @@ export function ClaimAllDialog(props: ClaimAllDialogProps) {
{(showNftAirdrop || loadingAirdrop) && - chainId === ChainId.Matic && + SUPPORTED_CHAIN_ID_LIST.includes(chainId) && Flags.nft_airdrop_enabled ? ( ) : null} {(swappedTokens && swappedTokens.length > 0) || - (chainId === ChainId.Matic && Flags.nft_airdrop_enabled) ? ( + (SUPPORTED_CHAIN_ID_LIST.includes(chainId) && Flags.nft_airdrop_enabled) ? (
+ const swapCallParameters = ( + trade: SwapParams[0], + options: SwapParams[1], + tradeProvider?: TradeProvider, + ) => { + const parameters = Router.swapCallParameters(trade, options) + if ( + tradeProvider === TradeProvider.PANGOLIN || + (TradeProvider.TRADERJOE && tradeProvider !== TradeProvider.SUSHISWAP) + ) { + switch (parameters.methodName) { + case 'swapTokensForExactETH': + parameters.methodName = 'swapTokensForExactAVAX' + break + case 'swapExactTokensForETHSupportingFeeOnTransferTokens': + parameters.methodName = 'swapExactTokensForAVAXSupportingFeeOnTransferTokens' + break + case 'swapExactTokensForETH': + parameters.methodName = 'swapExactTokensForAVAX' + break + case 'swapExactETHForTokensSupportingFeeOnTransferTokens': + parameters.methodName = 'swapExactAVAXForTokensSupportingFeeOnTransferTokens' + break + case 'swapExactETHForTokens': + parameters.methodName = 'swapExactAVAXForTokens' + break + case 'WETH': + parameters.methodName = 'WAVAX' + break + } + } + return parameters + } const parameters = [ - Router.swapCallParameters(trade_, { + swapCallParameters(trade_, { feeOnTransfer: false, allowedSlippage: allowedSlippage_, recipient: account, @@ -49,7 +84,7 @@ export function useSwapParameters( ] if (trade_.tradeType === TradeType.EXACT_INPUT) parameters.push( - Router.swapCallParameters(trade_, { + swapCallParameters(trade_, { feeOnTransfer: true, allowedSlippage: allowedSlippage_, recipient: account, diff --git a/packages/web3-contracts/abis/RouterV2.json b/packages/web3-contracts/abis/RouterV2.json index f3e8a280e186..7f402e4061ab 100644 --- a/packages/web3-contracts/abis/RouterV2.json +++ b/packages/web3-contracts/abis/RouterV2.json @@ -336,5 +336,87 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapAVAXForExactTokens", + "outputs": [{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOutMin", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactAVAXForTokensSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { "internalType": "uint256", "name": "amountOutMin", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactTokensForAVAX", + "outputs": [{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { "internalType": "uint256", "name": "amountOutMin", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactTokensForAVAXSupportingFeeOnTransferTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "uint256", "name": "amountInMax", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapTokensForExactAVAX", + "outputs": [{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOutMin", "type": "uint256" }, + { "internalType": "address[]", "name": "path", "type": "address[]" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" } + ], + "name": "swapExactAVAXForTokens", + "outputs": [{ "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "WAVAX", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, { "stateMutability": "payable", "type": "receive" } ] diff --git a/packages/web3-contracts/types/CryptoArtAIArtistAcceptingBidsV2.d.ts b/packages/web3-contracts/types/CryptoArtAIArtistAcceptingBidsV2.d.ts index 2931ddecf45c..52de8d2219d5 100644 --- a/packages/web3-contracts/types/CryptoArtAIArtistAcceptingBidsV2.d.ts +++ b/packages/web3-contracts/types/CryptoArtAIArtistAcceptingBidsV2.d.ts @@ -15,7 +15,7 @@ import { BaseContract, } from './types' -export interface EventOptions { +interface EventOptions { filter?: object fromBlock?: BlockType topics?: string[] diff --git a/packages/web3-contracts/types/CryptoArtAICANFTMarket.d.ts b/packages/web3-contracts/types/CryptoArtAICANFTMarket.d.ts index 48d2101e718e..f49bedcf49ba 100644 --- a/packages/web3-contracts/types/CryptoArtAICANFTMarket.d.ts +++ b/packages/web3-contracts/types/CryptoArtAICANFTMarket.d.ts @@ -15,7 +15,7 @@ import { BaseContract, } from './types' -export interface EventOptions { +interface EventOptions { filter?: object fromBlock?: BlockType topics?: string[] diff --git a/packages/web3-contracts/types/CryptoArtAIKnownOriginDigitalAssetV2.d.ts b/packages/web3-contracts/types/CryptoArtAIKnownOriginDigitalAssetV2.d.ts index 14e1422c0fc4..fda8b13c894f 100644 --- a/packages/web3-contracts/types/CryptoArtAIKnownOriginDigitalAssetV2.d.ts +++ b/packages/web3-contracts/types/CryptoArtAIKnownOriginDigitalAssetV2.d.ts @@ -15,7 +15,7 @@ import { BaseContract, } from './types' -export interface EventOptions { +interface EventOptions { filter?: object fromBlock?: BlockType topics?: string[] diff --git a/packages/web3-contracts/types/ERC20.d.ts b/packages/web3-contracts/types/ERC20.d.ts index bb23716d2f0a..3583ea982e6f 100644 --- a/packages/web3-contracts/types/ERC20.d.ts +++ b/packages/web3-contracts/types/ERC20.d.ts @@ -44,11 +44,11 @@ export interface ERC20 extends BaseContract { methods: { name(): NonPayableTransactionObject - approve(_spender: string, _value: number | string | BN): NonPayableTransactionObject + approve(spender: string, value: number | string | BN): NonPayableTransactionObject totalSupply(): NonPayableTransactionObject - transferFrom(_from: string, _to: string, _value: number | string | BN): NonPayableTransactionObject + transferFrom(from: string, to: string, value: number | string | BN): NonPayableTransactionObject decimals(): NonPayableTransactionObject @@ -56,7 +56,7 @@ export interface ERC20 extends BaseContract { symbol(): NonPayableTransactionObject - transfer(_to: string, _value: number | string | BN): NonPayableTransactionObject + transfer(to: string, value: number | string | BN): NonPayableTransactionObject allowance(_owner: string, _spender: string): NonPayableTransactionObject } diff --git a/packages/web3-contracts/types/RouterV2.d.ts b/packages/web3-contracts/types/RouterV2.d.ts index 6438a1e1e63f..83f6cefa4e5a 100644 --- a/packages/web3-contracts/types/RouterV2.d.ts +++ b/packages/web3-contracts/types/RouterV2.d.ts @@ -241,6 +241,53 @@ export interface RouterV2 extends BaseContract { to: string, deadline: number | string | BN, ): NonPayableTransactionObject + + swapAVAXForExactTokens( + amountOut: number | string | BN, + path: string[], + to: string, + deadline: number | string | BN, + ): PayableTransactionObject + + swapExactAVAXForTokensSupportingFeeOnTransferTokens( + amountOutMin: number | string | BN, + path: string[], + to: string, + deadline: number | string | BN, + ): PayableTransactionObject + + swapExactTokensForAVAX( + amountIn: number | string | BN, + amountOutMin: number | string | BN, + path: string[], + to: string, + deadline: number | string | BN, + ): NonPayableTransactionObject + + swapExactTokensForAVAXSupportingFeeOnTransferTokens( + amountIn: number | string | BN, + amountOutMin: number | string | BN, + path: string[], + to: string, + deadline: number | string | BN, + ): NonPayableTransactionObject + + swapTokensForExactAVAX( + amountOut: number | string | BN, + amountInMax: number | string | BN, + path: string[], + to: string, + deadline: number | string | BN, + ): NonPayableTransactionObject + + swapExactAVAXForTokens( + amountOutMin: number | string | BN, + path: string[], + to: string, + deadline: number | string | BN, + ): PayableTransactionObject + + WAVAX(): NonPayableTransactionObject } events: { allEvents(options?: EventOptions, cb?: Callback): EventEmitter diff --git a/packages/web3-contracts/types/types.d.ts b/packages/web3-contracts/types/types.d.ts index 21c2843ab2c6..65fc225537c5 100644 --- a/packages/web3-contracts/types/types.d.ts +++ b/packages/web3-contracts/types/types.d.ts @@ -35,8 +35,6 @@ export interface NonPayableTx { to?: string data?: string gas?: string | number | BN - maxFeePerGas?: string | number | BN - maxPriorityFeePerGas?: string | number | BN gasPrice?: string | number | BN } From a8d344a77edee31d172e98c08346972cbf83e391 Mon Sep 17 00:00:00 2001 From: unclebill Date: Sun, 23 Jan 2022 17:15:25 +0800 Subject: [PATCH 33/37] fix(trader): fix trader --- .../plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx | 4 +- .../trader/uniswap/useTradeParameters.ts | 92 +++++++++---------- 2 files changed, 48 insertions(+), 48 deletions(-) diff --git a/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx b/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx index bc28e89e1cd0..6c6dbdf7dd04 100644 --- a/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx +++ b/packages/mask/src/plugins/ITO/SNSAdaptor/ClaimAllDialog.tsx @@ -333,7 +333,7 @@ export function ClaimAllDialog(props: ClaimAllDialogProps) {
{(showNftAirdrop || loadingAirdrop) && - SUPPORTED_CHAIN_ID_LIST.includes(chainId) && + chainId === ChainId.Matic && Flags.nft_airdrop_enabled ? ( ) : null} {(swappedTokens && swappedTokens.length > 0) || - (SUPPORTED_CHAIN_ID_LIST.includes(chainId) && Flags.nft_airdrop_enabled) ? ( + (chainId === ChainId.Matic && Flags.nft_airdrop_enabled) ? (
+const swapCallParameters = (trade: SwapParams[0], options: SwapParams[1], tradeProvider?: TradeProvider) => { + const parameters = Router.swapCallParameters(trade, options) + if (tradeProvider === TradeProvider.PANGOLIN || tradeProvider === TradeProvider.TRADERJOE) { + switch (parameters.methodName) { + case 'swapTokensForExactETH': + parameters.methodName = 'swapTokensForExactAVAX' + break + case 'swapExactTokensForETHSupportingFeeOnTransferTokens': + parameters.methodName = 'swapExactTokensForAVAXSupportingFeeOnTransferTokens' + break + case 'swapExactTokensForETH': + parameters.methodName = 'swapExactTokensForAVAX' + break + case 'swapExactETHForTokensSupportingFeeOnTransferTokens': + parameters.methodName = 'swapExactAVAXForTokensSupportingFeeOnTransferTokens' + break + case 'swapExactETHForTokens': + parameters.methodName = 'swapExactAVAXForTokens' + break + } + } + return parameters +} + /** * Returns the swap calls that can be used to make the trade * @param trade trade to execute @@ -40,56 +66,30 @@ export function useSwapParameters( if (trade_ instanceof V2Trade) { if (!routerV2Contract) return [] - type SwapParams = Parameters - const swapCallParameters = ( - trade: SwapParams[0], - options: SwapParams[1], - tradeProvider?: TradeProvider, - ) => { - const parameters = Router.swapCallParameters(trade, options) - if ( - tradeProvider === TradeProvider.PANGOLIN || - (TradeProvider.TRADERJOE && tradeProvider !== TradeProvider.SUSHISWAP) - ) { - switch (parameters.methodName) { - case 'swapTokensForExactETH': - parameters.methodName = 'swapTokensForExactAVAX' - break - case 'swapExactTokensForETHSupportingFeeOnTransferTokens': - parameters.methodName = 'swapExactTokensForAVAXSupportingFeeOnTransferTokens' - break - case 'swapExactTokensForETH': - parameters.methodName = 'swapExactTokensForAVAX' - break - case 'swapExactETHForTokensSupportingFeeOnTransferTokens': - parameters.methodName = 'swapExactAVAXForTokensSupportingFeeOnTransferTokens' - break - case 'swapExactETHForTokens': - parameters.methodName = 'swapExactAVAXForTokens' - break - case 'WETH': - parameters.methodName = 'WAVAX' - break - } - } - return parameters - } const parameters = [ - swapCallParameters(trade_, { - feeOnTransfer: false, - allowedSlippage: allowedSlippage_, - recipient: account, - ttl: deadline.toNumber(), - }), - ] - if (trade_.tradeType === TradeType.EXACT_INPUT) - parameters.push( - swapCallParameters(trade_, { - feeOnTransfer: true, + swapCallParameters( + trade_, + { + feeOnTransfer: false, allowedSlippage: allowedSlippage_, recipient: account, ttl: deadline.toNumber(), - }), + }, + tradeProvider, + ), + ] + if (trade_.tradeType === TradeType.EXACT_INPUT) + parameters.push( + swapCallParameters( + trade_, + { + feeOnTransfer: true, + allowedSlippage: allowedSlippage_, + recipient: account, + ttl: deadline.toNumber(), + }, + tradeProvider, + ), ) return parameters.map(({ methodName, args, value }) => { return { From e384045ab389c0bd3da780a598c39b1298a2d81f Mon Sep 17 00:00:00 2001 From: unclebill Date: Sun, 23 Jan 2022 18:29:28 +0800 Subject: [PATCH 34/37] fixup! fix(trader): fix trader --- .../src/plugins/Trader/trader/uniswap/useTradeParameters.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/mask/src/plugins/Trader/trader/uniswap/useTradeParameters.ts b/packages/mask/src/plugins/Trader/trader/uniswap/useTradeParameters.ts index c4bc1741e3b8..e7719fc2518b 100644 --- a/packages/mask/src/plugins/Trader/trader/uniswap/useTradeParameters.ts +++ b/packages/mask/src/plugins/Trader/trader/uniswap/useTradeParameters.ts @@ -21,6 +21,9 @@ const swapCallParameters = (trade: SwapParams[0], options: SwapParams[1], tradeP const parameters = Router.swapCallParameters(trade, options) if (tradeProvider === TradeProvider.PANGOLIN || tradeProvider === TradeProvider.TRADERJOE) { switch (parameters.methodName) { + case 'WETH': + parameters.methodName = 'WAVAX' + break case 'swapTokensForExactETH': parameters.methodName = 'swapTokensForExactAVAX' break From df2026f769adf17306340e66ec4a9fd732bad1f8 Mon Sep 17 00:00:00 2001 From: unclebill Date: Mon, 24 Jan 2022 10:42:52 +0800 Subject: [PATCH 35/37] fix: use dimensiondev/assets --- .../src/plugins/Trader/apis/trending/index.ts | 2 +- .../src/plugins/Trader/apis/uniswap/index.ts | 2 +- .../evm/token-asset-base-url.json | 40 +++++++++---------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/packages/mask/src/plugins/Trader/apis/trending/index.ts b/packages/mask/src/plugins/Trader/apis/trending/index.ts index d52bec2cb5b7..70a8db6d683c 100644 --- a/packages/mask/src/plugins/Trader/apis/trending/index.ts +++ b/packages/mask/src/plugins/Trader/apis/trending/index.ts @@ -339,7 +339,7 @@ async function getCoinTrending(id: string, currency: Currency, dataProvider: Dat decimals: Number(token?.decimals || '0'), is_mirrored: isMirroredKeyword(token?.symbol || ''), blockchain_urls: [`https://info.uniswap.org/token/${id}`, `https://etherscan.io/address/${id}`], - image_url: `https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum/assets/${id}/logo.png`, + image_url: `https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/ethereum/assets/${id}/logo.png`, platform_url: `https://info.uniswap.org/token/${id}`, contract_address: id, }, diff --git a/packages/mask/src/plugins/Trader/apis/uniswap/index.ts b/packages/mask/src/plugins/Trader/apis/uniswap/index.ts index 85b7e50d3775..ea5dcce00b7a 100644 --- a/packages/mask/src/plugins/Trader/apis/uniswap/index.ts +++ b/packages/mask/src/plugins/Trader/apis/uniswap/index.ts @@ -286,7 +286,7 @@ export async function getCoinInfo(id: string) { .map(([pairAddress, pairData]) => { return { logo_url: - 'https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum/assets/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984/logo.png', + 'https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/ethereum/assets/0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984/logo.png', trade_url: `https://info.uniswap.org/pair/${pairAddress}`, market_name: 'Uniswap (V2)', base_name: pairData.token0.symbol, diff --git a/packages/web3-constants/evm/token-asset-base-url.json b/packages/web3-constants/evm/token-asset-base-url.json index 592b6dd1c11c..994c1a1189ae 100644 --- a/packages/web3-constants/evm/token-asset-base-url.json +++ b/packages/web3-constants/evm/token-asset-base-url.json @@ -1,47 +1,47 @@ { "TOKEN_ASSET_BASE_URI": { "Mainnet": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/ethereum" ], "Ropsten": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/ethereum" ], "Rinkeby": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/ethereum" ], "Kovan": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/ethereum" ], "Gorli": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/ethereum", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/ethereum" ], "BSC": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/smartchain", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/smartchain" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/smartchain", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/smartchain" ], "BSCT": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/smartchain", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/smartchain" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/smartchain", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/smartchain" ], "Matic": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/polygon", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/polygon" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/polygon", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/polygon" ], "Mumbai": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/polygon", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/polygon" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/polygon", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/polygon" ], "Arbitrum": [], "Arbitrum_Rinkeby": [], "xDai": [], "Avalanche": [ - "https://raw.githubusercontent.com/UncleBill/assets/feat/add-avalanchec/blockchains/avalanchec", - "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/avalanchec" + "https://raw.githubusercontent.com/dimensiondev/assets/master/blockchains/avalanchec", + "https://rawcdn.githack.com/dimensiondev/assets/master/blockchains/avalanchec" ], "Avalanche_Fuji": [], "Celo": [], From fee9010573960f4cb2801db646004d444a58ebc2 Mon Sep 17 00:00:00 2001 From: unclebill Date: Mon, 24 Jan 2022 11:27:33 +0800 Subject: [PATCH 36/37] fix: avalanche native token label --- packages/mask/src/plugins/Trader/trader/0x/useTrade.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts index df46dbc60b9b..644c1f3228d3 100644 --- a/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts +++ b/packages/mask/src/plugins/Trader/trader/0x/useTrade.ts @@ -35,7 +35,6 @@ export function getNativeTokenLabel(networkType: NetworkType) { case NetworkType.Fuse: case NetworkType.Metis: case NetworkType.Avalanche: - return 'AVAX' case NetworkType.Optimistic: return NATIVE_TOKEN_ADDRESS default: From 2c48018b4c9fa30ce06b5dfe38a41c0b33cf2fd3 Mon Sep 17 00:00:00 2001 From: unclebill Date: Mon, 24 Jan 2022 11:29:32 +0800 Subject: [PATCH 37/37] fix: extract variable --- .../src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/mask/src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx b/packages/mask/src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx index 5cfce7286672..835997f89847 100644 --- a/packages/mask/src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx +++ b/packages/mask/src/plugins/Trader/SNSAdaptor/trending/TraderView.tsx @@ -204,11 +204,8 @@ export function TraderView(props: TraderViewProps) { // #endregion // #region if the coin is a native token or contract address exists - - const isSwappable = - (!!trending?.coin.contract_address || ['eth', 'matic', 'bnb', 'avax'].includes(coinSymbol)) && - chainIdValid && - tradeProviders.length + const isNativeToken = ['eth', 'matic', 'bnb', 'avax'].includes(coinSymbol) + const isSwappable = (!!trending?.coin.contract_address || isNativeToken) && chainIdValid && tradeProviders.length // #endregion // #region display loading skeleton