kaspa_cli_lib/modules/
details.rs1use crate::imports::*;
2
3#[derive(Default, Handler)]
4#[help("Displays the detailed information about the currently selected account.")]
5pub struct Details;
6
7impl Details {
8 async fn main(self: Arc<Self>, ctx: &Arc<dyn Context>, _argv: Vec<String>, _cmd: &str) -> Result<()> {
9 let ctx = ctx.clone().downcast_arc::<KaspaCli>()?;
10 let account = ctx.select_account().await?.as_derivation_capable()?;
11
12 let derivation = account.derivation();
13
14 let manager = derivation.receive_address_manager();
15 let index = manager.index() + 1;
16 let addresses = manager.get_range_with_args(0..index, false)?;
17 tprintln!(ctx, "Receive addresses: {index}");
18 addresses.iter().for_each(|address| {
19 tprintln!(ctx.term(), "{:>4}{}", "", style(address.to_string()).blue());
20 });
21
22 let manager = derivation.change_address_manager();
23 let index = manager.index() + 1;
24 let addresses = manager.get_range_with_args(0..index, false)?;
25 tprintln!(ctx, "Change addresses: {index}");
26 addresses.iter().for_each(|address| {
27 tprintln!(ctx.term(), "{:>4}{}", "", style(address.to_string()).blue());
28 });
29
30 if let Some(xpub_keys) = account.xpub_keys() {
31 if account.feature().is_some() {
32 if let Some(feature) = account.feature() {
33 tprintln!(ctx.term(), "Feature: {}", style(feature).cyan());
34 }
35 tprintln!(ctx.term(), "Extended public keys:");
36 xpub_keys.iter().for_each(|xpub| {
37 tprintln!(ctx.term(), "{:>4}{}", "", style(ctx.wallet().network_format_xpub(xpub)).dim());
38 });
39 }
40 }
41
42 Ok(())
43 }
44}