solscan_api/structs/
transaction.rs1use 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}