feat: htlc and p2pk witness

This commit is contained in:
thesimplekid
2024-05-08 16:44:03 +01:00
parent 75d31b2335
commit 037319ce55

View File

@@ -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()
}
}