solana_block_decoder/transaction/
tx_token_balance.rs

1use {
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}