|
1 | 1 | use std::{cell::RefCell, rc::Rc};
|
2 | 2 |
|
3 |
| -use bdk_wallet::{SignOptions, Wallet as BdkWallet}; |
| 3 | +use bdk_wallet::{SignOptions as BdkSignOptions, Wallet as BdkWallet}; |
4 | 4 | use js_sys::Date;
|
5 | 5 | use wasm_bindgen::{prelude::wasm_bindgen, JsError};
|
6 | 6 |
|
@@ -145,8 +145,8 @@ impl Wallet {
|
145 | 145 | self.0.borrow().public_descriptor(keychain.into()).to_string()
|
146 | 146 | }
|
147 | 147 |
|
148 |
| - pub fn sign(&self, psbt: &mut Psbt) -> JsResult<bool> { |
149 |
| - let result = self.0.borrow().sign(psbt, SignOptions::default())?; |
| 148 | + pub fn sign(&self, psbt: &mut Psbt, options: SignOptions) -> JsResult<bool> { |
| 149 | + let result = self.0.borrow().sign(psbt, options.into())?; |
150 | 150 | Ok(result)
|
151 | 151 | }
|
152 | 152 |
|
@@ -184,3 +184,86 @@ impl Wallet {
|
184 | 184 | .map(|(keychain, index)| SpkIndexed(keychain.into(), index))
|
185 | 185 | }
|
186 | 186 | }
|
| 187 | + |
| 188 | +#[wasm_bindgen] |
| 189 | +pub struct SignOptions(BdkSignOptions); |
| 190 | + |
| 191 | +#[wasm_bindgen] |
| 192 | +impl SignOptions { |
| 193 | + #[wasm_bindgen(constructor)] |
| 194 | + pub fn new() -> Self { |
| 195 | + SignOptions(BdkSignOptions::default()) |
| 196 | + } |
| 197 | + |
| 198 | + #[wasm_bindgen(getter)] |
| 199 | + pub fn trust_witness_utxo(&self) -> bool { |
| 200 | + self.0.trust_witness_utxo |
| 201 | + } |
| 202 | + |
| 203 | + #[wasm_bindgen(setter)] |
| 204 | + pub fn set_trust_witness_utxo(&mut self, value: bool) { |
| 205 | + self.0.trust_witness_utxo = value; |
| 206 | + } |
| 207 | + |
| 208 | + #[wasm_bindgen(getter)] |
| 209 | + pub fn assume_height(&self) -> Option<u32> { |
| 210 | + self.0.assume_height |
| 211 | + } |
| 212 | + |
| 213 | + #[wasm_bindgen(setter)] |
| 214 | + pub fn set_assume_height(&mut self, value: Option<u32>) { |
| 215 | + self.0.assume_height = value; |
| 216 | + } |
| 217 | + |
| 218 | + #[wasm_bindgen(getter)] |
| 219 | + pub fn allow_all_sighashes(&self) -> bool { |
| 220 | + self.0.allow_all_sighashes |
| 221 | + } |
| 222 | + |
| 223 | + #[wasm_bindgen(setter)] |
| 224 | + pub fn set_allow_all_sighashes(&mut self, value: bool) { |
| 225 | + self.0.allow_all_sighashes = value; |
| 226 | + } |
| 227 | + |
| 228 | + #[wasm_bindgen(getter)] |
| 229 | + pub fn try_finalize(&self) -> bool { |
| 230 | + self.0.try_finalize |
| 231 | + } |
| 232 | + |
| 233 | + #[wasm_bindgen(setter)] |
| 234 | + pub fn set_try_finalize(&mut self, value: bool) { |
| 235 | + self.0.try_finalize = value; |
| 236 | + } |
| 237 | + |
| 238 | + #[wasm_bindgen(getter)] |
| 239 | + pub fn sign_with_tap_internal_key(&self) -> bool { |
| 240 | + self.0.sign_with_tap_internal_key |
| 241 | + } |
| 242 | + |
| 243 | + #[wasm_bindgen(setter)] |
| 244 | + pub fn set_sign_with_tap_internal_key(&mut self, value: bool) { |
| 245 | + self.0.sign_with_tap_internal_key = value; |
| 246 | + } |
| 247 | + |
| 248 | + #[wasm_bindgen(getter)] |
| 249 | + pub fn allow_grinding(&self) -> bool { |
| 250 | + self.0.allow_grinding |
| 251 | + } |
| 252 | + |
| 253 | + #[wasm_bindgen(setter)] |
| 254 | + pub fn set_allow_grinding(&mut self, value: bool) { |
| 255 | + self.0.allow_grinding = value; |
| 256 | + } |
| 257 | +} |
| 258 | + |
| 259 | +impl From<SignOptions> for BdkSignOptions { |
| 260 | + fn from(options: SignOptions) -> Self { |
| 261 | + options.0 |
| 262 | + } |
| 263 | +} |
| 264 | + |
| 265 | +impl Default for SignOptions { |
| 266 | + fn default() -> Self { |
| 267 | + Self::new() |
| 268 | + } |
| 269 | +} |
0 commit comments