kaspa_cli_lib/modules/
details.rs

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