lighter-sdk 0.1.1

Rust SDK for interacting with the Lighter exchange over REST, WebSocket, and signer-backed transaction flows.
Documentation
use super::order_info::OrderInfo;

#[derive(Debug, Clone)]
pub struct ChangePubKeyReq {
    pub pub_key: [u8; 40],
}

#[derive(Debug, Clone)]
pub struct TransferTxReq {
    pub to_account_index: i64,
    pub asset_index: i16,
    pub from_route_type: u8,
    pub to_route_type: u8,
    pub amount: i64,
    pub usdc_fee: i64,
    pub memo: [u8; 32],
}

#[derive(Debug, Clone)]
pub struct WithdrawTxReq {
    pub asset_index: i16,
    pub route_type: u8,
    pub amount: u64,
}

#[derive(Debug, Clone)]
pub struct CreateOrderTxReq {
    pub market_index: i16,
    pub client_order_index: i64,
    pub base_amount: i64,
    pub price: u32,
    pub is_ask: u8,
    pub order_type: u8,
    pub time_in_force: u8,
    pub reduce_only: u8,
    pub trigger_price: u32,
    pub order_expiry: i64,
}

#[derive(Debug, Clone)]
pub struct CreateGroupedOrdersTxReq {
    pub grouping_type: u8,
    pub orders: Vec<CreateOrderTxReq>,
}

#[derive(Debug, Clone)]
pub struct ModifyOrderTxReq {
    pub market_index: i16,
    pub index: i64,
    pub base_amount: i64,
    pub price: u32,
    pub trigger_price: u32,
}

#[derive(Debug, Clone)]
pub struct CancelOrderTxReq {
    pub market_index: i16,
    pub index: i64,
}

#[derive(Debug, Clone)]
pub struct CancelAllOrdersTxReq {
    pub time_in_force: u8,
    pub time: i64,
}

#[derive(Debug, Clone)]
pub struct CreatePublicPoolTxReq {
    pub operator_fee: i64,
    pub initial_total_shares: i64,
    pub min_operator_share_rate: u16,
}

#[derive(Debug, Clone)]
pub struct UpdatePublicPoolTxReq {
    pub public_pool_index: i64,
    pub status: u8,
    pub operator_fee: i64,
    pub min_operator_share_rate: u16,
}

#[derive(Debug, Clone)]
pub struct MintSharesTxReq {
    pub public_pool_index: i64,
    pub share_amount: i64,
}

#[derive(Debug, Clone)]
pub struct BurnSharesTxReq {
    pub public_pool_index: i64,
    pub share_amount: i64,
}

#[derive(Debug, Clone)]
pub struct UpdateLeverageTxReq {
    pub market_index: i16,
    pub initial_margin_fraction: u16,
    pub margin_mode: u8,
}

#[derive(Debug, Clone)]
pub struct UpdateMarginTxReq {
    pub market_index: i16,
    pub usdc_amount: i64,
    pub direction: u8,
}

impl CreateOrderTxReq {
    pub fn to_order_info(&self) -> OrderInfo {
        OrderInfo {
            market_index: self.market_index,
            client_order_index: self.client_order_index,
            base_amount: self.base_amount,
            price: self.price,
            is_ask: self.is_ask,
            order_type: self.order_type,
            time_in_force: self.time_in_force,
            reduce_only: self.reduce_only,
            trigger_price: self.trigger_price,
            order_expiry: self.order_expiry,
        }
    }
}