import * as Chain from './Chain.js' describe('from', () => { test('derives EVM chain metadata from an EIP-155 id', () => { const chain = Chain.from({ aliases: ['eth'], id: 'eip155:1', name: 'Ethereum', slug: 'ethereum', }) expect(metadata(chain)).toMatchInlineSnapshot(` { "addressFormat": "hex", "aliases": [ "eth", ], "id": "eip155:1", "kind": "evm", "name": "Ethereum", "slug": "ethereum", } `) }) test('derives non-EVM chain metadata from the CAIP-2 namespace', () => { expect( [ Chain.from({ id: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', name: 'Solana', slug: 'solana', }), Chain.from({ id: 'tron:0x2b6653dc', name: 'Tron', slug: 'tron', }), ].map(metadata), ).toMatchInlineSnapshot(` [ { "addressFormat": "base58", "aliases": [], "id": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", "kind": "solana", "name": "Solana", "slug": "solana", }, { "addressFormat": "base58check", "aliases": [], "id": "tron:0x2b6653dc", "kind": "tron", "name": "Tron", "slug": "tron", }, ] `) }) }) describe('eip155Id', () => { test('returns the numeric EIP-155 chain id', () => { const chain = Chain.from({ id: 'eip155:8453', name: 'Base', slug: 'base' }) expect(Chain.eip155Id(chain)).toBe('8453') }) test('rejects non-EIP-155 chains', () => { const chain = Chain.from({ id: 'solana:mainnet', name: 'Solana', slug: 'solana' }) expect(() => Chain.eip155Id(chain)).toThrowErrorMatchingInlineSnapshot( `[Funding.Chain.InvalidIdError]`, ) }) }) function metadata(chain: Chain.Chain) { const { addressFormat, aliases, id, kind, name, slug } = chain return { addressFormat, aliases, id, kind, name, slug } }