# VAEA Flash SDK (Rust)
**Universal Flash Loan SDK for Solana** — Borrow any SPL token atomically in one call.
[](https://crates.io/crates/vaea-flash-sdk)
[](https://docs.rs/vaea-flash-sdk)
[](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
| `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)