import { apeChain, arbitrum, avalanche, avalancheFuji, base, baseSepolia, blast, blastSepolia, bsc, cyber, cyberTestnet, degen, ham, hashkey, kaia, mainnet, optimism, polygon, sepolia, shibarium, shibariumTestnet, unichain, zora, } from 'viem/chains'; import { over, robinhood, SdkSupportedChainIds } from '../contracts'; import { APECHAIN_TOKENS } from './apeChain'; import { ARBITRUM_TOKENS } from './arbitrum'; import { AVALANCHE_TOKENS } from './avalanche'; import { AVALANCHE_FUJI_TOKENS } from './avalanche-fuji'; import { BASE_TOKENS } from './base'; import { BASE_SEPOLIA_TOKENS } from './base-sepolia'; import { BLAST_TOKENS } from './blast'; import { BLAST_SEPOLIA_TOKENS } from './blast-sepolia'; import { BSC_TOKENS } from './bsc'; import { CYBER_TOKENS } from './cyber'; import { CYBER_TESTNET_TOKENS } from './cyber-testnet'; import { DEGEN_TOKENS } from './degen'; import { HAM_TOKENS } from './ham'; import { HASHKEY_TOKENS } from './hashkey'; import { KAIA_TOKENS } from './kaia'; import { MAINNET_TOKENS } from './mainnet'; import { OPTIMISM_TOKENS } from './optimism'; import { OVER_TOKENS } from './over'; import { POLYGON_TOKENS } from './polygon'; import { ROBINHOOD_TOKENS } from './robinhood'; import { SHIBARIUM_TESTNET_TOKENS } from './puppynet'; import { SEPOLIA_TOKENS } from './sepolia'; import { SHIBARIUM_TOKENS } from './shibarium'; import { UNICHAIN_TOKENS } from './unichain'; import { ZORA_TOKENS } from './zora'; // Ref: https://api.coingecko.com/api/v3/asset_platforms export const COINGECKO_NETWORK_IDS = { [mainnet.id]: 'ethereum', [optimism.id]: 'optimistic-ethereum', [arbitrum.id]: 'arbitrum-one', [avalanche.id]: 'avalanche', [base.id]: 'base', [polygon.id]: 'polygon-pos', [bsc.id]: 'binance-smart-chain', [sepolia.id]: 'ethereum', // sepolia not supported by coingecko API [blast.id]: 'ethereum', // blast not supported by coingecko API [blastSepolia.id]: 'ethereum', // blast sepolia not supported by coingecko API [avalancheFuji.id]: 'ethereum', // avalanche-fuji not supported by coingecko API [shibarium.id]: 'shib', [robinhood.id]: 'robinhood', } as const satisfies Partial>; export type BaseToken = { name: string; symbol: string; address: `0x${string}`; decimals: number; image?: string | null; }; export type WrappedToken = { image: string; tokenAddress: `0x${string}`; nativeSymbol: string; oneInchSymbol: 'USDT' | 'USDC' | 'USDbC' | 'USDB'; decimals: number; }; export const WRAPPED_NATIVE_TOKENS: Record = { [mainnet.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', nativeSymbol: 'ETH', oneInchSymbol: 'USDT', decimals: 18, }, [optimism.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0x4200000000000000000000000000000000000006', nativeSymbol: 'ETH', oneInchSymbol: 'USDT', decimals: 18, }, [arbitrum.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0x82aF49447D8a07e3bd95BD0d56f35241523fBab1', nativeSymbol: 'ETH', oneInchSymbol: 'USDT', decimals: 18, }, [avalanche.id]: { image: 'https://mint.club/assets/tokens/avalanche.png', tokenAddress: '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7', nativeSymbol: 'AVAX', oneInchSymbol: 'USDT', decimals: 18, }, [polygon.id]: { image: 'https://mint.club/assets/tokens/matic.png', tokenAddress: '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', nativeSymbol: 'MATIC', oneInchSymbol: 'USDT', decimals: 18, }, [bsc.id]: { image: 'https://mint.club/assets/tokens/bnb.png', tokenAddress: '0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c', nativeSymbol: 'BNB', oneInchSymbol: 'USDT', decimals: 18, }, [base.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0x4200000000000000000000000000000000000006', nativeSymbol: 'ETH', oneInchSymbol: 'USDbC', decimals: 18, }, [sepolia.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14', nativeSymbol: 'ETH', oneInchSymbol: 'USDT', decimals: 18, }, [baseSepolia.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0x4200000000000000000000000000000000000006', nativeSymbol: 'ETH', oneInchSymbol: 'USDT', decimals: 18, }, [blast.id]: { image: 'https://mint.club/assets/tokens/blast.png', tokenAddress: '0x4300000000000000000000000000000000000004', nativeSymbol: 'ETH', oneInchSymbol: 'USDB', decimals: 18, }, [blastSepolia.id]: { image: 'https://mint.club/assets/tokens/blast.png', tokenAddress: '0x4200000000000000000000000000000000000023', nativeSymbol: 'ETH', oneInchSymbol: 'USDB', decimals: 18, }, [avalancheFuji.id]: { image: 'https://mint.club/assets/tokens/avalanche.png', tokenAddress: '0xd00ae08403B9bbb9124bB305C09058E32C39A48c', nativeSymbol: 'AVAX', oneInchSymbol: 'USDT', decimals: 18, }, [degen.id]: { image: 'https://mint.club/assets/tokens/degen.png', tokenAddress: '0xEb54dACB4C2ccb64F8074eceEa33b5eBb38E5387', nativeSymbol: 'DEGEN', oneInchSymbol: 'USDC', decimals: 18, }, [cyber.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0x4200000000000000000000000000000000000006', nativeSymbol: 'ETH', oneInchSymbol: 'USDT', decimals: 18, }, [cyberTestnet.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0xf760686C2b40F7C526D040b979641293D2F55816', nativeSymbol: 'ETH', oneInchSymbol: 'USDC', decimals: 18, }, [kaia.id]: { image: 'https://mint.club/assets/tokens/kaia.png', tokenAddress: '0x608792Deb376CCE1c9FA4D0E6B7b44f507CfFa6A', nativeSymbol: 'KLAY', oneInchSymbol: 'USDC', decimals: 6, }, [ham.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0x4200000000000000000000000000000000000006', nativeSymbol: 'ETH', oneInchSymbol: 'USDC', decimals: 18, }, [shibarium.id]: { image: 'https://mint.club/assets/tokens/bone.png', tokenAddress: '0xC76F4c819D820369Fb2d7C1531aB3Bb18e6fE8d8', nativeSymbol: 'WBONE', oneInchSymbol: 'USDC', decimals: 18, }, [shibariumTestnet.id]: { image: 'https://mint.club/assets/tokens/bone.png', tokenAddress: '0x41c3F37587EBcD46C0F85eF43E38BcfE1E70Ab56', nativeSymbol: 'WBONE', oneInchSymbol: 'USDC', decimals: 18, }, [unichain.id]: { image: 'https://mint.club/assets/tokens/weth.png', tokenAddress: '0x4200000000000000000000000000000000000006', nativeSymbol: 'ETH', oneInchSymbol: 'USDT', decimals: 18, }, [hashkey.id]: { image: 'https://mint.club/assets/tokens/hashkey.png', tokenAddress: '0xB210D2120d57b758EE163cFfb43e73728c471Cf1', nativeSymbol: 'HSK', oneInchSymbol: 'USDC', decimals: 18, }, [robinhood.id]: { image: 'https://mint.club/assets/tokens/weth.png', tokenAddress: '0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73', nativeSymbol: 'ETH', oneInchSymbol: 'USDT', // NOTE: not supported yet decimals: 18, }, [over.id]: { image: 'https://assets.coingecko.com/coins/images/35082/large/overprotocol-logo.png?1707308333', tokenAddress: '0x59c914C8ac6F212bb655737CC80d9Abc79A1e273', nativeSymbol: 'OVER', oneInchSymbol: 'USDT', // NOTE: not supported yet decimals: 18, }, [zora.id]: { image: 'https://mint.club/assets/tokens/eth.png', tokenAddress: '0x4200000000000000000000000000000000000006', nativeSymbol: 'ETH', oneInchSymbol: 'USDT', decimals: 18, }, [apeChain.id]: { image: 'https://mint.club/assets/tokens/ape.png', tokenAddress: '0x48b62137EdfA95a428D35C09E44256a739F6B557', nativeSymbol: 'APE', oneInchSymbol: 'USDC', decimals: 18, }, }; // the tokens were scraped from coingecko using a custom scraper, mint.club-scripts/whitelist export const TOKENS: Record> = { [apeChain.id]: APECHAIN_TOKENS, [arbitrum.id]: ARBITRUM_TOKENS, [avalanche.id]: AVALANCHE_TOKENS, [avalancheFuji.id]: AVALANCHE_FUJI_TOKENS, [base.id]: BASE_TOKENS, [baseSepolia.id]: BASE_SEPOLIA_TOKENS, [blast.id]: BLAST_TOKENS, [blastSepolia.id]: BLAST_SEPOLIA_TOKENS, [bsc.id]: BSC_TOKENS, [cyber.id]: CYBER_TOKENS, [cyberTestnet.id]: CYBER_TESTNET_TOKENS, [degen.id]: DEGEN_TOKENS, [ham.id]: HAM_TOKENS, [hashkey.id]: HASHKEY_TOKENS, [kaia.id]: KAIA_TOKENS, [mainnet.id]: MAINNET_TOKENS, [optimism.id]: OPTIMISM_TOKENS, [over.id]: OVER_TOKENS, [polygon.id]: POLYGON_TOKENS, [robinhood.id]: ROBINHOOD_TOKENS, [sepolia.id]: SEPOLIA_TOKENS, [shibarium.id]: SHIBARIUM_TOKENS, [shibariumTestnet.id]: SHIBARIUM_TESTNET_TOKENS, [unichain.id]: UNICHAIN_TOKENS, [zora.id]: ZORA_TOKENS, }; export type TokenChain = keyof typeof TOKENS; export type TokenSymbol = keyof (typeof TOKENS)[TokenChain];