Importar

import { useGetTokenBalancesByContract } from '@0xsequence/hooks'

Uso

import { useGetTokenBalancesByContract } from '@0xsequence/hooks'
import { useAccount } from 'wagmi'
import { ContractVerificationStatus } from '@0xsequence/connect'

function TokenBalances() {
  const { address } = useAccount()
  
  const {
    data: balances,
    isLoading,
    isError
  } = useGetTokenBalancesByContract({
    chainIds: [1], // Ethereum mainnet
    filter: {
      contractAddresses: [
        '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', // USDC
        '0xdac17f958d2ee523a2206206994597c13d831ec7'  // USDT
      ],
      accountAddresses: [address || ''],
      contractStatus: ContractVerificationStatus.VERIFIED // Optional: only fetch verified contracts
    }
  }, {
    hideCollectibles: true // Optional: filter out NFTs
  })

  if (isLoading) return <div>Loading...</div>
  if (isError) return <div>Error fetching balances</div>

  return (
    <div>
      {balances?.map(balance => (
        <div key={`${balance.chainId}-${balance.contractAddress}`}>
          <h3>{balance.contractInfo?.symbol || 'Unknown Token'}</h3>
          <p>Balance: {balance.balance}</p>
          <p>Contract: {balance.contractAddress}</p>
          {balance.contractInfo && (
            <img 
              src={balance.contractInfo.logoURI} 
              alt={balance.contractInfo.symbol}
              width={24} 
              height={24} 
            />
          )}
        </div>
      ))}
    </div>
  )
}

Tipo de retorno: UseQueryResult<TokenBalance[]>

El hook retorna todas las propiedades de UseQueryResult de React Query con los datos de balances de tokens. Esta es la estructura detallada:

interface TokenBalance {
  contractType: ContractType
  contractAddress: string
  accountAddress: string
  tokenID?: string
  balance: string
  blockHash: string
  blockNumber: number
  chainId: number
  uniqueCollectibles: string
  isSummary: boolean
  contractInfo?: ContractInfo
  tokenMetadata?: TokenMetadata
}

Propiedades

data

TokenBalance[] | undefined

Arreglo de objetos de balance de tokens que contienen:

  • contractType: Tipo de contrato del token (ERC20, ERC721, ERC1155)
  • contractAddress: Dirección del contrato del token
  • accountAddress: Dirección de la cuenta que posee los tokens
  • balance: Balance del token como string (en unidades base)
  • chainId: Chain ID donde existe el token
  • blockHash: Hash del bloque donde el balance fue actualizado por última vez
  • blockNumber: Número de bloque donde el balance fue actualizado por última vez
  • tokenID: ID de token opcional para NFTs
  • contractInfo: Información opcional del contrato del token, incluyendo nombre, símbolo, decimales y URL del logo
  • tokenMetadata: Metadatos opcionales del token
  • uniqueCollectibles: Cantidad de coleccionables únicos
  • isSummary: Indica si el balance es un resumen

isLoading

boolean

Estado de carga para la obtención de datos.

isError

boolean

Estado de error que indica si la consulta falló.

error

Error | null

Cualquier error que ocurrió durante la obtención de datos.

Parámetros

El hook acepta dos parámetros:

args: GetTokenBalancesByContractArgs

enum ContractVerificationStatus {
    VERIFIED = "VERIFIED",
    UNVERIFIED = "UNVERIFIED",
    ALL = "ALL"
}

interface GetTokenBalancesByContractArgs {
  chainIds: number[]
  filter: {
    contractAddresses: string[]
    accountAddresses?: string[]
    contractStatus?: ContractVerificationStatus
  }
}
ParámetroTypeDescription
chainIdsnumber[]Array de IDs de cadena para obtener balances
filter.contractAddressesstring[]Arreglo de direcciones de contratos de tokens para obtener balances
filter.accountAddressesstring[](Opcional) Arreglo de direcciones de cuentas para obtener balances
filter.contractStatusContractVerificationStatus(Opcional) Filtro para el estado de verificación del contrato

options: BalanceHookOptions

interface BalanceHookOptions {
  disabled?: boolean
  retry?: boolean
  hideCollectibles?: boolean
}
ParámetroTypeDescription
disabledboolean(Opcional) Deshabilitar la consulta para que no se ejecute automáticamente
retryboolean(Opcional) Indica si se deben reintentar las consultas fallidas
hideCollectiblesboolean(Opcional) Si es true, filtra tokens ERC721 y ERC1155