From e766f3fbb1aa81a44eec7d7192cd5fce39f1d9f9 Mon Sep 17 00:00:00 2001 From: thesimplekid Date: Thu, 9 May 2024 11:01:59 +0100 Subject: [PATCH] feat(bindings): melted getters --- bindings/cdk-js/src/nuts/nut00/token.rs | 13 +++++++++++++ bindings/cdk-js/src/nuts/nut00/witness.rs | 5 +++++ bindings/cdk-js/src/types/melted.rs | 20 ++++++++++++++++++++ crates/cdk/src/nuts/nut00.rs | 7 +++++++ 4 files changed, 45 insertions(+) diff --git a/bindings/cdk-js/src/nuts/nut00/token.rs b/bindings/cdk-js/src/nuts/nut00/token.rs index 83a810b1..051954b8 100644 --- a/bindings/cdk-js/src/nuts/nut00/token.rs +++ b/bindings/cdk-js/src/nuts/nut00/token.rs @@ -1,8 +1,11 @@ use std::ops::Deref; +use std::str::FromStr; use cdk::nuts::Token; use wasm_bindgen::prelude::*; +use crate::error::{into_err, Result}; + #[wasm_bindgen(js_name = Token)] pub struct JsToken { inner: Token, @@ -20,3 +23,13 @@ impl From for JsToken { JsToken { inner } } } + +#[wasm_bindgen(js_class = Token)] +impl JsToken { + #[wasm_bindgen(constructor)] + pub fn new(token: String) -> Result { + Ok(Self { + inner: Token::from_str(&token).map_err(into_err)?, + }) + } +} diff --git a/bindings/cdk-js/src/nuts/nut00/witness.rs b/bindings/cdk-js/src/nuts/nut00/witness.rs index 867846b7..8c16481f 100644 --- a/bindings/cdk-js/src/nuts/nut00/witness.rs +++ b/bindings/cdk-js/src/nuts/nut00/witness.rs @@ -44,4 +44,9 @@ impl JsWitness { pub fn signatures(&self) -> Option> { self.inner.signatures() } + + #[wasm_bindgen(getter)] + pub fn preimage(&self) -> Option { + self.inner.preimage() + } } diff --git a/bindings/cdk-js/src/types/melted.rs b/bindings/cdk-js/src/types/melted.rs index 3b9cb8ac..2e3e143a 100644 --- a/bindings/cdk-js/src/types/melted.rs +++ b/bindings/cdk-js/src/types/melted.rs @@ -3,6 +3,8 @@ use std::ops::Deref; use cdk::types::Melted; use wasm_bindgen::prelude::*; +use crate::error::Result; + #[wasm_bindgen(js_name = Melted)] pub struct JsMelted { inner: Melted, @@ -20,3 +22,21 @@ impl From for JsMelted { JsMelted { inner } } } + +#[wasm_bindgen(js_class = Melted)] +impl JsMelted { + #[wasm_bindgen(getter)] + pub fn paid(&self) -> bool { + self.inner.paid + } + + #[wasm_bindgen(getter)] + pub fn preimage(&self) -> Option { + self.inner.preimage.clone() + } + + #[wasm_bindgen(getter)] + pub fn change(&self) -> Result { + Ok(serde_wasm_bindgen::to_value(&self.inner.change)?) + } +} diff --git a/crates/cdk/src/nuts/nut00.rs b/crates/cdk/src/nuts/nut00.rs index ec596c5e..8a4bf719 100644 --- a/crates/cdk/src/nuts/nut00.rs +++ b/crates/cdk/src/nuts/nut00.rs @@ -159,6 +159,13 @@ impl Witness { Self::HTLCWitness(witness) => witness.signatures.clone(), } } + + pub fn preimage(&self) -> Option { + match self { + Self::P2PKWitness(_witness) => None, + Self::HTLCWitness(witness) => Some(witness.preimage.clone()), + } + } } /// Proofs