openlimits_coinbase/model/websocket/
input_message.rs1use 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#[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}