Skip to main content

strike_sdk/indexer/
types.rs

1//! Response types from the Strike indexer API.
2
3use serde::Deserialize;
4
5/// A market as returned by the indexer.
6#[derive(Debug, Clone, Deserialize)]
7pub struct Market {
8    pub id: i64,
9    pub expiry_time: i64,
10    pub status: String,
11    pub pyth_feed_id: Option<String>,
12    pub strike_price: Option<i64>,
13    pub batch_interval: i64,
14}
15
16/// Wrapper for the `/markets` response.
17#[derive(Debug, Deserialize)]
18pub(crate) struct MarketsResponse {
19    pub markets: Vec<Market>,
20}
21
22/// An open order from the indexer.
23#[derive(Debug, Clone, Deserialize)]
24pub struct IndexerOrder {
25    pub id: i64,
26    pub market_id: i64,
27    pub side: String,
28    pub tick: u64,
29    pub lots: u64,
30    pub status: String,
31}
32
33/// Wrapper for the `/positions/:address` response.
34#[derive(Debug, Deserialize)]
35pub(crate) struct PositionsResponse {
36    pub open_orders: Vec<IndexerOrder>,
37    #[allow(dead_code)]
38    pub filled_positions: Vec<serde_json::Value>,
39}
40
41/// An orderbook level.
42#[derive(Debug, Clone, Deserialize)]
43pub struct OrderbookLevel {
44    pub tick: u64,
45    pub lots: u64,
46}
47
48/// Orderbook snapshot from the indexer.
49#[derive(Debug, Clone, Deserialize)]
50pub struct OrderbookSnapshot {
51    pub bids: Vec<OrderbookLevel>,
52    pub asks: Vec<OrderbookLevel>,
53}