UNPKG

@shogun-sdk/money-legos

Version:

Shogun Money Legos: clients and types for quotes, memes, prices, balances, fees, validations, etc.

46 lines 1.71 kB
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