diff --git a/bindings/cashu-sdk-ffi/src/cashu_sdk.udl b/bindings/cashu-sdk-ffi/src/cashu_sdk.udl index 5d5e36c4..47dde546 100644 --- a/bindings/cashu-sdk-ffi/src/cashu_sdk.udl +++ b/bindings/cashu-sdk-ffi/src/cashu_sdk.udl @@ -325,7 +325,7 @@ interface Wallet { interface Mint { [Throws=CashuSdkError] - constructor(string secret, string derivation_path, record inactive_keysets, sequence spent_secrets, u8 max_order); + constructor(string secret, string derivation_path, record inactive_keysets, sequence spent_secrets, u8 max_order, Amount min_fee_reserve, f32 percent_fee_reserve); KeySet active_keyset_pubkeys(); KeySetResponse keysets(); MintKeySet active_keyset(); diff --git a/bindings/cashu-sdk-ffi/src/lib.rs b/bindings/cashu-sdk-ffi/src/lib.rs index 792cac22..7cca8e35 100644 --- a/bindings/cashu-sdk-ffi/src/lib.rs +++ b/bindings/cashu-sdk-ffi/src/lib.rs @@ -17,7 +17,7 @@ mod ffi { pub use crate::client::Client; pub use crate::error::CashuSdkError; pub use crate::mint::Mint; - pub use crate::types::{Melted, ProofsStatus, SendProofs}; + pub use crate::types::{FeeReserve, Melted, ProofsStatus, SendProofs}; pub use crate::wallet::Wallet; // UDL diff --git a/bindings/cashu-sdk-ffi/src/mint.rs b/bindings/cashu-sdk-ffi/src/mint.rs index 81e157b1..7e7b26a4 100644 --- a/bindings/cashu-sdk-ffi/src/mint.rs +++ b/bindings/cashu-sdk-ffi/src/mint.rs @@ -7,8 +7,9 @@ use std::{ use cashu_sdk::mint::Mint as MintSdk; use cashu_sdk::nuts::nut02::Id as IdSdk; +use fee_reserve::FeeReserve; -use crate::error::Result; +use crate::{error::Result, types::fee_reserve}; use cashu_ffi::{ Amount, CheckSpendableRequest, CheckSpendableResponse, Id, KeySet, KeySetResponse, MeltRequest, MeltResponse, MintKeySet, MintRequest, PostMintResponse, Proof, Secret, SplitRequest, @@ -26,6 +27,8 @@ impl Mint { inactive_keysets: HashMap>, spent_secrets: Vec>, max_order: u8, + min_fee_reserve: Arc, + percent_fee_reserve: f32, ) -> Result { let spent_secrets = spent_secrets .into_iter() @@ -47,6 +50,8 @@ impl Mint { inactive_keysets, spent_secrets, max_order, + *min_fee_reserve.as_ref().deref(), + percent_fee_reserve, ) .into(), }) diff --git a/bindings/cashu-sdk-ffi/src/types/fee_reserve.rs b/bindings/cashu-sdk-ffi/src/types/fee_reserve.rs new file mode 100644 index 00000000..e2916cad --- /dev/null +++ b/bindings/cashu-sdk-ffi/src/types/fee_reserve.rs @@ -0,0 +1,19 @@ +use std::{ops::Deref, sync::Arc}; + +use cashu_ffi::Amount; +use cashu_sdk::mint::FeeReserve as FeeReserveSdk; + +pub struct FeeReserve { + inner: FeeReserveSdk, +} + +impl FeeReserve { + pub fn new(min_fee_reserve: Arc, percent_fee_reserve: f32) -> Self { + Self { + inner: FeeReserveSdk { + min_fee_reserve: *min_fee_reserve.as_ref().deref(), + percent_fee_reserve, + }, + } + } +} diff --git a/bindings/cashu-sdk-ffi/src/types/mod.rs b/bindings/cashu-sdk-ffi/src/types/mod.rs index 88836ac7..cac1f822 100644 --- a/bindings/cashu-sdk-ffi/src/types/mod.rs +++ b/bindings/cashu-sdk-ffi/src/types/mod.rs @@ -1,7 +1,9 @@ +pub mod fee_reserve; pub mod melted; pub mod proofs_status; pub mod send_proofs; +pub use fee_reserve::FeeReserve; pub use melted::Melted; pub use proofs_status::ProofsStatus; pub use send_proofs::SendProofs;