mirror of
https://github.com/aljazceru/cdk.git
synced 2026-01-03 13:05:19 +01:00
feat: htlc and p2pk witness
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user