diff --git a/crates/cashu/src/nuts/mod.rs b/crates/cashu/src/nuts/mod.rs index cb7a2003..08f1b5a4 100644 --- a/crates/cashu/src/nuts/mod.rs +++ b/crates/cashu/src/nuts/mod.rs @@ -32,15 +32,13 @@ pub use nut03::{SwapRequest, SwapResponse}; pub use nut04::{ MintBolt11Request, MintBolt11Response, MintQuoteBolt11Request, MintQuoteBolt11Response, }; -#[cfg(not(feature = "nut08"))] -pub use nut05::{MeltBolt11Request, MeltBolt11Response}; -pub use nut05::{MeltQuoteBolt11Request, MeltQuoteBolt11Response}; +pub use nut05::{ + MeltBolt11Request, MeltBolt11Response, MeltQuoteBolt11Request, MeltQuoteBolt11Response, +}; pub use nut06::{MintInfo, MintVersion, Nuts}; #[cfg(feature = "wallet")] #[cfg(feature = "nut07")] pub use nut07::{CheckStateRequest, CheckStateResponse}; -#[cfg(feature = "nut08")] -pub use nut08::{MeltBolt11Request, MeltBolt11Response}; #[cfg(feature = "nut09")] pub use nut09::{RestoreRequest, RestoreResponse}; #[cfg(feature = "nut10")] diff --git a/crates/cashu/src/nuts/nut05.rs b/crates/cashu/src/nuts/nut05.rs index 87ccf0a9..27102e6b 100644 --- a/crates/cashu/src/nuts/nut05.rs +++ b/crates/cashu/src/nuts/nut05.rs @@ -3,6 +3,8 @@ use serde::{Deserialize, Serialize}; +#[cfg(feature = "nut08")] +use super::{BlindSignature, BlindedMessage}; use super::{CurrencyUnit, PaymentMethod}; use crate::nuts::Proofs; use crate::types::MeltQuote; @@ -51,6 +53,10 @@ pub struct MeltBolt11Request { pub quote: String, /// Proofs pub inputs: Proofs, + /// Blinded Message that can be used to return change [NUT-08] + /// Amount field of BlindedMessages `SHOULD` be set to zero + #[cfg(feature = "nut08")] + pub outputs: Option>, } impl MeltBolt11Request { @@ -66,6 +72,9 @@ pub struct MeltBolt11Response { pub paid: bool, /// Bolt11 preimage pub payment_preimage: Option, + /// Change + #[cfg(feature = "nut08")] + pub change: Option>, } /// Melt Method Settings diff --git a/crates/cashu/src/nuts/nut08.rs b/crates/cashu/src/nuts/nut08.rs index 5fe7c968..f6fceddc 100644 --- a/crates/cashu/src/nuts/nut08.rs +++ b/crates/cashu/src/nuts/nut08.rs @@ -3,26 +3,10 @@ use serde::{Deserialize, Serialize}; -use super::{BlindSignature, BlindedMessage, Proofs}; +use super::{MeltBolt11Request, MeltBolt11Response}; use crate::Amount; -/// Melt Bolt11 Request [NUT-08] -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -pub struct MeltBolt11Request { - /// Quote ID - pub quote: String, - /// Proofs - pub inputs: Proofs, - /// Blinded Message that can be used to return change [NUT-08] - /// Amount field of BlindedMessages `SHOULD` be set to zero - pub outputs: Option>, -} - impl MeltBolt11Request { - pub fn proofs_amount(&self) -> Amount { - self.inputs.iter().map(|proof| proof.amount).sum() - } - pub fn output_amount(&self) -> Option { self.outputs .as_ref() @@ -30,15 +14,6 @@ impl MeltBolt11Request { } } -/// Melt Response [NUT-08] -/// Lightning fee return [NUT-08] -#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] -pub struct MeltBolt11Response { - pub paid: bool, - pub payment_preimage: Option, - pub change: Option>, -} - impl MeltBolt11Response { pub fn change_amount(&self) -> Option { self.change