> ## 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.

# Cómo usar getTokenSupply

> Conoce los casos de uso de getTokenSupply, ejemplos de código, parámetros de solicitud, estructura de respuesta y consejos.

El método RPC [`getTokenSupply`](https://www.helius.dev/docs/api-reference/rpc/http/gettokensupply) devuelve la oferta total de una acuñación específica de tokens SPL. Esto es esencial para conocer la cantidad total de un token que se ha creado.

## Casos de uso comunes

* **Mostrar información del token:** Muestra la oferta total de un token en un explorador o en la interfaz de una billetera.
* **Análisis de la economía del token:** Permite conocer la emisión total máxima o actual de un token.
* **Verificación:** Comprueba la oferta de un token según los datos de la propia cuenta de acuñación.
* **Supervisión de cambios en la oferta:** Si un token se puede acuñar, puedes usar este método para seguir los cambios en su oferta total a lo largo del tiempo. Sin embargo, en el caso de los tokens fungibles, la oferta suele ser fija o estar gestionada por una autoridad de acuñación.

## Parámetros de la solicitud

1. **`mintAddress`** (string, obligatorio): La clave pública codificada en base 58 de la acuñación del token cuya oferta total quieres consultar.

2. **`options`** (object, opcional): Un objeto de configuración opcional que puede incluir:
   * **`commitment`** (string, opcional): Especifica el [nivel de compromiso](https://www.helius.dev/blog/solana-commitment-levels) de la consulta (por ejemplo, `"finalized"`, `"confirmed"`, `"processed"`).

## Estructura de la respuesta

El campo `result.value` de la respuesta JSON-RPC es un objeto que contiene detalles sobre la oferta del token:

* **`amount`** (string): La oferta total del token en su unidad mínima (cantidad sin procesar), representada como una cadena. Este valor no está ajustado según los decimales.
* **`decimals`** (u8): La cantidad de posiciones decimales definidas para la acuñación de este token. Este valor es fundamental para convertir el valor sin procesar de `amount` a un formato legible.
* **`uiAmount`** (number | null): La oferta total del token como número de punto flotante, ajustada según el valor `decimals` del token. Este campo puede ser null o menos preciso; por lo general, se recomienda usar `uiAmountString` para mostrar el valor.
* **`uiAmountString`** (string): La oferta total del token como una cadena, ajustada según el valor `decimals` del token. Esta es la representación más fácil de interpretar de la oferta total.

**Ejemplo de respuesta:**

```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
}
```

## Ejemplos 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>

## Consejos para desarrolladores

* **Oferta inmutable (por lo general):** En la mayoría de los tokens SPL, una vez acuñados, la oferta total desde la perspectiva de la propia cuenta de acuñación permanece fija, a menos que la acuñación tenga una autoridad específica capaz de crear más tokens o quemarlos. Sin embargo, la quema suele realizarse desde cuentas de tokens, no directamente desde la oferta de la acuñación.
* **`decimals` es fundamental:** Usa siempre el campo `decimals` para interpretar correctamente `amount` o `uiAmountString`.
* **Fuente de datos:** Este método consulta directamente la cuenta de acuñación para obtener información sobre su oferta.

Esta guía proporciona la información necesaria para usar eficazmente el método RPC `getTokenSupply` al consultar la oferta de tokens SPL en Solana.
