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 Trade {
    #[serde(rename = "trade_id")]
    pub trade_id: i64,
    #[serde(rename = "tx_hash")]
    pub tx_hash: String,
    #[serde(rename = "type")]
    pub r#type: Type,
    #[serde(rename = "market_id")]
    pub market_id: i32,
    #[serde(rename = "size")]
    pub size: String,
    #[serde(rename = "price")]
    pub price: String,
    #[serde(rename = "usd_amount")]
    pub usd_amount: String,
    #[serde(rename = "ask_id")]
    pub ask_id: i64,
    #[serde(rename = "bid_id")]
    pub bid_id: i64,
    #[serde(rename = "ask_account_id")]
    pub ask_account_id: i64,
    #[serde(rename = "bid_account_id")]
    pub bid_account_id: i64,
    #[serde(rename = "is_maker_ask")]
    pub is_maker_ask: bool,
    #[serde(rename = "block_height")]
    pub block_height: i64,
    #[serde(rename = "timestamp")]
    pub timestamp: i64,
    #[serde(rename = "taker_fee")]
    pub taker_fee: i32,
    #[serde(rename = "taker_position_size_before")]
    pub taker_position_size_before: String,
    #[serde(rename = "taker_entry_quote_before")]
    pub taker_entry_quote_before: String,
    #[serde(rename = "taker_initial_margin_fraction_before")]
    pub taker_initial_margin_fraction_before: i32,
    #[serde(rename = "taker_position_sign_changed")]
    pub taker_position_sign_changed: bool,
    #[serde(rename = "maker_fee")]
    pub maker_fee: i32,
    #[serde(rename = "maker_position_size_before")]
    pub maker_position_size_before: String,
    #[serde(rename = "maker_entry_quote_before")]
    pub maker_entry_quote_before: String,
    #[serde(rename = "maker_initial_margin_fraction_before")]
    pub maker_initial_margin_fraction_before: i32,
    #[serde(rename = "maker_position_sign_changed")]
    pub maker_position_sign_changed: bool,
}

impl Trade {
    pub fn new(
        trade_id: i64,
        tx_hash: String,
        r#type: Type,
        market_id: i32,
        size: String,
        price: String,
        usd_amount: String,
        ask_id: i64,
        bid_id: i64,
        ask_account_id: i64,
        bid_account_id: i64,
        is_maker_ask: bool,
        block_height: i64,
        timestamp: i64,
        taker_fee: i32,
        taker_position_size_before: String,
        taker_entry_quote_before: String,
        taker_initial_margin_fraction_before: i32,
        taker_position_sign_changed: bool,
        maker_fee: i32,
        maker_position_size_before: String,
        maker_entry_quote_before: String,
        maker_initial_margin_fraction_before: i32,
        maker_position_sign_changed: bool,
    ) -> Trade {
        Trade {
            trade_id,
            tx_hash,
            r#type,
            market_id,
            size,
            price,
            usd_amount,
            ask_id,
            bid_id,
            ask_account_id,
            bid_account_id,
            is_maker_ask,
            block_height,
            timestamp,
            taker_fee,
            taker_position_size_before,
            taker_entry_quote_before,
            taker_initial_margin_fraction_before,
            taker_position_sign_changed,
            maker_fee,
            maker_position_size_before,
            maker_entry_quote_before,
            maker_initial_margin_fraction_before,
            maker_position_sign_changed,
        }
    }
}
///
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
    #[serde(rename = "trade")]
    Trade,
    #[serde(rename = "liquidation")]
    Liquidation,
    #[serde(rename = "deleverage")]
    Deleverage,
}

impl Default for Type {
    fn default() -> Type {
        Self::Trade
    }
}