From 3b103e18df321395f662cff6902afa66f726fec0 Mon Sep 17 00:00:00 2001 From: Apotheosis <0xapotheosis@gmail.com> Date: Tue, 10 Feb 2026 13:53:30 +1100 Subject: [PATCH] chore: remove arbitrum nova chain support Arbitrum Nova coinstack was removed from the upstream unchained repo in shapeshift/unchained#1258. This removes all ArbitrumNova references across the entire codebase including chain adapters, CAIP constants, types, plugins, feature flags, config, CSP headers, wagmi/viem clients, coingecko adapters, asset data generation scripts, and tests. --- .env | 4 - .env.development | 3 - .env.test | 3 - headers/csps/chains/arbitrumNova.ts | 14 - headers/csps/index.ts | 2 - .../generated/eip155_42170/adapter.json | 1 - .../src/adapters/coingecko/generated/index.ts | 2 - .../caip/src/adapters/coingecko/index.test.ts | 16 - packages/caip/src/adapters/coingecko/index.ts | 6 - .../caip/src/adapters/coingecko/utils.test.ts | 5 - packages/caip/src/adapters/coingecko/utils.ts | 17 - packages/caip/src/constants.ts | 6 - .../chain-adapters/src/evm/EvmBaseAdapter.ts | 9 - .../ArbitrumNovaChainAdapter.test.ts | 563 ------------- .../arbitrumNova/ArbitrumNovaChainAdapter.ts | 55 -- .../src/evm/arbitrumNova/index.ts | 1 - packages/chain-adapters/src/evm/index.ts | 1 - packages/chain-adapters/src/types.ts | 6 - packages/chain-adapters/src/utils/index.ts | 1 - .../contracts/src/ethersProviderSingleton.ts | 2 - packages/contracts/src/viemClient.ts | 11 - packages/public-api/src/swapperDeps.ts | 4 - packages/swap-widget/README.md | 2 - .../swap-widget/src/components/SwapWidget.tsx | 2 - packages/swap-widget/src/config/appkit.ts | 2 - packages/swap-widget/src/config/wagmi.ts | 2 - packages/swap-widget/src/constants/chains.ts | 2 - packages/swap-widget/src/types/index.ts | 2 - .../filterBuyAssetsBySellAssetId.ts | 9 +- packages/types/src/base.ts | 2 - packages/unchained-client/openapitools.json | 17 +- .../src/evm/arbitrumNova/index.ts | 2 - .../parser/__tests__/arbitrumNova.test.ts | 741 ------------------ .../parser/__tests__/mockData/erc1155.ts | 39 - .../parser/__tests__/mockData/erc20Approve.ts | 26 - .../parser/__tests__/mockData/erc721.ts | 50 -- .../parser/__tests__/mockData/ethSelfSend.ts | 23 - .../parser/__tests__/mockData/ethStandard.ts | 23 - .../parser/__tests__/mockData/mempoolMock.ts | 15 - .../__tests__/mockData/tokenSelfSend.ts | 38 - .../__tests__/mockData/tokenStandard.ts | 38 - .../parser/__tests__/mockData/tokens.ts | 8 - .../src/evm/arbitrumNova/parser/index.ts | 12 - packages/unchained-client/src/evm/index.ts | 14 +- packages/unchained-client/src/index.ts | 1 - packages/utils/src/assetData/baseAssets.ts | 18 - packages/utils/src/assetData/getBaseAsset.ts | 3 - packages/utils/src/chainIdToFeeAssetId.ts | 3 - .../utils/src/getAssetNamespaceFromChainId.ts | 1 - packages/utils/src/getChainShortName.ts | 2 - .../utils/src/getNativeFeeAssetReference.ts | 2 - .../generateAssetData/arbitrumNova/index.ts | 11 - scripts/generateAssetData/coingecko.ts | 10 - .../generateAssetData/generateAssetData.ts | 3 - scripts/generateAssetData/generateColorMap.ts | 3 - .../generateRelatedAssetIndex.ts | 3 +- .../hooks/useFormSend/useFormSend.test.tsx | 1 - src/config.ts | 4 - src/constants/chains.ts | 1 - src/context/PluginProvider/PluginProvider.tsx | 1 - .../WalletProvider/WalletConnectV2/config.ts | 15 +- .../useWalletSupportsChain.ts | 5 - src/lib/account/evm.ts | 3 - src/lib/asset-service/service/AssetService.ts | 2 - src/lib/coingecko/utils.ts | 2 - src/lib/getTxLink.ts | 1 - .../coingecko/coingecko.test.ts | 35 +- src/lib/wagmi-config.ts | 14 +- src/pages/Markets/components/MarketsRow.tsx | 11 +- src/plugins/activePlugins.ts | 2 - src/plugins/arbitrumNova/index.ts | 44 -- .../slices/opportunitiesSlice/mappings.ts | 1 - .../slices/portfolioSlice/utils/index.test.ts | 6 - .../slices/portfolioSlice/utils/index.ts | 5 - .../preferencesSlice/preferencesSlice.ts | 2 - src/test/mocks/portfolio.ts | 9 - src/test/mocks/store.ts | 1 - src/vite-env.d.ts | 4 - 78 files changed, 30 insertions(+), 2000 deletions(-) delete mode 100644 headers/csps/chains/arbitrumNova.ts delete mode 100644 packages/caip/src/adapters/coingecko/generated/eip155_42170/adapter.json delete mode 100644 packages/chain-adapters/src/evm/arbitrumNova/ArbitrumNovaChainAdapter.test.ts delete mode 100644 packages/chain-adapters/src/evm/arbitrumNova/ArbitrumNovaChainAdapter.ts delete mode 100644 packages/chain-adapters/src/evm/arbitrumNova/index.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/index.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/arbitrumNova.test.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc1155.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc20Approve.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc721.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/ethSelfSend.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/ethStandard.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/mempoolMock.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokenSelfSend.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokenStandard.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokens.ts delete mode 100644 packages/unchained-client/src/evm/arbitrumNova/parser/index.ts delete mode 100644 scripts/generateAssetData/arbitrumNova/index.ts delete mode 100644 src/plugins/arbitrumNova/index.ts diff --git a/.env b/.env index 1e5857249d8..b52ff0ddc21 100644 --- a/.env +++ b/.env @@ -5,7 +5,6 @@ VITE_FEATURE_BNBSMARTCHAIN=true VITE_FEATURE_POLYGON=true VITE_FEATURE_GNOSIS=true VITE_FEATURE_ARBITRUM=true -VITE_FEATURE_ARBITRUM_NOVA=false VITE_FEATURE_SOLANA=true VITE_FEATURE_STARKNET=true VITE_FEATURE_SUI=true @@ -121,8 +120,6 @@ VITE_UNCHAINED_GNOSIS_HTTP_URL=https://api.gnosis.shapeshift.com VITE_UNCHAINED_GNOSIS_WS_URL=wss://api.gnosis.shapeshift.com VITE_UNCHAINED_ARBITRUM_HTTP_URL=https://api.arbitrum.shapeshift.com VITE_UNCHAINED_ARBITRUM_WS_URL=wss://api.arbitrum.shapeshift.com -VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL=https://api.arbitrum-nova.shapeshift.com -VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL=wss://api.arbitrum-nova.shapeshift.com VITE_UNCHAINED_BASE_HTTP_URL=https://api.base.shapeshift.com VITE_UNCHAINED_BASE_WS_URL=wss://api.base.shapeshift.com VITE_UNCHAINED_MONAD_HTTP_URL=https://rpc.monad.xyz @@ -155,7 +152,6 @@ VITE_BNBSMARTCHAIN_NODE_URL=https://api.bnbsmartchain.shapeshift.com/api/v1/json VITE_POLYGON_NODE_URL=https://api.polygon.shapeshift.com/api/v1/jsonrpc VITE_GNOSIS_NODE_URL=https://api.gnosis.shapeshift.com/api/v1/jsonrpc VITE_ARBITRUM_NODE_URL=https://api.arbitrum.shapeshift.com/api/v1/jsonrpc -VITE_ARBITRUM_NOVA_NODE_URL=https://api.arbitrum-nova.shapeshift.com/api/v1/jsonrpc VITE_BASE_NODE_URL=https://api.base.shapeshift.com/api/v1/jsonrpc VITE_MONAD_NODE_URL=https://rpc.monad.xyz VITE_PLASMA_NODE_URL=https://rpc.plasma.to diff --git a/.env.development b/.env.development index 7b2f92272ff..960524ab908 100644 --- a/.env.development +++ b/.env.development @@ -25,8 +25,6 @@ VITE_UNCHAINED_GNOSIS_HTTP_URL=https://dev-api.gnosis.shapeshift.com VITE_UNCHAINED_GNOSIS_WS_URL=wss://dev-api.gnosis.shapeshift.com VITE_UNCHAINED_ARBITRUM_HTTP_URL=https://dev-api.arbitrum.shapeshift.com VITE_UNCHAINED_ARBITRUM_WS_URL=wss://dev-api.arbitrum.shapeshift.com -VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL=https://dev-api.arbitrum-nova.shapeshift.com -VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL=wss://dev-api.arbitrum-nova.shapeshift.com VITE_UNCHAINED_BASE_HTTP_URL=https://dev-api.base.shapeshift.com VITE_UNCHAINED_BASE_WS_URL=wss://dev-api.base.shapeshift.com VITE_UNCHAINED_MONAD_HTTP_URL=https://rpc.monad.xyz @@ -59,7 +57,6 @@ VITE_BNBSMARTCHAIN_NODE_URL=https://dev-api.bnbsmartchain.shapeshift.com/api/v1/ VITE_POLYGON_NODE_URL=https://dev-api.polygon.shapeshift.com/api/v1/jsonrpc VITE_GNOSIS_NODE_URL=https://dev-api.gnosis.shapeshift.com/api/v1/jsonrpc VITE_ARBITRUM_NODE_URL=https://dev-api.arbitrum.shapeshift.com/api/v1/jsonrpc -VITE_ARBITRUM_NOVA_NODE_URL=https://dev-api.arbitrum-nova.shapeshift.com/api/v1/jsonrpc VITE_BASE_NODE_URL=https://dev-api.base.shapeshift.com/api/v1/jsonrpc VITE_MONAD_NODE_URL=https://rpc.monad.xyz VITE_PLASMA_NODE_URL=https://rpc.plasma.to diff --git a/.env.test b/.env.test index 336ec3f2262..4c237043dbc 100644 --- a/.env.test +++ b/.env.test @@ -16,8 +16,6 @@ VITE_UNCHAINED_GNOSIS_HTTP_URL=https://api.gnosis.shapeshift.com VITE_UNCHAINED_GNOSIS_WS_URL=wss://api.gnosis.shapeshift.com VITE_UNCHAINED_ARBITRUM_HTTP_URL=https://api.arbitrum.shapeshift.com VITE_UNCHAINED_ARBITRUM_WS_URL=wss://api.arbitrum.shapeshift.com -VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL=https://api.arbitrum-nova.shapeshift.com -VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL=wss://api.arbitrum-nova.shapeshift.com VITE_UNCHAINED_BASE_HTTP_URL=https://api.base.shapeshift.com VITE_UNCHAINED_BASE_WS_URL=wss://api.base.shapeshift.com VITE_UNCHAINED_BITCOIN_HTTP_URL=https://api.bitcoin.shapeshift.com @@ -48,7 +46,6 @@ VITE_BNBSMARTCHAIN_NODE_URL=https://api.bnbsmartchain.shapeshift.com/api/v1/json VITE_POLYGON_NODE_URL=https://api.polygon.shapeshift.com/api/v1/jsonrpc VITE_GNOSIS_NODE_URL=https://api.gnosis.shapeshift.com/api/v1/jsonrpc VITE_ARBITRUM_NODE_URL=https://api.arbitrum.shapeshift.com/api/v1/jsonrpc -VITE_ARBITRUM_NOVA_NODE_URL=https://api.arbitrum-nova.shapeshift.com/api/v1/jsonrpc VITE_BASE_NODE_URL=https://api.base.shapeshift.com/api/v1/jsonrpc VITE_THORCHAIN_NODE_URL=https://api.thorchain.shapeshift.com/lcd VITE_MAYACHAIN_NODE_URL=https://api.mayachain.shapeshift.com/lcd diff --git a/headers/csps/chains/arbitrumNova.ts b/headers/csps/chains/arbitrumNova.ts deleted file mode 100644 index 7588d6c7f69..00000000000 --- a/headers/csps/chains/arbitrumNova.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { loadEnv } from 'vite' - -import type { Csp } from '../../types' - -const mode = process.env.MODE ?? process.env.NODE_ENV ?? 'development' -const env = loadEnv(mode, process.cwd(), '') - -export const csp: Csp = { - 'connect-src': [ - env.VITE_ARBITRUM_NOVA_NODE_URL, - env.VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL, - env.VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL, - ], -} diff --git a/headers/csps/index.ts b/headers/csps/index.ts index 0d7126be22f..e10db557986 100644 --- a/headers/csps/index.ts +++ b/headers/csps/index.ts @@ -3,7 +3,6 @@ import { csp as trustwallet } from './assetService/trustwallet' import { csp as base } from './base' import { csp as chainflip } from './chainflip' import { csp as arbitrum } from './chains/arbitrum' -import { csp as arbitrumNova } from './chains/arbitrumNova' import { csp as avalanche } from './chains/avalanche' import { csp as baseChain } from './chains/base' import { csp as bitcoin } from './chains/bitcoin' @@ -99,7 +98,6 @@ export const csps = [ tenderly, webflow, arbitrum, - arbitrumNova, avalanche, baseChain, bitcoin, diff --git a/packages/caip/src/adapters/coingecko/generated/eip155_42170/adapter.json b/packages/caip/src/adapters/coingecko/generated/eip155_42170/adapter.json deleted file mode 100644 index e94c8ccb3f3..00000000000 --- a/packages/caip/src/adapters/coingecko/generated/eip155_42170/adapter.json +++ /dev/null @@ -1 +0,0 @@ -{"eip155:42170/slip44:60":"ethereum","eip155:42170/erc20:0xf823c3cd3cebe0a1fa952ba88dc9eef8e0bf46ad":"arbitrum","eip155:42170/erc20:0x722e8bdd2ce80a4422e880164f2079488e115365":"arbitrum-bridged-weth-arbitrum-nova","eip155:42170/erc20:0x8afe4055ebc86bd2afb3940c0095c9aca511d852":"arbius","eip155:42170/erc20:0xb5130f4767ab0acc579f25a76e8f9e977cb3f948":"godcoin-2","eip155:42170/erc20:0xda10009cbd5d07dd0cecc66161fc93d7c9000da1":"makerdao-arbitrum-nova-dai-bridge-arbitrum-nova","eip155:42170/erc20:0x0057ac2d777797d31cd3f8f13bf5e927571d6ad0":"moon","eip155:42170/erc20:0x750ba8b76187092b0d1e87e28daaf484d1b5273b":"official-arbitrum-bridged-usdc-arbitrum-nova","eip155:42170/erc20:0x000000000026839b3f4181f2cf69336af6153b99":"reboot","eip155:42170/erc20:0x223fb0ceb2c6e5310264efe38151d7d083db91f1":"squad","eip155:42170/erc20:0xb962150760f9a3bb00e3e9cf48297ee20ada4a33":"zoomer"} \ No newline at end of file diff --git a/packages/caip/src/adapters/coingecko/generated/index.ts b/packages/caip/src/adapters/coingecko/generated/index.ts index 848944af7fd..17ce1cfe69e 100644 --- a/packages/caip/src/adapters/coingecko/generated/index.ts +++ b/packages/caip/src/adapters/coingecko/generated/index.ts @@ -9,7 +9,6 @@ import bnbsmartchain from "./eip155_56/adapter.json"; import polygon from "./eip155_137/adapter.json"; import gnosis from "./eip155_100/adapter.json"; import arbitrum from "./eip155_42161/adapter.json"; -import arbitrumNova from "./eip155_42170/adapter.json"; import base from "./eip155_8453/adapter.json"; import monad from "./eip155_143/adapter.json"; import hyperevm from "./eip155_999/adapter.json"; @@ -38,7 +37,6 @@ export { polygon, gnosis, arbitrum, - arbitrumNova, base, monad, hyperevm, diff --git a/packages/caip/src/adapters/coingecko/index.test.ts b/packages/caip/src/adapters/coingecko/index.test.ts index 92ec6f51157..e7714d3dbf7 100644 --- a/packages/caip/src/adapters/coingecko/index.test.ts +++ b/packages/caip/src/adapters/coingecko/index.test.ts @@ -51,12 +51,6 @@ describe('adapters:coingecko', () => { assetNamespace: 'slip44', assetReference: ASSET_REFERENCE.Arbitrum, }) - const ethOnArbitrumNova = toAssetId({ - chainNamespace, - chainReference: CHAIN_REFERENCE.ArbitrumNovaMainnet, - assetNamespace: 'slip44', - assetReference: ASSET_REFERENCE.ArbitrumNova, - }) const ethOnBase = toAssetId({ chainNamespace, chainReference: CHAIN_REFERENCE.BaseMainnet, @@ -67,7 +61,6 @@ describe('adapters:coingecko', () => { ethOnEthereum, ethOnOptimism, ethOnArbitrum, - ethOnArbitrumNova, ethOnBase, ]) }) @@ -237,12 +230,6 @@ describe('adapters:coingecko', () => { assetNamespace, assetReference: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', }) - const usdcOnArbitrumNovaBridged = toAssetId({ - chainNamespace, - chainReference: CHAIN_REFERENCE.ArbitrumNovaMainnet, - assetNamespace, - assetReference: '0x750ba8b76187092B0D1E87E28daaf484d1b5273b', - }) const usdcOnGnosisBridged = toAssetId({ chainNamespace, chainReference: CHAIN_REFERENCE.GnosisMainnet, @@ -254,9 +241,6 @@ describe('adapters:coingecko', () => { ]) expect(coingeckoToAssetIds('bridged-usdc-polygon-pos-bridge')).toEqual([usdcOnPolygonBridged]) expect(coingeckoToAssetIds('gnosis-xdai-bridged-usdc-gnosis')).toEqual([usdcOnGnosisBridged]) - expect(coingeckoToAssetIds('official-arbitrum-bridged-usdc-arbitrum-nova')).toEqual([ - usdcOnArbitrumNovaBridged, - ]) }) }) diff --git a/packages/caip/src/adapters/coingecko/index.ts b/packages/caip/src/adapters/coingecko/index.ts index 66c24661040..bb6ea665f26 100644 --- a/packages/caip/src/adapters/coingecko/index.ts +++ b/packages/caip/src/adapters/coingecko/index.ts @@ -6,7 +6,6 @@ import type { ChainId } from '../../chainId/chainId' import { fromChainId, toChainId } from '../../chainId/chainId' import { arbitrumChainId, - arbitrumNovaChainId, avalancheChainId, baseChainId, bscChainId, @@ -46,7 +45,6 @@ export enum CoingeckoAssetPlatform { Optimism = 'optimistic-ethereum', BnbSmartChain = 'binance-smart-chain', Arbitrum = 'arbitrum-one', - ArbitrumNova = 'arbitrum-nova', Base = 'base', Monad = 'monad', HyperEvm = 'hyperevm', @@ -102,8 +100,6 @@ export const chainIdToCoingeckoAssetPlatform = (chainId: ChainId): string => { return CoingeckoAssetPlatform.Gnosis case CHAIN_REFERENCE.ArbitrumMainnet: return CoingeckoAssetPlatform.Arbitrum - case CHAIN_REFERENCE.ArbitrumNovaMainnet: - return CoingeckoAssetPlatform.ArbitrumNova case CHAIN_REFERENCE.BaseMainnet: return CoingeckoAssetPlatform.Base case CHAIN_REFERENCE.MonadMainnet: @@ -211,8 +207,6 @@ export const coingeckoAssetPlatformToChainId = ( return gnosisChainId case CoingeckoAssetPlatform.Arbitrum: return arbitrumChainId - case CoingeckoAssetPlatform.ArbitrumNova: - return arbitrumNovaChainId case CoingeckoAssetPlatform.Base: return baseChainId case CoingeckoAssetPlatform.Monad: diff --git a/packages/caip/src/adapters/coingecko/utils.test.ts b/packages/caip/src/adapters/coingecko/utils.test.ts index d3b13b24a56..23c39ac59bc 100644 --- a/packages/caip/src/adapters/coingecko/utils.test.ts +++ b/packages/caip/src/adapters/coingecko/utils.test.ts @@ -22,7 +22,6 @@ const makeWethMockCoingeckoResponse = () => ({ 'polygon-pos': '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', xdai: '0x6a023ccd1ff6f2045c3309768ead9e68f978f6e1', 'arbitrum-one': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1', - 'arbitrum-nova': '0x722e8bdd2ce80a4422e880164f2079488e115365', base: '0x4200000000000000000000000000000000000006', }, }) @@ -164,10 +163,6 @@ describe('adapters:coingecko:utils', () => { 'eip155:42161/slip44:60': 'ethereum', 'eip155:42161/erc20:0x82af49447d8a07e3bd95bd0d56f35241523fbab1': 'weth', }, - 'eip155:42170': { - 'eip155:42170/slip44:60': 'ethereum', - 'eip155:42170/erc20:0x722e8bdd2ce80a4422e880164f2079488e115365': 'weth', - }, 'eip155:8453': { 'eip155:8453/slip44:60': 'ethereum', 'eip155:8453/erc20:0x4200000000000000000000000000000000000006': 'weth', diff --git a/packages/caip/src/adapters/coingecko/utils.ts b/packages/caip/src/adapters/coingecko/utils.ts index 08a8c442604..de571d9827d 100644 --- a/packages/caip/src/adapters/coingecko/utils.ts +++ b/packages/caip/src/adapters/coingecko/utils.ts @@ -7,8 +7,6 @@ import type { ChainId } from '../../chainId/chainId' import { arbitrumAssetId, arbitrumChainId, - arbitrumNovaAssetId, - arbitrumNovaChainId, ASSET_NAMESPACE, avalancheAssetId, avalancheChainId, @@ -177,20 +175,6 @@ export const parseData = (coins: CoingeckoCoin[]): AssetMap => { } } - if (Object.keys(platforms).includes(CoingeckoAssetPlatform.ArbitrumNova)) { - try { - const assetId = toAssetId({ - chainNamespace: CHAIN_NAMESPACE.Evm, - chainReference: CHAIN_REFERENCE.ArbitrumNovaMainnet, - assetNamespace: 'erc20', - assetReference: platforms[CoingeckoAssetPlatform.ArbitrumNova], - }) - prev[arbitrumNovaChainId][assetId] = id - } catch (err) { - // unable to create assetId, skip token - } - } - if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Base)) { try { const assetId = toAssetId({ @@ -355,7 +339,6 @@ export const parseData = (coins: CoingeckoCoin[]): AssetMap => { [polygonChainId]: { [polygonAssetId]: 'polygon-ecosystem-token' }, [gnosisChainId]: { [gnosisAssetId]: 'xdai' }, [arbitrumChainId]: { [arbitrumAssetId]: 'ethereum' }, - [arbitrumNovaChainId]: { [arbitrumNovaAssetId]: 'ethereum' }, [baseChainId]: { [baseAssetId]: 'ethereum' }, [hyperEvmChainId]: { [hyperEvmAssetId]: 'hyperliquid' }, [monadChainId]: { [monadAssetId]: 'monad' }, diff --git a/packages/caip/src/constants.ts b/packages/caip/src/constants.ts index e4bef767b55..ca9ef25055c 100644 --- a/packages/caip/src/constants.ts +++ b/packages/caip/src/constants.ts @@ -14,7 +14,6 @@ export const bscAssetId: AssetId = 'eip155:56/slip44:60' export const polygonAssetId: AssetId = 'eip155:137/slip44:60' export const gnosisAssetId: AssetId = 'eip155:100/slip44:60' export const arbitrumAssetId: AssetId = 'eip155:42161/slip44:60' -export const arbitrumNovaAssetId: AssetId = 'eip155:42170/slip44:60' export const baseAssetId: AssetId = 'eip155:8453/slip44:60' export const monadAssetId: AssetId = 'eip155:143/slip44:60' export const hyperEvmAssetId: AssetId = 'eip155:999/slip44:60' @@ -75,7 +74,6 @@ export const bscChainId: ChainId = 'eip155:56' export const polygonChainId: ChainId = 'eip155:137' export const gnosisChainId: ChainId = 'eip155:100' export const arbitrumChainId: ChainId = 'eip155:42161' -export const arbitrumNovaChainId: ChainId = 'eip155:42170' export const baseChainId: ChainId = 'eip155:8453' export const monadChainId: ChainId = 'eip155:143' export const hyperEvmChainId: ChainId = 'eip155:999' @@ -127,7 +125,6 @@ export const CHAIN_REFERENCE = { PolygonMainnet: '137', // https://wiki.polygon.technology/docs/develop/metamask/config-polygon-on-metamask/ GnosisMainnet: '100', // https://docs.gnosischain.com/tools/wallets/metamask/ ArbitrumMainnet: '42161', // https://chainlist.org/chain/42161 - ArbitrumNovaMainnet: '42170', // https://chainlist.org/chain/42170 BaseMainnet: '8453', // https://chainlist.org/chain/8453 MonadMainnet: '143', // https://docs.monad.xyz/developer-essentials/network-information HyperEvmMainnet: '999', // https://chainlist.org/chain/999 @@ -172,7 +169,6 @@ export const ASSET_REFERENCE = { Polygon: '60', // evm chain which uses ethereum derivation path as common practice Gnosis: '60', // evm chain which uses ethereum derivation path as common practice Arbitrum: '60', // evm chain which uses ethereum derivation path as common practice - ArbitrumNova: '60', // evm chain which uses ethereum derivation path as common practice Base: '60', // evm chain which uses ethereum derivation path as common practice Monad: '60', // evm chain which uses ethereum derivation path as common practice HyperEvm: '60', // evm chain which uses ethereum derivation path as common practice @@ -202,7 +198,6 @@ export const VALID_CHAIN_IDS: ValidChainMap = Object.freeze({ CHAIN_REFERENCE.PolygonMainnet, CHAIN_REFERENCE.GnosisMainnet, CHAIN_REFERENCE.ArbitrumMainnet, - CHAIN_REFERENCE.ArbitrumNovaMainnet, CHAIN_REFERENCE.BaseMainnet, CHAIN_REFERENCE.MonadMainnet, CHAIN_REFERENCE.HyperEvmMainnet, @@ -260,7 +255,6 @@ export const FEE_ASSET_IDS = [ polygonAssetId, gnosisAssetId, arbitrumAssetId, - arbitrumNovaAssetId, baseAssetId, monadAssetId, solAssetId, diff --git a/packages/chain-adapters/src/evm/EvmBaseAdapter.ts b/packages/chain-adapters/src/evm/EvmBaseAdapter.ts index 670c67c95e0..5d7a025d942 100644 --- a/packages/chain-adapters/src/evm/EvmBaseAdapter.ts +++ b/packages/chain-adapters/src/evm/EvmBaseAdapter.ts @@ -9,7 +9,6 @@ import type { } from '@shapeshiftoss/hdwallet-core' import { supportsArbitrum, - supportsArbitrumNova, supportsAvalanche, supportsBase, supportsBSC, @@ -82,7 +81,6 @@ export const evmChainIds = [ KnownChainIds.PolygonMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.ArbitrumMainnet, - KnownChainIds.ArbitrumNovaMainnet, KnownChainIds.BaseMainnet, KnownChainIds.MonadMainnet, KnownChainIds.HyperEvmMainnet, @@ -180,8 +178,6 @@ export abstract class EvmBaseAdapter implements IChainAdap return supportsGnosis(wallet) case Number(fromChainId(KnownChainIds.ArbitrumMainnet).chainReference): return supportsArbitrum(wallet) - case Number(fromChainId(KnownChainIds.ArbitrumNovaMainnet).chainReference): - return supportsArbitrumNova(wallet) case Number(fromChainId(KnownChainIds.BaseMainnet).chainReference): return supportsBase(wallet) case Number(fromChainId(KnownChainIds.MonadMainnet).chainReference): @@ -259,11 +255,6 @@ export abstract class EvmBaseAdapter implements IChainAdap symbol: 'ETH', explorer: 'https://arbiscan.io', }, - [KnownChainIds.ArbitrumNovaMainnet]: { - name: 'Ethereum', - symbol: 'ETH', - explorer: 'https://nova.arbiscan.io', - }, [KnownChainIds.BaseMainnet]: { name: 'Ethereum', symbol: 'ETH', diff --git a/packages/chain-adapters/src/evm/arbitrumNova/ArbitrumNovaChainAdapter.test.ts b/packages/chain-adapters/src/evm/arbitrumNova/ArbitrumNovaChainAdapter.test.ts deleted file mode 100644 index 8b023ddd67b..00000000000 --- a/packages/chain-adapters/src/evm/arbitrumNova/ArbitrumNovaChainAdapter.test.ts +++ /dev/null @@ -1,563 +0,0 @@ -import { - arbitrumNovaAssetId, - arbitrumNovaChainId, - ASSET_REFERENCE, - fromChainId, -} from '@shapeshiftoss/caip' -import type { ETHSignMessage, ETHSignTx, ETHWallet } from '@shapeshiftoss/hdwallet-core' -import type { NativeAdapterArgs } from '@shapeshiftoss/hdwallet-native' -import { NativeHDWallet } from '@shapeshiftoss/hdwallet-native' -import type { Bip44Params, EvmChainId } from '@shapeshiftoss/types' -import { KnownChainIds } from '@shapeshiftoss/types' -import type * as unchained from '@shapeshiftoss/unchained-client' -import { merge } from 'lodash' -import { toHex } from 'viem' -import { describe, expect, it, vi } from 'vitest' - -import type { BuildSendTxInput, GetFeeDataInput, SignMessageInput, SignTxInput } from '../../types' -import { ValidAddressResultType } from '../../types' -import { toAddressNList } from '../../utils' -import type { ChainAdapterArgs } from '../EvmBaseAdapter' -import * as arbitrumNova from './ArbitrumNovaChainAdapter' - -vi.mock('../../utils/validateAddress', () => ({ - assertAddressNotSanctioned: vi.fn(), -})) - -const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' -const EOA_ADDRESS = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' - -const testMnemonic = 'alcohol woman abuse must during monitor noble actual mixed trade anger aisle' - -const getWallet = async (): Promise => { - const nativeAdapterArgs: NativeAdapterArgs = { - mnemonic: testMnemonic, - deviceId: 'test', - } - const wallet = new NativeHDWallet(nativeAdapterArgs) - await wallet.initialize() - - return wallet -} - -const gasPrice = '42' -const gasLimit = '42000' -const contractAddress = '0xc770EEfAd204B5180dF6a14Ee197D99d808ee52d' -const value = 400 - -const makeChainSpecific = (chainSpecificAdditionalProps?: { contractAddress: string }) => - merge({ gasPrice, gasLimit }, chainSpecificAdditionalProps) - -const makeGetGasFeesMockedResponse = (overrideArgs?: { - slow: { gasPrice?: string; maxFeePerGas?: string; maxPriorityFeePerGas?: string } - average: { gasPrice?: string; maxFeePerGas?: string; maxPriorityFeePerGas?: string } - fast: { gasPrice?: string; maxFeePerGas?: string; maxPriorityFeePerGas?: string } -}) => - merge( - { - slow: { gasPrice: '4', maxFeePerGas: '240', maxPriorityFeePerGas: '8' }, - average: { gasPrice: '5', maxFeePerGas: '300', maxPriorityFeePerGas: '10' }, - fast: { gasPrice: '6', maxFeePerGas: '360', maxPriorityFeePerGas: '12' }, - }, - overrideArgs, - ) - -const makeEstimateGasMockedResponse = (overrideArgs?: { gasLimit?: string }) => - merge({ gasLimit: '21000' }, overrideArgs) - -const makeGetAccountMockResponse = (balance: { - balance: string - tokenBalance: string | undefined -}) => ({ - balance: balance.balance, - unconfirmedBalance: '0', - nonce: 2, - tokens: [ - { - assetId: `eip155:42170/erc20:${contractAddress}`, - balance: balance.tokenBalance, - type: 'ERC20', - contract: contractAddress, - }, - ], -}) - -const makeChainAdapterArgs = (overrideArgs?: { - providers?: { http: unchained.arbitrumNova.V1Api } - chainId?: EvmChainId -}): ChainAdapterArgs => - merge( - { - providers: { - http: {} as unchained.arbitrumNova.V1Api, - ws: {} as unchained.ws.Client, - }, - rpcUrl: '', - }, - overrideArgs, - ) - -describe('ArbitrumNovaChainAdapter', () => { - describe('constructor', () => { - it('should return chainAdapter with mainnet chainId if called with no chainId', () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - expect(adapter.getChainId()).toEqual(arbitrumNovaChainId) - }) - - it('should return chainAdapter with valid chainId if called with valid chainId', () => { - const args = makeChainAdapterArgs({ chainId: KnownChainIds.ArbitrumNovaMainnet }) - const adapter = new arbitrumNova.ChainAdapter(args) - expect(adapter.getChainId()).toEqual(arbitrumNovaChainId) - }) - }) - - describe('getFeeAssetId', () => { - it('should return the correct fee assetId', () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - expect(adapter.getFeeAssetId()).toEqual(arbitrumNovaAssetId) - }) - }) - - describe('getFeeData', () => { - it('should return current network fees', async () => { - const httpProvider = { - estimateGas: vi.fn().mockResolvedValue(makeEstimateGasMockedResponse()), - getGasFees: vi.fn().mockResolvedValue(makeGetGasFeesMockedResponse()), - } as unknown as unchained.arbitrumNova.V1Api - - const args = makeChainAdapterArgs({ providers: { http: httpProvider } }) - const adapter = new arbitrumNova.ChainAdapter(args) - - const getFeeDataInput: GetFeeDataInput = { - to: '0x642F4Bda144C63f6DC47EE0fDfbac0a193e2eDb7', - value: '123', - chainSpecific: { - from: ZERO_ADDRESS, - data: '0x', - }, - } - const data = await adapter.getFeeData(getFeeDataInput) - - expect(data).toEqual( - expect.objectContaining({ - average: { - chainSpecific: { - gasLimit: '21000', - gasPrice: '5', - maxFeePerGas: '300', - maxPriorityFeePerGas: '10', - }, - txFee: '6300000', - }, - fast: { - chainSpecific: { - gasLimit: '21000', - gasPrice: '6', - maxFeePerGas: '360', - maxPriorityFeePerGas: '12', - }, - txFee: '7560000', - }, - slow: { - chainSpecific: { - gasLimit: '21000', - gasPrice: '4', - maxFeePerGas: '240', - maxPriorityFeePerGas: '8', - }, - txFee: '5040000', - }, - }), - ) - }) - }) - - describe('getGasFeeData', () => { - it('should return current network gas fees', async () => { - const httpProvider = { - getGasFees: vi.fn().mockResolvedValue(makeGetGasFeesMockedResponse()), - } as unknown as unchained.arbitrumNova.V1Api - - const args = makeChainAdapterArgs({ providers: { http: httpProvider } }) - const adapter = new arbitrumNova.ChainAdapter(args) - - const data = await adapter.getGasFeeData() - - expect(data).toEqual( - expect.objectContaining({ - average: { - gasPrice: '5', - maxFeePerGas: '300', - maxPriorityFeePerGas: '10', - }, - fast: { - gasPrice: '6', - maxFeePerGas: '360', - maxPriorityFeePerGas: '12', - }, - slow: { - gasPrice: '4', - maxFeePerGas: '240', - maxPriorityFeePerGas: '8', - }, - }), - ) - }) - }) - - describe('getAddress', () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - const accountNumber = 0 - const fn = vi.fn() - - it('should return a valid address', async () => { - const wallet = await getWallet() - const res = await adapter.getAddress({ accountNumber, wallet }) - - expect(res).toEqual('0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8') - }) - - it('should not show address on device by default', async () => { - const wallet = await getWallet() - wallet.ethGetAddress = fn.mockResolvedValueOnce('0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8') - - await adapter.getAddress({ accountNumber, wallet }) - - expect(wallet.ethGetAddress).toHaveBeenCalledWith({ - addressNList: [2147483692, 2147483708, 2147483648, 0, 0], - showDisplay: false, - }) - }) - }) - - describe('validateAddress', () => { - const validAddressTuple = { valid: true, result: ValidAddressResultType.Valid } - const invalidAddressTuple = { valid: false, result: ValidAddressResultType.Invalid } - - it('should return true for a valid address', async () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - const res = await adapter.validateAddress('0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8') - - expect(res).toMatchObject(validAddressTuple) - }) - - it('should return false for an empty address', async () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - const res = await adapter.validateAddress('') - - expect(res).toMatchObject(invalidAddressTuple) - }) - - it('should return false for an invalid address', async () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - const res = await adapter.validateAddress('foobar') - - expect(res).toMatchObject(invalidAddressTuple) - }) - }) - - describe('signTransaction', () => { - it('should sign a properly formatted txToSign object', async () => { - const balance = '2500000' - const httpProvider = { - getAccount: vi - .fn() - .mockResolvedValue(makeGetAccountMockResponse({ balance, tokenBalance: '424242' })), - } as unknown as unchained.arbitrumNova.V1Api - const args = makeChainAdapterArgs({ providers: { http: httpProvider } }) - const adapter = new arbitrumNova.ChainAdapter(args) - - const tx = { - wallet: await getWallet(), - txToSign: { - addressNList: toAddressNList(adapter.getBip44Params({ accountNumber: 0 })), - value: '0xf0', - to: EOA_ADDRESS, - chainId: Number(fromChainId(arbitrumNovaChainId).chainReference), - data: '0x', - nonce: '0x0', - gasPrice: '0x12a05f200', - gasLimit: '0x5208', - }, - } as unknown as SignTxInput - - await expect(adapter.signTransaction(tx)).resolves.toEqual( - '0xf8688085012a05f20082520894d8da6bf26964af9d7eed9e03e53415d37aa9604581f08083014997a001191f83e43526d1fd95f577c91c38fe3e5e7ea4280bf5d3f1e57e12b6b7e70ea0771008372d9ac9e60f0045e247db0faac4fea0c2949d6b096fcc97c84180b426', - ) - }) - - it('should throw on txToSign with invalid data', async () => { - const balance = '2500000' - const httpProvider = { - getAccount: vi - .fn() - .mockResolvedValue(makeGetAccountMockResponse({ balance, tokenBalance: '424242' })), - } as unknown as unchained.arbitrumNova.V1Api - const args = makeChainAdapterArgs({ providers: { http: httpProvider } }) - const adapter = new arbitrumNova.ChainAdapter(args) - - const tx = { - wallet: await getWallet(), - txToSign: { - addressNList: toAddressNList(adapter.getBip44Params({ accountNumber: 0 })), - value: '0x0', - to: EOA_ADDRESS, - chainId: Number(fromChainId(arbitrumNovaChainId).chainReference), - data: 'notHexString', - nonce: '0x0', - gasPrice: '0x29d41057e0', - gasLimit: '0xc9df', - }, - } as unknown as SignTxInput - - await expect(adapter.signTransaction(tx)).rejects.toThrow(/invalid hexlify value/) - }) - }) - - describe('signAndBroadcastTransaction', () => { - it('should throw if no hash is returned by wallet.ethSendTx', async () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - const wallet = await getWallet() - - wallet.ethSendTx = async () => await Promise.resolve(null) - - const signTxInput = { wallet, txToSign: {} } as unknown as SignTxInput - - await expect( - adapter.signAndBroadcastTransaction({ - senderAddress: '0x1234', - receiverAddress: '0x1234', - signTxInput, - }), - ).rejects.toThrow(/error signing & broadcasting tx/) - }) - - it('should return the hash returned by wallet.ethSendTx', async () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - const wallet = await getWallet() - - wallet.ethSendTx = async () => - await Promise.resolve({ - hash: '0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331', - }) - - const signTxInput = { wallet, txToSign: {} } as unknown as SignTxInput - - await expect( - adapter.signAndBroadcastTransaction({ - senderAddress: '0x1234', - receiverAddress: '0x1234', - signTxInput, - }), - ).resolves.toEqual('0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331') - }) - }) - - describe('signMessage', () => { - it('should sign a properly formatted signMessageInput object', async () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - const wallet = await getWallet() - - const message: SignMessageInput = { - wallet, - messageToSign: { - message: 'Hello world 111', - addressNList: toAddressNList(adapter.getBip44Params({ accountNumber: 0 })), - }, - } - - await expect(adapter.signMessage(message)).resolves.toEqual( - '0x05a0edb4b98fe6b6ed270bf55aef84ddcb641512e19e340bf9eed3427854a7a4734fe45551dc24f1843cf2c823a73aa2454e3785eb15120573c522cc114e472d1c', - ) - }) - - it('should throw if wallet.ethSignMessage returns null', async () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - const wallet = await getWallet() - - wallet.ethSignMessage = async () => await Promise.resolve(null) - - const message: SignMessageInput = { - wallet, - messageToSign: { - message: 'Hello world 111', - addressNList: toAddressNList(adapter.getBip44Params({ accountNumber: 0 })), - }, - } - - await expect(adapter.signMessage(message)).rejects.toThrow(/error signing message/) - }) - }) - - describe('broadcastTransaction', () => { - it('should correctly call sendTx and return its response', async () => { - const expectedResult = 'success' - - const httpProvider = { - sendTx: vi.fn().mockResolvedValue(expectedResult), - } as unknown as unchained.arbitrumNova.V1Api - - const args = makeChainAdapterArgs({ providers: { http: httpProvider } }) - const adapter = new arbitrumNova.ChainAdapter(args) - - const mockTx = '0x123' - const result = await adapter.broadcastTransaction({ - senderAddress: '0x1234', - receiverAddress: '0x1234', - hex: mockTx, - }) - - expect(args.providers.http.sendTx).toHaveBeenCalledWith({ sendTxBody: { hex: mockTx } }) - expect(result).toEqual(expectedResult) - }) - }) - - describe('buildSendTransaction', () => { - const accountNumber = 0 - - it('should throw if passed tx has no "to" property', async () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - - const tx = { - wallet: await getWallet(), - accountNumber, - value, - chainSpecific: makeChainSpecific({ contractAddress }), - } as unknown as BuildSendTxInput - - await expect(adapter.buildSendTransaction(tx)).rejects.toThrow('to is required') - }) - - it('should throw if passed tx has no "value" property', async () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - - const tx = { - wallet: await getWallet(), - accountNumber, - to: EOA_ADDRESS, - chainSpecific: makeChainSpecific(), - } as unknown as BuildSendTxInput - - await expect(adapter.buildSendTransaction(tx)).rejects.toThrow('value is required') - }) - - it('should return a validly formatted ETHSignTx object for a valid BuildSendTxInput parameter', async () => { - const httpProvider = { - getAccount: vi - .fn() - .mockResolvedValue(makeGetAccountMockResponse({ balance: '0', tokenBalance: '424242' })), - } as unknown as unchained.arbitrumNova.V1Api - - const args = makeChainAdapterArgs({ providers: { http: httpProvider } }) - const adapter = new arbitrumNova.ChainAdapter(args) - - const wallet = await getWallet() - wallet.ethGetAddress = async () => await Promise.resolve(ZERO_ADDRESS) - - const tx = { - wallet, - accountNumber, - to: EOA_ADDRESS, - value, - chainSpecific: makeChainSpecific(), - } as unknown as BuildSendTxInput - - await expect(adapter.buildSendTransaction(tx)).resolves.toStrictEqual({ - txToSign: { - addressNList: toAddressNList(adapter.getBip44Params({ accountNumber: 0 })), - chainId: Number(fromChainId(arbitrumNovaChainId).chainReference), - data: '0x', - gasLimit: toHex(BigInt(gasLimit)), - gasPrice: toHex(BigInt(gasPrice)), - nonce: '0x2', - to: EOA_ADDRESS, - value: toHex(BigInt(value)), - }, - }) - - expect(args.providers.http.getAccount).toHaveBeenCalledTimes(1) - }) - - it("should build a tx with value: '0' without sendMax", async () => { - const httpProvider = { - getAccount: vi - .fn() - .mockResolvedValue( - makeGetAccountMockResponse({ balance: '2500000', tokenBalance: '424242' }), - ), - } as unknown as unchained.arbitrumNova.V1Api - - const args = makeChainAdapterArgs({ providers: { http: httpProvider } }) - const adapter = new arbitrumNova.ChainAdapter(args) - - const tx = { - wallet: await getWallet(), - accountNumber, - to: ZERO_ADDRESS, - value, - chainSpecific: makeChainSpecific({ contractAddress }), - } as unknown as BuildSendTxInput - - await expect(adapter.buildSendTransaction(tx)).resolves.toStrictEqual({ - txToSign: { - addressNList: toAddressNList(adapter.getBip44Params({ accountNumber: 0 })), - chainId: Number(fromChainId(arbitrumNovaChainId).chainReference), - data: '0xa9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000190', - gasLimit: toHex(BigInt(gasLimit)), - gasPrice: toHex(BigInt(gasPrice)), - nonce: '0x2', - to: contractAddress, - value: '0x0', - }, - }) - - expect(args.providers.http.getAccount).toHaveBeenCalledTimes(1) - }) - }) - - describe('getBip44Params', () => { - const adapter = new arbitrumNova.ChainAdapter(makeChainAdapterArgs()) - - it('should return the correct coinType', () => { - const result = adapter.getBip44Params({ accountNumber: 0 }) - expect(result.coinType).toStrictEqual(Number(ASSET_REFERENCE.Arbitrum)) - }) - - it('should respect accountNumber', () => { - const testCases: Bip44Params[] = [ - { - purpose: 44, - coinType: Number(ASSET_REFERENCE.Arbitrum), - accountNumber: 0, - isChange: false, - addressIndex: 0, - }, - { - purpose: 44, - coinType: Number(ASSET_REFERENCE.Arbitrum), - accountNumber: 1, - isChange: false, - addressIndex: 0, - }, - { - purpose: 44, - coinType: Number(ASSET_REFERENCE.Arbitrum), - accountNumber: 2, - isChange: false, - addressIndex: 0, - }, - ] - - testCases.forEach(expected => { - const result = adapter.getBip44Params({ accountNumber: expected.accountNumber }) - expect(result).toStrictEqual(expected) - }) - }) - - it('should throw for negative accountNumber', () => { - expect(() => { - adapter.getBip44Params({ accountNumber: -1 }) - }).toThrow('accountNumber must be >= 0') - }) - }) -}) diff --git a/packages/chain-adapters/src/evm/arbitrumNova/ArbitrumNovaChainAdapter.ts b/packages/chain-adapters/src/evm/arbitrumNova/ArbitrumNovaChainAdapter.ts deleted file mode 100644 index e234db17b1a..00000000000 --- a/packages/chain-adapters/src/evm/arbitrumNova/ArbitrumNovaChainAdapter.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { AssetId } from '@shapeshiftoss/caip' -import { arbitrumNovaAssetId, ASSET_REFERENCE } from '@shapeshiftoss/caip' -import type { RootBip44Params } from '@shapeshiftoss/types' -import { KnownChainIds } from '@shapeshiftoss/types' -import * as unchained from '@shapeshiftoss/unchained-client' - -import { ChainAdapterDisplayName } from '../../types' -import type { ChainAdapterArgs } from '../EvmBaseAdapter' -import { EvmBaseAdapter } from '../EvmBaseAdapter' - -const SUPPORTED_CHAIN_IDS = [KnownChainIds.ArbitrumNovaMainnet] -const DEFAULT_CHAIN_ID = KnownChainIds.ArbitrumNovaMainnet - -export class ChainAdapter extends EvmBaseAdapter { - public static readonly rootBip44Params: RootBip44Params = { - purpose: 44, - coinType: Number(ASSET_REFERENCE.ArbitrumNova), - accountNumber: 0, - } - - constructor(args: ChainAdapterArgs) { - super({ - assetId: arbitrumNovaAssetId, - chainId: DEFAULT_CHAIN_ID, - supportedChainIds: SUPPORTED_CHAIN_IDS, - rootBip44Params: ChainAdapter.rootBip44Params, - parser: new unchained.arbitrumNova.TransactionParser({ - assetId: arbitrumNovaAssetId, - chainId: args.chainId ?? DEFAULT_CHAIN_ID, - rpcUrl: args.rpcUrl, - api: args.providers.http, - }), - ...args, - }) - } - - getDisplayName() { - return ChainAdapterDisplayName.ArbitrumNova - } - - getName() { - const enumIndex = Object.values(ChainAdapterDisplayName).indexOf( - ChainAdapterDisplayName.ArbitrumNova, - ) - return Object.keys(ChainAdapterDisplayName)[enumIndex] - } - - getType(): KnownChainIds.ArbitrumNovaMainnet { - return KnownChainIds.ArbitrumNovaMainnet - } - - getFeeAssetId(): AssetId { - return this.assetId - } -} diff --git a/packages/chain-adapters/src/evm/arbitrumNova/index.ts b/packages/chain-adapters/src/evm/arbitrumNova/index.ts deleted file mode 100644 index d0d96a7640c..00000000000 --- a/packages/chain-adapters/src/evm/arbitrumNova/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './ArbitrumNovaChainAdapter' diff --git a/packages/chain-adapters/src/evm/index.ts b/packages/chain-adapters/src/evm/index.ts index 2130ed88219..0d9c1a416f6 100644 --- a/packages/chain-adapters/src/evm/index.ts +++ b/packages/chain-adapters/src/evm/index.ts @@ -12,7 +12,6 @@ export * as polygon from './polygon' export * as gnosis from './gnosis' export * as bnbsmartchain from './bnbsmartchain' export * as arbitrum from './arbitrum' -export * as arbitrumNova from './arbitrumNova' export * as base from './base' export * as monad from './monad' export * as hyperevm from './hyperevm' diff --git a/packages/chain-adapters/src/types.ts b/packages/chain-adapters/src/types.ts index 1918cb3302b..a21e466fcea 100644 --- a/packages/chain-adapters/src/types.ts +++ b/packages/chain-adapters/src/types.ts @@ -43,7 +43,6 @@ type ChainSpecificAccount = ChainSpecific< [KnownChainIds.PolygonMainnet]: evm.Account [KnownChainIds.GnosisMainnet]: evm.Account [KnownChainIds.ArbitrumMainnet]: evm.Account - [KnownChainIds.ArbitrumNovaMainnet]: evm.Account [KnownChainIds.BaseMainnet]: evm.Account [KnownChainIds.MonadMainnet]: evm.Account [KnownChainIds.HyperEvmMainnet]: evm.Account @@ -95,7 +94,6 @@ type ChainSpecificFeeData = ChainSpecific< [KnownChainIds.PolygonMainnet]: evm.FeeData [KnownChainIds.GnosisMainnet]: evm.FeeData [KnownChainIds.ArbitrumMainnet]: evm.FeeData - [KnownChainIds.ArbitrumNovaMainnet]: evm.FeeData [KnownChainIds.BaseMainnet]: evm.FeeData [KnownChainIds.MonadMainnet]: evm.FeeData [KnownChainIds.HyperEvmMainnet]: evm.FeeData @@ -181,7 +179,6 @@ export type ChainSignTx = { [KnownChainIds.PolygonMainnet]: ETHSignTx [KnownChainIds.GnosisMainnet]: ETHSignTx [KnownChainIds.ArbitrumMainnet]: ETHSignTx - [KnownChainIds.ArbitrumNovaMainnet]: ETHSignTx [KnownChainIds.BaseMainnet]: ETHSignTx [KnownChainIds.MonadMainnet]: ETHSignTx [KnownChainIds.PlasmaMainnet]: ETHSignTx @@ -237,7 +234,6 @@ export type ChainSpecificBuildTxData = ChainSpecific< [KnownChainIds.PolygonMainnet]: evm.BuildTxInput [KnownChainIds.GnosisMainnet]: evm.BuildTxInput [KnownChainIds.ArbitrumMainnet]: evm.BuildTxInput - [KnownChainIds.ArbitrumNovaMainnet]: evm.BuildTxInput [KnownChainIds.BaseMainnet]: evm.BuildTxInput [KnownChainIds.MonadMainnet]: evm.BuildTxInput [KnownChainIds.HyperEvmMainnet]: evm.BuildTxInput @@ -344,7 +340,6 @@ type ChainSpecificGetFeeDataInput = ChainSpecific< [KnownChainIds.PolygonMainnet]: evm.GetFeeDataInput [KnownChainIds.GnosisMainnet]: evm.GetFeeDataInput [KnownChainIds.ArbitrumMainnet]: evm.GetFeeDataInput - [KnownChainIds.ArbitrumNovaMainnet]: evm.GetFeeDataInput [KnownChainIds.BaseMainnet]: evm.GetFeeDataInput [KnownChainIds.MonadMainnet]: evm.GetFeeDataInput [KnownChainIds.HyperEvmMainnet]: evm.GetFeeDataInput @@ -416,7 +411,6 @@ export enum ChainAdapterDisplayName { Polygon = 'Polygon', Gnosis = 'Gnosis', Arbitrum = 'Arbitrum One', - ArbitrumNova = 'Arbitrum Nova', Base = 'Base', Monad = 'Monad', HyperEvm = 'HyperEVM', diff --git a/packages/chain-adapters/src/utils/index.ts b/packages/chain-adapters/src/utils/index.ts index 72464609640..c218b31c2f9 100644 --- a/packages/chain-adapters/src/utils/index.ts +++ b/packages/chain-adapters/src/utils/index.ts @@ -44,7 +44,6 @@ export const chainIdToChainLabel = (chainId: ChainId): string => { case CHAIN_REFERENCE.PolygonMainnet: case CHAIN_REFERENCE.GnosisMainnet: case CHAIN_REFERENCE.ArbitrumMainnet: - case CHAIN_REFERENCE.ArbitrumNovaMainnet: case CHAIN_REFERENCE.BaseMainnet: return 'ethereum' // all evm chains use the same validator (https://github.com/christsim/multicoin-address-validator/blob/master/src/ethereum_validator.js) default: diff --git a/packages/contracts/src/ethersProviderSingleton.ts b/packages/contracts/src/ethersProviderSingleton.ts index 2586bd09e8b..36264439ad6 100644 --- a/packages/contracts/src/ethersProviderSingleton.ts +++ b/packages/contracts/src/ethersProviderSingleton.ts @@ -22,8 +22,6 @@ export const rpcUrlByChainId = (chainId: EvmChainId): string => { return process.env.VITE_ETHEREUM_NODE_URL case KnownChainIds.ArbitrumMainnet: return process.env.VITE_ARBITRUM_NODE_URL - case KnownChainIds.ArbitrumNovaMainnet: - return process.env.VITE_ARBITRUM_NOVA_NODE_URL case KnownChainIds.BaseMainnet: return process.env.VITE_BASE_NODE_URL case KnownChainIds.MonadMainnet: diff --git a/packages/contracts/src/viemClient.ts b/packages/contracts/src/viemClient.ts index c6e2a6d6c98..5bc17255a5f 100644 --- a/packages/contracts/src/viemClient.ts +++ b/packages/contracts/src/viemClient.ts @@ -5,7 +5,6 @@ import type { PublicClient } from 'viem' import { createPublicClient, fallback, http } from 'viem' import { arbitrum, - arbitrumNova, avalanche, base, bsc, @@ -48,13 +47,6 @@ export const viemArbitrumClient = createPublicClient({ transport: fallback([process.env.VITE_ARBITRUM_NODE_URL].filter(Boolean).map(url => http(url))), }) as PublicClient -export const viemArbitrumNovaClient = createPublicClient({ - chain: arbitrumNova, - transport: fallback( - [process.env.VITE_ARBITRUM_NOVA_NODE_URL].filter(Boolean).map(url => http(url)), - ), -}) as PublicClient - export const viemOptimismClient = createPublicClient({ chain: optimism, transport: fallback([process.env.VITE_OPTIMISM_NODE_URL].filter(Boolean).map(url => http(url))), @@ -104,7 +96,6 @@ export const viemClientByChainId: Record = { [KnownChainIds.BnbSmartChainMainnet]: viemBscClient, [KnownChainIds.AvalancheMainnet]: viemAvalancheClient, [KnownChainIds.ArbitrumMainnet]: viemArbitrumClient, - [KnownChainIds.ArbitrumNovaMainnet]: viemArbitrumNovaClient, [KnownChainIds.GnosisMainnet]: viemGnosisClient, [KnownChainIds.PolygonMainnet]: viemPolygonClient, [KnownChainIds.OptimismMainnet]: viemOptimismClient, @@ -120,7 +111,6 @@ export const viemNetworkIdByChainId: Record = { [KnownChainIds.BnbSmartChainMainnet]: bsc.id, [KnownChainIds.AvalancheMainnet]: avalanche.id, [KnownChainIds.ArbitrumMainnet]: arbitrum.id, - [KnownChainIds.ArbitrumNovaMainnet]: arbitrumNova.id, [KnownChainIds.GnosisMainnet]: gnosis.id, [KnownChainIds.PolygonMainnet]: polygon.id, [KnownChainIds.OptimismMainnet]: optimism.id, @@ -136,7 +126,6 @@ export const viemClientByNetworkId: Record = { [bsc.id]: viemBscClient, [avalanche.id]: viemAvalancheClient, [arbitrum.id]: viemArbitrumClient, - [arbitrumNova.id]: viemArbitrumNovaClient, [gnosis.id]: viemGnosisClient, [polygon.id]: viemPolygonClient, [optimism.id]: viemOptimismClient, diff --git a/packages/public-api/src/swapperDeps.ts b/packages/public-api/src/swapperDeps.ts index 3545efe0f6a..95f4e9aa50e 100644 --- a/packages/public-api/src/swapperDeps.ts +++ b/packages/public-api/src/swapperDeps.ts @@ -50,8 +50,6 @@ const getEvmUnchainedUrls = (): Record => { [KnownChainIds.AvalancheMainnet]: config.VITE_UNCHAINED_AVALANCHE_HTTP_URL, [KnownChainIds.BnbSmartChainMainnet]: config.VITE_UNCHAINED_BNBSMARTCHAIN_HTTP_URL, [KnownChainIds.BaseMainnet]: config.VITE_UNCHAINED_BASE_HTTP_URL, - [KnownChainIds.ArbitrumNovaMainnet]: - process.env.UNCHAINED_ARBITRUM_NOVA_HTTP_URL || 'https://api.arbitrum-nova.shapeshift.com', } } @@ -129,8 +127,6 @@ const createMinimalEvmAdapter = (chainId: ChainId) => { return 'eip155:56/slip44:714' case KnownChainIds.BaseMainnet: return 'eip155:8453/slip44:60' - case KnownChainIds.ArbitrumNovaMainnet: - return 'eip155:42170/slip44:60' default: return `${chainId}/slip44:60` } diff --git a/packages/swap-widget/README.md b/packages/swap-widget/README.md index c6ca23aba2c..4c0ae3b5118 100644 --- a/packages/swap-widget/README.md +++ b/packages/swap-widget/README.md @@ -403,7 +403,6 @@ import { const EVM_CHAIN_IDS = { ethereum: "eip155:1", arbitrum: "eip155:42161", - arbitrumNova: "eip155:42170", optimism: "eip155:10", polygon: "eip155:137", base: "eip155:8453", @@ -456,7 +455,6 @@ import { | ----------------- | ----------------------------------------- | ------ | | Ethereum | `eip155:1` | EVM | | Arbitrum One | `eip155:42161` | EVM | -| Arbitrum Nova | `eip155:42170` | EVM | | Optimism | `eip155:10` | EVM | | Polygon | `eip155:137` | EVM | | Base | `eip155:8453` | EVM | diff --git a/packages/swap-widget/src/components/SwapWidget.tsx b/packages/swap-widget/src/components/SwapWidget.tsx index a4ce5b5d941..089b3194ace 100644 --- a/packages/swap-widget/src/components/SwapWidget.tsx +++ b/packages/swap-widget/src/components/SwapWidget.tsx @@ -8,7 +8,6 @@ import type { Chain, WalletClient } from 'viem' import { createPublicClient, encodeFunctionData, http } from 'viem' import { arbitrum, - arbitrumNova, avalanche, base, bsc, @@ -49,7 +48,6 @@ const VIEM_CHAINS_BY_ID: Record = { 8453: base, 9745: plasma, 42161: arbitrum, - 42170: arbitrumNova, 43114: avalanche, 747474: katana, } diff --git a/packages/swap-widget/src/config/appkit.ts b/packages/swap-widget/src/config/appkit.ts index c3515526d38..b69e007878f 100644 --- a/packages/swap-widget/src/config/appkit.ts +++ b/packages/swap-widget/src/config/appkit.ts @@ -1,6 +1,5 @@ import { arbitrum, - arbitrumNova, avalanche, base, bitcoin, @@ -25,7 +24,6 @@ export const EVM_NETWORKS = [ mainnet, polygon, arbitrum, - arbitrumNova, optimism, base, avalanche, diff --git a/packages/swap-widget/src/config/wagmi.ts b/packages/swap-widget/src/config/wagmi.ts index 9493f81c597..d8ffb5c949f 100644 --- a/packages/swap-widget/src/config/wagmi.ts +++ b/packages/swap-widget/src/config/wagmi.ts @@ -1,6 +1,5 @@ import { arbitrum, - arbitrumNova, avalanche, base, bsc, @@ -15,7 +14,6 @@ export const SUPPORTED_CHAINS = [ mainnet, polygon, arbitrum, - arbitrumNova, optimism, base, avalanche, diff --git a/packages/swap-widget/src/constants/chains.ts b/packages/swap-widget/src/constants/chains.ts index b08eee790d9..d41d66db074 100644 --- a/packages/swap-widget/src/constants/chains.ts +++ b/packages/swap-widget/src/constants/chains.ts @@ -1,7 +1,6 @@ import type { Asset } from '@shapeshiftoss/types' import { arbitrum, - arbitrumNova, atom, avax, base, @@ -28,7 +27,6 @@ import type { ChainId } from '../types' const BASE_ASSETS_BY_CHAIN_ID: Record = { [ethereum.chainId]: ethereum, [arbitrum.chainId]: arbitrum, - [arbitrumNova.chainId]: arbitrumNova, [optimism.chainId]: optimism, [polygon.chainId]: polygon, [base.chainId]: base, diff --git a/packages/swap-widget/src/types/index.ts b/packages/swap-widget/src/types/index.ts index 4ae89871f8d..d74df69293e 100644 --- a/packages/swap-widget/src/types/index.ts +++ b/packages/swap-widget/src/types/index.ts @@ -3,7 +3,6 @@ import type { Provider as SolanaProvider } from '@reown/appkit-adapter-solana/re import type { AssetId, ChainId } from '@shapeshiftoss/caip' import { arbitrumChainId, - arbitrumNovaChainId, avalancheChainId, baseChainId, bchChainId, @@ -201,7 +200,6 @@ export const EVM_CHAIN_IDS = { avalanche: avalancheChainId, bsc: bscChainId, gnosis: gnosisChainId, - arbitrumNova: arbitrumNovaChainId, monad: monadChainId, hyperEvm: hyperEvmChainId, plasma: plasmaChainId, diff --git a/packages/swapper/src/swappers/utils/filterBuyAssetsBySellAssetId/filterBuyAssetsBySellAssetId.ts b/packages/swapper/src/swappers/utils/filterBuyAssetsBySellAssetId/filterBuyAssetsBySellAssetId.ts index 113ff7af86b..7639b96cd31 100644 --- a/packages/swapper/src/swappers/utils/filterBuyAssetsBySellAssetId/filterBuyAssetsBySellAssetId.ts +++ b/packages/swapper/src/swappers/utils/filterBuyAssetsBySellAssetId/filterBuyAssetsBySellAssetId.ts @@ -1,5 +1,4 @@ import type { ChainId } from '@shapeshiftoss/caip' -import { arbitrumNovaChainId } from '@shapeshiftoss/caip' import { isEvmChainId } from '@shapeshiftoss/chain-adapters' import type { Asset } from '@shapeshiftoss/types' @@ -15,12 +14,8 @@ const _filterEvmBuyAssetsBySellAssetId = ( if (!isEvmChainId(sellAsset.chainId)) return [] return assets.filter(buyAsset => { - // evm only AND chain id predicate with no arbitrum nova support for any swappers - return ( - isEvmChainId(buyAsset.chainId) && - chainIdPredicate(buyAsset.chainId, sellAsset.chainId) && - buyAsset.chainId !== arbitrumNovaChainId - ) + // evm only AND chain id predicate + return isEvmChainId(buyAsset.chainId) && chainIdPredicate(buyAsset.chainId, sellAsset.chainId) }) } diff --git a/packages/types/src/base.ts b/packages/types/src/base.ts index 1a99e60f0a6..0da5b2294ca 100644 --- a/packages/types/src/base.ts +++ b/packages/types/src/base.ts @@ -21,7 +21,6 @@ export enum KnownChainIds { PolygonMainnet = 'eip155:137', GnosisMainnet = 'eip155:100', ArbitrumMainnet = 'eip155:42161', - ArbitrumNovaMainnet = 'eip155:42170', BaseMainnet = 'eip155:8453', MonadMainnet = 'eip155:143', HyperEvmMainnet = 'eip155:999', @@ -51,7 +50,6 @@ export type EvmChainId = | KnownChainIds.PolygonMainnet | KnownChainIds.GnosisMainnet | KnownChainIds.ArbitrumMainnet - | KnownChainIds.ArbitrumNovaMainnet | KnownChainIds.BaseMainnet | KnownChainIds.MonadMainnet | KnownChainIds.HyperEvmMainnet diff --git a/packages/unchained-client/openapitools.json b/packages/unchained-client/openapitools.json index 8700c491e83..9f9aa6f486c 100644 --- a/packages/unchained-client/openapitools.json +++ b/packages/unchained-client/openapitools.json @@ -58,7 +58,7 @@ } }, "cosmos": { - "inputSpec": "https://cdn.jsdelivr.net/gh/shapeshift/unchained@cosmos/go/coinstacks/cosmos/api/swagger.json", + "inputSpec": "https://raw.githubusercontent.com/shapeshift/unchained/develop/go/coinstacks/cosmos/api/swagger.json", "generatorName": "typescript-fetch", "output": "#{cwd}/src/generated/cosmos", "enablePostProcessFile": true, @@ -161,19 +161,6 @@ "useSingleRequestParameter": true } }, - "arbitrumNova": { - "inputSpec": "https://raw.githubusercontent.com/shapeshift/unchained/develop/node/coinstacks/arbitrum-nova/api/src/swagger.json", - "generatorName": "typescript-fetch", - "output": "#{cwd}/src/generated/arbitrumNova", - "enablePostProcessFile": true, - "reservedWordsMappings": { - "in": "in" - }, - "additionalProperties": { - "supportsES6": "true", - "useSingleRequestParameter": true - } - }, "base": { "inputSpec": "https://raw.githubusercontent.com/shapeshift/unchained/develop/node/coinstacks/base/api/src/swagger.json", "generatorName": "typescript-fetch", @@ -227,7 +214,7 @@ } }, "mayachain": { - "inputSpec": "https://raw.githubusercontent.com/shapeshift/unchained/refs/heads/mayachain/go/coinstacks/mayachain/api/swagger.json", + "inputSpec": "https://raw.githubusercontent.com/shapeshift/unchained/develop/go/coinstacks/mayachain/api/swagger.json", "generatorName": "typescript-fetch", "output": "#{cwd}/src/generated/mayachain", "enablePostProcessFile": true, diff --git a/packages/unchained-client/src/evm/arbitrumNova/index.ts b/packages/unchained-client/src/evm/arbitrumNova/index.ts deleted file mode 100644 index 721d544d9eb..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from '../../generated/arbitrumNova' -export * from './parser' diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/arbitrumNova.test.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/arbitrumNova.test.ts deleted file mode 100644 index b4ce83b128e..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/arbitrumNova.test.ts +++ /dev/null @@ -1,741 +0,0 @@ -import { arbitrumNovaAssetId, arbitrumNovaChainId } from '@shapeshiftoss/caip' -import { describe, expect, it, vi } from 'vitest' - -import { TransferType, TxStatus } from '../../../../types' -import type { ParsedTx } from '../../../parser' -import { V1Api } from '../../index' -import { TransactionParser } from '../index' -import erc20Approve from './mockData/erc20Approve' -import erc721 from './mockData/erc721' -import erc1155 from './mockData/erc1155' -import ethSelfSend from './mockData/ethSelfSend' -import ethStandard from './mockData/ethStandard' -import { usdcToken } from './mockData/tokens' -import tokenSelfSend from './mockData/tokenSelfSend' -import tokenStandard from './mockData/tokenStandard' - -const mockedApi = vi.mocked(new V1Api()) - -const txParser = new TransactionParser({ - rpcUrl: '', - chainId: arbitrumNovaChainId, - assetId: arbitrumNovaAssetId, - api: mockedApi, -}) - -describe('parseTx', () => { - describe('standard', () => { - describe('eth', () => { - it('should be able to parse eth mempool send', async () => { - const { txMempool } = ethStandard - const address = '0xD056D4B6FCdcEa982F7E70F085Bbb1f9AbcD19f9' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [ - { - type: TransferType.Send, - to: '0x80C67432656d59144cEFf962E8fAF8926599bCF8', - from: address, - assetId: arbitrumNovaAssetId, - totalValue: '202000000000009001', - components: [{ value: '202000000000009001' }], - }, - ], - } - - const actual = await txParser.parse(txMempool, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse eth send', async () => { - const { tx } = ethStandard - const address = '0xD056D4B6FCdcEa982F7E70F085Bbb1f9AbcD19f9' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - fee: { - assetId: arbitrumNovaAssetId, - value: '2123600000000', - }, - transfers: [ - { - type: TransferType.Send, - to: '0x80C67432656d59144cEFf962E8fAF8926599bCF8', - from: address, - assetId: arbitrumNovaAssetId, - totalValue: '202000000000009001', - components: [{ value: '202000000000009001' }], - }, - ], - } - - const actual = await txParser.parse(tx, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse eth mempool receive', async () => { - const { txMempool } = ethStandard - const address = '0x80C67432656d59144cEFf962E8fAF8926599bCF8' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [ - { - type: TransferType.Receive, - to: address, - from: '0xD056D4B6FCdcEa982F7E70F085Bbb1f9AbcD19f9', - assetId: arbitrumNovaAssetId, - totalValue: '202000000000009001', - components: [{ value: '202000000000009001' }], - }, - ], - } - - const actual = await txParser.parse(txMempool, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse eth receive', async () => { - const { tx } = ethStandard - const address = '0x80C67432656d59144cEFf962E8fAF8926599bCF8' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - transfers: [ - { - type: TransferType.Receive, - to: address, - from: '0xD056D4B6FCdcEa982F7E70F085Bbb1f9AbcD19f9', - assetId: arbitrumNovaAssetId, - totalValue: '202000000000009001', - components: [{ value: '202000000000009001' }], - }, - ], - } - - const actual = await txParser.parse(tx, address) - - expect(expected).toEqual(actual) - }) - }) - - describe('token', () => { - it('should be able to parse token mempool send', async () => { - const { txMempool } = tokenStandard - const address = '0x41d3D33156aE7c62c094AAe2995003aE63f587B3' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [], - } - - const actual = await txParser.parse(txMempool, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse token send', async () => { - const { tx } = tokenStandard - const address = '0x41d3D33156aE7c62c094AAe2995003aE63f587B3' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - fee: { - assetId: arbitrumNovaAssetId, - value: '831760000000', - }, - transfers: [ - { - type: TransferType.Send, - from: address, - to: '0x8fA69f067D23ED3775ecEe954fB3B000b4D77851', - assetId: 'eip155:42170/erc20:0x750ba8b76187092b0d1e87e28daaf484d1b5273b', - totalValue: '140058', - components: [{ value: '140058' }], - token: usdcToken, - }, - ], - } - - const actual = await txParser.parse(tx, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse token mempool receive', async () => { - const { txMempool } = tokenStandard - const address = '0x8fA69f067D23ED3775ecEe954fB3B000b4D77851' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [], - } - - const actual = await txParser.parse(txMempool, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse token receive', async () => { - const { tx } = tokenStandard - const address = '0x8fA69f067D23ED3775ecEe954fB3B000b4D77851' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - transfers: [ - { - type: TransferType.Receive, - from: '0x41d3D33156aE7c62c094AAe2995003aE63f587B3', - to: address, - assetId: 'eip155:42170/erc20:0x750ba8b76187092b0d1e87e28daaf484d1b5273b', - totalValue: '140058', - components: [{ value: '140058' }], - token: usdcToken, - }, - ], - } - - const actual = await txParser.parse(tx, address) - - expect(expected).toEqual(actual) - }) - }) - - describe('erc721', () => { - it('should be able to parse mempool send', async () => { - const { txMempool } = erc721 - const address = '0xe2c62f256EF9d6734b6C81b269ddDA33f09366Bd' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [ - { - type: TransferType.Send, - to: '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7', - from: address, - assetId: arbitrumNovaAssetId, - totalValue: '226805763158466', - components: [{ value: '226805763158466' }], - }, - ], - } - - const actual = await txParser.parse(txMempool, address) - - expect(actual).toEqual(expected) - }) - - it('should be able to parse send', async () => { - const { tx } = erc721 - const address = '0xe2c62f256EF9d6734b6C81b269ddDA33f09366Bd' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - fee: { - assetId: arbitrumNovaAssetId, - value: '3244730000000', - }, - transfers: [ - { - type: TransferType.Send, - to: '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7', - from: address, - assetId: arbitrumNovaAssetId, - totalValue: '226805763158466', - components: [{ value: '226805763158466' }], - }, - { - type: TransferType.Send, - to: '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7', - from: address, - assetId: 'eip155:42170/erc721:0x5188368a92b49f30f4cf9bef64635bcf8459c7a7/9550018', - totalValue: '1', - components: [{ value: '1' }], - id: '9550018', - token: { - contract: '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7', - decimals: 18, - name: 'ZeriusONFT Minis', - symbol: 'ZRSM', - }, - }, - ], - } - - const actual = await txParser.parse(tx, address) - - expect(actual).toEqual(expected) - }) - - it('should be able to parse mempool receive', async () => { - const { txMempool } = erc721 - const address = '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [ - { - type: TransferType.Receive, - to: address, - from: '0xe2c62f256EF9d6734b6C81b269ddDA33f09366Bd', - assetId: arbitrumNovaAssetId, - totalValue: '226805763158466', - components: [{ value: '226805763158466' }], - }, - ], - } - - const actual = await txParser.parse(txMempool, address) - - expect(actual).toEqual(expected) - }) - - it('should be able to parse receive', async () => { - const { tx } = erc721 - const address = '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - transfers: [ - { - type: TransferType.Receive, - to: address, - from: '0xe2c62f256EF9d6734b6C81b269ddDA33f09366Bd', - assetId: arbitrumNovaAssetId, - totalValue: '226805763158466', - components: [{ value: '226805763158466' }], - }, - { - type: TransferType.Receive, - to: address, - from: '0xe2c62f256EF9d6734b6C81b269ddDA33f09366Bd', - assetId: 'eip155:42170/erc721:0x5188368a92b49f30f4cf9bef64635bcf8459c7a7/9550018', - totalValue: '1', - components: [{ value: '1' }], - id: '9550018', - token: { - contract: '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7', - decimals: 18, - name: 'ZeriusONFT Minis', - symbol: 'ZRSM', - }, - }, - { - type: TransferType.Send, - to: '0x4EE2F9B7cf3A68966c370F3eb2C16613d3235245', - from: address, - assetId: arbitrumNovaAssetId, - totalValue: '170805763158466', - components: [{ value: '170805763158466' }], - }, - ], - } - - const actual = await txParser.parse(tx, address) - - expect(actual).toEqual(expected) - }) - }) - - describe('erc1155', () => { - it('should be able to parse mempool send', async () => { - const { txMempool } = erc1155 - const address = '0x0000000000000000000000000000000000000000' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [], - } - - const actual = await txParser.parse(txMempool, address) - - expect(actual).toEqual(expected) - }) - - it('should be able to parse send', async () => { - const { tx } = erc1155 - const address = '0x0000000000000000000000000000000000000000' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - transfers: [ - { - type: TransferType.Send, - to: '0xB3d2AeEB22c927Bfc29Cbd6885134a4c3D76A705', - from: address, - assetId: 'eip155:42170/erc1155:0x3c5d88ba90e35bb772a5c66d36613f6801b56428/1', - totalValue: '20', - components: [{ value: '20' }], - id: '1', - token: { - contract: '0x3C5D88Ba90e35Bb772A5c66d36613F6801b56428', - decimals: 18, - name: '', - symbol: '', - }, - }, - ], - } - - const actual = await txParser.parse(tx, address) - - expect(actual).toEqual(expected) - }) - - it('should be able to parse mempool receive', async () => { - const { txMempool } = erc1155 - const address = '0xDddDA6f358EACeB800C82D41CcC53676b5CC6F6c' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [], - } - - const actual = await txParser.parse(txMempool, address) - - expect(actual).toEqual(expected) - }) - - it('should be able to parse receive', async () => { - const { tx } = erc1155 - const address = '0xB3d2AeEB22c927Bfc29Cbd6885134a4c3D76A705' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - transfers: [ - { - type: TransferType.Receive, - to: address, - from: '0x0000000000000000000000000000000000000000', - assetId: 'eip155:42170/erc1155:0x3c5d88ba90e35bb772a5c66d36613f6801b56428/1', - totalValue: '20', - components: [{ value: '20' }], - id: '1', - token: { - contract: '0x3C5D88Ba90e35Bb772A5c66d36613F6801b56428', - decimals: 18, - name: '', - symbol: '', - }, - }, - ], - } - - const actual = await txParser.parse(tx, address) - - expect(actual).toEqual(expected) - }) - }) - }) - - describe('self send', () => { - it('should be able to parse eth mempool', async () => { - const { txMempool } = ethSelfSend - const address = '0xD056D4B6FCdcEa982F7E70F085Bbb1f9AbcD19f9' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [ - { - type: TransferType.Send, - to: address, - from: address, - assetId: arbitrumNovaAssetId, - totalValue: '202000000000009001', - components: [{ value: '202000000000009001' }], - }, - { - type: TransferType.Receive, - to: address, - from: address, - assetId: arbitrumNovaAssetId, - totalValue: '202000000000009001', - components: [{ value: '202000000000009001' }], - }, - ], - } - - const actual = await txParser.parse(txMempool, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse eth', async () => { - const { tx } = ethSelfSend - const address = '0xD056D4B6FCdcEa982F7E70F085Bbb1f9AbcD19f9' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - fee: { - assetId: arbitrumNovaAssetId, - value: '2123600000000', - }, - transfers: [ - { - type: TransferType.Send, - to: address, - from: address, - assetId: arbitrumNovaAssetId, - totalValue: '202000000000009001', - components: [{ value: '202000000000009001' }], - }, - { - type: TransferType.Receive, - to: address, - from: address, - assetId: arbitrumNovaAssetId, - totalValue: '202000000000009001', - components: [{ value: '202000000000009001' }], - }, - ], - } - - const actual = await txParser.parse(tx, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse token mempool', async () => { - const { txMempool } = tokenSelfSend - const address = '0x41d3D33156aE7c62c094AAe2995003aE63f587B3' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [], - } - - const actual = await txParser.parse(txMempool, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse token', async () => { - const { tx } = tokenSelfSend - const address = '0x41d3D33156aE7c62c094AAe2995003aE63f587B3' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - fee: { - assetId: arbitrumNovaAssetId, - value: '831760000000', - }, - transfers: [ - { - type: TransferType.Send, - from: address, - to: address, - assetId: 'eip155:42170/erc20:0x750ba8b76187092b0d1e87e28daaf484d1b5273b', - totalValue: '140058', - components: [{ value: '140058' }], - token: usdcToken, - }, - { - type: TransferType.Receive, - from: address, - to: address, - assetId: 'eip155:42170/erc20:0x750ba8b76187092b0d1e87e28daaf484d1b5273b', - totalValue: '140058', - components: [{ value: '140058' }], - token: usdcToken, - }, - ], - } - - const actual = await txParser.parse(tx, address) - expect(expected).toEqual(actual) - }) - }) - - describe('erc20', () => { - it('should be able to parse approve mempool', async () => { - const { txMempool } = erc20Approve - const address = '0x7CfF1B3eD7BAc3C9d74C33c88B33aD23ef560913' - - const expected: ParsedTx = { - txid: txMempool.txid, - blockHeight: txMempool.blockHeight, - blockTime: txMempool.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: txMempool.confirmations, - status: TxStatus.Pending, - transfers: [], - data: { - assetId: 'eip155:42170/erc20:0x750ba8b76187092b0d1e87e28daaf484d1b5273b', - method: 'approve', - parser: 'erc20', - value: '4294967295000000000000000000', - }, - } - - const actual = await txParser.parse(txMempool, address) - - expect(expected).toEqual(actual) - }) - - it('should be able to parse approve', async () => { - const { tx } = erc20Approve - const address = '0x7CfF1B3eD7BAc3C9d74C33c88B33aD23ef560913' - - const expected: ParsedTx = { - txid: tx.txid, - blockHash: tx.blockHash, - blockHeight: tx.blockHeight, - blockTime: tx.timestamp, - address, - chainId: arbitrumNovaChainId, - confirmations: tx.confirmations, - status: TxStatus.Confirmed, - fee: { - assetId: arbitrumNovaAssetId, - value: '626630000000', - }, - transfers: [], - data: { - assetId: 'eip155:42170/erc20:0x750ba8b76187092b0d1e87e28daaf484d1b5273b', - method: 'approve', - parser: 'erc20', - value: '4294967295000000000000000000', - }, - } - - const actual = await txParser.parse(tx, address) - - expect(expected).toEqual(actual) - }) - }) -}) diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc1155.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc1155.ts deleted file mode 100644 index 4e65032b510..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc1155.ts +++ /dev/null @@ -1,39 +0,0 @@ -import type { Tx } from '../../../../../evm' -import { mempoolMock } from './mempoolMock' - -const erc1155: Tx = { - txid: '0xc76c9eba4faa04438d43edaf81004ca14bfed36d7e1c26171dd53fcb52e938ce', - blockHash: '0xc2fb1d46fa6340525895f81907f4379ac8f18c53c1577ba3f398c72de5ff7ed7', - blockHeight: 27648405, - timestamp: 1698952055, - status: 1, - from: '0x981eC398555e4683b89dB57C311D787E0a3a80E0', - to: '0x3C5D88Ba90e35Bb772A5c66d36613F6801b56428', - confirmations: 1210, - value: '0', - fee: '118323600000000', - gasLimit: '83027', - gasUsed: '78360', - gasPrice: '1510000000', - inputData: - '0xaaf0d1ad000000000000000000000000b3d2aeeb22c927bfc29cbd6885134a4c3d76a7050000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000019c', - tokenTransfers: [ - { - contract: '0x3C5D88Ba90e35Bb772A5c66d36613F6801b56428', - decimals: 18, - name: '', - symbol: '', - type: 'ERC1155', - from: '0x0000000000000000000000000000000000000000', - to: '0xB3d2AeEB22c927Bfc29Cbd6885134a4c3D76A705', - value: '20', - id: '1', - }, - ], - internalTxs: [], -} - -export default { - tx: erc1155, - txMempool: mempoolMock(erc1155), -} diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc20Approve.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc20Approve.ts deleted file mode 100644 index 49dc8a14d7e..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc20Approve.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { Tx } from '../../../../../evm' -import { mempoolMock } from './mempoolMock' - -const erc20Approve: Tx = { - txid: '0x0656edff12f4dd17c2bcc29706571b877f105bcfa062e6d70474f8f4d3fc7e3b', - blockHash: '0xa221da0db6a9f920894d2a6773f5e9957c0fce306acea0351f7e776d8dde3119', - blockHeight: 17833594, - timestamp: 1691904756, - status: 1, - from: '0x7CfF1B3eD7BAc3C9d74C33c88B33aD23ef560913', - to: '0x750ba8b76187092B0D1E87E28daaf484d1b5273b', - confirmations: 9812297, - value: '0', - fee: '626630000000', - gasLimit: '400000', - gasUsed: '62663', - gasPrice: '10000000', - inputData: - '0x095ea7b3000000000000000000000000a135b6189d2e073dfbc33c30c86bb4ecea4e2ee500000000000000000000000000000000000000000de0b6b39983494c589c0000', - internalTxs: [], -} - -export default { - tx: erc20Approve, - txMempool: mempoolMock(erc20Approve), -} diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc721.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc721.ts deleted file mode 100644 index 48d12fd0dc2..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/erc721.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { Tx } from '../../../../../evm' -import { mempoolMock } from './mempoolMock' - -const erc721: Tx = { - txid: '0x2a559770fac007a478680cba224768dc2f1bfc3dbb0a8347b15df4fd5e574720', - blockHash: '0xc087414ac7088ca3bbf5b81888904922468847f626c2ed512ee111df2467e4bf', - blockHeight: 27644053, - timestamp: 1698949412, - status: 1, - from: '0xe2c62f256EF9d6734b6C81b269ddDA33f09366Bd', - to: '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7', - confirmations: 3704, - value: '226805763158466', - fee: '3244730000000', - gasLimit: '344836', - gasUsed: '324473', - gasPrice: '10000000', - inputData: - '0x51905636000000000000000000000000e2c62f256ef9d6734b6c81b269ddda33f09366bd000000000000000000000000000000000000000000000000000000000000009f00000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000091b8c2000000000000000000000000e2c62f256ef9d6734b6c81b269ddda33f09366bd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000014e2c62f256ef9d6734b6c81b269ddda33f09366bd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000220001000000000000000000000000000000000000000000000000000000000003d090000000000000000000000000000000000000000000000000000000000000', - tokenTransfers: [ - { - contract: '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7', - decimals: 18, - name: 'ZeriusONFT Minis', - symbol: 'ZRSM', - type: 'ERC721', - from: '0xe2c62f256EF9d6734b6C81b269ddDA33f09366Bd', - to: '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7', - value: '1', - id: '9550018', - }, - ], - internalTxs: [ - { - from: '0x5188368a92B49F30f4Cf9bEF64635bCf8459c7A7', - to: '0x4EE2F9B7cf3A68966c370F3eb2C16613d3235245', - value: '170805763158466', - }, - { - from: '0x4EE2F9B7cf3A68966c370F3eb2C16613d3235245', - to: '0x2D61DCDD36F10b22176E0433B86F74567d529aAa', - value: '170805763158466', - }, - ], -} - -export default { - tx: erc721, - txMempool: mempoolMock(erc721), -} diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/ethSelfSend.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/ethSelfSend.ts deleted file mode 100644 index c207ec20381..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/ethSelfSend.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { Tx } from '../../../../../evm' -import { mempoolMock } from './mempoolMock' - -const ethSelfSend: Tx = { - txid: '0x96c1a931795baa2cb8b801ed1890d33508f4964ebad56dc1b45bd84d3eae0516', - blockHash: '0x3848e40f67abf1de1b65c3094ae443764b046c47a50fbe51455406a9e5a6d2c0', - blockHeight: 512210, - timestamp: 1664786013, - status: 1, - from: '0xD056D4B6FCdcEa982F7E70F085Bbb1f9AbcD19f9', - to: '0xD056D4B6FCdcEa982F7E70F085Bbb1f9AbcD19f9', - confirmations: 27132739, - value: '202000000000009001', - fee: '2123600000000', - gasLimit: '21326', - gasUsed: '21236', - gasPrice: '100000000', -} - -export default { - tx: ethSelfSend, - txMempool: mempoolMock(ethSelfSend), -} diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/ethStandard.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/ethStandard.ts deleted file mode 100644 index 070de4e781f..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/ethStandard.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { Tx } from '../../../../../evm' -import { mempoolMock } from './mempoolMock' - -const ethStandard: Tx = { - txid: '0x96c1a931795baa2cb8b801ed1890d33508f4964ebad56dc1b45bd84d3eae0516', - blockHash: '0x3848e40f67abf1de1b65c3094ae443764b046c47a50fbe51455406a9e5a6d2c0', - blockHeight: 512210, - timestamp: 1664786013, - status: 1, - from: '0xD056D4B6FCdcEa982F7E70F085Bbb1f9AbcD19f9', - to: '0x80C67432656d59144cEFf962E8fAF8926599bCF8', - confirmations: 27132739, - value: '202000000000009001', - fee: '2123600000000', - gasLimit: '21326', - gasUsed: '21236', - gasPrice: '100000000', -} - -export default { - tx: ethStandard, - txMempool: mempoolMock(ethStandard), -} diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/mempoolMock.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/mempoolMock.ts deleted file mode 100644 index 1c12b4c371e..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/mempoolMock.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { Tx } from '../../../../../evm' - -export const mempoolMock = (tx: Tx, tokenTransfers = false) => { - const mempoolSpecific = { - blockHeight: -1, - status: -1, - gasUsed: undefined, - confirmations: 0, - fee: '0', - blockHash: undefined, - tokenTransfers: tokenTransfers ? tx.tokenTransfers : [], - internalTxs: undefined, - } - return Object.assign({}, tx, mempoolSpecific) -} diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokenSelfSend.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokenSelfSend.ts deleted file mode 100644 index b5d34fd3347..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokenSelfSend.ts +++ /dev/null @@ -1,38 +0,0 @@ -import type { Tx } from '../../../../../evm' -import { mempoolMock } from './mempoolMock' - -export const tokenStandard: Tx = { - txid: '0x65f9162ac5b6f5d74afb44b0318555b67755263849807945a68c20868c9b7fbe', - blockHash: '0xa4eaadb1a77dfdf6473ac575163a33de871853e13b6cc803931bca6ceb6e7147', - blockHeight: 27645077, - timestamp: 1698950012, - status: 1, - from: '0x41d3D33156aE7c62c094AAe2995003aE63f587B3', - to: '0x750ba8b76187092B0D1E87E28daaf484d1b5273b', - confirmations: 1375, - value: '0', - fee: '831760000000', - gasLimit: '250000', - gasUsed: '83176', - gasPrice: '10000000', - inputData: - '0xa9059cbb0000000000000000000000008fa69f067d23ed3775ecee954fb3b000b4d77851000000000000000000000000000000000000000000000000000000000002231a', - tokenTransfers: [ - { - contract: '0x750ba8b76187092B0D1E87E28daaf484d1b5273b', - decimals: 6, - name: 'USD Coin', - symbol: 'USDC', - type: 'ERC20', - from: '0x41d3D33156aE7c62c094AAe2995003aE63f587B3', - to: '0x41d3D33156aE7c62c094AAe2995003aE63f587B3', - value: '140058', - }, - ], - internalTxs: [], -} - -export default { - tx: tokenStandard, - txMempool: mempoolMock(tokenStandard), -} diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokenStandard.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokenStandard.ts deleted file mode 100644 index 84e0cd8b48e..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokenStandard.ts +++ /dev/null @@ -1,38 +0,0 @@ -import type { Tx } from '../../../../../evm' -import { mempoolMock } from './mempoolMock' - -export const tokenStandard: Tx = { - txid: '0x65f9162ac5b6f5d74afb44b0318555b67755263849807945a68c20868c9b7fbe', - blockHash: '0xa4eaadb1a77dfdf6473ac575163a33de871853e13b6cc803931bca6ceb6e7147', - blockHeight: 27645077, - timestamp: 1698950012, - status: 1, - from: '0x41d3D33156aE7c62c094AAe2995003aE63f587B3', - to: '0x750ba8b76187092B0D1E87E28daaf484d1b5273b', - confirmations: 1375, - value: '0', - fee: '831760000000', - gasLimit: '250000', - gasUsed: '83176', - gasPrice: '10000000', - inputData: - '0xa9059cbb0000000000000000000000008fa69f067d23ed3775ecee954fb3b000b4d77851000000000000000000000000000000000000000000000000000000000002231a', - tokenTransfers: [ - { - contract: '0x750ba8b76187092B0D1E87E28daaf484d1b5273b', - decimals: 6, - name: 'USD Coin', - symbol: 'USDC', - type: 'ERC20', - from: '0x41d3D33156aE7c62c094AAe2995003aE63f587B3', - to: '0x8fA69f067D23ED3775ecEe954fB3B000b4D77851', - value: '140058', - }, - ], - internalTxs: [], -} - -export default { - tx: tokenStandard, - txMempool: mempoolMock(tokenStandard), -} diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokens.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokens.ts deleted file mode 100644 index 34a08ddd676..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/__tests__/mockData/tokens.ts +++ /dev/null @@ -1,8 +0,0 @@ -import type { Token } from '../../../../../types' - -export const usdcToken: Token = { - contract: '0x750ba8b76187092B0D1E87E28daaf484d1b5273b', - decimals: 6, - name: 'USD Coin', - symbol: 'USDC', -} diff --git a/packages/unchained-client/src/evm/arbitrumNova/parser/index.ts b/packages/unchained-client/src/evm/arbitrumNova/parser/index.ts deleted file mode 100644 index 72051a14d93..00000000000 --- a/packages/unchained-client/src/evm/arbitrumNova/parser/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { Tx } from '../../../generated/arbitrumNova' -import type { BaseTransactionParserArgs } from '../../parser' -import { BaseTransactionParser } from '../../parser' -import * as erc20 from '../../parser/erc20' - -export class TransactionParser extends BaseTransactionParser { - constructor(args: BaseTransactionParserArgs) { - super(args) - - this.registerParsers([new erc20.Parser({ chainId: this.chainId, provider: this.provider })]) - } -} diff --git a/packages/unchained-client/src/evm/index.ts b/packages/unchained-client/src/evm/index.ts index 7f89c0112bf..8fa0c0b4f82 100644 --- a/packages/unchained-client/src/evm/index.ts +++ b/packages/unchained-client/src/evm/index.ts @@ -1,5 +1,4 @@ import * as arbitrum from './arbitrum' -import * as arbitrumNova from './arbitrumNova' import * as avalanche from './avalanche' import * as base from './base' import * as bnbsmartchain from './bnbsmartchain' @@ -18,19 +17,8 @@ export type Api = | gnosis.V1Api | bnbsmartchain.V1Api | arbitrum.V1Api - | arbitrumNova.V1Api | base.V1Api export * from './parser' -export { - ethereum, - avalanche, - optimism, - gnosis, - polygon, - bnbsmartchain, - arbitrum, - arbitrumNova, - base, -} +export { ethereum, avalanche, optimism, gnosis, polygon, bnbsmartchain, arbitrum, base } diff --git a/packages/unchained-client/src/index.ts b/packages/unchained-client/src/index.ts index 0db9c168fd5..61d87d51c57 100644 --- a/packages/unchained-client/src/index.ts +++ b/packages/unchained-client/src/index.ts @@ -18,7 +18,6 @@ export * as bnbsmartchain from './evm/bnbsmartchain' export * as polygon from './evm/polygon' export * as gnosis from './evm/gnosis' export * as arbitrum from './evm/arbitrum' -export * as arbitrumNova from './evm/arbitrumNova' export * as base from './evm/base' export * as bitcoin from './utxo/bitcoin' export * as bitcoincash from './utxo/bitcoincash' diff --git a/packages/utils/src/assetData/baseAssets.ts b/packages/utils/src/assetData/baseAssets.ts index 32afd8569af..dd11e830f72 100644 --- a/packages/utils/src/assetData/baseAssets.ts +++ b/packages/utils/src/assetData/baseAssets.ts @@ -283,24 +283,6 @@ export const arbitrum: Readonly = Object.freeze({ relatedAssetKey: 'eip155:1/slip44:60', }) -export const arbitrumNova: Readonly = Object.freeze({ - assetId: caip.arbitrumNovaAssetId, - chainId: caip.arbitrumNovaChainId, - name: 'Ethereum', - networkName: 'Arbitrum Nova', - symbol: 'ETH', - precision: 18, - color: '#5C6BC0', - networkColor: '#E67408', - icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/ethereum/info/logo.png', - networkIcon: - 'https://assets.coingecko.com/asset_platforms/images/93/large/AN_logomark.png?1695026131', - explorer: 'https://nova.arbiscan.io', - explorerAddressLink: 'https://nova.arbiscan.io/address/', - explorerTxLink: 'https://nova.arbiscan.io/tx/', - relatedAssetKey: 'eip155:1/slip44:60', -}) - export const base: Readonly = Object.freeze({ assetId: caip.baseAssetId, chainId: caip.baseChainId, diff --git a/packages/utils/src/assetData/getBaseAsset.ts b/packages/utils/src/assetData/getBaseAsset.ts index 19062e15054..d3578b029bf 100644 --- a/packages/utils/src/assetData/getBaseAsset.ts +++ b/packages/utils/src/assetData/getBaseAsset.ts @@ -5,7 +5,6 @@ import { KnownChainIds } from '@shapeshiftoss/types' import { assertUnreachable } from '../assertUnreachable' import { arbitrum, - arbitrumNova, atom, avax, base, @@ -50,8 +49,6 @@ export const getBaseAsset = (chainId: ChainId): Readonly => { return gnosis case KnownChainIds.ArbitrumMainnet: return arbitrum - case KnownChainIds.ArbitrumNovaMainnet: - return arbitrumNova case KnownChainIds.BaseMainnet: return base case KnownChainIds.SolanaMainnet: diff --git a/packages/utils/src/chainIdToFeeAssetId.ts b/packages/utils/src/chainIdToFeeAssetId.ts index adacb00e0e8..8b3495de29a 100644 --- a/packages/utils/src/chainIdToFeeAssetId.ts +++ b/packages/utils/src/chainIdToFeeAssetId.ts @@ -1,7 +1,6 @@ import type { AssetId, ChainId } from '@shapeshiftoss/caip' import { arbitrumAssetId, - arbitrumNovaAssetId, avalancheAssetId, baseAssetId, bchAssetId, @@ -39,8 +38,6 @@ export const chainIdToFeeAssetId = (_chainId: ChainId): AssetId => { return arbitrumAssetId case KnownChainIds.AvalancheMainnet: return avalancheAssetId - case KnownChainIds.ArbitrumNovaMainnet: - return arbitrumNovaAssetId case KnownChainIds.BaseMainnet: return baseAssetId case KnownChainIds.BitcoinCashMainnet: diff --git a/packages/utils/src/getAssetNamespaceFromChainId.ts b/packages/utils/src/getAssetNamespaceFromChainId.ts index 94f63caa94e..458e148d9ad 100644 --- a/packages/utils/src/getAssetNamespaceFromChainId.ts +++ b/packages/utils/src/getAssetNamespaceFromChainId.ts @@ -20,7 +20,6 @@ export const getAssetNamespaceFromChainId = (chainId: KnownChainIds): AssetNames case KnownChainIds.PolygonMainnet: case KnownChainIds.GnosisMainnet: case KnownChainIds.ArbitrumMainnet: - case KnownChainIds.ArbitrumNovaMainnet: case KnownChainIds.BaseMainnet: case KnownChainIds.BnbSmartChainMainnet: case KnownChainIds.MonadMainnet: diff --git a/packages/utils/src/getChainShortName.ts b/packages/utils/src/getChainShortName.ts index 5d436a7d49a..003df32e6ca 100644 --- a/packages/utils/src/getChainShortName.ts +++ b/packages/utils/src/getChainShortName.ts @@ -18,8 +18,6 @@ export const getChainShortName = (chainId: KnownChainIds) => { return 'BNB' case KnownChainIds.ArbitrumMainnet: return 'ARB' - case KnownChainIds.ArbitrumNovaMainnet: - return 'ARB-Nova' case KnownChainIds.BaseMainnet: return 'BAS' case KnownChainIds.BitcoinMainnet: diff --git a/packages/utils/src/getNativeFeeAssetReference.ts b/packages/utils/src/getNativeFeeAssetReference.ts index c844ebc98ba..4daed41cbe4 100644 --- a/packages/utils/src/getNativeFeeAssetReference.ts +++ b/packages/utils/src/getNativeFeeAssetReference.ts @@ -38,8 +38,6 @@ export const getNativeFeeAssetReference = ( return ASSET_REFERENCE.Gnosis case CHAIN_REFERENCE.ArbitrumMainnet: return ASSET_REFERENCE.Arbitrum - case CHAIN_REFERENCE.ArbitrumNovaMainnet: - return ASSET_REFERENCE.ArbitrumNova case CHAIN_REFERENCE.BaseMainnet: return ASSET_REFERENCE.Base case CHAIN_REFERENCE.MonadMainnet: diff --git a/scripts/generateAssetData/arbitrumNova/index.ts b/scripts/generateAssetData/arbitrumNova/index.ts deleted file mode 100644 index 40e4994b3cd..00000000000 --- a/scripts/generateAssetData/arbitrumNova/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { arbitrumNovaChainId } from '@shapeshiftoss/caip' -import type { Asset } from '@shapeshiftoss/types' -import { arbitrumNova, unfreeze } from '@shapeshiftoss/utils' - -import * as coingecko from '../coingecko' - -export const getAssets = async (): Promise => { - const assets = await coingecko.getAssets(arbitrumNovaChainId) - - return assets.concat([unfreeze(arbitrumNova)]) -} diff --git a/scripts/generateAssetData/coingecko.ts b/scripts/generateAssetData/coingecko.ts index 5eb80c63b48..0d008d7f3f3 100644 --- a/scripts/generateAssetData/coingecko.ts +++ b/scripts/generateAssetData/coingecko.ts @@ -2,7 +2,6 @@ import type { ChainId } from '@shapeshiftoss/caip' import { adapters, arbitrumChainId, - arbitrumNovaChainId, ASSET_NAMESPACE, avalancheChainId, baseChainId, @@ -26,7 +25,6 @@ import { import type { Asset } from '@shapeshiftoss/types' import { arbitrum, - arbitrumNova, avax, base, bnbsmartchain, @@ -125,14 +123,6 @@ export async function getAssets(chainId: ChainId): Promise { explorerAddressLink: arbitrum.explorerAddressLink, explorerTxLink: arbitrum.explorerTxLink, } - case arbitrumNovaChainId: - return { - assetNamespace: ASSET_NAMESPACE.erc20, - category: adapters.chainIdToCoingeckoAssetPlatform(chainId), - explorer: arbitrumNova.explorer, - explorerAddressLink: arbitrumNova.explorerAddressLink, - explorerTxLink: arbitrumNova.explorerTxLink, - } case baseChainId: return { assetNamespace: ASSET_NAMESPACE.erc20, diff --git a/scripts/generateAssetData/generateAssetData.ts b/scripts/generateAssetData/generateAssetData.ts index 098b3d0f3f1..c7012b4760b 100644 --- a/scripts/generateAssetData/generateAssetData.ts +++ b/scripts/generateAssetData/generateAssetData.ts @@ -24,7 +24,6 @@ import orderBy from 'lodash/orderBy' import path from 'path' import * as arbitrum from './arbitrum' -import * as arbitrumNova from './arbitrumNova' import * as avalanche from './avalanche' import * as base from './base' import * as bnbsmartchain from './bnbsmartchain' @@ -67,7 +66,6 @@ const generateAssetData = async () => { const polygonAssets = await polygon.getAssets() const gnosisAssets = await gnosis.getAssets() const arbitrumAssets = await arbitrum.getAssets() - const arbitrumNovaAssets = await arbitrumNova.getAssets() const baseAssets = await base.getAssets() const monadAssets = await monad.getAssets() const hyperevmAssets = await hyperevm.getAssets() @@ -100,7 +98,6 @@ const generateAssetData = async () => { ...polygonAssets, ...gnosisAssets, ...arbitrumAssets, - ...arbitrumNovaAssets, ...baseAssets, ...monadAssets, ...hyperevmAssets, diff --git a/scripts/generateAssetData/generateColorMap.ts b/scripts/generateAssetData/generateColorMap.ts index 3193a565aa2..0a71733675a 100644 --- a/scripts/generateAssetData/generateColorMap.ts +++ b/scripts/generateAssetData/generateColorMap.ts @@ -17,7 +17,6 @@ import fs from 'fs' import orderBy from 'lodash/orderBy' import * as arbitrum from './arbitrum' -import * as arbitrumNova from './arbitrumNova' import * as avalanche from './avalanche' import * as base from './base' import * as bnbsmartchain from './bnbsmartchain' @@ -38,7 +37,6 @@ const generateColorMap = async () => { const polygonAssets = await polygon.getAssets() const gnosisAssets = await gnosis.getAssets() const arbitrumAssets = await arbitrum.getAssets() - const arbitrumNovaAssets = await arbitrumNova.getAssets() const baseAssets = await base.getAssets() // all assets, included assets to be blacklisted @@ -58,7 +56,6 @@ const generateColorMap = async () => { ...polygonAssets, ...gnosisAssets, ...arbitrumAssets, - ...arbitrumNovaAssets, ...baseAssets, ] // remove blacklisted assets diff --git a/scripts/generateAssetData/generateRelatedAssetIndex/generateRelatedAssetIndex.ts b/scripts/generateAssetData/generateRelatedAssetIndex/generateRelatedAssetIndex.ts index e8fa56a352d..cf5c4efce71 100644 --- a/scripts/generateAssetData/generateRelatedAssetIndex/generateRelatedAssetIndex.ts +++ b/scripts/generateAssetData/generateRelatedAssetIndex/generateRelatedAssetIndex.ts @@ -2,7 +2,6 @@ import type { AssetId } from '@shapeshiftoss/caip' import { adapters, arbitrumAssetId, - arbitrumNovaAssetId, baseAssetId, ethAssetId, FEE_ASSET_IDS, @@ -47,7 +46,7 @@ if (!ZERION_API_KEY) throw new Error('Missing Zerion API key - see readme for in const REGEN_ALL = process.env.REGEN_ALL === 'true' const manualRelatedAssetIndex: Record = { - [ethAssetId]: [optimismAssetId, arbitrumAssetId, arbitrumNovaAssetId, baseAssetId, katanaAssetId], + [ethAssetId]: [optimismAssetId, arbitrumAssetId, baseAssetId, katanaAssetId], [foxAssetId]: [foxOnArbitrumOneAssetId], [starknetAssetId]: [ 'eip155:1/erc20:0xca14007eff0db1f8135f4c25b34de49ab0d42766', diff --git a/src/components/Modals/Send/hooks/useFormSend/useFormSend.test.tsx b/src/components/Modals/Send/hooks/useFormSend/useFormSend.test.tsx index b6aeb5f01e6..9ff1a65464a 100644 --- a/src/components/Modals/Send/hooks/useFormSend/useFormSend.test.tsx +++ b/src/components/Modals/Send/hooks/useFormSend/useFormSend.test.tsx @@ -79,7 +79,6 @@ const mockEvmChainIds = [ KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.ArbitrumMainnet, - KnownChainIds.ArbitrumNovaMainnet, KnownChainIds.BaseMainnet, ] vi.mock('@/lib/utils/evm', async () => { diff --git a/src/config.ts b/src/config.ts index 8c397f950dd..b8aaad4d037 100644 --- a/src/config.ts +++ b/src/config.ts @@ -26,8 +26,6 @@ const validators = { VITE_UNCHAINED_GNOSIS_WS_URL: url(), VITE_UNCHAINED_ARBITRUM_HTTP_URL: url(), VITE_UNCHAINED_ARBITRUM_WS_URL: url(), - VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL: url(), - VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL: url(), VITE_UNCHAINED_BASE_HTTP_URL: url(), VITE_UNCHAINED_BASE_WS_URL: url(), VITE_UNCHAINED_MONAD_HTTP_URL: url(), @@ -60,7 +58,6 @@ const validators = { VITE_POLYGON_NODE_URL: url(), VITE_GNOSIS_NODE_URL: url(), VITE_ARBITRUM_NODE_URL: url(), - VITE_ARBITRUM_NOVA_NODE_URL: url(), VITE_BASE_NODE_URL: url(), VITE_MONAD_NODE_URL: url(), VITE_HYPEREVM_NODE_URL: url(), @@ -96,7 +93,6 @@ const validators = { VITE_FEATURE_POLYGON: bool({ default: false }), VITE_FEATURE_GNOSIS: bool({ default: false }), VITE_FEATURE_ARBITRUM: bool({ default: false }), - VITE_FEATURE_ARBITRUM_NOVA: bool({ default: false }), VITE_FEATURE_SOLANA: bool({ default: false }), VITE_FEATURE_STARKNET: bool({ default: false }), VITE_FEATURE_TRON: bool({ default: false }), diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 53b6fa27cff..b80f531e2cb 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -19,7 +19,6 @@ export const SECOND_CLASS_CHAINS: readonly KnownChainIds[] = [ // returns known ChainIds as an array, excluding the ones that are currently flagged off export const knownChainIds = Object.values(KnownChainIds).filter(chainId => { - if (chainId === KnownChainIds.ArbitrumNovaMainnet && !enabledFlags.ArbitrumNova) return false if (chainId === KnownChainIds.ArbitrumMainnet && !enabledFlags.Arbitrum) return false if (chainId === KnownChainIds.GnosisMainnet && !enabledFlags.Gnosis) return false if (chainId === KnownChainIds.PolygonMainnet && !enabledFlags.Polygon) return false diff --git a/src/context/PluginProvider/PluginProvider.tsx b/src/context/PluginProvider/PluginProvider.tsx index 54bec0739af..d1828633b26 100644 --- a/src/context/PluginProvider/PluginProvider.tsx +++ b/src/context/PluginProvider/PluginProvider.tsx @@ -113,7 +113,6 @@ export const PluginProvider = ({ children }: PluginProviderProps): JSX.Element = if (!featureFlags.Polygon && chainId === KnownChainIds.PolygonMainnet) return false if (!featureFlags.Gnosis && chainId === KnownChainIds.GnosisMainnet) return false if (!featureFlags.Arbitrum && chainId === KnownChainIds.ArbitrumMainnet) return false - if (!featureFlags.ArbitrumNova && chainId === KnownChainIds.ArbitrumNovaMainnet) return false if (!featureFlags.Base && chainId === KnownChainIds.BaseMainnet) return false if (!featureFlags.Solana && chainId === KnownChainIds.SolanaMainnet) return false if (!featureFlags.Sui && chainId === KnownChainIds.SuiMainnet) return false diff --git a/src/context/WalletProvider/WalletConnectV2/config.ts b/src/context/WalletProvider/WalletConnectV2/config.ts index e411b935abb..5cc3b340293 100644 --- a/src/context/WalletProvider/WalletConnectV2/config.ts +++ b/src/context/WalletProvider/WalletConnectV2/config.ts @@ -1,17 +1,7 @@ import { CHAIN_REFERENCE } from '@shapeshiftoss/caip' import type { WalletConnectV2Adapter } from '@shapeshiftoss/hdwallet-walletconnectv2' import type { Chain } from 'viem/chains' -import { - arbitrum, - arbitrumNova, - avalanche, - base, - bsc, - gnosis, - mainnet, - optimism, - polygon, -} from 'viem/chains' +import { arbitrum, avalanche, base, bsc, gnosis, mainnet, optimism, polygon } from 'viem/chains' import type { EthereumProviderOptions } from './constants' @@ -57,7 +47,6 @@ export const walletConnectV2OptionalChains: AtLeastOneViemChain = (() => { polygon, avalanche, arbitrum, - arbitrumNova, base, ] if (optionalViemChains.length === 0) throw new Error('Array must contain at least one element.') @@ -79,7 +68,6 @@ const { VITE_GNOSIS_NODE_URL, VITE_ETHEREUM_NODE_URL, VITE_ARBITRUM_NODE_URL, - VITE_ARBITRUM_NOVA_NODE_URL, VITE_BASE_NODE_URL, } = getConfig() @@ -110,7 +98,6 @@ export const walletConnectV2ProviderConfig: EthereumProviderOptions = { [CHAIN_REFERENCE.GnosisMainnet]: VITE_GNOSIS_NODE_URL, [CHAIN_REFERENCE.EthereumMainnet]: VITE_ETHEREUM_NODE_URL, [CHAIN_REFERENCE.ArbitrumMainnet]: VITE_ARBITRUM_NODE_URL, - [CHAIN_REFERENCE.ArbitrumNovaMainnet]: VITE_ARBITRUM_NOVA_NODE_URL, [CHAIN_REFERENCE.BaseMainnet]: VITE_BASE_NODE_URL, }, } diff --git a/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts b/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts index 3622b332367..d30bc96ff64 100644 --- a/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts +++ b/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts @@ -1,7 +1,6 @@ import type { AccountId, ChainId } from '@shapeshiftoss/caip' import { arbitrumChainId, - arbitrumNovaChainId, avalancheChainId, baseChainId, bchChainId, @@ -32,7 +31,6 @@ import { isEvmChainId } from '@shapeshiftoss/chain-adapters' import type { HDWallet } from '@shapeshiftoss/hdwallet-core' import { supportsArbitrum, - supportsArbitrumNova, supportsAvalanche, supportsBase, supportsBSC, @@ -147,7 +145,6 @@ export const walletSupportsChain = ({ // We have no runtime support for the current ChainId - trying and checking for feature-capabilities flags is futile if (!hasRuntimeSupport) return false - const isArbitrumNovaEnabled = selectFeatureFlag(store.getState(), 'ArbitrumNova') const isHyperEvmEnabled = selectFeatureFlag(store.getState(), 'HyperEvm') const isKatanaEnabled = selectFeatureFlag(store.getState(), 'Katana') const isMonadEnabled = selectFeatureFlag(store.getState(), 'Monad') @@ -196,8 +193,6 @@ export const walletSupportsChain = ({ return supportsGnosis(wallet) case arbitrumChainId: return supportsArbitrum(wallet) - case arbitrumNovaChainId: - return isArbitrumNovaEnabled && supportsArbitrumNova(wallet) case baseChainId: return supportsBase(wallet) case monadChainId: diff --git a/src/lib/account/evm.ts b/src/lib/account/evm.ts index 433f3e79b98..816750c2ebb 100644 --- a/src/lib/account/evm.ts +++ b/src/lib/account/evm.ts @@ -1,7 +1,6 @@ import type { AccountId, ChainId } from '@shapeshiftoss/caip' import { arbitrumChainId, - arbitrumNovaChainId, avalancheChainId, baseChainId, bscChainId, @@ -19,7 +18,6 @@ import { import type { HDWallet } from '@shapeshiftoss/hdwallet-core' import { supportsArbitrum, - supportsArbitrumNova, supportsAvalanche, supportsBase, supportsBSC, @@ -121,7 +119,6 @@ export const deriveEvmAccountIdsAndMetadata: DeriveAccountIdsAndMetadata = async if (chainId === polygonChainId && !supportsPolygon(wallet)) continue if (chainId === gnosisChainId && !supportsGnosis(wallet)) continue if (chainId === arbitrumChainId && !supportsArbitrum(wallet)) continue - if (chainId === arbitrumNovaChainId && !supportsArbitrumNova(wallet)) continue if (chainId === baseChainId && !supportsBase(wallet)) continue if (chainId === hyperEvmChainId && !supportsHyperEvm(wallet)) continue if (chainId === monadChainId && !supportsMonad(wallet)) continue diff --git a/src/lib/asset-service/service/AssetService.ts b/src/lib/asset-service/service/AssetService.ts index ae1f2975679..98211a2e24f 100644 --- a/src/lib/asset-service/service/AssetService.ts +++ b/src/lib/asset-service/service/AssetService.ts @@ -2,7 +2,6 @@ import type { AssetId } from '@shapeshiftoss/caip' import { adapters, arbitrumChainId, - arbitrumNovaChainId, baseChainId, bscChainId, gnosisChainId, @@ -115,7 +114,6 @@ class _AssetService { if (!config.VITE_FEATURE_POLYGON && asset.chainId === polygonChainId) return false if (!config.VITE_FEATURE_GNOSIS && asset.chainId === gnosisChainId) return false if (!config.VITE_FEATURE_ARBITRUM && asset.chainId === arbitrumChainId) return false - if (!config.VITE_FEATURE_ARBITRUM_NOVA && asset.chainId === arbitrumNovaChainId) return false if (!config.VITE_FEATURE_BASE && asset.chainId === baseChainId) return false if (!config.VITE_FEATURE_SOLANA && asset.chainId === solanaChainId) return false if (!config.VITE_FEATURE_SUI && asset.chainId === suiChainId) return false diff --git a/src/lib/coingecko/utils.ts b/src/lib/coingecko/utils.ts index f2abc4bcaae..f7bc18ef9d6 100644 --- a/src/lib/coingecko/utils.ts +++ b/src/lib/coingecko/utils.ts @@ -1,7 +1,6 @@ import { adapters, arbitrumChainId, - arbitrumNovaChainId, avalancheChainId, baseChainId, bchChainId, @@ -212,7 +211,6 @@ export const getCoingeckoSupportedChainIds = () => { starknetChainId, dogeChainId, zecChainId, - ...(getConfig().VITE_FEATURE_ARBITRUM_NOVA ? [arbitrumNovaChainId] : []), ...(getConfig().VITE_FEATURE_KATANA ? [katanaChainId] : []), ] } diff --git a/src/lib/getTxLink.ts b/src/lib/getTxLink.ts index 61fff812c03..38344d4b3c7 100644 --- a/src/lib/getTxLink.ts +++ b/src/lib/getTxLink.ts @@ -32,7 +32,6 @@ export const safeChainShortNameByChainId: Partial> [KnownChainIds.PolygonMainnet]: 'matic', [KnownChainIds.GnosisMainnet]: 'gno', [KnownChainIds.ArbitrumMainnet]: 'arb1', - [KnownChainIds.ArbitrumNovaMainnet]: 'arb-nova', [KnownChainIds.BaseMainnet]: 'base', } type GetTxLink = GetTxBaseUrl & diff --git a/src/lib/market-service/coingecko/coingecko.test.ts b/src/lib/market-service/coingecko/coingecko.test.ts index d4d697748ac..640a2e6f7fb 100644 --- a/src/lib/market-service/coingecko/coingecko.test.ts +++ b/src/lib/market-service/coingecko/coingecko.test.ts @@ -169,7 +169,7 @@ describe('CoinGecko market service', () => { it('can flatten multiple responses', async () => { mocks.get.mockResolvedValueOnce({ data: [eth] }).mockResolvedValue({ data: [btc] }) const result = await coinGeckoMarketService.findAll() - expect(Object.keys(result).length).toEqual(6) + expect(Object.keys(result).length).toEqual(5) }) it('can sort by market cap', async () => { @@ -193,7 +193,7 @@ describe('CoinGecko market service', () => { it('can return some results if partially rate limited', async () => { mocks.get.mockResolvedValueOnce({ status: 429 }).mockResolvedValue({ data: [eth] }) const result = await coinGeckoMarketService.findAll() - expect(Object.keys(result).length).toEqual(5) + expect(Object.keys(result).length).toEqual(4) }) it('can use default args', async () => { @@ -221,16 +221,9 @@ describe('CoinGecko market service', () => { const result = await coinGeckoMarketService.findAll() const btcAssetId = adapters.coingeckoToAssetIds('bitcoin') const ethAssetId = adapters.coingeckoToAssetIds('ethereum') - const [btcKey, ethKey, ethOptimismKey, ethOnArbitrumKey, ethOnArbitrumNovaKey, ethOnBaseKey] = - Object.keys(result) + const [btcKey, ethKey, ethOptimismKey, ethOnArbitrumKey, ethOnBaseKey] = Object.keys(result) expect(btcAssetId).toEqual([btcKey]) - expect(ethAssetId).toEqual([ - ethKey, - ethOptimismKey, - ethOnArbitrumKey, - ethOnArbitrumNovaKey, - ethOnBaseKey, - ]) + expect(ethAssetId).toEqual([ethKey, ethOptimismKey, ethOnArbitrumKey, ethOnBaseKey]) }) it('can map CoinGecko id to multiple assetIds', async () => { @@ -394,10 +387,22 @@ describe('CoinGecko market service', () => { ] const expected = [ - { date: new Date('2021-09-15T00:00:00.000Z').valueOf(), price: 47135.43199562694 }, - { date: new Date('2021-09-14T00:00:00.000Z').valueOf(), price: 45139.83396873267 }, - { date: new Date('2021-09-13T00:00:00.000Z').valueOf(), price: 46195.21830082935 }, - { date: new Date('2021-09-12T00:00:00.000Z').valueOf(), price: 45196.488277558245 }, + { + date: new Date('2021-09-15T00:00:00.000Z').valueOf(), + price: 47135.43199562694, + }, + { + date: new Date('2021-09-14T00:00:00.000Z').valueOf(), + price: 45139.83396873267, + }, + { + date: new Date('2021-09-13T00:00:00.000Z').valueOf(), + price: 46195.21830082935, + }, + { + date: new Date('2021-09-12T00:00:00.000Z').valueOf(), + price: 45196.488277558245, + }, ] mocks.get.mockResolvedValue({ data: { prices: mockHistoryData } }) expect(await coinGeckoMarketService.findPriceHistoryByAssetId(args)).toEqual(expected) diff --git a/src/lib/wagmi-config.ts b/src/lib/wagmi-config.ts index d2513e14d0b..68daa5e80e5 100644 --- a/src/lib/wagmi-config.ts +++ b/src/lib/wagmi-config.ts @@ -1,15 +1,5 @@ import { viemClientByNetworkId } from '@shapeshiftoss/contracts' -import { - arbitrum, - arbitrumNova, - avalanche, - base, - bsc, - gnosis, - mainnet, - optimism, - polygon, -} from 'viem/chains' +import { arbitrum, avalanche, base, bsc, gnosis, mainnet, optimism, polygon } from 'viem/chains' import { createConfig } from 'wagmi' declare module 'wagmi' { @@ -19,7 +9,7 @@ declare module 'wagmi' { } export const wagmiConfig = createConfig({ - chains: [arbitrum, arbitrumNova, avalanche, base, bsc, gnosis, mainnet, optimism, polygon], + chains: [arbitrum, avalanche, base, bsc, gnosis, mainnet, optimism, polygon], // @ts-ignore wagmi is drunk https://github.com/wevm/viem/blob/12d9244c6c6f77ecda30f9014b383e5500e7bff9/src/types/chain.ts#L25 client({ chain }) { return viemClientByNetworkId[chain.id] diff --git a/src/pages/Markets/components/MarketsRow.tsx b/src/pages/Markets/components/MarketsRow.tsx index 2768ce0f99d..c0b777fb032 100644 --- a/src/pages/Markets/components/MarketsRow.tsx +++ b/src/pages/Markets/components/MarketsRow.tsx @@ -79,7 +79,6 @@ export const MarketsRow: React.FC = ({ const [selectedSort, setSelectedSort] = useState( (params.category && sortOptionsByCategory[params.category]?.[0]) ?? SortOptionsKeys.Volume, ) - const isArbitrumNovaEnabled = useAppSelector(state => selectFeatureFlag(state, 'ArbitrumNova')) const isSuiEnabled = useAppSelector(state => selectFeatureFlag(state, 'Sui')) const isPlasmaEnabled = useAppSelector(state => selectFeatureFlag(state, 'Plasma')) const isHyperEvmEnabled = useAppSelector(state => selectFeatureFlag(state, 'HyperEvm')) @@ -90,21 +89,13 @@ export const MarketsRow: React.FC = ({ const baseChainIds = supportedChainIds ?? Object.values(KnownChainIds) return baseChainIds.filter(chainId => { - if (!isArbitrumNovaEnabled && chainId === KnownChainIds.ArbitrumNovaMainnet) return false if (!isSuiEnabled && chainId === KnownChainIds.SuiMainnet) return false if (!isPlasmaEnabled && chainId === KnownChainIds.PlasmaMainnet) return false if (!isHyperEvmEnabled && chainId === KnownChainIds.HyperEvmMainnet) return false if (!isKatanaEnabled && chainId === KnownChainIds.KatanaMainnet) return false return true }) - }, [ - supportedChainIds, - isArbitrumNovaEnabled, - isSuiEnabled, - isPlasmaEnabled, - isHyperEvmEnabled, - isKatanaEnabled, - ]) + }, [supportedChainIds, isSuiEnabled, isPlasmaEnabled, isHyperEvmEnabled, isKatanaEnabled]) const Title = useMemo(() => { if (!title) return null diff --git a/src/plugins/activePlugins.ts b/src/plugins/activePlugins.ts index bfd213fabf7..aca3a7eaf02 100644 --- a/src/plugins/activePlugins.ts +++ b/src/plugins/activePlugins.ts @@ -1,5 +1,4 @@ import arbitrum from '@/plugins/arbitrum' -import arbitrumNova from '@/plugins/arbitrumNova' import avalanche from '@/plugins/avalanche' import base from '@/plugins/base' import bitcoin from '@/plugins/bitcoin' @@ -30,7 +29,6 @@ import zcash from '@/plugins/zcash' export const activePlugins = [ arbitrum, - arbitrumNova, avalanche, base, bitcoin, diff --git a/src/plugins/arbitrumNova/index.ts b/src/plugins/arbitrumNova/index.ts deleted file mode 100644 index 32da64c4ad2..00000000000 --- a/src/plugins/arbitrumNova/index.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { arbitrumNova } from '@shapeshiftoss/chain-adapters' -import { KnownChainIds } from '@shapeshiftoss/types' -import * as unchained from '@shapeshiftoss/unchained-client' - -import { getConfig } from '@/config' -import type { Plugins } from '@/plugins/types' - -// I'm an unchained-client wrapper around `/api/v1/` endpoints -// If you ever need to consume endpoints which are not abstracted by chain-adapters, consume me -export const http = new unchained.arbitrumNova.V1Api( - new unchained.arbitrumNova.Configuration({ - basePath: getConfig().VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL, - }), -) - -// eslint-disable-next-line import/no-default-export -export default function register(): Plugins { - return [ - [ - 'arbitrumNovaChainAdapter', - { - name: 'arbitrumNovaChainAdapter', - featureFlag: ['ArbitrumNova'], - providers: { - chainAdapters: [ - [ - KnownChainIds.ArbitrumNovaMainnet, - () => { - const ws = new unchained.ws.Client( - getConfig().VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL, - ) - - return new arbitrumNova.ChainAdapter({ - providers: { http, ws }, - rpcUrl: getConfig().VITE_ARBITRUM_NOVA_NODE_URL, - }) - }, - ], - ], - }, - }, - ], - ] -} diff --git a/src/state/slices/opportunitiesSlice/mappings.ts b/src/state/slices/opportunitiesSlice/mappings.ts index dacb121ce06..f5ca8a9b61d 100644 --- a/src/state/slices/opportunitiesSlice/mappings.ts +++ b/src/state/slices/opportunitiesSlice/mappings.ts @@ -182,7 +182,6 @@ export const CHAIN_ID_TO_SUPPORTED_DEFI_OPPORTUNITIES: Record< defiType: DefiType.Staking, }, ], - [KnownChainIds.ArbitrumNovaMainnet]: [], [KnownChainIds.BaseMainnet]: [], [KnownChainIds.SolanaMainnet]: [], [KnownChainIds.StarknetMainnet]: [], diff --git a/src/state/slices/portfolioSlice/utils/index.test.ts b/src/state/slices/portfolioSlice/utils/index.test.ts index ba4e2668f44..c9bbda87385 100644 --- a/src/state/slices/portfolioSlice/utils/index.test.ts +++ b/src/state/slices/portfolioSlice/utils/index.test.ts @@ -1,6 +1,5 @@ import { arbitrumAssetId, - arbitrumNovaAssetId, avalancheAssetId, baseAssetId, bscAssetId, @@ -51,11 +50,6 @@ describe('accountIdToFeeAssetId', () => { const result = accountIdToFeeAssetId(accountId) expect(result).toEqual(arbitrumAssetId) }) - it('can get arbitrumNova feeAssetId from accountId', () => { - const accountId = 'eip155:42170:0xdef1cafe' - const result = accountIdToFeeAssetId(accountId) - expect(result).toEqual(arbitrumNovaAssetId) - }) it('can get base feeAssetId from accountId', () => { const accountId = 'eip155:8453:0xdef1cafe' const result = accountIdToFeeAssetId(accountId) diff --git a/src/state/slices/portfolioSlice/utils/index.ts b/src/state/slices/portfolioSlice/utils/index.ts index d33a5c1a6bf..313a94c749d 100644 --- a/src/state/slices/portfolioSlice/utils/index.ts +++ b/src/state/slices/portfolioSlice/utils/index.ts @@ -1,7 +1,6 @@ import type { AccountId, AssetId, ChainId } from '@shapeshiftoss/caip' import { arbitrumChainId, - arbitrumNovaChainId, ASSET_NAMESPACE, avalancheChainId, baseChainId, @@ -41,7 +40,6 @@ import { evmChainIds } from '@shapeshiftoss/chain-adapters' import type { HDWallet } from '@shapeshiftoss/hdwallet-core' import { supportsArbitrum, - supportsArbitrumNova, supportsAvalanche, supportsBase, supportsBSC, @@ -100,7 +98,6 @@ export const accountIdToLabel = (accountId: AccountId): string => { case gnosisChainId: case bscChainId: case arbitrumChainId: - case arbitrumNovaChainId: case baseChainId: case hyperEvmChainId: case katanaChainId: @@ -479,8 +476,6 @@ export const isAssetSupportedByWallet = (assetId: AssetId, wallet: HDWallet): bo return supportsGnosis(wallet) case arbitrumChainId: return supportsArbitrum(wallet) - case arbitrumNovaChainId: - return supportsArbitrumNova(wallet) case baseChainId: return supportsBase(wallet) case btcChainId: diff --git a/src/state/slices/preferencesSlice/preferencesSlice.ts b/src/state/slices/preferencesSlice/preferencesSlice.ts index 7ee2e531551..a5e5994e0b3 100644 --- a/src/state/slices/preferencesSlice/preferencesSlice.ts +++ b/src/state/slices/preferencesSlice/preferencesSlice.ts @@ -24,7 +24,6 @@ export type FeatureFlags = { Polygon: boolean Gnosis: boolean Arbitrum: boolean - ArbitrumNova: boolean Solana: boolean Starknet: boolean Tron: boolean @@ -171,7 +170,6 @@ const initialState: Preferences = { Polygon: getConfig().VITE_FEATURE_POLYGON, Gnosis: getConfig().VITE_FEATURE_GNOSIS, Arbitrum: getConfig().VITE_FEATURE_ARBITRUM, - ArbitrumNova: getConfig().VITE_FEATURE_ARBITRUM_NOVA, Solana: getConfig().VITE_FEATURE_SOLANA, Starknet: getConfig().VITE_FEATURE_STARKNET, Tron: getConfig().VITE_FEATURE_TRON, diff --git a/src/test/mocks/portfolio.ts b/src/test/mocks/portfolio.ts index df51ef88481..bebe4f0bd78 100644 --- a/src/test/mocks/portfolio.ts +++ b/src/test/mocks/portfolio.ts @@ -1,6 +1,5 @@ import { arbitrumAssetId, - arbitrumNovaAssetId, avalancheAssetId, baseAssetId, bscAssetId, @@ -143,14 +142,6 @@ export const mockChainAdapters = new Map([ validateAddress: validateEthereumAddress, }, ], - [ - KnownChainIds.ArbitrumNovaMainnet, - { - getFeeAssetId: () => arbitrumNovaAssetId, - getDisplayName: () => 'Arbitrum Nova', - validateAddress: validateEthereumAddress, - }, - ], [ KnownChainIds.BaseMainnet, { diff --git a/src/test/mocks/store.ts b/src/test/mocks/store.ts index 3df7d138bf3..b4ef84639e8 100644 --- a/src/test/mocks/store.ts +++ b/src/test/mocks/store.ts @@ -96,7 +96,6 @@ export const mockStore: ReduxState = { Polygon: false, Gnosis: false, Arbitrum: false, - ArbitrumNova: false, Solana: false, Starknet: false, Tron: false, diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 428ce249c80..54c00dde9b8 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -4,7 +4,6 @@ interface ImportMetaEnv { readonly VITE_FEATURE_POLYGON: string readonly VITE_FEATURE_GNOSIS: string readonly VITE_FEATURE_ARBITRUM: string - readonly VITE_FEATURE_ARBITRUM_NOVA: string readonly VITE_FEATURE_SOLANA: string readonly VITE_FEATURE_TRON: string readonly VITE_FEATURE_BASE: string @@ -142,8 +141,6 @@ interface ImportMetaEnv { readonly VITE_UNCHAINED_GNOSIS_WS_URL: string readonly VITE_UNCHAINED_ARBITRUM_HTTP_URL: string readonly VITE_UNCHAINED_ARBITRUM_WS_URL: string - readonly VITE_UNCHAINED_ARBITRUM_NOVA_HTTP_URL: string - readonly VITE_UNCHAINED_ARBITRUM_NOVA_WS_URL: string readonly VITE_UNCHAINED_BASE_HTTP_URL: string readonly VITE_UNCHAINED_BASE_WS_URL: string readonly VITE_UNCHAINED_BITCOIN_HTTP_URL: string @@ -172,7 +169,6 @@ interface ImportMetaEnv { readonly VITE_POLYGON_NODE_URL: string readonly VITE_GNOSIS_NODE_URL: string readonly VITE_ARBITRUM_NODE_URL: string - readonly VITE_ARBITRUM_NOVA_NODE_URL: string readonly VITE_BASE_NODE_URL: string readonly VITE_THORCHAIN_NODE_URL: string readonly VITE_MAYACHAIN_NODE_URL: string