Merge pull request #665 from thesimplekid/mint_mod_types

refactor: move Mint and Melt quote to cdk common
This commit is contained in:
thesimplekid
2025-03-22 17:05:05 +00:00
committed by GitHub
6 changed files with 53 additions and 58 deletions

View File

@@ -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]).

View File

@@ -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;

View File

@@ -139,21 +139,6 @@ impl From<MintQuoteBolt11Response<Uuid>> for MintQuoteBolt11Response<String> {
}
}
#[cfg(feature = "mint")]
impl From<crate::mint::MintQuote> for MintQuoteBolt11Response<Uuid> {
fn from(mint_quote: crate::mint::MintQuote) -> MintQuoteBolt11Response<Uuid> {
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))]

View File

@@ -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<MeltQuoteBolt11Response<Uuid>> for MeltQuoteBolt11Response<String> {
}
}
#[cfg(feature = "mint")]
impl From<&MeltQuote> for MeltQuoteBolt11Response<Uuid> {
fn from(melt_quote: &MeltQuote) -> MeltQuoteBolt11Response<Uuid> {
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<Q> {
@@ -334,25 +314,6 @@ impl<'de, Q: DeserializeOwned> Deserialize<'de> for MeltQuoteBolt11Response<Q> {
}
}
#[cfg(feature = "mint")]
impl From<mint::MeltQuote> for MeltQuoteBolt11Response<Uuid> {
fn from(melt_quote: mint::MeltQuote) -> MeltQuoteBolt11Response<Uuid> {
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))]

View File

@@ -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;

View File

@@ -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<MintKeySetInfo> for KeySetInfo {
}
}
}
impl From<MintQuote> for MintQuoteBolt11Response<Uuid> {
fn from(mint_quote: crate::mint::MintQuote) -> MintQuoteBolt11Response<Uuid> {
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<Uuid> {
fn from(melt_quote: &MeltQuote) -> MeltQuoteBolt11Response<Uuid> {
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<MeltQuote> for MeltQuoteBolt11Response<Uuid> {
fn from(melt_quote: MeltQuote) -> MeltQuoteBolt11Response<Uuid> {
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()),
}
}
}