From c29ebb4d2dec039f1fef4648e73cb2c615ded86b Mon Sep 17 00:00:00 2001 From: Otto Allmendinger Date: Thu, 5 Sep 2024 17:38:13 +0200 Subject: [PATCH] feat: wrap maxWeightToSatisfy Issue: BTC-1460 --- packages/wasm-miniscript/src/descriptor.rs | 12 ++++++++++++ packages/wasm-miniscript/test/test.ts | 2 ++ 2 files changed, 14 insertions(+) diff --git a/packages/wasm-miniscript/src/descriptor.rs b/packages/wasm-miniscript/src/descriptor.rs index dc7d0d3..9a92f8b 100644 --- a/packages/wasm-miniscript/src/descriptor.rs +++ b/packages/wasm-miniscript/src/descriptor.rs @@ -82,6 +82,18 @@ impl WrapDescriptor { Ok(self.explicit_script()?.to_asm_string()) } + #[wasm_bindgen(js_name = maxWeightToSatisfy)] + pub fn max_weight_to_satisfy(&self) -> Result { + let weight = (match &self.0 { + WrapDescriptorEnum::Derivable(desc, _) => { + desc.max_weight_to_satisfy() + } + WrapDescriptorEnum::Definite(desc) => desc.max_weight_to_satisfy(), + WrapDescriptorEnum::String(desc) => desc.max_weight_to_satisfy(), + })?; + weight.to_wu().try_into().map_err(|_| JsError::new("Weight exceeds u32")) + } + #[wasm_bindgen(js_name = fromString, skip_typescript)] pub fn from_string(descriptor: &str, pk_type: &str) -> Result { match pk_type { diff --git a/packages/wasm-miniscript/test/test.ts b/packages/wasm-miniscript/test/test.ts index db21f23..f38eec0 100644 --- a/packages/wasm-miniscript/test/test.ts +++ b/packages/wasm-miniscript/test/test.ts @@ -58,6 +58,8 @@ describe("Descriptor fixtures", function () { fixture.script, ); } + + assert.ok(Number.isInteger(descriptor.maxWeightToSatisfy())); }); }); });