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

# Tokens Soportados

> Tokens compatibles con pan API

## Token Principal: USDC

<Card title="USDC (USD Coin)" icon="dollar-sign">
  USDC es el token principal soportado por pan. Es una stablecoin respaldada 1:1
  por dolares estadounidenses, emitida por Circle.
</Card>

### ¿Por qué USDC?

1. **Estabilidad** - Mantiene paridad 1:1 con USD
2. **Liquidez** - Alto volumen en todas las chains soportadas
3. **Regulacion** - Circle está regulada en EE.UU.
4. **Transparencia** - Auditorias mensuales de reservas
5. **Adopcion** - Ampliamente aceptada en DeFi

## Direcciónes de USDC

### Mainnet

| Chain    | Dirección                                    | Decimales |
| -------- | -------------------------------------------- | --------- |
| Ethereum | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | 6         |
| Arbitrum | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | 6         |
| Base     | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | 6         |

### Testnet (USDC de prueba)

| Chain            | Dirección                                    | Decimales |
| ---------------- | -------------------------------------------- | --------- |
| Sepolia          | `0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8` | 6         |
| Arbitrum Sepolia | `0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d` | 6         |
| Base Sepolia     | `0x036CbD53842c5426634e7929541eC2318f3dCF7e` | 6         |

## Otros Tokens Soportados

pan también soporta estos tokens en mainnet:

| Token | Ethereum                                     | Arbitrum                                     | Base                                         |
| ----- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- |
| USDT  | `0xdAC17F958D2ee523a2206206994597C13D831ec7` | `0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9` | -                                            |
| DAI   | `0x6B175474E89094C44Da98b954EedeAC495271d0F` | `0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1` | -                                            |
| WETH  | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | `0x82aF49447D8a07e3bd95BD0d56f35241523fBab1` | `0x4200000000000000000000000000000000000006` |

<Warning>
  Los tokens de testnet no tienen valor real. Puedes obtenerlos de faucets
  o usando el endpoint demo de pan.
</Warning>

## Formatos de Balance

### Respuesta de API

```json theme={null}
{
  "walletId": "pan_wallet_abc123",
  "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
  "chains": [
    {
      "chain": "arbitrum-sepolia",
      "tokens": [
        {
          "asset": "USDC",
          "balance": "1000000000",
          "balanceFormatted": "1000.00",
          "decimals": 6,
          "valueUsd": 1000.00
        }
      ]
    }
  ],
  "totalValueUsd": 1000.00
}
```

### Campos Importantes

| Campo              | Tipo   | Descripción                       |
| ------------------ | ------ | --------------------------------- |
| `asset`            | string | Símbolo del token (USDC, WETH)    |
| `balance`          | string | Balance en unidades mínimas (wei) |
| `balanceFormatted` | string | Balance legible                   |
| `decimals`         | number | Decimales del token (6 para USDC) |
| `valueUsd`         | number | Valor en USD (opcional)           |

## Conversion de Unidades

### USDC tiene 6 decimales

```typescript theme={null}
// 1 USDC = 1,000,000 unidades minimas

// Convertir de unidades mínimas a USDC
function formatUSDC(balance: string): string {
  return (parseInt(balance) / 1e6).toFixed(2);
}

// Convertir de USDC a unidades minimas
function parseUSDC(amount: number): string {
  return Math.floor(amount * 1e6).toString();
}

// Ejemplos
formatUSDC("1000000");     // "1.00"
formatUSDC("1500000000");  // "1500.00"

parseUSDC(100);            // "100000000"
parseUSDC(0.5);            // "500000"
```

### Usando ethers.js

```typescript theme={null}
import { formatUnits, parseUnits } from 'ethers';

// Formatear
const formatted = formatUnits("1000000000", 6); // "1000.0"

// Parsear
const parsed = parseUnits("1000", 6); // BigNumber "1000000000"
```

## Tokens Derivados (aTokens)

Cuando depositas USDC en Aave, recibes aUSDC (Aave USDC).

### Características de aTokens

| Propiedad   | Descripción                     |
| ----------- | ------------------------------- |
| Nombre      | aUSDC (Aave USDC)               |
| Tipo        | Token con rebase                |
| Valor       | 1 aUSDC = 1 USDC (siempre)      |
| Rendimiento | Balance aumenta automáticamente |

### Como Funcióna el Rendimiento

```
Dia 1: Depositas 1000 USDC → Recibes 1000 aUSDC
Dia 30: Tu balance de aUSDC ahora es ~1004.3 aUSDC
        (asumiendo ~5% APY)
```

El balance de aUSDC aumenta cada bloque. No necesitas hacer nada
para reclamar el rendimiento.

### Direcciónes de aUSDC

| Chain    | Dirección aUSDC (Aave V3)                    |
| -------- | -------------------------------------------- |
| Ethereum | `0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c` |
| Arbitrum | `0x724dc807b04555b71ed48a6896b6F41593b8C637` |
| Base     | `0x4e65fE4DbA92790696d040ac24Aa414708F5c0AB` |

## Otros Tokens

<Info>
  Actualmente pan solo soporta USDC. Estamos evaluando agregar soporte para:

  * **USDT** - Otra stablecoin popular
  * **DAI** - Stablecoin descentralizada
  * **ETH** - Para staking
</Info>

### Tokens NO Soportados

pan no soporta y no planea soportar:

* Tokens meme (DOGE, SHIB, etc.)
* Tokens de alto riesgo
* Tokens sin liquidez
* Tokens en chains no soportadas

## Obtener USDC

### Para Produccion

1. **Exchanges centralizados** - Binance, Coinbase, Kraken
2. **Rampas fiat** - MoonPay, Transak
3. **DEXs** - Uniswap, 1inch
4. **P2P** - LocalBitcoins, Paxful

### Para Desarrollo (Testnet)

```bash theme={null}
# Usar el endpoint demo de pan (1 USDC en arbitrum-sepolia)
curl -X POST https://api.pan.tech/v1/demo/fund \
  -H "Authorization: Bearer $PAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "walletId": "pan_wallet_abc123"
  }'
```

<Note>
  El endpoint demo envia **1 USDC** en **arbitrum-sepolia**. Hay un rate limit de 1 request por wallet cada 60 segundos.
</Note>

O usa faucets oficiales:

* [Circle Faucet](https://faucet.circle.com)
* [Arbitrum Sepolia Faucet](https://faucet.arbitrum.io)

## Validación de Tokens

### Verificar Token Valido

```typescript theme={null}
// Direcciónes USDC oficiales usadas por pan
const USDC_ADDRESSES = {
  // Mainnet
  arbitrum: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',
  base: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
  ethereum: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',

  // Testnet
  'arbitrum-sepolia': '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d',
  'base-sepolia': '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
  sepolia: '0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8'
};

// Assets soportados
const SUPPORTED_ASSETS = ['USDC', 'USDT', 'DAI', 'WETH'] as const;

function isValidUSDC(address: string, chain: string): boolean {
  const expected = USDC_ADDRESSES[chain];
  return expected?.toLowerCase() === address.toLowerCase();
}
```

## FAQ

<AccordionGroup>
  <Accordion title="¿Por qué solo USDC y no otras stablecoins?">
    Empezamos con USDC porque:

    * Es la stablecoin más transparente y regulada
    * Tiene liquidez profunda en Aave en todas las chains
    * Circle (emisor) opera legalmente en EE.UU.
    * Auditorias mensuales de reservas

    Agregaremos más tokens basado en demanda.
  </Accordion>

  <Accordion title="¿Puedo depositar ETH directamente?">
    Actualmente no. pan se enfoca en stablecoins para rendimiento.
    Si tienes ETH, puedes:

    1. Intercambiarlo por USDC en un DEX
    2. Depositar el USDC en pan

    Soporte para ETH staking está en el roadmap.
  </Accordion>

  <Accordion title="¿Qué pasa si envío un token no soportado?">
    Los tokens no soportados se quedaran en tu wallet pero pan no los
    procesara. Podras recuperarlos usando tu clave privada en otra
    aplicación wallet.
  </Accordion>

  <Accordion title="¿Los balances de aUSDC se actualizan en tiempo real?">
    Si, el balance de aUSDC aumenta cada bloque (aproximadamente cada
    12 segundos en Ethereum, más rápido en L2s). Cuando consultas
    balances, siempre obtienes el valor actual.
  </Accordion>
</AccordionGroup>
