@0xsplits/splits-sdk
Version:
SDK for the 0xSplits protocol
39 lines (33 loc) • 814 B
text/typescript
import { Address, getContract, zeroAddress } from 'viem'
import { CHAIN_INFO } from '../constants'
import { erc20Abi } from '../constants/abi/erc20'
import { SplitsPublicClient } from '../types'
export const getTokenData = async (
chainId: number,
token: Address,
publicClient: SplitsPublicClient,
): Promise<{
symbol: string
decimals: number
}> => {
if (token === zeroAddress) {
return {
symbol: CHAIN_INFO[chainId].nativeCurrency.symbol,
decimals: 18,
}
}
const tokenContract = getContract({
abi: erc20Abi,
address: token,
client: publicClient,
})
// TODO: error handling? For bad erc20...
const [decimals, symbol] = await Promise.all([
tokenContract.read.decimals(),
tokenContract.read.symbol(),
])
return {
symbol,
decimals,
}
}