> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Como Usar getTokenSupply

> Aprenda casos de uso do getTokenSupply, exemplos de código, parâmetros de requisição, estrutura de resposta e dicas.

O método RPC [`getTokenSupply`](https://www.helius.dev/docs/api-reference/rpc/http/gettokensupply) retorna o suprimento total de uma determinada mint de Token SPL. Isso é essencial para entender a quantidade geral de um token que foi criada.

## Casos de Uso Comuns

* **Exibindo Informações do Token:** Mostrar o suprimento total de um token em um explorador ou em uma interface de carteira.
* **Análise de Tokenomics:** Entender a emissão máxima ou total atual de um token.
* **Verificação:** Verificar o suprimento de um token conforme relatado pela conta de mint.
* **Monitoramento de Mudanças no Suprimento:** Se um token é mintable, isso pode ser usado para rastrear mudanças no seu suprimento total ao longo do tempo (embora para tokens fungíveis, o suprimento geralmente seja fixo ou gerenciado por uma autoridade de mint).

## Parâmetros de Requisição

1. **`mintAddress`** (string, obrigatório): A chave pública codificada em base-58 da mint do token cujo suprimento total você deseja consultar.

2. **`options`** (objeto, opcional): Um objeto de configuração opcional que pode incluir:
   * **`commitment`** (string, opcional): Especifica o [nível de compromisso](https://www.helius.dev/blog/solana-commitment-levels) para a consulta (por exemplo, `"finalized"`, `"confirmed"`, `"processed"`).

## Estrutura de Resposta

O campo `result.value` na resposta JSON-RPC é um objeto contendo detalhes sobre o suprimento do token:

* **`amount`** (string): O suprimento total do token em sua menor denominação (quantidade bruta), como uma string. Este valor não é ajustado para decimais.
* **`decimals`** (u8): O número de casas decimais definido para esta mint de token. Isto é crucial para converter o `amount` bruto para um formato legível.
* **`uiAmount`** (número | nulo): O suprimento total do token como um número de ponto flutuante, ajustado para o `decimals` do token. Este campo pode ser nulo ou menos preciso; `uiAmountString` é geralmente preferido para exibição.
* **`uiAmountString`** (string): O suprimento total do token como uma string, ajustado para o `decimals` do token. Esta é a representação mais amigável para o usuário do suprimento total.

**Resposta de Exemplo:**

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "result": {
    "context": { "slot": 123456789 },
    "value": {
      "amount": "1000000000000000", // e.g., 1,000,000,000 tokens with 6 decimals
      "decimals": 6,
      "uiAmount": 1000000000.0,
      "uiAmountString": "1000000000.0"
    }
  },
  "id": 1
}
```

## Exemplos de Código

<CodeGroup>
  ```bash cURL theme={"system"}
  # Replace <TOKEN_MINT_PUBKEY> with the actual mint address
  curl -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getTokenSupply",
      "params": [
        "<TOKEN_MINT_PUBKEY>"
      ]
    }' \
    <YOUR_RPC_URL>

  # Example with commitment level
  curl -X POST -H "Content-Type: application/json" -d \
    '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "getTokenSupply",
      "params": [
        "<TOKEN_MINT_PUBKEY>",
        { "commitment": "confirmed" }
      ]
    }' \
    <YOUR_RPC_URL>
  ```

  ```javascript JavaScript (using @solana/web3.js) theme={"system"}
  const { Connection, PublicKey } = require('@solana/web3.js');

  async function checkTokenSupply(mintAddress) {
    // Replace with your RPC endpoint
    const connection = new Connection('https://mainnet.helius-rpc.com/?api-key=<api-key>');
    const mintPublicKey = new PublicKey(mintAddress);

    try {
      const tokenSupply = await connection.getTokenSupply(mintPublicKey);
      console.log(`Token Supply for Mint ${mintAddress}:`);
      console.log(`  UI Amount: ${tokenSupply.value.uiAmountString}`);
      console.log(`  Raw Amount: ${tokenSupply.value.amount}`);
      console.log(`  Decimals: ${tokenSupply.value.decimals}`);
      // For full details:
      // console.log(JSON.stringify(tokenSupply, null, 2));
    } catch (error) {
      console.error(`Error fetching token supply for mint ${mintAddress}:`, error);
    }
  }

  // Replace with the actual token mint public key you want to query
  const exampleTokenMint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'; // USDC mint
  checkTokenSupply(exampleTokenMint);

  // Example with a different mint (e.g., Raydium)
  // const raydiumMint = '4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R';
  // checkTokenSupply(raydiumMint);
  ```
</CodeGroup>

## Dicas para Desenvolvedores

* **Suprimento Imutável (Geralmente):** Para a maioria dos tokens SPL, uma vez cunhados, o suprimento total na perspectiva da conta de mint em si é fixo, a menos que a mint tenha uma autoridade de mint específica que possa criar mais tokens (ou queimá-los, embora a queima geralmente aconteça a partir de contas de token, não do suprimento da mint diretamente).
* **`decimals` é Fundamental:** Sempre use o campo `decimals` para interpretar corretamente o `amount` ou o `uiAmountString`.
* **Fonte de Dados:** Este método consulta a conta de mint diretamente para obter informações do suprimento.

Este guia fornece as informações necessárias para usar o método RPC `getTokenSupply` efetivamente para consultar o suprimento de tokens SPL no Solana.
