From 17c8117fb774a8b42187728324b1296baa2b92a3 Mon Sep 17 00:00:00 2001 From: Natalie Bunduwongse Date: Mon, 2 Feb 2026 15:55:38 +1300 Subject: [PATCH] feat(wallet): add Ethereum Sepolia Testnet configuration --- packages/wallet/src/constants.ts | 3 ++ packages/wallet/src/index.ts | 4 +++ .../wallet/src/network/chainRegistry.test.ts | 14 ++++----- packages/wallet/src/network/chainRegistry.ts | 4 +-- packages/wallet/src/network/presets.ts | 31 +++++++++++++++++++ 5 files changed, 47 insertions(+), 9 deletions(-) diff --git a/packages/wallet/src/constants.ts b/packages/wallet/src/constants.ts index 388732887d..1054a7d2f3 100644 --- a/packages/wallet/src/constants.ts +++ b/packages/wallet/src/constants.ts @@ -18,6 +18,9 @@ export const ARBITRUM_ONE_CHAIN_ID = 42161; /** Arbitrum Sepolia Testnet chain ID */ export const ARBITRUM_SEPOLIA_CHAIN_ID = 421614; +/** Ethereum Sepolia Testnet chain ID */ +export const ETHEREUM_SEPOLIA_CHAIN_ID = 11155111; + /** * Magic configuration for Immutable networks * @internal diff --git a/packages/wallet/src/index.ts b/packages/wallet/src/index.ts index 8e11096aca..48bdee609b 100644 --- a/packages/wallet/src/index.ts +++ b/packages/wallet/src/index.ts @@ -7,6 +7,7 @@ export { IMMUTABLE_ZKEVM_TESTNET_CHAIN_ID, ARBITRUM_ONE_CHAIN_ID, ARBITRUM_SEPOLIA_CHAIN_ID, + ETHEREUM_SEPOLIA_CHAIN_ID, } from './constants'; // Export presets (public API) @@ -23,6 +24,9 @@ export { ARBITRUM_SEPOLIA, ARBITRUM_ONE_CHAIN, ARBITRUM_SEPOLIA_CHAIN, + // Ethereum chains + ETHEREUM_SEPOLIA, + ETHEREUM_SEPOLIA_CHAIN, } from './network/presets'; // Export chain registry for looking up chain configs diff --git a/packages/wallet/src/network/chainRegistry.test.ts b/packages/wallet/src/network/chainRegistry.test.ts index 7a75e1bace..004bc7b90f 100644 --- a/packages/wallet/src/network/chainRegistry.test.ts +++ b/packages/wallet/src/network/chainRegistry.test.ts @@ -1,7 +1,7 @@ import { Environment } from '@imtbl/config'; import { getChainConfig, getEvmChainFromChainId } from './chainRegistry'; import { EvmChain } from '../types'; -import { ARBITRUM_ONE_CHAIN, ARBITRUM_SEPOLIA_CHAIN } from './presets'; +import { ARBITRUM_ONE_CHAIN, ETHEREUM_SEPOLIA_CHAIN } from './presets'; describe('chainRegistry', () => { describe('getChainConfig', () => { @@ -13,12 +13,12 @@ describe('chainRegistry', () => { expect(config.name).toBe('Arbitrum One'); }); - it('returns Arbitrum Sepolia config for SANDBOX', () => { + it('returns Ethereum Sepolia config for SANDBOX', () => { const config = getChainConfig(EvmChain.ARBITRUM_ONE, Environment.SANDBOX); - expect(config).toEqual(ARBITRUM_SEPOLIA_CHAIN); - expect(config.chainId).toBe(421614); - expect(config.name).toBe('Arbitrum Sepolia'); + expect(config).toEqual(ETHEREUM_SEPOLIA_CHAIN); + expect(config.chainId).toBe(11155111); + expect(config.name).toBe('Ethereum Sepolia'); }); it('throws error for unsupported chain', () => { @@ -45,8 +45,8 @@ describe('chainRegistry', () => { expect(getEvmChainFromChainId(42161)).toBe(EvmChain.ARBITRUM_ONE); }); - it('returns ARBITRUM_ONE for Arbitrum Sepolia chainId', () => { - expect(getEvmChainFromChainId(421614)).toBe(EvmChain.ARBITRUM_ONE); + it('returns ARBITRUM_ONE for Ethereum Sepolia chainId', () => { + expect(getEvmChainFromChainId(11155111)).toBe(EvmChain.ARBITRUM_ONE); }); it('handles string chainId', () => { diff --git a/packages/wallet/src/network/chainRegistry.ts b/packages/wallet/src/network/chainRegistry.ts index 04899fd84a..48eae8aa98 100644 --- a/packages/wallet/src/network/chainRegistry.ts +++ b/packages/wallet/src/network/chainRegistry.ts @@ -4,7 +4,7 @@ import { IMMUTABLE_ZKEVM_MAINNET_CHAIN, IMMUTABLE_ZKEVM_TESTNET_CHAIN, ARBITRUM_ONE_CHAIN, - ARBITRUM_SEPOLIA_CHAIN, + ETHEREUM_SEPOLIA_CHAIN, } from './presets'; import { ChainId } from './chains'; @@ -18,7 +18,7 @@ const CHAIN_REGISTRY: Record> = { }, [EvmChain.ARBITRUM_ONE]: { [Environment.PRODUCTION]: ARBITRUM_ONE_CHAIN, - [Environment.SANDBOX]: ARBITRUM_SEPOLIA_CHAIN, + [Environment.SANDBOX]: ETHEREUM_SEPOLIA_CHAIN, }, }; diff --git a/packages/wallet/src/network/presets.ts b/packages/wallet/src/network/presets.ts index e05fe869fb..61bcec505a 100644 --- a/packages/wallet/src/network/presets.ts +++ b/packages/wallet/src/network/presets.ts @@ -4,6 +4,7 @@ import { IMMUTABLE_ZKEVM_TESTNET_CHAIN_ID, ARBITRUM_ONE_CHAIN_ID, ARBITRUM_SEPOLIA_CHAIN_ID, + ETHEREUM_SEPOLIA_CHAIN_ID, MAGIC_CONFIG, } from '../constants'; @@ -67,6 +68,21 @@ export const ARBITRUM_SEPOLIA_CHAIN: ChainConfig = { sequenceIdentityInstrumentEndpoint: 'https://next-identity.sequence-dev.app', }; +/** + * Ethereum Sepolia Testnet chain configuration + */ +export const ETHEREUM_SEPOLIA_CHAIN: ChainConfig = { + chainId: ETHEREUM_SEPOLIA_CHAIN_ID, + name: 'Ethereum Sepolia', + rpcUrl: 'https://rpc.sepolia.org', + relayerUrl: 'https://next-sepolia-relayer.sequence.app', + nodeUrl: 'https://next-nodes.sequence.app/sepolia', + apiUrl: 'https://api.sandbox.immutable.com', + passportDomain: 'https://passport.sandbox.immutable.com', + feeTokenSymbol: 'ETH', + sequenceIdentityInstrumentEndpoint: 'https://next-identity.sequence-dev.app', +}; + /** * Default chains (testnet + mainnet) * Testnet is first (default initial chain) @@ -152,3 +168,18 @@ export const ARBITRUM_ONE = { export const ARBITRUM_SEPOLIA = { chains: [ARBITRUM_SEPOLIA_CHAIN], }; + +/** + * Ethereum Sepolia testnet only preset + * + * @example + * ```typescript + * const provider = await connectWallet({ + * ...ETHEREUM_SEPOLIA, + * auth, + * }); + * ``` + */ +export const ETHEREUM_SEPOLIA = { + chains: [ETHEREUM_SEPOLIA_CHAIN], +};