solscan_api/structs/
transaction.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize)]
4pub struct Transaction {
5    #[serde(rename = "blockTime")]
6    pub block_time: Option<i64>,
7    pub slot: Option<i64>,
8    #[serde(rename = "txHash")]
9    pub tx_hash: Option<String>,
10    pub fee: Option<i64>,
11    pub status: Option<String>,
12    pub lamport: Option<i64>,
13    pub signer: Option<Vec<String>>,
14    #[serde(rename = "logMessage")]
15    pub log_message: Option<Vec<String>>,
16    #[serde(rename = "inputAccount")]
17    pub input_account: Option<Vec<InputAccount>>,
18    #[serde(rename = "recentBlockhash")]
19    pub recent_blockhash: Option<String>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    #[serde(rename = "innerInstructions")]
22    pub inner_instructions: Option<Vec<InnerInstruction>>,
23    #[serde(rename = "tokenBalanes")]
24    pub token_balanes: Option<Vec<Option<serde_json::Value>>>,
25    #[serde(rename = "parsedInstruction")]
26    pub parsed_instruction: Option<Vec<TransactionParsedInstruction>>,
27    pub confirmations: Option<i64>,
28    #[serde(rename = "tokenTransfers")]
29    pub token_transfers: Option<Vec<Option<serde_json::Value>>>,
30    #[serde(rename = "solTransfers")]
31    pub sol_transfers: Option<Vec<Option<serde_json::Value>>>,
32    #[serde(rename = "serumTransactions")]
33    pub serum_transactions: Option<Vec<Option<serde_json::Value>>>,
34    #[serde(rename = "raydiumTransactions")]
35    pub raydium_transactions: Option<Vec<Option<serde_json::Value>>>,
36    #[serde(rename = "unknownTransfers")]
37    pub unknown_transfers: Option<Vec<UnknownTransfer>>,
38}
39
40#[derive(Debug, Serialize, Deserialize)]
41pub struct InnerInstruction {
42    pub index: Option<i64>,
43    #[serde(rename = "parsedInstructions")]
44    pub parsed_instructions: Option<Vec<TransactionParsedInstruction>>,
45}
46
47
48#[derive(Debug, Serialize, Deserialize)]
49pub struct InputAccount {
50    pub account: Option<String>,
51    pub signer: Option<bool>,
52    pub writable: Option<bool>,
53    #[serde(rename = "preBalance")]
54    pub pre_balance: Option<i64>,
55    #[serde(rename = "postBalance")]
56    pub post_balance: Option<i64>,
57}
58
59#[derive(Debug, Serialize, Deserialize)]
60pub struct TransactionParsedInstruction {
61    #[serde(skip_serializing_if = "Option::is_none")]
62    #[serde(rename = "programId")]
63    pub program_id: Option<String>,
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub program: Option<String>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    #[serde(rename = "type")]
68    pub parsed_instruction_type: Option<String>,
69    #[serde(skip_serializing_if = "Option::is_none")]
70    pub data: Option<String>,
71    #[serde(skip_serializing_if = "Option::is_none")]
72    #[serde(rename = "dataEncode")]
73    pub data_encode: Option<String>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub name: Option<String>,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub params: Option<Params>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub extra: Option<Extra>,
80
81}
82
83#[derive(Debug, Serialize, Deserialize)]
84pub struct Params {
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub authority: Option<String>,
87    #[serde(skip_serializing_if = "Option::is_none")]
88    #[serde(rename = "associatedAccount")]
89    pub associated_account: Option<String>,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    #[serde(rename = "tokenAddress")]
92    pub token_address: Option<String>,
93    #[serde(skip_serializing_if = "Option::is_none")]
94    #[serde(rename = "tokenProgramId")]
95    pub token_program_id: Option<String>,
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub source: Option<String>,
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub destination: Option<String>,
100    #[serde(skip_serializing_if = "Option::is_none")]
101    pub amount: Option<String>,
102    #[serde(skip_serializing_if = "Option::is_none")]
103    pub mint: Option<String>,
104    #[serde(skip_serializing_if = "Option::is_none")]
105    #[serde(rename = "newAccount")]
106    pub new_account: Option<String>,
107    #[serde(skip_serializing_if = "Option::is_none")]
108    #[serde(rename = "transferAmount(SOL)")]
109    pub transfer_amount_sol: Option<f64>,
110    #[serde(skip_serializing_if = "Option::is_none")]
111    #[serde(rename = "programOwner")]
112    pub program_owner: Option<String>,
113    #[serde(skip_serializing_if = "Option::is_none")]
114    pub account: Option<String>,
115    #[serde(skip_serializing_if = "Option::is_none")]
116    pub owner: Option<String>,
117
118}
119
120#[derive(Debug, Serialize, Deserialize)]
121pub struct Extra {
122    pub source: Option<String>,
123    pub destination: Option<String>,
124    pub authority: Option<String>,
125    pub amount: Option<String>,
126    pub mint: Option<String>,
127    #[serde(rename = "tokenAddress")]
128    pub token_address: Option<String>,
129    pub decimals: Option<i64>,
130    #[serde(rename = "sourceOwner")]
131    pub source_owner: Option<String>,
132    #[serde(rename = "destinationOwner")]
133    pub destination_owner: Option<String>,
134}
135
136
137#[derive(Debug, Serialize, Deserialize)]
138pub struct UnknownTransfer {
139    #[serde(rename = "programId")]
140    pub program_id: Option<String>,
141    pub event: Option<Vec<Event>>,
142}
143
144#[derive(Debug, Serialize, Deserialize)]
145pub struct Event {
146    pub source: Option<String>,
147    pub destination: Option<String>,
148    pub amount: Option<i64>,
149    #[serde(rename = "type")]
150    pub event_type: Option<String>,
151    pub decimals: Option<i64>,
152    pub symbol: Option<String>,
153    #[serde(rename = "tokenAddress")]
154    pub token_address: Option<String>,
155}