Skip to main content

df_hyperliquid_core/live/account/
orders.rs

1//! An account's orders on the socket: the resting ones on one dex, each status change as it
2//! happens, and the order history.
3
4use crate::account::history::OpenOrder;
5use crate::account::{FrontendOrder, OrderRecord};
6use crate::utils::Address;
7use serde::Deserialize;
8
9/// One order's new status on `orderUpdates`: `open`, `filled`, `canceled`, `triggered`,
10/// `rejected`, `marginCanceled`, `badAloPxRejected` and the rest the info docs list.
11#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
12#[serde(rename_all = "camelCase")]
13pub struct OrderUpdate {
14    pub order: OpenOrder,
15    pub status: String,
16    /// Milliseconds.
17    pub status_timestamp: u64,
18}
19
20/// `openOrders`: every resting order on one dex, with its trigger and type.
21#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
22pub struct OpenOrders {
23    pub dex: String,
24    pub user: Address,
25    pub orders: Vec<FrontendOrder>,
26}
27
28/// `userHistoricalOrders`: orders and what became of them, the latest first.
29#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
30#[serde(rename_all = "camelCase")]
31pub struct HistoricalOrders {
32    pub user: Address,
33    #[serde(default)]
34    pub is_snapshot: bool,
35    #[serde(rename = "orderHistory")]
36    pub orders: Vec<OrderRecord>,
37}
38
39#[cfg(test)]
40#[path = "tests/orders.rs"]
41mod tests;