From 898e98b0d0e4cfdff9f81ccdf27b3bb02c30ee4e Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Sun, 24 Sep 2023 12:55:53 +0100 Subject: [PATCH] `bindings/cashu-js` `nut05` --- bindings/cashu-js/src/nuts/mod.rs | 1 + bindings/cashu-js/src/nuts/nut05.rs | 81 +++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 bindings/cashu-js/src/nuts/nut05.rs diff --git a/bindings/cashu-js/src/nuts/mod.rs b/bindings/cashu-js/src/nuts/mod.rs index 0b51976a..c29143ee 100644 --- a/bindings/cashu-js/src/nuts/mod.rs +++ b/bindings/cashu-js/src/nuts/mod.rs @@ -3,3 +3,4 @@ mod nut01; mod nut02; mod nut03; mod nut04; +mod nut05; diff --git a/bindings/cashu-js/src/nuts/nut05.rs b/bindings/cashu-js/src/nuts/nut05.rs new file mode 100644 index 00000000..fb5a7fe3 --- /dev/null +++ b/bindings/cashu-js/src/nuts/nut05.rs @@ -0,0 +1,81 @@ +use std::ops::Deref; + +use cashu::nuts::nut05::{CheckFeesRequest, CheckFeesResponse}; +use wasm_bindgen::prelude::*; + +use crate::{ + error::Result, + types::{JsAmount, JsBolt11Invoice}, +}; + +#[wasm_bindgen(js_name = CheckFeesRequest)] +pub struct JsCheckFeesRequest { + inner: CheckFeesRequest, +} + +impl Deref for JsCheckFeesRequest { + type Target = CheckFeesRequest; + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl From for JsCheckFeesRequest { + fn from(inner: CheckFeesRequest) -> JsCheckFeesRequest { + JsCheckFeesRequest { inner } + } +} + +#[wasm_bindgen(js_class = CheckFeesRequest)] +impl JsCheckFeesRequest { + #[wasm_bindgen(constructor)] + pub fn new(invoice: JsBolt11Invoice) -> Result { + Ok(JsCheckFeesRequest { + inner: CheckFeesRequest { + pr: invoice.clone().into(), + }, + }) + } + + /// Get Amount + #[wasm_bindgen(getter)] + pub fn invoice(&self) -> JsBolt11Invoice { + self.inner.pr.clone().into() + } +} + +#[wasm_bindgen(js_name = CheckFeesResponse)] +pub struct JsCheckFeesResponse { + inner: CheckFeesResponse, +} + +impl Deref for JsCheckFeesResponse { + type Target = CheckFeesResponse; + fn deref(&self) -> &Self::Target { + &self.inner + } +} + +impl From for JsCheckFeesResponse { + fn from(inner: CheckFeesResponse) -> JsCheckFeesResponse { + JsCheckFeesResponse { inner } + } +} + +#[wasm_bindgen(js_class = CheckFeesResponse)] +impl JsCheckFeesResponse { + #[wasm_bindgen(constructor)] + pub fn new(amount: JsAmount) -> Result { + Ok(JsCheckFeesResponse { + inner: CheckFeesResponse { + fee: *amount.deref(), + }, + }) + } + + /// Get Amount + #[wasm_bindgen(getter)] + pub fn amount(&self) -> JsAmount { + self.inner.fee.into() + } +}