import { Chain, mainnet, sepolia, baseSepolia, arbitrumSepolia, optimismSepolia, base, arbitrum, optimism, polygonMumbai, polygon, } from "viem/chains"; import * as chains from "viem/chains"; /** * Maps EVM chain IDs to network IDs */ export const CHAIN_ID_TO_NETWORK_ID: Record = { 1: "ethereum-mainnet", 11155111: "ethereum-sepolia", 137: "polygon-mainnet", 80001: "polygon-mumbai", 8453: "base-mainnet", 84532: "base-sepolia", 42161: "arbitrum-mainnet", 421614: "arbitrum-sepolia", 10: "optimism-mainnet", 11155420: "optimism-sepolia", 56: "bnb-mainnet", 97: "bnb-testnet", }; /** * Maps Coinbase network IDs to EVM chain IDs */ export const NETWORK_ID_TO_CHAIN_ID: Record = Object.entries( CHAIN_ID_TO_NETWORK_ID, ).reduce( (acc, [chainId, networkId]) => { acc[networkId] = String(chainId); return acc; }, {} as Record, ); /** * Maps Coinbase network IDs to Viem chain objects */ export const NETWORK_ID_TO_VIEM_CHAIN: Record = { "ethereum-mainnet": mainnet, "ethereum-sepolia": sepolia, "polygon-mainnet": polygon, "polygon-mumbai": polygonMumbai, "base-mainnet": base, "base-sepolia": baseSepolia, "arbitrum-mainnet": arbitrum, "arbitrum-sepolia": arbitrumSepolia, "optimism-mainnet": optimism, "optimism-sepolia": optimismSepolia, "bnb-mainnet": chains.bsc, "bnb-testnet": chains.bscTestnet, }; /** * Get a chain from the viem chains object * * @param id - The chain ID * @returns The chain */ export const getChain = (id: string): Chain => { const chainList = Object.values(chains); return chainList.find((chain) => chain.id === parseInt(id)) as Chain; };