@0xsplits/splits-kit
Version:
UI Components for working with 0xSplits contracts
299 lines (288 loc) • 5.6 kB
text/typescript
import {
mainnet,
polygon,
optimism,
arbitrum,
gnosis,
fantom,
bsc,
avalanche,
aurora,
base,
zora,
sepolia,
hoodi,
optimismSepolia,
baseSepolia,
zoraSepolia,
shape,
worldchain,
plumeMainnet,
abstract,
abstractTestnet,
ronin,
saigon,
celo,
} from 'viem/chains'
import { defineChain } from 'viem'
export const tempoTestnet = defineChain({
id: 42431,
name: 'Tempo Testnet',
nativeCurrency: {
name: 'USD',
symbol: 'USD',
decimals: 18,
},
rpcUrls: {
default: { http: ['https://rpc.moderato.tempo.xyz'] },
},
blockExplorers: {
default: { name: 'Tempo Explorer', url: 'https://explore.tempo.xyz' },
},
testnet: true,
})
export const tempoMainnet = defineChain({
id: 4217,
name: 'Tempo',
nativeCurrency: {
name: 'USD',
symbol: 'USD',
decimals: 18,
},
rpcUrls: {
default: { http: ['https://rpc.tempo.xyz'] },
},
blockExplorers: {
default: { name: 'Tempo Explorer', url: 'https://explore.tempo.xyz' },
},
})
export const SupportedChainsList = [
mainnet,
polygon,
optimism,
arbitrum,
gnosis,
fantom,
avalanche,
bsc,
aurora,
zora,
base,
sepolia,
hoodi,
optimismSepolia,
baseSepolia,
zoraSepolia,
shape,
worldchain,
plumeMainnet,
tempoTestnet,
tempoMainnet,
abstract,
abstractTestnet,
ronin,
saigon,
celo,
] as const
type SupportedChain = (typeof SupportedChainsList)[number]
export type SupportedChainId = SupportedChain['id']
export const isSupportedChainId = (
chainId: number | undefined | null,
): chainId is SupportedChainId => {
if (chainId === undefined || chainId === null) return false
return Object.keys(CHAIN_INFO).includes(String(chainId))
}
export interface L1ChainInfo {
readonly label: string
readonly logoUrl: string
readonly nativeCurrency: {
symbol: string
}
}
type ChainInfo = {
readonly [chainId in SupportedChainId]: L1ChainInfo
}
export const CHAIN_INFO: ChainInfo = {
[]: {
label: 'Ethereum',
logoUrl: '/networks/ethereum_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Polygon',
logoUrl: '/networks/polygon_logo.svg',
nativeCurrency: {
symbol: 'MATIC',
},
},
[]: {
label: 'Optimism',
logoUrl: '/networks/optimism_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Arbitrum',
logoUrl: '/networks/arbitrum_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Gnosis',
logoUrl: '/networks/gnosis_logo.svg',
nativeCurrency: {
symbol: 'xDai',
},
},
[]: {
label: 'Fantom',
logoUrl: '/networks/fantom_logo.svg',
nativeCurrency: {
symbol: 'FTM',
},
},
[]: {
label: 'Avalanche',
logoUrl: '/networks/avalanche_logo.svg',
nativeCurrency: {
symbol: 'AVAX',
},
},
[]: {
label: 'BSC',
logoUrl: '/networks/bsc_logo.svg',
nativeCurrency: {
symbol: 'BNB',
},
},
[]: {
label: 'Aurora',
logoUrl: '/networks/aurora_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Zora',
logoUrl: '/networks/zora_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Base',
logoUrl: '/networks/base_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Sepolia',
logoUrl: '/networks/ethereum_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Hoodi',
logoUrl: '/networks/ethereum_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Optimism Sepolia',
logoUrl: '/networks/optimism_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Base Sepolia',
logoUrl: '/networks/base.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Zora Sepolia',
logoUrl: '/networks/zora_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Shape',
logoUrl: '/networks/shape_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'World Chain',
logoUrl: '/networks/worldchain_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Plume',
logoUrl: '/networks/plume_logo.svg',
nativeCurrency: {
symbol: 'PLUME',
},
},
[]: {
label: 'Tempo Testnet',
logoUrl: '/networks/ethereum_logo.svg',
nativeCurrency: {
symbol: 'USD',
},
},
[]: {
label: 'Tempo',
logoUrl: '/networks/ethereum_logo.svg',
nativeCurrency: {
symbol: 'USD',
},
},
[]: {
label: 'Abstract',
logoUrl: '/networks/abstract_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Abstract Testnet',
logoUrl: '/networks/abstract_logo.svg',
nativeCurrency: {
symbol: 'ETH',
},
},
[]: {
label: 'Ronin',
logoUrl: '/networks/ronin_logo.svg',
nativeCurrency: {
symbol: 'RON',
},
},
[]: {
label: 'Saigon',
logoUrl: '/networks/ronin_logo.svg',
nativeCurrency: {
symbol: 'RON',
},
},
[]: {
label: 'Celo',
logoUrl: '/networks/celo_logo.svg',
nativeCurrency: {
symbol: 'CELO',
},
},
}