@0xsplits/splits-kit
Version:
UI Components for working with 0xSplits contracts
240 lines (231 loc) • 4.42 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,
} from 'viem/chains'
export const SupportedChainsList = [
mainnet,
polygon,
optimism,
arbitrum,
gnosis,
fantom,
avalanche,
bsc,
aurora,
zora,
base,
sepolia,
hoodi,
optimismSepolia,
baseSepolia,
zoraSepolia,
shape,
worldchain,
plumeMainnet,
abstract,
abstractTestnet,
ronin,
saigon,
] 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: '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',
},
},
}