solana_block_decoder/transaction/
tx_token_balance.rs1use {
2 solana_account_decoder::parse_token::UiTokenAmount,
3 solana_transaction_status::{
4 UiTransactionTokenBalance,
5 option_serializer::OptionSerializer,
6 },
7 serde::{
8 Deserialize, Serialize,
9 },
10};
11
12
13#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
14pub struct TransactionTokenBalance {
15 pub account_index: u8,
16 pub mint: String,
17 pub ui_token_amount: UiTokenAmount,
18 pub owner: String,
19 pub program_id: String,
20}
21
22impl From<UiTransactionTokenBalance> for TransactionTokenBalance {
23 fn from(token_balance: UiTransactionTokenBalance) -> Self {
24 Self {
25 account_index: token_balance.account_index,
26 mint: token_balance.mint,
27 ui_token_amount: token_balance.ui_token_amount,
28 owner: match token_balance.owner {
29 OptionSerializer::Some(owner) => owner,
30 _ => String::new(),
31 },
32 program_id: match token_balance.program_id {
33 OptionSerializer::Some(program_id) => program_id,
34 _ => String::new(),
35 },
36 }
37 }
38}
39
40
41impl From<TransactionTokenBalance> for solana_transaction_status::TransactionTokenBalance {
42 fn from(balance: TransactionTokenBalance) -> Self {
43 Self {
44 account_index: balance.account_index,
45 mint: balance.mint,
46 ui_token_amount: balance.ui_token_amount,
47 owner: balance.owner,
48 program_id: balance.program_id,
49 }
50 }
51}