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(Deserialize, Debug, Default)]
66pub struct BalanceResponse {
67    pub equity: Decimal,
68    pub balance: Decimal,
69}
70
71#[derive(Deserialize, Debug, Default)]
72pub struct CreateOrderResponse {
73    pub order_id: String,
74    pub ordered_price: Decimal,
75    pub ordered_size: Decimal,
76}
77
78#[derive(Deserialize, Debug, Default, Clone)]
79pub struct LastTrade {
80    pub price: Decimal,
81}