Skip to main content

openlimits_coinbase/model/websocket/
input_message.rs

1use serde::Deserialize;
2use super::Level2SnapshotRecord;
3use super::Level2UpdateRecord;
4use super::Match;
5use super::Activate;
6use super::Done;
7use super::Open;
8use super::Received;
9use super::Change;
10use super::Channel;
11use super::Ticker;
12
13/// This enum represents the types of input messages
14#[derive(Deserialize, Debug)]
15#[serde(tag = "type")]
16#[serde(rename_all = "snake_case")]
17pub enum InputMessage {
18    Subscriptions {
19        channels: Vec<Channel>,
20    },
21    Heartbeat {
22        sequence: usize,
23        last_trade_id: usize,
24        product_id: String,
25        time: String,
26    },
27    Ticker(Ticker),
28    Snapshot {
29        product_id: String,
30        bids: Vec<Level2SnapshotRecord>,
31        asks: Vec<Level2SnapshotRecord>,
32    },
33    L2update {
34        product_id: String,
35        changes: Vec<Level2UpdateRecord>,
36    },
37    LastMatch(Match),
38    Received(Received),
39    Open(Open),
40    Done(Done),
41    Match(Match),
42    Activate(Activate),
43    Change(Change),
44    Error {
45        message: String,
46    },
47}