use oxarchive::resources::spot::SpotTwapParams;
use oxarchive::resources::trades::GetTradesParams;
use oxarchive::OxArchive;
#[tokio::main]
async fn main() -> oxarchive::Result<()> {
let api_key = std::env::var("OXARCHIVE_API_KEY").expect("Set OXARCHIVE_API_KEY");
let client = OxArchive::new(api_key)?;
let pairs = client.hyperliquid.spot.pairs.list().await?;
println!("Spot: {} pairs", pairs.len());
for p in pairs.iter().take(5) {
println!(" {} (mark={:?}, mid={:?})", p.symbol, p.mark_price, p.mid_price);
}
let hype = client.hyperliquid.spot.pairs.get("HYPE-USDC").await?;
println!("\nHYPE-USDC: base={:?}, quote={:?}", hype.base, hype.quote);
let ob = client.hyperliquid.spot.orderbook.get("HYPE-USDC", None).await?;
println!(
"\nHYPE-USDC orderbook: {} bids, {} asks, mid={:?}",
ob.bids.len(),
ob.asks.len(),
ob.mid_price
);
let now_ms = chrono::Utc::now().timestamp_millis();
let day_ago_ms = now_ms - 24 * 60 * 60 * 1000;
let trades = client
.hyperliquid
.spot
.trades
.list(
"PURR-USDC",
GetTradesParams {
start: day_ago_ms.into(),
end: now_ms.into(),
cursor: None,
limit: Some(100),
side: None,
},
)
.await?;
println!("\nPURR-USDC trades (last 24h): {}", trades.data.len());
let twap = client
.hyperliquid
.spot
.twap
.by_symbol("HYPE-USDC", SpotTwapParams::default())
.await?;
println!("HYPE-USDC TWAP statuses: {}", twap.data.len());
let freshness = client.hyperliquid.spot.freshness("HYPE-USDC").await?;
println!("\nHYPE-USDC freshness: {} data types", freshness.data_types.len());
Ok(())
}