From 656ace3f506c64350785f4b76aae7082b9964d6f Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Sun, 24 Sep 2023 11:53:56 +0100 Subject: [PATCH] `bindings/cashu-js` `nut03` --- bindings/cashu-js/src/nuts/mod.rs | 1 + bindings/cashu-js/src/nuts/nut03.rs | 49 +++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 bindings/cashu-js/src/nuts/nut03.rs diff --git a/bindings/cashu-js/src/nuts/mod.rs b/bindings/cashu-js/src/nuts/mod.rs index 6a251035..fff91b37 100644 --- a/bindings/cashu-js/src/nuts/mod.rs +++ b/bindings/cashu-js/src/nuts/mod.rs @@ -1,3 +1,4 @@ mod nut00; mod nut01; mod nut02; +mod nut03; diff --git a/bindings/cashu-js/src/nuts/nut03.rs b/bindings/cashu-js/src/nuts/nut03.rs new file mode 100644 index 00000000..6474e89c --- /dev/null +++ b/bindings/cashu-js/src/nuts/nut03.rs @@ -0,0 +1,49 @@ +use std::ops::Deref; + +use cashu::nuts::nut03::RequestMintResponse; +use wasm_bindgen::prelude::*; + +use crate::types::JsBolt11Invoice; + +#[wasm_bindgen(js_name = RequestMintResponse)] +pub struct JsRequestMintResponse { + inner: RequestMintResponse, +} + +impl Deref for JsRequestMintResponse { + type Target = RequestMintResponse; + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl From for JsRequestMintResponse { + fn from(inner: RequestMintResponse) -> JsRequestMintResponse { + JsRequestMintResponse { inner } + } +} + +#[wasm_bindgen(js_class = RequestMintResponse)] +impl JsRequestMintResponse { + #[wasm_bindgen(constructor)] + pub fn new(pr: JsBolt11Invoice, hash: String) -> JsRequestMintResponse { + JsRequestMintResponse { + inner: RequestMintResponse { + pr: pr.deref().clone(), + hash, + }, + } + } + + /// Get Bolt11 Invoice + #[wasm_bindgen(getter)] + pub fn invoice(&self) -> JsBolt11Invoice { + self.inner.pr.clone().into() + } + + /// Get Hash + #[wasm_bindgen(getter)] + pub fn hash(&self) -> String { + self.inner.hash.to_string() + } +}