lightcone 0.6.1

Rust SDK for the Lightcone Protocol — unified native + WASM client
Documentation
#![doc = include_str!("README.md")]

pub mod client;
mod convert;
pub mod state;
pub mod wire;

use crate::shared::{OrderBookId, Side};
use chrono::{DateTime, Utc};
use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};

pub use state::TradeHistory;

/// A trade execution record.
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Trade {
    pub orderbook_id: OrderBookId,
    pub trade_id: String,
    /// Numeric REST row id used for cursor pagination. Absent on WS trades.
    #[serde(default)]
    pub cursor_id: Option<i64>,
    pub timestamp: DateTime<Utc>,
    pub price: Decimal,
    pub size: Decimal,
    pub side: Side,
    /// Monotonic sequence number per orderbook for ordering guarantees.
    /// Always present for WS trades; 0 for REST trades.
    #[serde(default)]
    pub sequence: u64,
}

/// A page of trades with cursor-based pagination metadata.
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct TradesPage {
    pub trades: Vec<Trade>,
    pub next_cursor: Option<i64>,
    pub has_more: bool,
}