lighter-rust 0.2.0

A comprehensive Rust SDK for the Lighter trading platform with async/await, WebSocket support, and Ethereum wallet integration
/*
 *
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document:
 *
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Order {
    #[serde(rename = "order_index")]
    pub order_index: i64,
    #[serde(rename = "client_order_index")]
    pub client_order_index: i64,
    #[serde(rename = "order_id")]
    pub order_id: String,
    #[serde(rename = "client_order_id")]
    pub client_order_id: String,
    #[serde(rename = "market_index")]
    pub market_index: i32,
    #[serde(rename = "owner_account_index")]
    pub owner_account_index: i64,
    #[serde(rename = "initial_base_amount")]
    pub initial_base_amount: String,
    #[serde(rename = "price")]
    pub price: String,
    #[serde(rename = "nonce")]
    pub nonce: i64,
    #[serde(rename = "remaining_base_amount")]
    pub remaining_base_amount: String,
    #[serde(rename = "is_ask")]
    pub is_ask: bool,
    #[serde(rename = "base_size")]
    pub base_size: i64,
    #[serde(rename = "base_price")]
    pub base_price: i32,
    #[serde(rename = "filled_base_amount")]
    pub filled_base_amount: String,
    #[serde(rename = "filled_quote_amount")]
    pub filled_quote_amount: String,
    ///  TODO: remove this
    #[serde(rename = "side")]
    pub side: String,
    #[serde(rename = "type")]
    pub r#type: Type,
    #[serde(rename = "time_in_force")]
    pub time_in_force: TimeInForce,
    #[serde(rename = "reduce_only")]
    pub reduce_only: bool,
    #[serde(rename = "trigger_price")]
    pub trigger_price: String,
    #[serde(rename = "order_expiry")]
    pub order_expiry: i64,
    #[serde(rename = "status")]
    pub status: Status,
    #[serde(rename = "trigger_status")]
    pub trigger_status: TriggerStatus,
    #[serde(rename = "trigger_time")]
    pub trigger_time: i64,
    #[serde(rename = "parent_order_index")]
    pub parent_order_index: i64,
    #[serde(rename = "parent_order_id")]
    pub parent_order_id: String,
    #[serde(rename = "to_trigger_order_id_0")]
    pub to_trigger_order_id_0: String,
    #[serde(rename = "to_trigger_order_id_1")]
    pub to_trigger_order_id_1: String,
    #[serde(rename = "to_cancel_order_id_0")]
    pub to_cancel_order_id_0: String,
    #[serde(rename = "block_height")]
    pub block_height: i64,
    #[serde(rename = "timestamp")]
    pub timestamp: i64,
}

impl Order {
    pub fn new(
        order_index: i64,
        client_order_index: i64,
        order_id: String,
        client_order_id: String,
        market_index: i32,
        owner_account_index: i64,
        initial_base_amount: String,
        price: String,
        nonce: i64,
        remaining_base_amount: String,
        is_ask: bool,
        base_size: i64,
        base_price: i32,
        filled_base_amount: String,
        filled_quote_amount: String,
        side: String,
        r#type: Type,
        time_in_force: TimeInForce,
        reduce_only: bool,
        trigger_price: String,
        order_expiry: i64,
        status: Status,
        trigger_status: TriggerStatus,
        trigger_time: i64,
        parent_order_index: i64,
        parent_order_id: String,
        to_trigger_order_id_0: String,
        to_trigger_order_id_1: String,
        to_cancel_order_id_0: String,
        block_height: i64,
        timestamp: i64,
    ) -> Order {
        Order {
            order_index,
            client_order_index,
            order_id,
            client_order_id,
            market_index,
            owner_account_index,
            initial_base_amount,
            price,
            nonce,
            remaining_base_amount,
            is_ask,
            base_size,
            base_price,
            filled_base_amount,
            filled_quote_amount,
            side,
            r#type,
            time_in_force,
            reduce_only,
            trigger_price,
            order_expiry,
            status,
            trigger_status,
            trigger_time,
            parent_order_index,
            parent_order_id,
            to_trigger_order_id_0,
            to_trigger_order_id_1,
            to_cancel_order_id_0,
            block_height,
            timestamp,
        }
    }
}
///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
    #[serde(rename = "limit")]
    Limit,
    #[serde(rename = "market")]
    Market,
    #[serde(rename = "stop-loss")]
    StopLoss,
    #[serde(rename = "stop-loss-limit")]
    StopLossLimit,
    #[serde(rename = "take-profit")]
    TakeProfit,
    #[serde(rename = "take-profit-limit")]
    TakeProfitLimit,
    #[serde(rename = "twap")]
    Twap,
    #[serde(rename = "twap-sub")]
    TwapSub,
    #[serde(rename = "liquidation")]
    Liquidation,
}

impl Default for Type {
    fn default() -> Type {
        Self::Limit
    }
}
///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TimeInForce {
    #[serde(rename = "good-till-time")]
    GoodTillTime,
    #[serde(rename = "immediate-or-cancel")]
    ImmediateOrCancel,
    #[serde(rename = "post-only")]
    PostOnly,
    #[serde(rename = "Unknown")]
    Unknown,
}

impl Default for TimeInForce {
    fn default() -> TimeInForce {
        Self::GoodTillTime
    }
}
///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
    #[serde(rename = "in-progress")]
    InProgress,
    #[serde(rename = "pending")]
    Pending,
    #[serde(rename = "open")]
    Open,
    #[serde(rename = "filled")]
    Filled,
    #[serde(rename = "canceled")]
    Canceled,
    #[serde(rename = "canceled-post-only")]
    CanceledPostOnly,
    #[serde(rename = "canceled-reduce-only")]
    CanceledReduceOnly,
    #[serde(rename = "canceled-position-not-allowed")]
    CanceledPositionNotAllowed,
    #[serde(rename = "canceled-margin-not-allowed")]
    CanceledMarginNotAllowed,
    #[serde(rename = "canceled-too-much-slippage")]
    CanceledTooMuchSlippage,
    #[serde(rename = "canceled-not-enough-liquidity")]
    CanceledNotEnoughLiquidity,
    #[serde(rename = "canceled-self-trade")]
    CanceledSelfTrade,
    #[serde(rename = "canceled-expired")]
    CanceledExpired,
    #[serde(rename = "canceled-oco")]
    CanceledOco,
    #[serde(rename = "canceled-child")]
    CanceledChild,
    #[serde(rename = "canceled-liquidation")]
    CanceledLiquidation,
}

impl Default for Status {
    fn default() -> Status {
        Self::InProgress
    }
}
///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TriggerStatus {
    #[serde(rename = "na")]
    Na,
    #[serde(rename = "ready")]
    Ready,
    #[serde(rename = "mark-price")]
    MarkPrice,
    #[serde(rename = "twap")]
    Twap,
    #[serde(rename = "parent-order")]
    ParentOrder,
}

impl Default for TriggerStatus {
    fn default() -> TriggerStatus {
        Self::Na
    }
}