|
1 | 1 | /// Helper structs for compatibility with npm @bitgo/utxo-lib |
2 | 2 | /// Long-term we should not use the `Network` objects from @bitgo/utxo-lib any longer, |
3 | 3 | /// but for now we need to keep this compatibility layer. |
4 | | -use wasm_bindgen::JsValue; |
5 | | - |
6 | 4 | use crate::address::networks::{AddressFormat, OutputScriptSupport}; |
7 | 5 | use crate::address::{bech32, cashaddr, Base58CheckCodec}; |
8 | 6 | use crate::bitcoin::{Script, ScriptBuf}; |
@@ -30,12 +28,6 @@ pub struct UtxolibNetwork { |
30 | 28 | } |
31 | 29 |
|
32 | 30 | impl UtxolibNetwork { |
33 | | - /// Parse a UtxolibNetwork object from a JavaScript value |
34 | | - pub fn from_js_value(js_network: &JsValue) -> Result<Self> { |
35 | | - use crate::try_from_js_value::TryFromJsValue; |
36 | | - UtxolibNetwork::try_from_js_value(js_network) |
37 | | - .map_err(|e| AddressError::InvalidAddress(e.to_string())) |
38 | | - } |
39 | 31 | pub fn output_script_support(&self) -> OutputScriptSupport { |
40 | 32 | let segwit = self.bech32.is_some(); |
41 | 33 |
|
@@ -140,64 +132,3 @@ pub fn to_output_script_with_network(address: &str, network: &UtxolibNetwork) -> |
140 | 132 | address |
141 | 133 | ))) |
142 | 134 | } |
143 | | - |
144 | | -// WASM bindings for utxolib-compatible address functions |
145 | | -use wasm_bindgen::prelude::*; |
146 | | - |
147 | | -#[wasm_bindgen] |
148 | | -pub struct UtxolibCompatNamespace; |
149 | | - |
150 | | -#[wasm_bindgen] |
151 | | -impl UtxolibCompatNamespace { |
152 | | - /// Convert output script to address string |
153 | | - /// |
154 | | - /// # Arguments |
155 | | - /// * `script` - The output script as a byte array |
156 | | - /// * `network` - The UtxolibNetwork object from JavaScript |
157 | | - /// * `format` - Optional address format: "default" or "cashaddr" (only applicable for Bitcoin Cash and eCash) |
158 | | - #[wasm_bindgen] |
159 | | - pub fn from_output_script( |
160 | | - script: &[u8], |
161 | | - network: JsValue, |
162 | | - format: Option<String>, |
163 | | - ) -> std::result::Result<String, JsValue> { |
164 | | - let network = UtxolibNetwork::from_js_value(&network) |
165 | | - .map_err(|e| JsValue::from_str(&e.to_string()))?; |
166 | | - |
167 | | - let script_obj = Script::from_bytes(script); |
168 | | - |
169 | | - let format_str = format.as_deref(); |
170 | | - let address_format = AddressFormat::from_optional_str(format_str) |
171 | | - .map_err(|e| JsValue::from_str(&e.to_string()))?; |
172 | | - |
173 | | - from_output_script_with_network(script_obj, &network, address_format) |
174 | | - .map_err(|e| JsValue::from_str(&e.to_string())) |
175 | | - } |
176 | | - |
177 | | - /// Convert address string to output script |
178 | | - /// |
179 | | - /// # Arguments |
180 | | - /// * `address` - The address string |
181 | | - /// * `network` - The UtxolibNetwork object from JavaScript |
182 | | - /// * `format` - Optional address format (currently unused for decoding as all formats are accepted) |
183 | | - #[wasm_bindgen] |
184 | | - pub fn to_output_script( |
185 | | - address: &str, |
186 | | - network: JsValue, |
187 | | - format: Option<String>, |
188 | | - ) -> std::result::Result<Vec<u8>, JsValue> { |
189 | | - let network = UtxolibNetwork::from_js_value(&network) |
190 | | - .map_err(|e| JsValue::from_str(&e.to_string()))?; |
191 | | - |
192 | | - // Validate format parameter even though we don't use it for decoding |
193 | | - if let Some(fmt) = format { |
194 | | - let format_str = Some(fmt.as_str()); |
195 | | - AddressFormat::from_optional_str(format_str) |
196 | | - .map_err(|e| JsValue::from_str(&e.to_string()))?; |
197 | | - } |
198 | | - |
199 | | - to_output_script_with_network(address, &network) |
200 | | - .map(|script| script.to_bytes()) |
201 | | - .map_err(|e| JsValue::from_str(&e.to_string())) |
202 | | - } |
203 | | -} |
0 commit comments