kaspa_cli_lib/modules/
estimate.rs1use crate::imports::*;
2use kaspa_wallet_core::tx::PaymentDestination;
3
4#[derive(Default, Handler)]
5#[help("Estimate the fees for a transaction of a given amount")]
6pub struct Estimate;
7
8impl Estimate {
9 async fn main(self: Arc<Self>, ctx: &Arc<dyn Context>, argv: Vec<String>, _cmd: &str) -> Result<()> {
10 let ctx = ctx.clone().downcast_arc::<KaspaCli>()?;
11
12 let account = ctx.wallet().account()?;
13
14 if argv.is_empty() {
15 tprintln!(ctx, "usage: estimate <amount> [<priority fee>]");
16 return Ok(());
17 }
18
19 let amount_sompi = try_parse_required_nonzero_kaspa_as_sompi_u64(argv.first())?;
20 let priority_fee_sompi = try_parse_optional_kaspa_as_sompi_i64(argv.get(1))?.unwrap_or(0);
21 let abortable = Abortable::default();
22
23 let change_address = account.change_address()?;
25 let destination = PaymentDestination::PaymentOutputs(PaymentOutputs::from((change_address.clone(), amount_sompi)));
26 let estimate = account.estimate(destination, priority_fee_sompi.into(), None, &abortable).await?;
27
28 tprintln!(ctx, "Estimate - {estimate}");
29
30 Ok(())
31 }
32}