vaea-flash-sdk 0.1.0

VAEA Flash — Universal Flash Loan SDK for Solana. Borrow any SPL token atomically in one call.
Documentation
# VAEA Flash SDK (Rust)

**Universal Flash Loan SDK for Solana** — Borrow any SPL token atomically in one call.

[![Crates.io](https://img.shields.io/crates/v/vaea-flash-sdk.svg)](https://crates.io/crates/vaea-flash-sdk)
[![Docs.rs](https://docs.rs/vaea-flash-sdk/badge.svg)](https://docs.rs/vaea-flash-sdk)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

## Features

- **83+ tokens** — SOL, USDC, JitoSOL, mSOL, JUP, and 78 more
- **3 protocols** — Marginfi, Kamino, Jupiter Lend
- **Smart Router (VTE)** — Automatically finds cheapest route
- **Local Builder** — Build instructions in <0.1ms, zero HTTP
- **Jito Bundle** — Native MEV protection support
- **Profitability Check** — Verify profit before execution
- **Multi-token** — Atomic multi-asset flash loans

## Quick Start

```toml
[dependencies]
vaea-flash-sdk = "0.1"
```

```rust
use vaea_flash_sdk::{VaeaFlash, BorrowParams};
use solana_sdk::signature::Keypair;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let payer = Keypair::new();
    let flash = VaeaFlash::with_rpc(
        "https://api.vaea.fi",
        "https://api.mainnet-beta.solana.com",
        &payer,
    )?;

    // Check available liquidity
    let capacity = flash.get_capacity().await?;
    let sol = capacity.tokens.iter().find(|t| t.symbol == "SOL").unwrap();
    println!("SOL available: {} ({})", sol.max_amount, sol.source_protocol);

    // Get a quote
    let quote = flash.get_quote("SOL", 1000.0).await?;
    println!("Fee: {}% ({} SOL)", quote.fee_breakdown.total_fee_pct, quote.fee_breakdown.total_fee_sol);

    // Build flash loan instructions
    let ixs = flash.borrow(&BorrowParams {
        token: "SOL".to_string(),
        amount: 1000.0,
        instructions: vec![/* your arb instructions */],
        slippage_bps: None,
        max_fee_bps: Some(5), // 0.05% max fee guard
    }).await?;

    println!("Built {} instructions", ixs.len());
    Ok(())
}
```

## Zero-HTTP Local Builder

For latency-critical bots, build instructions in **<0.1ms** with zero network calls:

```rust
use vaea_flash_sdk::{localBuild, LocalBuildParams, FlashTier, syncRegistry};

// Sync token registry once at startup
sync_registry(None).await;

// Build locally — 0.1ms, no HTTP
let result = local_build(LocalBuildParams {
    payer: wallet.pubkey(),
    token: "SOL".into(),
    amount: 1000.0,
    tier: FlashTier::Sdk,
})?;

// result.begin_flash + [your IXs] + result.end_flash
```

## API Methods

| Method | Description |
|--------|-------------|
| `get_capacity()` | Real-time liquidity across 83+ tokens |
| `get_quote(token, amount)` | Fee breakdown with VTE routing |
| `build(request)` | Get prefix/suffix instructions from API |
| `borrow(params)` | Build complete flash loan instructions |
| `borrow_local(params)` | Same as borrow, zero HTTP (<0.1ms) |
| `execute(params)` | Build + sign + send in one call |
| `execute_local(params)` | Same as execute, zero HTTP |
| `execute_smart(params)` | Smart routing with local fallback |
| `simulate(params)` | Dry-run simulation |
| `borrow_multi(params)` | Multi-token atomic flash loans |
| `is_profitable(params)` | Pre-execution profitability check |
| `read_flash_state(payer, mint)` | Read on-chain FlashState PDA |
| `get_route(token, amount, max_bps)` | VTE smart route resolution |
| `get_health()` | System health check |
| `get_matrix()` | Full liquidity matrix |
| `get_discovery()` | Token discovery summary |

## License

MIT — see [LICENSE](LICENSE)