dex_connector/
lib.rs

1use std::fmt;
2
3use rust_decimal::Decimal;
4use serde::Deserialize;
5
6mod dex_connector;
7mod dex_request;
8mod dex_websocket;
9mod hyperliquid_connector;
10
11pub use dex_connector::DexConnector;
12pub use dex_request::DexError;
13pub use hyperliquid_connector::*;
14
15#[derive(Debug, Clone, PartialEq, Default, Deserialize)]
16pub enum OrderSide {
17    #[default]
18    Long,
19    Short,
20}
21
22impl fmt::Display for OrderSide {
23    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
24        match self {
25            OrderSide::Long => write!(f, "long"),
26            OrderSide::Short => write!(f, "short"),
27        }
28    }
29}
30
31#[derive(Deserialize, Debug, Default)]
32pub struct CommonErrorResponse {
33    pub message: Option<String>,
34}
35
36#[derive(Deserialize, Debug, Default)]
37pub struct TickerResponse {
38    pub symbol: String,
39    pub price: Decimal,
40    pub min_tick: Option<Decimal>,
41    pub min_order: Option<Decimal>,
42    pub volume: Option<Decimal>,
43    pub num_trades: Option<u64>,
44    pub open_interest: Option<Decimal>,
45    pub funding_rate: Option<Decimal>,
46    pub oracle_price: Option<Decimal>,
47}
48
49#[derive(Deserialize, Clone, Debug, Default)]
50pub struct FilledOrder {
51    pub order_id: String,
52    pub is_rejected: bool,
53    pub trade_id: String,
54    pub filled_side: Option<OrderSide>,
55    pub filled_size: Option<Decimal>,
56    pub filled_value: Option<Decimal>,
57    pub filled_fee: Option<Decimal>,
58}
59
60#[derive(Deserialize, Debug, Default)]
61pub struct FilledOrdersResponse {
62    pub orders: Vec<FilledOrder>,
63}
64
65#[derive(Debug, Deserialize, Clone)]
66pub struct CanceledOrder {
67    pub order_id: String,
68    pub canceled_timestamp: u64,
69}
70
71#[derive(Debug, Default, Deserialize)]
72pub struct CanceledOrdersResponse {
73    pub orders: Vec<CanceledOrder>,
74}
75
76#[derive(Deserialize, Debug, Default)]
77pub struct BalanceResponse {
78    pub equity: Decimal,
79    pub balance: Decimal,
80}
81
82#[derive(Deserialize, Debug, Default)]
83pub struct CreateOrderResponse {
84    pub order_id: String,
85    pub ordered_price: Decimal,
86    pub ordered_size: Decimal,
87}
88
89#[derive(Deserialize, Debug, Default, Clone)]
90pub struct LastTrade {
91    pub price: Decimal,
92}