lighter_rust/models/
common.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct ApiResponse<T> {
6    pub success: bool,
7    pub data: Option<T>,
8    pub error: Option<String>,
9    pub timestamp: DateTime<Utc>,
10}
11
12#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
13#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
14pub enum Side {
15    Buy,
16    Sell,
17}
18
19#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
20#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
21pub enum OrderType {
22    Market,
23    Limit,
24    StopLoss,
25    TakeProfit,
26}
27
28#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
29#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
30pub enum OrderStatus {
31    Pending,
32    Open,
33    PartiallyFilled,
34    Filled,
35    Cancelled,
36    Rejected,
37}
38
39#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
40#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
41pub enum AccountTier {
42    Standard,
43    Premium,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
47pub struct Pagination {
48    pub page: u32,
49    pub limit: u32,
50    pub total: u64,
51    pub has_next: bool,
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize)]
55pub struct PriceLevel {
56    pub price: String,
57    pub quantity: String,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct OrderBook {
62    pub bids: Vec<PriceLevel>,
63    pub asks: Vec<PriceLevel>,
64    pub timestamp: DateTime<Utc>,
65}