ソースを参照

`bindings/cashu-sdk` add mint sdk functions

thesimplekid 1 年間 前
コミット
bf337ef42f
2 ファイル変更61 行追加1 行削除
  1. 59 0
      bindings/cashu-sdk-js/src/mint.rs
  2. 2 1
      crates/cashu-sdk/src/mint.rs

+ 59 - 0
bindings/cashu-sdk-js/src/mint.rs

@@ -4,6 +4,9 @@ use cashu_js::{
     nuts::{
     nuts::{
         nut02::{JsId, JsKeySet, JsKeySetsResponse, JsKeysResponse, JsMintKeySet},
         nut02::{JsId, JsKeySet, JsKeySetsResponse, JsKeysResponse, JsMintKeySet},
         nut04::{JsMintRequest, JsPostMintResponse},
         nut04::{JsMintRequest, JsPostMintResponse},
+        nut06::{JsSplitRequest, JsSplitResponse},
+        nut07::{JsCheckSpendableRequest, JsCheckSpendableResponse},
+        nut08::{JsMeltRequest, JsMeltResponse},
     },
     },
     types::JsAmount,
     types::JsAmount,
 };
 };
@@ -83,6 +86,12 @@ impl JsMint {
         self.inner.keyset(id.deref()).map(|ks| ks.into())
         self.inner.keyset(id.deref()).map(|ks| ks.into())
     }
     }
 
 
+    /// Rotate Keyset
+    #[wasm_bindgen(js_name = RotateKeyset)]
+    pub fn rotate_keyset(&mut self, secret: String, derivation_path: String, max_order: u8) {
+        self.inner.rotate_keyset(secret, derivation_path, max_order);
+    }
+
     /// Process Mint Request
     /// Process Mint Request
     #[wasm_bindgen(js_name = ProcessMintRequest)]
     #[wasm_bindgen(js_name = ProcessMintRequest)]
     pub fn process_mint_request(
     pub fn process_mint_request(
@@ -95,4 +104,54 @@ impl JsMint {
             .map_err(into_err)?
             .map_err(into_err)?
             .into())
             .into())
     }
     }
+
+    /// Process Split Request
+    #[wasm_bindgen(js_name = ProcessSplitRequest)]
+    pub fn process_split_request(
+        &mut self,
+        split_request: JsSplitRequest,
+    ) -> Result<JsSplitResponse> {
+        Ok(self
+            .inner
+            .process_split_request(split_request.deref().clone())
+            .map_err(into_err)?
+            .into())
+    }
+
+    /// Check Spendable
+    #[wasm_bindgen(js_name = CheckSpendable)]
+    pub fn check_spendable(
+        &mut self,
+        check_request: JsCheckSpendableRequest,
+    ) -> Result<JsCheckSpendableResponse> {
+        Ok(self
+            .inner
+            .check_spendable(&check_request.deref().clone())
+            .map_err(into_err)?
+            .into())
+    }
+
+    /// Check Verify Melt
+    #[wasm_bindgen(js_name = VerifyMelt)]
+    pub fn verify_melt(
+        &mut self,
+        _melt_request: JsMeltRequest,
+    ) -> Result<JsCheckSpendableResponse> {
+        todo!()
+    }
+
+    /// Process Melt Request
+    #[wasm_bindgen(js_name = ProcessMeltRequest)]
+    pub fn process_melt_request(
+        &mut self,
+        melt_request: JsMeltRequest,
+        preimage: String,
+        total_spent: JsAmount,
+    ) -> Result<JsMeltResponse> {
+        Ok(self
+            .inner
+            .process_melt_request(melt_request.deref(), &preimage, *total_spent.deref())
+            .map_err(into_err)?
+            .into())
+    }
 }
 }

+ 2 - 1
crates/cashu-sdk/src/mint.rs

@@ -1,8 +1,9 @@
 use std::collections::{HashMap, HashSet};
 use std::collections::{HashMap, HashSet};
 
 
+pub use cashu::error::mint::Error;
+
 use cashu::dhke::sign_message;
 use cashu::dhke::sign_message;
 use cashu::dhke::verify_message;
 use cashu::dhke::verify_message;
-pub use cashu::error::mint::Error;
 use cashu::nuts::nut00::BlindedMessage;
 use cashu::nuts::nut00::BlindedMessage;
 use cashu::nuts::nut00::BlindedSignature;
 use cashu::nuts::nut00::BlindedSignature;
 use cashu::nuts::nut00::Proof;
 use cashu::nuts::nut00::Proof;