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}