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

# Balances

# Balance Management

This guide covers querying and displaying token balances using the Privacy Boost CLI.

## CLI Commands

### Check Specific Token Balance

```bash theme={null}
privacy-boost balance --token 0x4200000000000000000000000000000000000006
```

Output:

```
Token: 0x4200...0006 (WETH)
Shielded Balance: 1.5 ETH
Wallet Balance: 0.5 ETH
```

### Check All Balances

```bash theme={null}
privacy-boost balances
```

Output:

```
Token                                      Shielded    Wallet
0x4200...0006 (WETH)                       1.5 ETH     0.5 ETH
0xA0b8...4321 (USDC)                       100.0 USDC  50.0 USDC
```

## Programmatic Usage (Rust)

### Single Token

```rust theme={null}
let balance = sdk.get_balance("0x4200000000000000000000000000000000000006")?;
println!("Shielded: {} wei", balance.shielded_balance);
println!("Wallet: {} wei", balance.wallet_balance);

// Format for display
let formatted = sdk.format_amount(&balance.shielded_balance, balance.decimals)?;
println!("Shielded: {} {}", formatted, balance.symbol.unwrap_or_default());
```

### All Tokens

```rust theme={null}
let balances = sdk.get_all_balances()?;
for balance in &balances {
    let formatted = sdk.format_amount(&balance.shielded_balance, balance.decimals)?;
    println!("{}: {} (shielded)", balance.symbol.as_deref().unwrap_or("???"), formatted);
}
```

### TokenBalance

```rust theme={null}
pub struct TokenBalance {
    pub token_address: String,
    pub shielded_balance: String,  // Amount in wei
    pub wallet_balance: String,    // Amount in wei
    pub symbol: Option<String>,
    pub decimals: u8,
}
```

## Formatting Amounts

```rust theme={null}
// Parse human-readable to wei
let wei = sdk.parse_amount("1.5", 18)?;   // "1500000000000000000"

// Format wei to human-readable
let eth = sdk.format_amount("1500000000000000000", 18)?;  // "1.5"

// For USDC (6 decimals)
let usdc_wei = sdk.parse_amount("100.0", 6)?;  // "100000000"
```

## Error Handling

```rust theme={null}
match sdk.get_balance(token_address) {
    Ok(balance) => {
        let formatted = sdk.format_amount(&balance.shielded_balance, balance.decimals)?;
        println!("Shielded: {}", formatted);
    }
    Err(CliError::NotAuthenticated) => println!("Please login first"),
    Err(CliError::NetworkError { message }) => println!("Network error: {}", message),
    Err(e) => println!("Balance error: {:?}", e),
}
```

## Best Practices

### 1. Use Format Helpers

Always use `sdk.format_amount()` to convert wei strings for display.

### 2. Refresh After Operations

Check balances after deposits, withdrawals, or transfers.

## Next Steps

* [Deposits Guide](./deposits)
* [Withdrawals Guide](./withdrawals)
* [Transactions Guide](./transactions)
* [Error Handling](./error-handling)
