Explorar el Código

feat: htlc and p2pk witness

thesimplekid hace 11 meses
padre
commit
037319ce55
Se han modificado 1 ficheros con 28 adiciones y 9 borrados
  1. 28 9
      bindings/cdk-js/src/nuts/nut00/witness.rs

+ 28 - 9
bindings/cdk-js/src/nuts/nut00/witness.rs

@@ -1,28 +1,47 @@
 use std::ops::Deref;
 
-use cdk::nuts::Witness;
+use cdk::nuts::{HTLCWitness, P2PKWitness, Witness};
 use wasm_bindgen::prelude::*;
 
-// use crate::nuts::{JsHTLCWitness, JsP2PKWitness};
+use crate::error::Result;
 
 #[wasm_bindgen(js_name = Witness)]
-pub enum JsWitness {
-    JsHTLCWitness,
-    JsP2PKWitness,
+pub struct JsWitness {
+    inner: Witness,
 }
 
 impl Deref for JsWitness {
     type Target = Witness;
     fn deref(&self) -> &Self::Target {
-        todo!()
+        &self.inner
     }
 }
 
 impl From<Witness> for JsWitness {
     fn from(inner: Witness) -> JsWitness {
-        match inner {
-            Witness::P2PKWitness(_) => JsWitness::JsP2PKWitness,
-            Witness::HTLCWitness(_) => JsWitness::JsHTLCWitness,
+        JsWitness { inner }
+    }
+}
+
+#[wasm_bindgen(js_class = Witness)]
+impl JsWitness {
+    #[wasm_bindgen(constructor)]
+    pub fn new(preimage: Option<String>, signatures: Option<Vec<String>>) -> Result<JsWitness> {
+        match preimage {
+            Some(preimage) => Ok(Witness::HTLCWitness(HTLCWitness {
+                preimage,
+                signatures,
+            })
+            .into()),
+            None => Ok(Witness::P2PKWitness(P2PKWitness {
+                signatures: signatures.unwrap(),
+            })
+            .into()),
         }
     }
+
+    #[wasm_bindgen(getter)]
+    pub fn signatures(&self) -> Option<Vec<String>> {
+        self.inner.signatures()
+    }
 }