hts/apps/migrant/lib/viem-utils.ts

41 lines
1.4 KiB
TypeScript

import { Chain } from 'viem'
import * as allViemChains from 'viem/chains'
const { ...chains } = allViemChains
export function getChainById(chainId: number) {
for (const chain of Object.values(chains)) {
if (chain.id === chainId) {
return chain
}
}
throw new Error(`Chain with id ${chainId} not found`)
}
export const API_URLS: Record<Chain['id'], string> = {
1: 'https://api.etherscan.io/api',
5: 'https://api-goerli.etherscan.io/api',
11155111: 'https://api-sepolia.etherscan.io/api',
421613: 'https://api-goerli.arbiscan.io/api',
80001: 'https://api-testnet.polygonscan.com/api',
420: 'https://api-goerli.optimistic.etherscan.io/api',
84532: 'https://api-sepolia.basescan.org/api',
5001: 'https://explorer.testnet.mantle.xyz/api'
}
export const API_KEYS: Record<Chain['id'], string> = {
1: `${process.env.ETHEREUM_EXPLORER_API_KEY}`,
5: `${process.env.ETHEREUM_EXPLORER_API_KEY}`,
11155111: `${process.env.ETHEREUM_EXPLORER_API_KEY}`,
421613: `${process.env.ARBITRUM_EXPLORER_API_KEY}`,
80001: `${process.env.POLYGON_EXPLORER_API_KEY}`,
420: `${process.env.OPTIMISM_EXPLORER_API_KEY}`,
84532: `${process.env.BASE_EXPLORER_API_KEY}`,
5001: `${process.env.MANTLE_EXPLORER_API_KEY}` // no key needed
}
export const getExplorerUrl = (viemChain: Chain): string | undefined => {
return viemChain?.blockExplorers?.default.url
}