@@ -3,7 +3,10 @@ use console::Emoji;
3
3
use serde:: { Deserialize , Serialize , Serializer } ;
4
4
use solana_account_decoder:: {
5
5
parse_token:: { UiAccountState , UiMint , UiMultisig , UiTokenAccount , UiTokenAmount } ,
6
- parse_token_extension:: { UiExtension , UiMintCloseAuthority } ,
6
+ parse_token_extension:: {
7
+ UiDefaultAccountState , UiExtension , UiMemoTransfer , UiMintCloseAuthority ,
8
+ UiTransferFeeAmount ,
9
+ } ,
7
10
} ;
8
11
use solana_cli_output:: { display:: writeln_name_value, OutputFormat , QuietDisplay , VerboseDisplay } ;
9
12
use std:: fmt:: { self , Display } ;
@@ -232,7 +235,7 @@ impl fmt::Display for CliTokenAccount {
232
235
writeln_name_value ( f, " Owner:" , & self . account . owner ) ?;
233
236
writeln_name_value ( f, " State:" , & format ! ( "{:?}" , self . account. state) ) ?;
234
237
if let Some ( delegate) = & self . account . delegate {
235
- writeln ! ( f, " Delegation:" ) ?;
238
+ writeln_name_value ( f, " Delegation:" , " ") ?;
236
239
writeln_name_value ( f, " Delegate:" , delegate) ?;
237
240
let allowance = self . account . delegated_amount . as_ref ( ) . unwrap ( ) ;
238
241
writeln_name_value ( f, " Allowance:" , & allowance. real_number_string_trimmed ( ) ) ?;
@@ -478,15 +481,38 @@ impl fmt::Display for CliTokenAccounts {
478
481
479
482
fn display_ui_extension ( f : & mut fmt:: Formatter , ui_extension : & UiExtension ) -> fmt:: Result {
480
483
match ui_extension {
484
+ UiExtension :: TransferFeeConfig ( _) => unimplemented ! ( ) , // annoying
485
+ UiExtension :: TransferFeeAmount ( UiTransferFeeAmount { withheld_amount } ) => {
486
+ writeln_name_value ( f, " Transfer fees withheld:" , & withheld_amount. to_string ( ) )
487
+ }
481
488
UiExtension :: MintCloseAuthority ( UiMintCloseAuthority { close_authority } ) => {
482
489
writeln_name_value (
483
490
f,
484
491
" Close authority:" ,
485
492
close_authority. as_ref ( ) . unwrap_or ( & String :: new ( ) ) ,
486
493
)
487
494
}
488
- UiExtension :: ImmutableOwner => writeln_name_value ( f, " Immutable owner:" , "Enabled" ) ,
489
- _ => unimplemented ! ( ) ,
495
+ UiExtension :: ConfidentialTransferMint ( _) => unimplemented ! ( ) , // very annoying
496
+ UiExtension :: ConfidentialTransferAccount ( _) => unimplemented ! ( ) , //very annoying
497
+ UiExtension :: DefaultAccountState ( UiDefaultAccountState { account_state } ) => {
498
+ writeln_name_value ( f, " Default state:" , & format ! ( "{:?}" , account_state) )
499
+ }
500
+ UiExtension :: ImmutableOwner => writeln_name_value ( f, " Immutable owner" , " " ) ,
501
+ UiExtension :: MemoTransfer ( UiMemoTransfer {
502
+ require_incoming_transfer_memos,
503
+ } ) => writeln_name_value (
504
+ f,
505
+ " Transfer memo:" ,
506
+ if * require_incoming_transfer_memos {
507
+ "Required"
508
+ } else {
509
+ "Not required"
510
+ } ,
511
+ ) ,
512
+ UiExtension :: NonTransferable => writeln_name_value ( f, " Non-transferable" , " " ) ,
513
+ UiExtension :: InterestBearingConfig ( _) => unimplemented ! ( ) , // little annoying
514
+ UiExtension :: UnparseableExtension => panic ! ( "err here" ) ,
515
+ UiExtension :: Uninitialized => panic ! ( "err here...?" ) ,
490
516
}
491
517
}
492
518
0 commit comments