quicknode_cascade/solana/
types.rs1use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct BlockData {
14 pub slot: u64,
15 pub blockhash: String,
16 pub parent_slot: u64,
17 pub parent_blockhash: String,
18 pub block_time: Option<i64>,
19 pub block_height: Option<u64>,
20 pub transaction_count: u64,
21 pub raw: serde_json::Value,
22}
23
24#[derive(Debug, Clone, Serialize, Deserialize)]
29pub struct TransactionData {
30 pub slot: u64,
31 pub tx_index: u32,
32 pub signature: String,
33 pub success: bool,
34 pub fee: u64,
35 pub compute_units_consumed: Option<u64>,
36 pub is_vote: bool,
37 pub pre_balances: Vec<u64>,
38 pub post_balances: Vec<u64>,
39 pub log_messages: Option<Vec<String>>,
40 pub block_time: Option<i64>,
41 pub raw: serde_json::Value,
42}
43
44#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct TokenTransferData {
50 pub slot: u64,
51 pub tx_index: u32,
52 pub signature: String,
53 pub mint: String,
54 pub owner: String,
55 pub pre_amount: String,
56 pub post_amount: String,
57 pub decimals: u8,
58 pub block_time: Option<i64>,
59}
60
61#[derive(Debug, Clone, Serialize, Deserialize)]
66pub struct AccountActivityData {
67 pub slot: u64,
68 pub tx_index: u32,
69 pub signature: String,
70 pub account: String,
71 pub pre_balance: u64,
72 pub post_balance: u64,
73 pub balance_change: i64,
74 pub is_signer: bool,
75 pub is_fee_payer: bool,
76 pub block_time: Option<i64>,
77}
78
79pub struct SlotExtract {
81 pub block: BlockData,
82 pub transactions: Vec<TransactionData>,
83 pub token_transfers: Vec<TokenTransferData>,
84 pub account_activity: Vec<AccountActivityData>,
85}