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