diff --git a/modules/statics/src/allCoinsAndTokens.ts b/modules/statics/src/allCoinsAndTokens.ts index 327bc42c2d..c7eb5ba06c 100644 --- a/modules/statics/src/allCoinsAndTokens.ts +++ b/modules/statics/src/allCoinsAndTokens.ts @@ -75,7 +75,7 @@ import { jettonTokens } from './coins/jettonTokens'; import { polyxTokens } from './coins/polyxTokens'; import { cantonTokens } from './coins/cantonTokens'; import { flrp } from './flrp'; -import { hypeEvm } from './hypeevm'; +import { HypeEvm, hypeEvm as hypeEvmFactory } from './hypeevm'; import { kaspa } from './kaspa'; import { ACCOUNT_COIN_DEFAULT_FEATURES_EXCLUDE_SINGAPORE_AND_MENA_FZE, @@ -414,6 +414,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_COMPATIBLE_WP, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -451,6 +452,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ], KeyCurve.Secp256k1, '', @@ -474,6 +476,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ], KeyCurve.Secp256k1, '', @@ -886,6 +889,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, CoinFeature.STAKING, + CoinFeature.ERC20_BULK_TRANSACTION, ], KeyCurve.Secp256k1, '', @@ -929,6 +933,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.SUPPORTS_ERC20, CoinFeature.STAKING, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -970,6 +975,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ], KeyCurve.Secp256k1, '', @@ -993,6 +999,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.STAKING, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1592,6 +1599,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1642,7 +1650,7 @@ export const allCoinsAndTokens = [ 18, UnderlyingAsset.MON, BaseUnit.ETH, - [...EVM_FEATURES, CoinFeature.SHARED_EVM_SIGNING] + [...EVM_FEATURES, CoinFeature.SHARED_EVM_SIGNING, CoinFeature.ERC20_BULK_TRANSACTION] ), account( '5c5ebe50-fa27-4312-ae3d-7032520aedb5', @@ -1668,7 +1676,7 @@ export const allCoinsAndTokens = [ 18, UnderlyingAsset.WORLD, BaseUnit.ETH, - [...EVM_FEATURES, CoinFeature.SHARED_EVM_SIGNING] + [...EVM_FEATURES, CoinFeature.SHARED_EVM_SIGNING, CoinFeature.ERC20_BULK_TRANSACTION] ), account( '1cd29730-f70b-4c7d-a19c-eb3345f01acb', @@ -1678,7 +1686,7 @@ export const allCoinsAndTokens = [ 18, UnderlyingAsset.WORLD, BaseUnit.ETH, - [...EVM_FEATURES, CoinFeature.SHARED_EVM_SIGNING] + [...EVM_FEATURES, CoinFeature.SHARED_EVM_SIGNING, CoinFeature.ERC20_BULK_TRANSACTION] ), account( 'bc2c6d82-69ee-4745-b213-6f83e90199db', @@ -1732,6 +1740,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1750,6 +1759,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1770,6 +1780,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, CoinFeature.STAKING, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1813,7 +1824,7 @@ export const allCoinsAndTokens = [ HYPERLIQUID_FEATURES, KeyCurve.Secp256k1 ), - hypeEvm( + hypeEvmFactory( 'e907fdbd-2c5d-45d6-b622-9da38937da73', 'hypeevm', 'Hyperliquid EVM', @@ -1822,9 +1833,10 @@ export const allCoinsAndTokens = [ UnderlyingAsset.HYPEEVM, BaseUnit.ETH, 150, - '0x2222222222222222222222222222222222222222' + '0x2222222222222222222222222222222222222222', + [...HypeEvm.DEFAULT_FEATURES, CoinFeature.ERC20_BULK_TRANSACTION] ), - hypeEvm( + hypeEvmFactory( 'e0500947-1105-404c-af52-765b1cb2a7c1', 'thypeevm', 'Hyperliquid EVM Testnet', @@ -1851,6 +1863,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1869,6 +1882,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1887,6 +1901,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_COMPATIBLE_WP, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1922,6 +1937,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_IMS, CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1957,6 +1973,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_WP, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -1994,6 +2011,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -2012,6 +2030,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -2028,6 +2047,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.EVM_NON_BITGO_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -2075,7 +2095,13 @@ export const allCoinsAndTokens = [ 18, UnderlyingAsset.STT, BaseUnit.ETH, - [...EVM_FEATURES, CoinFeature.SHARED_EVM_SIGNING, CoinFeature.STAKING, CoinFeature.EVM_COMPATIBLE_IMS] + [ + ...EVM_FEATURES, + CoinFeature.SHARED_EVM_SIGNING, + CoinFeature.STAKING, + CoinFeature.EVM_COMPATIBLE_IMS, + CoinFeature.ERC20_BULK_TRANSACTION, + ] ), account( 'aaa25f54-24f8-41d9-ba4e-83465d7cc2ec', @@ -2092,6 +2118,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_IMS, CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.STAKING, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -2244,6 +2271,7 @@ export const allCoinsAndTokens = [ CoinFeature.SUPPORTS_ERC20, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -2263,6 +2291,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_WP, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -2341,6 +2370,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -2435,6 +2465,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_UI, CoinFeature.EVM_COMPATIBLE_WP, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -2592,6 +2623,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_COMPATIBLE_WP, CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, + CoinFeature.ERC20_BULK_TRANSACTION, ], KeyCurve.Secp256k1, '', @@ -2615,6 +2647,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -2635,6 +2668,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), // Mantle mainnet tokens @@ -2738,6 +2772,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ], KeyCurve.Secp256k1, '', @@ -2784,6 +2819,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ], KeyCurve.Secp256k1, '', @@ -3026,6 +3062,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -3115,6 +3152,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( @@ -3451,6 +3489,7 @@ export const allCoinsAndTokens = [ CoinFeature.EVM_NON_BITGO_RECOVERY, CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.SUPPORTS_ERC20, + CoinFeature.ERC20_BULK_TRANSACTION, ] ), account( diff --git a/modules/statics/src/coinFeatures.ts b/modules/statics/src/coinFeatures.ts index 324930814a..4035602845 100644 --- a/modules/statics/src/coinFeatures.ts +++ b/modules/statics/src/coinFeatures.ts @@ -547,6 +547,7 @@ export const ZKETH_FEATURES = [ CoinFeature.USES_NON_PACKED_ENCODING_FOR_TXDATA, CoinFeature.ETH_ROLLUP_CHAIN, CoinFeature.EIP1559, + CoinFeature.ERC20_BULK_TRANSACTION, ]; export const ZKSYNCERA_FEATURES = [ @@ -561,6 +562,7 @@ export const ZKSYNCERA_FEATURES = [ CoinFeature.EVM_UNSIGNED_SWEEP_RECOVERY, CoinFeature.USES_NON_PACKED_ENCODING_FOR_TXDATA, CoinFeature.ETH_ROLLUP_CHAIN, + CoinFeature.ERC20_BULK_TRANSACTION, ]; export const BERA_FEATURES = [ @@ -577,6 +579,7 @@ export const BERA_FEATURES = [ CoinFeature.CUSTODY_BITGO_FRANKFURT, CoinFeature.CUSTODY_BITGO_GERMANY, CoinFeature.CUSTODY_BULK_TRANSACTION, + CoinFeature.ERC20_BULK_TRANSACTION, ]; export const OAS_FEATURES = [ ...ETH_FEATURES, @@ -587,6 +590,7 @@ export const OAS_FEATURES = [ CoinFeature.BULK_TRANSACTION, CoinFeature.STUCK_TRANSACTION_MANAGEMENT_TSS, CoinFeature.EIP1559, + CoinFeature.ERC20_BULK_TRANSACTION, ]; export const COREDAO_FEATURES = [ ...ETH_FEATURES, @@ -601,7 +605,10 @@ export const COREDAO_FEATURES = [ CoinFeature.EIP1559, CoinFeature.ERC20_BULK_TRANSACTION, ]; -export const TEMPO_FEATURES = EVM_FEATURES.filter((feature) => feature !== CoinFeature.ENTERPRISE_PAYS_FEES); +export const TEMPO_FEATURES = [ + ...EVM_FEATURES.filter((feature) => feature !== CoinFeature.ENTERPRISE_PAYS_FEES), + CoinFeature.ERC20_BULK_TRANSACTION, +]; export const HYPERLIQUID_FEATURES = [ ...ACCOUNT_COIN_DEFAULT_FEATURES, CoinFeature.MULTISIG_COLD, @@ -666,6 +673,7 @@ export const SONEIUM_FEATURES = [ CoinFeature.MULTISIG_COLD, CoinFeature.MULTISIG_SUPPORT_GATED, CoinFeature.USES_NON_PACKED_ENCODING_FOR_TXDATA, + CoinFeature.ERC20_BULK_TRANSACTION, ]; export const POLYX_FEATURES = [ diff --git a/modules/statics/src/networks.ts b/modules/statics/src/networks.ts index 0a7b90ed66..2b375ab906 100644 --- a/modules/statics/src/networks.ts +++ b/modules/statics/src/networks.ts @@ -639,6 +639,7 @@ class Chiliz extends Mainnet implements EthereumNetwork { chainId = 88888; nativeCoinOperationHashPrefix = '88888'; tokenOperationHashPrefix = '88888-ERC20'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class ChilizTestnet extends Testnet implements EthereumNetwork { @@ -736,6 +737,7 @@ class XtzEvm extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://explorer.etherlink.com/address/'; chainId = 42793; nativeCoinOperationHashPrefix = '42793'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class XtzEvmTestnet extends Testnet implements EthereumNetwork { @@ -1438,6 +1440,7 @@ class ZkSync extends Mainnet implements EthereumNetwork { chainId = 324; nativeCoinOperationHashPrefix = '324'; tokenOperationHashPrefix = '324-ERC20'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class ZkSyncTestnet extends Testnet implements EthereumNetwork { @@ -1464,6 +1467,7 @@ class ZkSyncEra extends Mainnet implements EthereumNetwork { chainId = 324; nativeCoinOperationHashPrefix = '324'; tokenOperationHashPrefix = '324-ERC20'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class ZkSyncEraTestnet extends Testnet implements EthereumNetwork { @@ -1563,6 +1567,7 @@ class IP extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://www.storyscan.io/address/'; chainId = 1514; nativeCoinOperationHashPrefix = '1514'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class IPTestnet extends Testnet implements EthereumNetwork { @@ -1659,6 +1664,7 @@ class Plasma extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://plasmascan.to/address/'; chainId = 9745; nativeCoinOperationHashPrefix = '9745'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class PlasmaTestnet extends Testnet implements EthereumNetwork { @@ -1728,6 +1734,7 @@ class KavaEVM extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://kavascan.com/address/'; chainId = 2222; nativeCoinOperationHashPrefix = '2222'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class LineaETH extends Mainnet implements EthereumNetwork { @@ -1746,6 +1753,7 @@ class LineaETHTestnet extends Testnet implements EthereumNetwork { accountExplorerUrl = 'https://sepolia.lineascan.build/address/'; chainId = 59141; nativeCoinOperationHashPrefix = '59141'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class FluentETH extends Mainnet implements EthereumNetwork { @@ -1755,6 +1763,7 @@ class FluentETH extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://fluentscan.xyz/address/'; chainId = 25363; nativeCoinOperationHashPrefix = '25363'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class FluentETHTestnet extends Testnet implements EthereumNetwork { @@ -1773,6 +1782,7 @@ class Mantle extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://mantlescan.xyz/address/'; chainId = 5000; nativeCoinOperationHashPrefix = '5000'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class MantleTestnet extends Testnet implements EthereumNetwork { @@ -1782,6 +1792,7 @@ class MantleTestnet extends Testnet implements EthereumNetwork { accountExplorerUrl = 'https://sepolia.mantlescan.xyz/address/'; chainId = 5003; nativeCoinOperationHashPrefix = '5003'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class JovayETH extends Mainnet implements EthereumNetwork { @@ -1791,6 +1802,7 @@ class JovayETH extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://explorer.jovay.io/address/'; chainId = 5734951; nativeCoinOperationHashPrefix = '5734951'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class JovayETHTestnet extends Testnet implements EthereumNetwork { @@ -1809,6 +1821,7 @@ class Unieth extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://uniscan.xyz/address/'; chainId = 130; nativeCoinOperationHashPrefix = '130'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class UniethTestnet extends Testnet implements EthereumNetwork { @@ -1881,6 +1894,7 @@ class Xlayer extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://www.oklink.com/x-layer/address/'; chainId = 196; nativeCoinOperationHashPrefix = '196'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class XlayerTestnet extends Testnet implements EthereumNetwork { @@ -1899,6 +1913,7 @@ class Morph extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://explorer-api-hoodi.morphl2.io/address/'; // TODO: WIN-8134 add mainnet account explorer url when available chainId = 2818; nativeCoinOperationHashPrefix = '2818'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class MorphTestnet extends Testnet implements EthereumNetwork { @@ -1917,6 +1932,7 @@ class MorphETH extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://explorer.morph.network/address/'; chainId = 2818; nativeCoinOperationHashPrefix = '2818'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class MorphETHTestnet extends Testnet implements EthereumNetwork { @@ -1949,6 +1965,7 @@ class Sonic extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://sonicscan.org/address/'; chainId = 146; nativeCoinOperationHashPrefix = '146'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class SonicTestnet extends Testnet implements EthereumNetwork { @@ -1972,6 +1989,7 @@ class Usdt0 extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://stablescan.xyz/address/'; chainId = 988; nativeCoinOperationHashPrefix = '988'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class Usdt0Testnet extends Testnet implements EthereumNetwork { @@ -1990,6 +2008,7 @@ class Kaia extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://kaiascan.io/address/'; chainId = 8217; nativeCoinOperationHashPrefix = '8217'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class KaiaTestnet extends Testnet implements EthereumNetwork { @@ -2013,6 +2032,7 @@ class Irys extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://evm-explorer.irys.xyz/address/'; chainId = 3282; nativeCoinOperationHashPrefix = '3282'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class IrysTestnet extends Testnet implements EthereumNetwork { @@ -2036,6 +2056,7 @@ class Og extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://chainscan.0g.ai/address/'; chainId = 16661; nativeCoinOperationHashPrefix = '16661'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class OgTestnet extends Testnet implements EthereumNetwork { @@ -2177,6 +2198,7 @@ class SeiEvm extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://seiscan.io/address/'; chainId = 1329; nativeCoinOperationHashPrefix = '1329'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class SeiEvmTestnet extends Testnet implements EthereumNetwork { @@ -2354,6 +2376,7 @@ class BaseChainTestnet extends Testnet implements EthereumNetwork { forwarderImplementationAddress = '0xbe69cae311191fb45e648ed20847f06fad2dbab4'; walletFactoryAddress = '0x4550e1e7616d3364877fc6c9324938dab678621a'; walletImplementationAddress = '0x92db2759d1dca129a0d9d46877f361be819184c4'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class BaseChain extends Mainnet implements EthereumNetwork { @@ -2369,6 +2392,7 @@ class BaseChain extends Mainnet implements EthereumNetwork { forwarderImplementationAddress = '0xbe69cae311191fb45e648ed20847f06fad2dbab4'; walletFactoryAddress = '0x4550e1e7616d3364877fc6c9324938dab678621a'; walletImplementationAddress = '0x92db2759d1dca129a0d9d46877f361be819184c4'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class Polymesh extends Mainnet implements AccountNetwork { @@ -2434,6 +2458,7 @@ class Flow extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://evm.flowscan.io/address/'; chainId = 747; nativeCoinOperationHashPrefix = '747'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class FlowTestnet extends Testnet implements EthereumNetwork { @@ -2452,6 +2477,7 @@ class MegaETH extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://megaeth.blockscout.com/address/'; chainId = 4326; nativeCoinOperationHashPrefix = '4326'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class MegaETHTestnet extends Testnet implements EthereumNetwork { @@ -2470,6 +2496,7 @@ class Plume extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://explorer.plume.org/address/'; chainId = 98866; nativeCoinOperationHashPrefix = '98866'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class HederaEVMTestnet extends Testnet implements EthereumNetwork { @@ -2497,6 +2524,7 @@ class HemiEth extends Mainnet implements EthereumNetwork { accountExplorerUrl = 'https://explorer.hemi.xyz/address/'; chainId = 43111; nativeCoinOperationHashPrefix = '43111'; + batcherContractAddress = '0x3e1e5d78e44f15593b3b61ed278f12c27f0ff33e'; } class HemiEthTestnet extends Testnet implements EthereumNetwork { diff --git a/modules/statics/test/unit/coins.ts b/modules/statics/test/unit/coins.ts index 799b64f69c..7762d69fb9 100644 --- a/modules/statics/test/unit/coins.ts +++ b/modules/statics/test/unit/coins.ts @@ -1125,6 +1125,65 @@ describe('ERC20 Bulk Transaction Feature', () => { 'bsc', 'tbsc', 'tavaxc', + // Bera (batcherContractAddress confirmed deployed on both mainnet and testnet) + 'bera', + 'tbera', + // Oasys (batcherContractAddress confirmed deployed on both mainnet and testnet) + 'oas', + 'toas', + // Soneium (batcherContractAddress confirmed deployed on both mainnet and testnet) + 'soneium', + 'tsoneium', + // HypeEVM mainnet only (testnet not deployed) + 'hypeevm', + // ApeChain testnet only (mainnet not deployed) + 'tapechain', + // Sonic (mainnet confirmed deployed, testnet confirmed deployed) + 'sonic', + 'tsonic', + // Kaia (mainnet confirmed deployed, testnet confirmed deployed) + 'kaia', + 'tkaia', + // Sei EVM (mainnet confirmed deployed, testnet confirmed deployed) + 'seievm', + 'tseievm', + // Base Ethereum (mainnet and testnet confirmed deployed) + 'baseeth', + 'tbaseeth', + // Mantle (mainnet and testnet confirmed deployed) + 'mantle', + 'tmantle', + // Worldchain (mainnet and testnet confirmed deployed) + 'world', + 'tworld', + // Monad mainnet only (testnet not deployed) + 'mon', + // Creditcoin (mainnet and testnet confirmed deployed) + 'ctc', + 'tctc', + // Somnia (mainnet and testnet confirmed deployed) + 'tstt', + 'somi', + // Linea testnet only (mainnet not deployed) + 'tlineaeth', + // Morph Ethereum mainnet (confirmed deployed) + 'morpheth', + // zkSync Era (mainnet and testnet, batcherContractAddress confirmed deployed) + 'zksyncera', + 'tzksyncera', + // Additional mainnet chains with batcher contract deployed (verified via eth_getCode) + 'chiliz', + 'flow', + 'hemieth', + 'ip', + 'kavaevm', + 'morph', + 'og', + 'okbxlayer', + 'plume', + 'unieth', + 'zketh', + 'tzketh', ]; erc20BulkTransactionCoins.forEach((coinName) => { const coin = coins.get(coinName);