use std::str::FromStr;
use nwc::prelude::*;
#[tokio::main]
async fn main() -> Result<()> {
tracing_subscriber::fmt::init();
let mut nwc_uri_string = String::new();
println!("Please enter a NWC string");
std::io::stdin()
.read_line(&mut nwc_uri_string)
.expect("Failed to read line");
let uri: NostrWalletConnectURI =
NostrWalletConnectURI::from_str(&nwc_uri_string).expect("Failed to parse NWC URI");
let monitor = Monitor::new(100);
let mut monitor_sub = monitor.subscribe();
tokio::spawn(async move {
while let Ok(notification) = monitor_sub.recv().await {
println!("Notification: {notification:?}");
}
});
let nwc: NWC = NWC::with_opts(uri, NostrWalletConnectOptions::default().monitor(monitor));
let balance = nwc.get_balance().await?;
println!("Balance: {balance} msat");
let request: PayInvoiceRequest = PayInvoiceRequest::new("<invoice>");
let response = nwc.pay_invoice(request).await?;
println!("Response: {response:?}");
Ok(())
}