@shogun-sdk/money-legos
Version:
Shogun Money Legos: clients and types for quotes, memes, prices, balances, fees, validations, etc.
46 lines • 1.71 kB
JavaScript
import { erc20Abi } from 'viem';
import { getEvmJsonRpcProvider } from '../utils/rpc.js';
import { berachain } from 'viem/chains';
export const getTokenData = async (tokenAddress, chainId, walletAddress) => {
const publicClient = getEvmJsonRpcProvider(chainId);
// Fetch token data using multicall
const results = await publicClient.multicall({
// @ts-ignore
contracts: [
...(walletAddress
? [
{
address: tokenAddress,
abi: erc20Abi,
functionName: 'balanceOf',
args: [walletAddress],
},
]
: []),
{
address: tokenAddress,
abi: erc20Abi,
functionName: 'decimals',
},
{
address: tokenAddress,
abi: erc20Abi,
functionName: 'symbol',
},
{
address: tokenAddress,
abi: erc20Abi,
functionName: 'name',
},
],
multicallAddress: chainId === berachain.id ? '0x8adce287716648df409faccbbecf76fe25c8fe22' : undefined,
});
const [balance, decimals, symbol, name] = walletAddress ? results : [undefined, ...results];
return {
balance: balance?.result ? BigInt(balance.result) : undefined,
decimals: decimals?.result ? Number(decimals.result) : undefined,
symbol: symbol?.result ? String(symbol.result) : undefined,
name: name?.result ? String(name.result) : undefined,
};
};
//# sourceMappingURL=rawBlockchainCalls.js.map