bloxroute_sdk/models/
mod.rs

1pub mod block;
2pub mod openbook;
3pub mod raydium;
4pub mod solana;
5pub mod subscription;
6pub mod transaction;
7use std::collections::HashMap;
8
9use block::BloxrouteBlock;
10use openbook::{
11    BloxrouteOpenbookGetDepthResponse, BloxrouteOpenbookGetMarketsResponse,
12    BloxrouteOpenbookGetOrderbookResponse, BloxrouteOpenbookGetTickersResponse,
13};
14use raydium::{BloxrouteRaydiumNewRaydiumPoolsResponse, BloxrouteRaydiumStreamReservesResponse, BloxrouteRaydiumStreamSwapsResponse};
15use serde::{Deserialize, Serialize};
16use solana::{BloxrouteGetBundleTipStreamResponse, BloxrouteGetStreamPriorityFee};
17use subscription::BloxrouteSubscription;
18use transaction::BloxrouteTransaction;
19
20#[derive(Deserialize, Debug, Clone)]
21pub struct BloxrouteGenericInner<T> {
22    pub result: T,
23    pub subscription: String,
24}
25
26#[derive(Deserialize, Debug, Clone)]
27pub struct BloxrouteGeneric<T> {
28    pub jsonrpc: String,
29    pub method: String,
30    pub params: BloxrouteGenericInner<T>,
31}
32
33#[derive(Deserialize, Debug, Clone)]
34pub struct BloxrouteGenericSolana<T> {
35    pub id: String,
36    pub result: T,
37}
38
39#[derive(Deserialize, Debug, Clone)]
40pub enum BloxrouteResponseEnum {
41    Subscription(BloxrouteSubscription),
42    Transaction(BloxrouteGeneric<BloxrouteTransaction>),
43    Block(BloxrouteGeneric<BloxrouteBlock>),
44    GetStreamPriorityFee(BloxrouteGeneric<BloxrouteGetStreamPriorityFee>),
45    GetBundleTipStream(BloxrouteGeneric<BloxrouteGetBundleTipStreamResponse>),
46    RaydiumStreamReservesResponse(BloxrouteGeneric<BloxrouteRaydiumStreamReservesResponse>),
47    RaydiumStreamSwapsResponse(BloxrouteGeneric<BloxrouteRaydiumStreamSwapsResponse>),
48    RaydiumNewRaydiumPoolsResponse(BloxrouteGeneric<BloxrouteRaydiumNewRaydiumPoolsResponse>),
49    OpenbookGetMarkets(BloxrouteGenericSolana<BloxrouteOpenbookGetMarketsResponse>),
50    OpenbookGetOrderbookResponse(BloxrouteGenericSolana<BloxrouteOpenbookGetOrderbookResponse>),
51    OpenbookGetDepth(BloxrouteGenericSolana<BloxrouteOpenbookGetDepthResponse>),
52    OpenbookGetTickers(BloxrouteGenericSolana<BloxrouteOpenbookGetTickersResponse>),
53}
54
55#[derive(Serialize, Deserialize, Debug, Clone)]
56#[serde(untagged)]
57pub enum BloxrouteRequestParams<T> {
58    String(String),
59    Object(T),
60    Array(Vec<T>),
61    Boolean(T),
62    Hashmap(HashMap<String, T>),
63}
64
65#[derive(Serialize, Deserialize, Debug, Clone)]
66pub struct BloxrouteRequestPayload<T> {
67    pub id: String,
68    pub jsonrpc: String,
69    pub method: String,
70    pub params: BloxrouteRequestParams<T>,
71}