lightcone 0.5.2

Rust SDK for the Lightcone Protocol — unified native + WASM client
Documentation
mod common;

use common::{market_and_orderbook, rest_client, ExampleResult};
use lightcone::domain::trade::Trade;

fn print_trades(page_label: &str, trades: &[Trade]) {
    println!("{page_label}: {} trade(s)", trades.len());
    for trade in trades {
        println!(
            "  {} {} {} {} @ {}",
            trade.trade_id,
            trade.timestamp.to_rfc3339(),
            trade.size,
            trade.side,
            trade.price
        );
    }
}

#[tokio::main]
async fn main() -> ExampleResult {
    let client = rest_client()?;
    let (_, orderbook) = market_and_orderbook(&client).await?;

    let first_page = client
        .trades()
        .get(orderbook.orderbook_id.as_str(), Some(10), None)
        .await?;
    print_trades("page 1", &first_page.trades);
    if let Some(trade) = first_page.trades.first() {
        println!("latest: {} {} @ {}", trade.size, trade.side, trade.price);
    }

    if let Some(cursor) = first_page.next_cursor {
        let next_page = client
            .trades()
            .get(orderbook.orderbook_id.as_str(), Some(10), Some(cursor))
            .await?;
        print_trades("page 2", &next_page.trades);
    }

    Ok(())
}