diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e30d1be..7beeb610 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ - Unifies and optimizes the proof selection algorithm to use Wallet::select_proofs ([davidcaseria]). - Wallet::send now requires a PreparedSend ([davidcaseria]). - WalletDatabase proof state update functions have been consolidated into update_proofs_state ([davidcaseria]). +- Moved `MintQuote` and `MeltQuote` from `cashu` to `cdk-common` ([thesimplekid]). ### Added - Added redb feature to mintd in order to meet MSRV target ([thesimplekid]). diff --git a/crates/cashu/src/lib.rs b/crates/cashu/src/lib.rs index d94590cb..b730a316 100644 --- a/crates/cashu/src/lib.rs +++ b/crates/cashu/src/lib.rs @@ -1,8 +1,6 @@ //! CDK common types and traits pub mod amount; pub mod dhke; -#[cfg(feature = "mint")] -pub mod mint; pub mod mint_url; pub mod nuts; pub mod secret; diff --git a/crates/cashu/src/nuts/nut04.rs b/crates/cashu/src/nuts/nut04.rs index 914f33ec..d3bf4945 100644 --- a/crates/cashu/src/nuts/nut04.rs +++ b/crates/cashu/src/nuts/nut04.rs @@ -139,21 +139,6 @@ impl From> for MintQuoteBolt11Response { } } -#[cfg(feature = "mint")] -impl From for MintQuoteBolt11Response { - fn from(mint_quote: crate::mint::MintQuote) -> MintQuoteBolt11Response { - MintQuoteBolt11Response { - quote: mint_quote.id, - request: mint_quote.request, - state: mint_quote.state, - expiry: Some(mint_quote.expiry), - pubkey: mint_quote.pubkey, - amount: Some(mint_quote.amount), - unit: Some(mint_quote.unit.clone()), - } - } -} - /// Mint request [NUT-04] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[cfg_attr(feature = "swagger", derive(utoipa::ToSchema))] diff --git a/crates/cashu/src/nuts/nut05.rs b/crates/cashu/src/nuts/nut05.rs index 737fa0a1..003419b2 100644 --- a/crates/cashu/src/nuts/nut05.rs +++ b/crates/cashu/src/nuts/nut05.rs @@ -14,8 +14,6 @@ use uuid::Uuid; use super::nut00::{BlindSignature, BlindedMessage, CurrencyUnit, PaymentMethod, Proofs}; use super::nut15::Mpp; -#[cfg(feature = "mint")] -use crate::mint::{self, MeltQuote}; use crate::nuts::MeltQuoteState; use crate::{Amount, Bolt11Invoice}; @@ -222,24 +220,6 @@ impl From> for MeltQuoteBolt11Response { } } -#[cfg(feature = "mint")] -impl From<&MeltQuote> for MeltQuoteBolt11Response { - fn from(melt_quote: &MeltQuote) -> MeltQuoteBolt11Response { - MeltQuoteBolt11Response { - quote: melt_quote.id, - payment_preimage: None, - change: None, - state: melt_quote.state, - paid: Some(melt_quote.state == MeltQuoteState::Paid), - expiry: melt_quote.expiry, - amount: melt_quote.amount, - fee_reserve: melt_quote.fee_reserve, - request: None, - unit: Some(melt_quote.unit.clone()), - } - } -} - // A custom deserializer is needed until all mints // update some will return without the required state. impl<'de, Q: DeserializeOwned> Deserialize<'de> for MeltQuoteBolt11Response { @@ -334,25 +314,6 @@ impl<'de, Q: DeserializeOwned> Deserialize<'de> for MeltQuoteBolt11Response { } } -#[cfg(feature = "mint")] -impl From for MeltQuoteBolt11Response { - fn from(melt_quote: mint::MeltQuote) -> MeltQuoteBolt11Response { - let paid = melt_quote.state == QuoteState::Paid; - MeltQuoteBolt11Response { - quote: melt_quote.id, - amount: melt_quote.amount, - fee_reserve: melt_quote.fee_reserve, - paid: Some(paid), - state: melt_quote.state, - expiry: melt_quote.expiry, - payment_preimage: melt_quote.payment_preimage, - change: None, - request: Some(melt_quote.request.clone()), - unit: Some(melt_quote.unit.clone()), - } - } -} - /// Melt Bolt11 Request [NUT-05] #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[cfg_attr(feature = "swagger", derive(utoipa::ToSchema))] diff --git a/crates/cdk-common/src/lib.rs b/crates/cdk-common/src/lib.rs index 12b93463..1f2e4577 100644 --- a/crates/cdk-common/src/lib.rs +++ b/crates/cdk-common/src/lib.rs @@ -10,6 +10,8 @@ pub mod common; pub mod database; pub mod error; #[cfg(feature = "mint")] +pub mod mint; +#[cfg(feature = "mint")] pub mod payment; pub mod pub_sub; pub mod subscription; @@ -19,8 +21,6 @@ pub mod ws; pub use bitcoin; pub use cashu::amount::{self, Amount}; pub use cashu::lightning_invoice::{self, Bolt11Invoice}; -#[cfg(feature = "mint")] -pub use cashu::mint; pub use cashu::nuts::{self, *}; #[cfg(feature = "wallet")] pub use cashu::wallet; diff --git a/crates/cashu/src/mint.rs b/crates/cdk-common/src/mint.rs similarity index 68% rename from crates/cashu/src/mint.rs rename to crates/cdk-common/src/mint.rs index 13f90731..efc49eea 100644 --- a/crates/cashu/src/mint.rs +++ b/crates/cdk-common/src/mint.rs @@ -1,6 +1,7 @@ //! Mint types use bitcoin::bip32::DerivationPath; +use cashu::{MeltQuoteBolt11Response, MintQuoteBolt11Response}; use serde::{Deserialize, Serialize}; use uuid::Uuid; @@ -149,3 +150,52 @@ impl From for KeySetInfo { } } } + +impl From for MintQuoteBolt11Response { + fn from(mint_quote: crate::mint::MintQuote) -> MintQuoteBolt11Response { + MintQuoteBolt11Response { + quote: mint_quote.id, + request: mint_quote.request, + state: mint_quote.state, + expiry: Some(mint_quote.expiry), + pubkey: mint_quote.pubkey, + amount: Some(mint_quote.amount), + unit: Some(mint_quote.unit.clone()), + } + } +} + +impl From<&MeltQuote> for MeltQuoteBolt11Response { + fn from(melt_quote: &MeltQuote) -> MeltQuoteBolt11Response { + MeltQuoteBolt11Response { + quote: melt_quote.id, + payment_preimage: None, + change: None, + state: melt_quote.state, + paid: Some(melt_quote.state == MeltQuoteState::Paid), + expiry: melt_quote.expiry, + amount: melt_quote.amount, + fee_reserve: melt_quote.fee_reserve, + request: None, + unit: Some(melt_quote.unit.clone()), + } + } +} + +impl From for MeltQuoteBolt11Response { + fn from(melt_quote: MeltQuote) -> MeltQuoteBolt11Response { + let paid = melt_quote.state == MeltQuoteState::Paid; + MeltQuoteBolt11Response { + quote: melt_quote.id, + amount: melt_quote.amount, + fee_reserve: melt_quote.fee_reserve, + paid: Some(paid), + state: melt_quote.state, + expiry: melt_quote.expiry, + payment_preimage: melt_quote.payment_preimage, + change: None, + request: Some(melt_quote.request.clone()), + unit: Some(melt_quote.unit.clone()), + } + } +}