Skip to main content

openlimits_coinbase/model/websocket/
received.rs

1use super::shared::string_to_decimal;
2use super::shared::string_to_opt_decimal;
3use rust_decimal::prelude::Decimal;
4use serde::Deserialize;
5
6#[derive(Deserialize, Debug, Clone, PartialEq)]
7#[serde(tag = "order_type")]
8#[serde(rename_all = "camelCase")]
9pub enum Received {
10    Limit {
11        time: String,
12        product_id: String,
13        sequence: usize,
14        order_id: String,
15        client_oid: Option<String>,
16        #[serde(with = "string_to_decimal")]
17        size: Decimal,
18        #[serde(with = "string_to_decimal")]
19        price: Decimal,
20        side: super::OrderSide,
21        user_id: Option<String>,
22        #[serde(default)]
23        profile_id: Option<String>,
24    },
25    Market {
26        time: String,
27        product_id: String,
28        sequence: usize,
29        order_id: String,
30        client_oid: Option<String>,
31        #[serde(default)]
32        #[serde(with = "string_to_opt_decimal")]
33        funds: Option<Decimal>,
34        side: super::OrderSide,
35    },
36}