Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions packages/wallet/src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions packages/wallet/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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
Expand Down
14 changes: 7 additions & 7 deletions packages/wallet/src/network/chainRegistry.test.ts
Original file line number Diff line number Diff line change
@@ -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', () => {
Expand All @@ -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', () => {
Expand All @@ -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', () => {
Expand Down
4 changes: 2 additions & 2 deletions packages/wallet/src/network/chainRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand All @@ -18,7 +18,7 @@ const CHAIN_REGISTRY: Record<EvmChain, Record<Environment, ChainConfig>> = {
},
[EvmChain.ARBITRUM_ONE]: {
[Environment.PRODUCTION]: ARBITRUM_ONE_CHAIN,
[Environment.SANDBOX]: ARBITRUM_SEPOLIA_CHAIN,
[Environment.SANDBOX]: ETHEREUM_SEPOLIA_CHAIN,
},
};

Expand Down
31 changes: 31 additions & 0 deletions packages/wallet/src/network/presets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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],
};