o2_api_types/responses/
events.rs1use crate::{
2 OrderId,
3 domain::{
4 book::{
5 Price,
6 Quantity,
7 },
8 event::*,
9 trade::TradeId,
10 },
11 fuel_types::{
12 BlockHeight,
13 Bytes32,
14 ContractId,
15 TxId,
16 TxPointer,
17 },
18 parse::HexDisplayFromStr,
19 primitives::{
20 OrderType,
21 Side,
22 },
23};
24use serde::Serialize;
25use serde_with::{
26 DisplayFromStr,
27 serde_as,
28};
29
30#[derive(Debug, serde::Serialize, serde::Deserialize)]
31pub struct EventPrimaryKey {
32 pub tx_pointer: TxPointer,
33 pub receipt_index: u16,
34}
35
36#[serde_as]
37#[derive(Debug, serde::Serialize)]
38pub struct BlockChainEventResponse<Event> {
39 pub primary_key: EventPrimaryKey,
40 #[serde_as(as = "HexDisplayFromStr")]
41 pub contract_id: ContractId,
42 pub event: Event,
43}
44
45#[derive(Debug, serde::Serialize)]
46pub struct OrderCreatedEventResponse {
47 pub order_id: OrderId,
48 pub trader_id: Identity,
49 pub order_side: Side,
50 pub order_type: OrderType,
51 pub quantity: Quantity,
52 pub price: Price,
53}
54
55#[derive(Debug, serde::Serialize)]
56pub struct OrderMatchedEventResponse {
57 pub trade_id: TradeId,
58 pub quantity: Quantity,
59 pub price: Price,
60}
61
62#[derive(Debug, serde::Serialize)]
63pub struct OrderCancelledEventResponse {
64 pub order_id: Bytes32,
65 pub reason: CancellationReason,
66}
67
68#[derive(Debug, serde::Serialize)]
69pub struct EndOfMarketOrderEventResponse {
70 pub order_id: Bytes32,
71}
72
73#[derive(Debug, serde::Serialize, strum_macros::AsRefStr)]
74#[strum(serialize_all = "snake_case")]
75pub enum EventV1Response {
76 BalanceIncrease(BlockChainEventResponse<BalanceIncrease>),
77 BalanceDecrease(BlockChainEventResponse<BalanceDecrease>),
78 OrderCreated(BlockChainEventResponse<OrderCreatedEventResponse>),
79 OrderCanceled(BlockChainEventResponse<OrderCancelledEventResponse>),
80 EndOfMarketOrder(BlockChainEventResponse<EndOfMarketOrderEventResponse>),
81 TradePerformed(BlockChainEventResponse<OrderMatchedEventResponse>),
82 Withdrawal(BlockChainEventResponse<WithdrawSettledTradeEvent>),
83 Configuration(BlockChainEventResponse<OrderBookConfigEvent>),
84 ConfigurationSymbols(BlockChainEventResponse<OrderBookSymbolsEvent>),
85 ConfigurationWhitelist(BlockChainEventResponse<OrderBookWhitelistEvent>),
86 ConfigurationBlacklist(BlockChainEventResponse<OrderBookBlacklistEvent>),
87 NonceChange(BlockChainEventResponse<NonceChangeEvent>),
88 TradeAccountRegistration(BlockChainEventResponse<TradeAccountRegistered>),
89 TradeAccountReferer(BlockChainEventResponse<TradeAccountReferer>),
90 OrderBookRegistration(BlockChainEventResponse<OrderBookRegistered>),
91 PauseEvent(BlockChainEventResponse<PauseEvent>),
92 UnpauseEvent(BlockChainEventResponse<UnpauseEvent>),
93 FeesClaimedEvent(BlockChainEventResponse<FeesClaimedEvent>),
94 SessionCreated(BlockChainEventResponse<SessionCreated>),
95 SessionRevoked(BlockChainEventResponse<SessionRevoked>),
96}
97
98#[derive(serde::Serialize, Debug)]
99pub enum EventResponse {
100 EventV1(EventV1Response),
101}
102
103#[serde_as]
104#[derive(Serialize, Debug)]
105pub struct TransactionEventsResponse {
106 #[serde_as(as = "HexDisplayFromStr")]
107 pub tx_id: TxId,
108 pub events: Vec<EventResponse>,
109}
110
111#[serde_as]
112#[derive(Serialize, Debug)]
113pub struct HeaderResponse {
114 pub block_height: BlockHeight,
115 #[serde_as(as = "DisplayFromStr")]
116 pub timestamp: u128,
117}
118
119#[derive(Serialize, Debug)]
120pub struct GetEventsResponse {
121 pub header: HeaderResponse,
122 pub events: Vec<TransactionEventsResponse>,
123}