From 8a1508ab07545a4d36eed383dd90d9951ebaff9c Mon Sep 17 00:00:00 2001 From: ok300 <106775972+ok300@users.noreply.github.com> Date: Fri, 3 May 2024 13:53:37 +0000 Subject: [PATCH] Rename wallet to SDK or LiquidSdk (#157) * Rename global instance in bindings.rs * Rename wallet to SDK or LiquidSdk * Rename BindingWallet to BindingLiquidSdk * Rename wallet to lwk_wollet, signer to lwk_signer * Rename LsSdkError to LiquidSdkError * Cargo fmt * Rename LsSdkError in RN generator --------- Co-authored-by: Ross Savage --- cli/src/commands.rs | 30 ++--- cli/src/main.rs | 6 +- .../src/gen_kotlin/templates/EnumTemplate.kt | 2 +- .../src/gen_kotlin/templates/Helpers.kt | 6 +- .../gen_kotlin/templates/RecordTemplate.kt | 2 +- .../templates/TopLevelFunctionTemplate.kt | 4 +- .../src/gen_kotlin/templates/module.kt | 6 +- .../gen_swift/templates/EnumTemplate.swift | 10 +- .../gen_swift/templates/RecordTemplate.swift | 8 +- .../src/gen_swift/templates/module.swift | 2 +- lib/bindings/src/breez_liquid_sdk.udl | 14 +-- lib/bindings/src/lib.rs | 34 +++--- lib/core/src/bindings.rs | 50 ++++---- lib/core/src/error.rs | 10 +- lib/core/src/lib.rs | 2 +- lib/core/src/model.rs | 4 +- lib/core/src/{wallet.rs => sdk.rs} | 110 +++++++++--------- .../breezliquidsdk/BreezLiquidSDKMapper.kt | 28 ++--- .../breezliquidsdk/BreezLiquidSDKModule.kt | 18 +-- .../ios/BreezLiquidSDKMapper.swift | 66 +++++------ .../react-native/ios/RNBreezLiquidSDK.swift | 2 +- 21 files changed, 207 insertions(+), 207 deletions(-) rename lib/core/src/{wallet.rs => sdk.rs} (88%) diff --git a/cli/src/commands.rs b/cli/src/commands.rs index 3c8a1f4..570150e 100644 --- a/cli/src/commands.rs +++ b/cli/src/commands.rs @@ -6,7 +6,7 @@ use std::time::Duration; use anyhow::Result; use breez_liquid_sdk::model::*; -use breez_liquid_sdk::wallet::Wallet; +use breez_liquid_sdk::sdk::LiquidSdk; use clap::{arg, Parser}; use qrcode_rs::render::unicode; use qrcode_rs::{EcLevel, QrCode}; @@ -36,9 +36,9 @@ pub(crate) enum Command { }, /// List incoming and outgoing payments ListPayments, - /// Get the balance of the currently loaded wallet + /// Get the balance and general info of the current instance GetInfo, - /// Empties the encrypted wallet transaction cache + /// Empties the encrypted transaction cache EmptyCache, /// Backs up the current pending swaps Backup, @@ -91,13 +91,13 @@ macro_rules! wait_confirmation { pub(crate) fn handle_command( _rl: &mut Editor, - wallet: &Arc, + sdk: &Arc, command: Command, ) -> Result { Ok(match command { Command::ReceivePayment { payer_amount_sat } => { let prepare_response = - wallet.prepare_receive_payment(&PrepareReceiveRequest { payer_amount_sat })?; + sdk.prepare_receive_payment(&PrepareReceiveRequest { payer_amount_sat })?; wait_confirmation!( format!( @@ -107,7 +107,7 @@ pub(crate) fn handle_command( "Payment receive halted" ); - let response = wallet.receive_payment(&prepare_response)?; + let response = sdk.receive_payment(&prepare_response)?; let invoice = response.invoice.clone(); let mut result = command_result!(response); @@ -117,7 +117,7 @@ pub(crate) fn handle_command( } Command::SendPayment { bolt11, delay } => { let prepare_response = - wallet.prepare_send_payment(PrepareSendRequest { invoice: bolt11 })?; + sdk.prepare_send_payment(PrepareSendRequest { invoice: bolt11 })?; wait_confirmation!( format!( @@ -128,37 +128,37 @@ pub(crate) fn handle_command( ); if let Some(delay) = delay { - let wallet_cloned = wallet.clone(); + let sdk_cloned = sdk.clone(); let prepare_cloned = prepare_response.clone(); thread::spawn(move || { thread::sleep(Duration::from_secs(delay)); - wallet_cloned.send_payment(&prepare_cloned).unwrap(); + sdk_cloned.send_payment(&prepare_cloned).unwrap(); }); command_result!(prepare_response) } else { - let response = wallet.send_payment(&prepare_response)?; + let response = sdk.send_payment(&prepare_response)?; command_result!(response) } } Command::GetInfo => { - command_result!(wallet.get_info(GetInfoRequest { with_scan: true })?) + command_result!(sdk.get_info(GetInfoRequest { with_scan: true })?) } Command::ListPayments => { - let mut payments = wallet.list_payments(true, true)?; + let mut payments = sdk.list_payments(true, true)?; payments.reverse(); command_result!(payments) } Command::EmptyCache => { - wallet.empty_wallet_cache()?; + sdk.empty_wallet_cache()?; command_result!("Cache emptied successfully") } Command::Backup => { - wallet.backup()?; + sdk.backup()?; command_result!("Backup created successfully!") } Command::Restore { backup_path } => { - wallet.restore(RestoreRequest { backup_path })?; + sdk.restore(RestoreRequest { backup_path })?; command_result!("Backup restored successfully!") } }) diff --git a/cli/src/main.rs b/cli/src/main.rs index c9d8eeb..210ed3f 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -9,7 +9,7 @@ use std::{ use anyhow::{anyhow, Result}; use breez_liquid_sdk::{ model::*, - wallet::{Wallet, DEFAULT_DATA_DIR}, + sdk::{LiquidSdk, DEFAULT_DATA_DIR}, }; use clap::Parser; use commands::{handle_command, CliHelper, Command, CommandResult}; @@ -82,7 +82,7 @@ fn main() -> Result<()> { let mnemonic = persistence.get_or_create_mnemonic()?; let network = args.network.unwrap_or(Network::LiquidTestnet); - let wallet = Wallet::connect(ConnectRequest { + let sdk = LiquidSdk::connect(ConnectRequest { mnemonic: mnemonic.to_string(), data_dir: Some(data_dir_str), network, @@ -105,7 +105,7 @@ fn main() -> Result<()> { println!("{}", cli_res.unwrap_err()); continue; } - let res = handle_command(rl, &wallet, cli_res.unwrap()); + let res = handle_command(rl, &sdk, cli_res.unwrap()); show_results(res)?; } Err(ReadlineError::Interrupted) => { diff --git a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/EnumTemplate.kt b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/EnumTemplate.kt index 581bf4b..4fe43b2 100644 --- a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/EnumTemplate.kt +++ b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/EnumTemplate.kt @@ -49,7 +49,7 @@ fun as{{ type_name }}List(arr: ReadableArray): List<{{ type_name }}> { {%- else %} is ReadableMap -> list.add(as{{ type_name }}(value)!!) {%- endif %} - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list diff --git a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/Helpers.kt b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/Helpers.kt index e941841..8fb488c 100644 --- a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/Helpers.kt +++ b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/Helpers.kt @@ -26,7 +26,7 @@ fun pushToArray(array: WritableArray, value: Any?) { {%- endfor %} is Array<*> -> array.pushArray(readableArrayOf(value.asIterable())) is List<*> -> array.pushArray(readableArrayOf(value)) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } @@ -47,7 +47,7 @@ fun pushToMap(map: WritableMap, key: String, value: Any?) { is ULong -> map.putDouble(key, value.toDouble()) is Array<*> -> map.putArray(key, readableArrayOf(value.asIterable())) is List<*> -> map.putArray(key, readableArrayOf(value)) - else -> throw LsSdkException.Generic("Unexpected type ${value::class.java.name} for key [$key]") + else -> throw LiquidSdkException.Generic("Unexpected type ${value::class.java.name} for key [$key]") } } @@ -69,7 +69,7 @@ fun asUByteList(arr: ReadableArray): List { is Double -> list.add(value.toInt().toUByte()) is Int -> list.add(value.toUByte()) is UByte -> list.add(value) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list diff --git a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/RecordTemplate.kt b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/RecordTemplate.kt index a62078a..acdfb85 100644 --- a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/RecordTemplate.kt +++ b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/RecordTemplate.kt @@ -43,7 +43,7 @@ fun as{{ type_name }}List(arr: ReadableArray): List<{{ type_name }}> { for (value in arr.toArrayList()) { when (value) { is ReadableMap -> list.add(as{{ type_name }}(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list diff --git a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/TopLevelFunctionTemplate.kt b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/TopLevelFunctionTemplate.kt index b271c83..735058e 100644 --- a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/TopLevelFunctionTemplate.kt +++ b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/TopLevelFunctionTemplate.kt @@ -10,12 +10,12 @@ {%- if e.is_flat() %} val {{arg.name()|var_name|unquote|temporary}} = as{{arg.type_()|type_name}}({{ arg.name()|var_name|unquote }}) {%- else %} - val {{arg.name()|var_name|unquote|temporary}} = as{{arg.type_()|type_name}}({{ arg.name()|var_name|unquote }}) ?: run { throw LsSdkException.Generic(errMissingMandatoryField("{{arg.name()|var_name|unquote}}", "{{ arg.type_()|type_name }}")) } + val {{arg.name()|var_name|unquote|temporary}} = as{{arg.type_()|type_name}}({{ arg.name()|var_name|unquote }}) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("{{arg.name()|var_name|unquote}}", "{{ arg.type_()|type_name }}")) } {%- endif %} {%- when Type::Optional(_) %} val {{arg.name()|var_name|unquote|temporary}} = {{arg.name()|var_name|unquote}}{{ arg.type_()|rn_convert_type(ci) -}} {%- when Type::Record(_) %} - val {{arg.type_()|type_name|var_name|unquote}} = as{{arg.type_()|type_name}}({{ arg.name()|var_name|unquote }}) ?: run { throw LsSdkException.Generic(errMissingMandatoryField("{{arg.name()|var_name|unquote}}", "{{ arg.type_()|type_name }}")) } + val {{arg.type_()|type_name|var_name|unquote}} = as{{arg.type_()|type_name}}({{ arg.name()|var_name|unquote }}) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("{{arg.name()|var_name|unquote}}", "{{ arg.type_()|type_name }}")) } {%- else %} {%- endmatch %} {%- endfor %} diff --git a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/module.kt b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/module.kt index dd80993..acdfc83 100644 --- a/lib/bindings/bindings-react-native/src/gen_kotlin/templates/module.kt +++ b/lib/bindings/bindings-react-native/src/gen_kotlin/templates/module.kt @@ -27,13 +27,13 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext return TAG } - @Throws(LsSdkException::class) + @Throws(LiquidSdkException::class) fun getBindingWallet(): BindingWallet { if (bindingWallet != null) { return bindingWallet!! } - throw LsSdkException.Generic("Not initialized") + throw LiquidSdkException.Generic("Not initialized") } @ReactMethod @@ -58,7 +58,7 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext executor.execute { try { - var connectRequest = asConnectRequest(req) ?: run { throw LsSdkException.Generic(errMissingMandatoryField("req", "ConnectRequest")) } + var connectRequest = asConnectRequest(req) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "ConnectRequest")) } connectRequest.dataDir = connectRequest.dataDir.takeUnless { it.isEmpty() } ?: run { reactApplicationContext.filesDir.toString() + "/breezLiquidSdk" } bindingWallet = connect(connectRequest) promise.resolve(readableMapOf("status" to "ok")) diff --git a/lib/bindings/bindings-react-native/src/gen_swift/templates/EnumTemplate.swift b/lib/bindings/bindings-react-native/src/gen_swift/templates/EnumTemplate.swift index 7963f8b..0d8a5cf 100644 --- a/lib/bindings/bindings-react-native/src/gen_swift/templates/EnumTemplate.swift +++ b/lib/bindings/bindings-react-native/src/gen_swift/templates/EnumTemplate.swift @@ -10,7 +10,7 @@ static func as{{ type_name }}({{ type_name|var_name|unquote }}: String) throws - {%- endfor %} - default: throw LsSdkError.Generic(message: "Invalid variant \({{ type_name|var_name|unquote }}) for enum {{ type_name }}") + default: throw LiquidSdkError.Generic(message: "Invalid variant \({{ type_name|var_name|unquote }}) for enum {{ type_name }}") } } @@ -52,11 +52,11 @@ static func as{{ type_name }}({{ type_name|var_name|unquote }}: [String: Any?]) {%- else %} {% if field.type_()|inline_optional_field(ci) -%} guard let _{{field.name()|var_name|unquote}} = {{ type_name|var_name|unquote }}["{{field.name()|var_name|unquote}}"] as? {{field.type_()|rn_type_name(ci, true)}} else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "{{field.name()|var_name|unquote}}", typeName: "{{ type_name }}")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "{{field.name()|var_name|unquote}}", typeName: "{{ type_name }}")) } {%- else -%} guard let {{field.name()|var_name|unquote|temporary}} = {{ type_name|var_name|unquote }}["{{field.name()|var_name|unquote}}"] as? {{field.type_()|rn_type_name(ci, true)}} else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "{{field.name()|var_name|unquote}}", typeName: "{{ type_name }}")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "{{field.name()|var_name|unquote}}", typeName: "{{ type_name }}")) } let _{{field.name()|var_name|unquote}} = {{field.type_()|render_from_map(ci, field.name()|var_name|unquote|temporary)}} {% endif -%} @@ -68,7 +68,7 @@ static func as{{ type_name }}({{ type_name|var_name|unquote }}: [String: Any?]) } {%- endfor %} - throw LsSdkError.Generic(message: "Unexpected type \(type) for enum {{ type_name }}") + throw LiquidSdkError.Generic(message: "Unexpected type \(type) for enum {{ type_name }}") } static func dictionaryOf({{ type_name|var_name|unquote }}: {{ type_name }}) -> [String: Any?] { @@ -108,7 +108,7 @@ static func as{{ type_name }}List(arr: [Any]) throws -> [{{ type_name }}] { var {{ type_name|var_name|unquote }} = try as{{ type_name }}({{ type_name|var_name|unquote }}: val) list.append({{ type_name|var_name|unquote }}) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "{{ type_name }}")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "{{ type_name }}")) } } return list diff --git a/lib/bindings/bindings-react-native/src/gen_swift/templates/RecordTemplate.swift b/lib/bindings/bindings-react-native/src/gen_swift/templates/RecordTemplate.swift index ce38ced..86bdbc3 100644 --- a/lib/bindings/bindings-react-native/src/gen_swift/templates/RecordTemplate.swift +++ b/lib/bindings/bindings-react-native/src/gen_swift/templates/RecordTemplate.swift @@ -7,7 +7,7 @@ static func as{{ type_name }}({{ type_name|var_name|unquote }}: [String: Any?]) {% if field.type_()|inline_optional_field(ci) -%} if hasNonNilKey(data: {{ type_name|var_name|unquote }}, key: "{{field.name()|var_name|unquote}}") { guard let {{field.name()|var_name|unquote|temporary}} = {{ type_name|var_name|unquote }}["{{field.name()|var_name|unquote}}"] as? {{field.type_()|rn_type_name(ci, true)}} else { - throw LsSdkError.Generic(message: errUnexpectedValue(fieldName: "{{field.name()|var_name|unquote}}")) + throw LiquidSdkError.Generic(message: errUnexpectedValue(fieldName: "{{field.name()|var_name|unquote}}")) } {{field.name()|var_name|unquote}} = {{field.name()|var_name|unquote|temporary}} } @@ -19,11 +19,11 @@ static func as{{ type_name }}({{ type_name|var_name|unquote }}: [String: Any?]) {%- else %} {% if field.type_()|inline_optional_field(ci) -%} guard let {{field.name()|var_name|unquote}} = {{ type_name|var_name|unquote }}["{{field.name()|var_name|unquote}}"] as? {{field.type_()|rn_type_name(ci, true)}} else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "{{field.name()|var_name|unquote}}", typeName: "{{ type_name }}")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "{{field.name()|var_name|unquote}}", typeName: "{{ type_name }}")) } {%- else -%} guard let {{field.name()|var_name|unquote|temporary}} = {{ type_name|var_name|unquote }}["{{field.name()|var_name|unquote}}"] as? {{field.type_()|rn_type_name(ci, true)}} else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "{{field.name()|var_name|unquote}}", typeName: "{{ type_name }}")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "{{field.name()|var_name|unquote}}", typeName: "{{ type_name }}")) } let {{field.name()|var_name|unquote}} = {{field.type_()|render_from_map(ci, field.name()|var_name|unquote|temporary)}} {% endif -%} @@ -48,7 +48,7 @@ static func as{{ type_name }}List(arr: [Any]) throws -> [{{ type_name }}] { var {{ type_name|var_name|unquote }} = try as{{ type_name }}({{ type_name|var_name|unquote }}: val) list.append({{ type_name|var_name|unquote }}) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "{{ type_name }}")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "{{ type_name }}")) } } return list diff --git a/lib/bindings/bindings-react-native/src/gen_swift/templates/module.swift b/lib/bindings/bindings-react-native/src/gen_swift/templates/module.swift index 013999c..c6bf102 100644 --- a/lib/bindings/bindings-react-native/src/gen_swift/templates/module.swift +++ b/lib/bindings/bindings-react-native/src/gen_swift/templates/module.swift @@ -48,7 +48,7 @@ class RNBreezLiquidSDK: RCTEventEmitter { return bindingWallet } - throw LsSdkError.Generic(message: "Not initialized") + throw LiquidSdkError.Generic(message: "Not initialized") } {% let obj_interface = "BreezLiquidSDK." -%} diff --git a/lib/bindings/src/breez_liquid_sdk.udl b/lib/bindings/src/breez_liquid_sdk.udl index 370df92..fec19f5 100644 --- a/lib/bindings/src/breez_liquid_sdk.udl +++ b/lib/bindings/src/breez_liquid_sdk.udl @@ -1,5 +1,5 @@ [Error] -enum LsSdkError { +enum LiquidSdkError { "Generic", }; @@ -74,12 +74,12 @@ dictionary RestoreRequest { }; namespace breez_liquid_sdk { - [Throws=LsSdkError] - BindingWallet connect(ConnectRequest req); + [Throws=LiquidSdkError] + BindingLiquidSdk connect(ConnectRequest req); }; -interface BindingWallet { - [Throws=LsSdkError] +interface BindingLiquidSdk { + [Throws=LiquidSdkError] GetInfoResponse get_info(GetInfoRequest req); [Throws=PaymentError] @@ -94,9 +94,9 @@ interface BindingWallet { [Throws=PaymentError] ReceivePaymentResponse receive_payment(PrepareReceiveResponse req); - [Throws=LsSdkError] + [Throws=LiquidSdkError] void backup(); - [Throws=LsSdkError] + [Throws=LiquidSdkError] void restore(RestoreRequest req); }; diff --git a/lib/bindings/src/lib.rs b/lib/bindings/src/lib.rs index 471249e..16dc285 100644 --- a/lib/bindings/src/lib.rs +++ b/lib/bindings/src/lib.rs @@ -1,56 +1,56 @@ use std::sync::Arc; use anyhow::Result; -use breez_liquid_sdk::{error::*, model::*, wallet::Wallet}; +use breez_liquid_sdk::{error::*, model::*, sdk::LiquidSdk}; -pub fn connect(req: ConnectRequest) -> Result, LsSdkError> { - let ln_sdk = Wallet::connect(req)?; - Ok(Arc::from(BindingWallet { ln_sdk })) +pub fn connect(req: ConnectRequest) -> Result, LiquidSdkError> { + let ln_sdk = LiquidSdk::connect(req)?; + Ok(Arc::from(BindingLiquidSdk { sdk: ln_sdk })) } -pub struct BindingWallet { - ln_sdk: Arc, +pub struct BindingLiquidSdk { + sdk: Arc, } -impl BindingWallet { - pub fn get_info(&self, req: GetInfoRequest) -> Result { - self.ln_sdk.get_info(req).map_err(Into::into) +impl BindingLiquidSdk { + pub fn get_info(&self, req: GetInfoRequest) -> Result { + self.sdk.get_info(req).map_err(Into::into) } pub fn prepare_send_payment( &self, req: PrepareSendRequest, ) -> Result { - self.ln_sdk.prepare_send_payment(req) + self.sdk.prepare_send_payment(req) } pub fn send_payment( &self, req: PrepareSendResponse, ) -> Result { - self.ln_sdk.send_payment(&req) + self.sdk.send_payment(&req) } pub fn prepare_receive_payment( &self, req: PrepareReceiveRequest, ) -> Result { - self.ln_sdk.prepare_receive_payment(&req) + self.sdk.prepare_receive_payment(&req) } pub fn receive_payment( &self, req: PrepareReceiveResponse, ) -> Result { - self.ln_sdk.receive_payment(&req) + self.sdk.receive_payment(&req) } - pub fn backup(&self) -> Result<(), LsSdkError> { - self.ln_sdk.backup().map_err(Into::into) + pub fn backup(&self) -> Result<(), LiquidSdkError> { + self.sdk.backup().map_err(Into::into) } - pub fn restore(&self, req: RestoreRequest) -> Result<(), LsSdkError> { - self.ln_sdk.restore(req).map_err(Into::into) + pub fn restore(&self, req: RestoreRequest) -> Result<(), LiquidSdkError> { + self.sdk.restore(req).map_err(Into::into) } } diff --git a/lib/core/src/bindings.rs b/lib/core/src/bindings.rs index 278217b..f1e6a11 100644 --- a/lib/core/src/bindings.rs +++ b/lib/core/src/bindings.rs @@ -2,101 +2,97 @@ use anyhow::{anyhow, Result}; pub(crate) use boltz_client::util::secrets::LBtcReverseRecovery; use std::sync::{Arc, OnceLock}; -use crate::{ - error::{LsSdkError, PaymentError}, - model::*, - wallet::Wallet, -}; +use crate::{error::*, model::*, sdk::LiquidSdk}; use super::model::Payment; -static WALLET_INSTANCE: OnceLock> = OnceLock::new(); +static LIQUID_SDK_INSTANCE: OnceLock> = OnceLock::new(); pub fn connect(req: ConnectRequest) -> Result<()> { - let wallet = Wallet::connect(req)?; - WALLET_INSTANCE.get_or_init(|| wallet); + let sdk = LiquidSdk::connect(req)?; + LIQUID_SDK_INSTANCE.get_or_init(|| sdk); Ok(()) } pub fn get_info(req: GetInfoRequest) -> Result { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized"))? .get_info(req) } pub fn prepare_send_payment(req: PrepareSendRequest) -> Result { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized")) - .map_err(|e| LsSdkError::Generic { err: e.to_string() })? + .map_err(|e| LiquidSdkError::Generic { err: e.to_string() })? .prepare_send_payment(req) } pub fn send_payment(req: PrepareSendResponse) -> Result { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized")) - .map_err(|e| LsSdkError::Generic { err: e.to_string() })? + .map_err(|e| LiquidSdkError::Generic { err: e.to_string() })? .send_payment(&req) } pub fn prepare_receive_payment( req: PrepareReceiveRequest, ) -> Result { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized")) - .map_err(|e| LsSdkError::Generic { err: e.to_string() })? + .map_err(|e| LiquidSdkError::Generic { err: e.to_string() })? .prepare_receive_payment(&req) } pub fn receive_payment( req: PrepareReceiveResponse, ) -> Result { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized")) - .map_err(|e| LsSdkError::Generic { err: e.to_string() })? + .map_err(|e| LiquidSdkError::Generic { err: e.to_string() })? .receive_payment(&req) } pub fn list_payments(with_scan: bool, include_pending: bool) -> Result> { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized")) - .map_err(|e| LsSdkError::Generic { err: e.to_string() })? + .map_err(|e| LiquidSdkError::Generic { err: e.to_string() })? .list_payments(with_scan, include_pending) } pub fn recover_funds(recovery: LBtcReverseRecovery) -> Result { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized")) - .map_err(|e| LsSdkError::Generic { err: e.to_string() })? + .map_err(|e| LiquidSdkError::Generic { err: e.to_string() })? .recover_funds(&recovery) } pub fn empty_wallet_cache() -> Result<()> { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized")) - .map_err(|e| LsSdkError::Generic { err: e.to_string() })? + .map_err(|e| LiquidSdkError::Generic { err: e.to_string() })? .empty_wallet_cache() } pub fn backup() -> Result<()> { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized")) - .map_err(|e| LsSdkError::Generic { err: e.to_string() })? + .map_err(|e| LiquidSdkError::Generic { err: e.to_string() })? .backup() } pub fn restore(req: RestoreRequest) -> Result<()> { - WALLET_INSTANCE + LIQUID_SDK_INSTANCE .get() .ok_or(anyhow!("Not initialized")) - .map_err(|e| LsSdkError::Generic { err: e.to_string() })? + .map_err(|e| LiquidSdkError::Generic { err: e.to_string() })? .restore(req) } diff --git a/lib/core/src/error.rs b/lib/core/src/error.rs index cbe806a..afe54a6 100644 --- a/lib/core/src/error.rs +++ b/lib/core/src/error.rs @@ -11,14 +11,14 @@ macro_rules! ensure_sdk { // TODO Unify error enum #[derive(Debug, thiserror::Error)] -pub enum LsSdkError { +pub enum LiquidSdkError { #[error("Error: {err}")] Generic { err: String }, } -impl From for LsSdkError { +impl From for LiquidSdkError { fn from(e: Error) -> Self { - LsSdkError::Generic { err: e.to_string() } + LiquidSdkError::Generic { err: e.to_string() } } } @@ -102,8 +102,8 @@ impl From for PaymentError { } } -impl From for PaymentError { - fn from(err: LsSdkError) -> Self { +impl From for PaymentError { + fn from(err: LiquidSdkError) -> Self { Self::Generic { err: err.to_string(), } diff --git a/lib/core/src/lib.rs b/lib/core/src/lib.rs index c90146a..bf40ec2 100644 --- a/lib/core/src/lib.rs +++ b/lib/core/src/lib.rs @@ -5,4 +5,4 @@ pub mod error; pub mod frb; pub mod model; pub mod persist; -pub mod wallet; +pub mod sdk; diff --git a/lib/core/src/model.rs b/lib/core/src/model.rs index d07f77c..9f9e631 100644 --- a/lib/core/src/model.rs +++ b/lib/core/src/model.rs @@ -44,7 +44,7 @@ impl TryFrom<&str> for Network { } #[derive(Debug)] -pub struct WalletOptions { +pub struct LiquidSdkOptions { pub signer: SwSigner, pub network: Network, /// Output script descriptor @@ -60,7 +60,7 @@ pub struct WalletOptions { /// If not set, it defaults to a Blockstream instance. pub electrum_url: Option, } -impl WalletOptions { +impl LiquidSdkOptions { pub(crate) fn get_electrum_url(&self) -> ElectrumUrl { self.electrum_url.clone().unwrap_or({ let (url, validate_domain, tls) = match &self.network { diff --git a/lib/core/src/wallet.rs b/lib/core/src/sdk.rs similarity index 88% rename from lib/core/src/wallet.rs rename to lib/core/src/sdk.rs index 0684554..5a673c0 100644 --- a/lib/core/src/wallet.rs +++ b/lib/core/src/sdk.rs @@ -37,23 +37,25 @@ pub const LIQUID_CLAIM_TX_FEERATE: f32 = 0.1; pub const DEFAULT_DATA_DIR: &str = ".data"; -pub struct Wallet { - signer: SwSigner, +pub struct LiquidSdk { electrum_url: ElectrumUrl, network: Network, - wallet: Arc>, + /// LWK Wollet, a watch-only Liquid wallet for this instance + lwk_wollet: Arc>, + /// LWK Signer, for signing Liquid transactions + lwk_signer: SwSigner, active_address: Option, persister: Persister, data_dir_path: String, } -impl Wallet { - pub fn connect(req: ConnectRequest) -> Result> { +impl LiquidSdk { + pub fn connect(req: ConnectRequest) -> Result> { let is_mainnet = req.network == Network::Liquid; let signer = SwSigner::new(&req.mnemonic, is_mainnet)?; - let descriptor = Wallet::get_descriptor(&signer, req.network)?; + let descriptor = LiquidSdk::get_descriptor(&signer, req.network)?; - Wallet::new(WalletOptions { + LiquidSdk::new(LiquidSdkOptions { signer, descriptor, electrum_url: None, @@ -62,14 +64,14 @@ impl Wallet { }) } - fn new(opts: WalletOptions) -> Result> { + fn new(opts: LiquidSdkOptions) -> Result> { let network = opts.network; let elements_network: ElementsNetwork = opts.network.into(); let electrum_url = opts.get_electrum_url(); let data_dir_path = opts.data_dir_path.unwrap_or(DEFAULT_DATA_DIR.to_string()); let lwk_persister = FsPersister::new(&data_dir_path, network.into(), &opts.descriptor)?; - let wallet = Arc::new(Mutex::new(LwkWollet::new( + let lwk_wollet = Arc::new(Mutex::new(LwkWollet::new( elements_network, lwk_persister, opts.descriptor, @@ -80,19 +82,19 @@ impl Wallet { let persister = Persister::new(&data_dir_path, network)?; persister.init()?; - let wallet = Arc::new(Wallet { - wallet, + let sdk = Arc::new(LiquidSdk { + lwk_wollet, network, electrum_url, - signer: opts.signer, + lwk_signer: opts.signer, active_address: None, persister, data_dir_path, }); - Wallet::track_pending_swaps(&wallet)?; + LiquidSdk::track_pending_swaps(&sdk)?; - Ok(wallet) + Ok(sdk) } fn get_descriptor(signer: &SwSigner, network: Network) -> Result { @@ -108,7 +110,7 @@ impl Wallet { } fn try_resolve_pending_swap( - wallet: &Arc, + sdk: &Arc, client: &BoltzApiClient, swap: &OngoingSwap, ) -> Result<()> { @@ -136,8 +138,7 @@ impl Wallet { | RevSwapStates::TransactionFailed | RevSwapStates::TransactionRefunded => { warn!("Cannot claim swap {id}, unrecoverable state: {status}"); - wallet - .persister + sdk.persister .resolve_ongoing_swap(id, None) .map_err(|_| anyhow!("Could not resolve swap {id} in database"))?; } @@ -147,11 +148,10 @@ impl Wallet { } } - match wallet.try_claim(preimage, redeem_script, blinding_key) { + match sdk.try_claim(preimage, redeem_script, blinding_key) { Ok(txid) => { let payer_amount_sat = get_invoice_amount!(invoice); - wallet - .persister + sdk.persister .resolve_ongoing_swap( id, Some((txid, PaymentData { payer_amount_sat })), @@ -161,8 +161,7 @@ impl Wallet { Err(err) => { if let PaymentError::AlreadyClaimed = err { warn!("Funds already claimed"); - wallet - .persister + sdk.persister .resolve_ongoing_swap(id, None) .map_err(|_| anyhow!("Could not resolve swap {id} in database"))?; } @@ -193,8 +192,7 @@ impl Wallet { warn!("Cannot positively resolve swap {id}, unrecoverable state: {status}"); let payer_amount_sat = get_invoice_amount!(invoice); - wallet - .persister + sdk.persister .resolve_ongoing_swap( id, Some((txid, PaymentData { payer_amount_sat })), @@ -211,7 +209,7 @@ impl Wallet { Ok(()) } - fn track_pending_swaps(self: &Arc) -> Result<()> { + fn track_pending_swaps(self: &Arc) -> Result<()> { let cloned = self.clone(); let client = self.boltz_client(); @@ -223,7 +221,7 @@ impl Wallet { }; for swap in ongoing_swaps { - Wallet::try_resolve_pending_swap(&cloned, &client, &swap).unwrap_or_else(|err| { + LiquidSdk::try_resolve_pending_swap(&cloned, &client, &swap).unwrap_or_else(|err| { match swap { OngoingSwap::Send { .. } => error!("[Ongoing Send] {err}"), OngoingSwap::Receive { .. } => error!("[Ongoing Receive] {err}"), @@ -237,20 +235,20 @@ impl Wallet { fn scan(&self) -> Result<(), lwk_wollet::Error> { let mut electrum_client = ElectrumClient::new(&self.electrum_url)?; - let mut wallet = self.wallet.lock().unwrap(); - full_scan_with_electrum_client(&mut wallet, &mut electrum_client) + let mut lwk_wollet = self.lwk_wollet.lock().unwrap(); + full_scan_with_electrum_client(&mut lwk_wollet, &mut electrum_client) } fn address(&self) -> Result { - let wallet = self.wallet.lock().unwrap(); - Ok(wallet.address(self.active_address)?.address().clone()) + let lwk_wollet = self.lwk_wollet.lock().unwrap(); + Ok(lwk_wollet.address(self.active_address)?.address().clone()) } fn total_balance_sat(&self, with_scan: bool) -> Result { if with_scan { self.scan()?; } - let balance = self.wallet.lock().unwrap().balance()?; + let balance = self.lwk_wollet.lock().unwrap().balance()?; Ok(balance.values().sum()) } @@ -259,12 +257,12 @@ impl Wallet { Ok(GetInfoResponse { balance_sat: self.total_balance_sat(req.with_scan)?, - pubkey: self.signer.xpub().public_key.to_string(), + pubkey: self.lwk_signer.xpub().public_key.to_string(), }) } fn get_signer(&self) -> SwSigner { - self.signer.clone() + self.lwk_signer.clone() } fn boltz_client(&self) -> BoltzApiClient { @@ -292,11 +290,11 @@ impl Wallet { recipient_address: &str, amount_sat: u64, ) -> Result { - let wallet = self.wallet.lock().unwrap(); - let mut pset = wallet.send_lbtc(amount_sat, recipient_address, fee_rate)?; + let lwk_wollet = self.lwk_wollet.lock().unwrap(); + let mut pset = lwk_wollet.send_lbtc(amount_sat, recipient_address, fee_rate)?; let signer = AnySigner::Software(self.get_signer()); signer.sign(&mut pset)?; - Ok(wallet.finalize(&mut pset)?) + Ok(lwk_wollet.finalize(&mut pset)?) } pub fn prepare_send_payment( @@ -396,9 +394,12 @@ impl Wallet { network_config, )?; - let mnemonic = self.signer.mnemonic().ok_or(PaymentError::SignerError { - err: "Could not claim: Mnemonic not found".to_string(), - })?; + let mnemonic = self + .lwk_signer + .mnemonic() + .ok_or(PaymentError::SignerError { + err: "Could not claim: Mnemonic not found".to_string(), + })?; let swap_key = SwapKey::from_reverse_account(&mnemonic.to_string(), "", self.network.into(), 0)?; @@ -458,9 +459,12 @@ impl Wallet { res: &PrepareReceiveResponse, ) -> Result { let client = self.boltz_client(); - let mnemonic = self.signer.mnemonic().ok_or(PaymentError::SignerError { - err: "Could not claim: Mnemonic not found".to_string(), - })?; + let mnemonic = self + .lwk_signer + .mnemonic() + .ok_or(PaymentError::SignerError { + err: "Could not claim: Mnemonic not found".to_string(), + })?; let swap_key = SwapKey::from_reverse_account(&mnemonic.to_string(), "", self.network.into(), 0)?; let lsk = LiquidSwapKey::try_from(swap_key)?; @@ -513,7 +517,7 @@ impl Wallet { self.scan()?; } - let transactions = self.wallet.lock().unwrap().transactions()?; + let transactions = self.lwk_wollet.lock().unwrap().transactions()?; let payment_data = self.persister.get_payment_data()?; let mut payments: Vec = transactions @@ -597,7 +601,7 @@ mod tests { use tempdir::TempDir; use crate::model::*; - use crate::wallet::{Network, Wallet}; + use crate::sdk::{LiquidSdk, Network}; const TEST_MNEMONIC: &str = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"; @@ -612,8 +616,8 @@ mod tests { Ok((data_dir, data_dir_str)) } - fn list_pending(wallet: &Wallet) -> Result> { - let payments = wallet.list_payments(true, true)?; + fn list_pending(sdk: &LiquidSdk) -> Result> { + let payments = sdk.list_payments(true, true)?; Ok(payments .iter() @@ -627,15 +631,15 @@ mod tests { #[test] fn normal_submarine_swap() -> Result<()> { let (_data_dir, data_dir_str) = create_temp_dir()?; - let breez_wallet = Wallet::connect(ConnectRequest { + let sdk = LiquidSdk::connect(ConnectRequest { mnemonic: TEST_MNEMONIC.to_string(), data_dir: Some(data_dir_str), network: Network::LiquidTestnet, })?; let invoice = "lntb10u1pnqwkjrpp5j8ucv9mgww0ajk95yfpvuq0gg5825s207clrzl5thvtuzfn68h0sdqqcqzzsxqr23srzjqv8clnrfs9keq3zlg589jvzpw87cqh6rjks0f9g2t9tvuvcqgcl45f6pqqqqqfcqqyqqqqlgqqqqqqgq2qsp5jnuprlxrargr6hgnnahl28nvutj3gkmxmmssu8ztfhmmey3gq2ss9qyyssq9ejvcp6frwklf73xvskzdcuhnnw8dmxag6v44pffwqrxznsly4nqedem3p3zhn6u4ln7k79vk6zv55jjljhnac4gnvr677fyhfgn07qp4x6wrq".to_string(); - breez_wallet.prepare_send_payment(PrepareSendRequest { invoice })?; - assert!(!list_pending(&breez_wallet)?.is_empty()); + sdk.prepare_send_payment(PrepareSendRequest { invoice })?; + assert!(!list_pending(&sdk)?.is_empty()); Ok(()) } @@ -643,17 +647,17 @@ mod tests { #[test] fn reverse_submarine_swap() -> Result<()> { let (_data_dir, data_dir_str) = create_temp_dir()?; - let breez_wallet = Wallet::connect(ConnectRequest { + let sdk = LiquidSdk::connect(ConnectRequest { mnemonic: TEST_MNEMONIC.to_string(), data_dir: Some(data_dir_str), network: Network::LiquidTestnet, })?; - let prepare_response = breez_wallet.prepare_receive_payment(&PrepareReceiveRequest { + let prepare_response = sdk.prepare_receive_payment(&PrepareReceiveRequest { payer_amount_sat: 1_000, })?; - breez_wallet.receive_payment(&prepare_response)?; - assert!(!list_pending(&breez_wallet)?.is_empty()); + sdk.receive_payment(&prepare_response)?; + assert!(!list_pending(&sdk)?.is_empty()); Ok(()) } diff --git a/packages/react-native/android/src/main/java/com/breezliquidsdk/BreezLiquidSDKMapper.kt b/packages/react-native/android/src/main/java/com/breezliquidsdk/BreezLiquidSDKMapper.kt index 954ebe0..db3e80b 100644 --- a/packages/react-native/android/src/main/java/com/breezliquidsdk/BreezLiquidSDKMapper.kt +++ b/packages/react-native/android/src/main/java/com/breezliquidsdk/BreezLiquidSDKMapper.kt @@ -37,7 +37,7 @@ fun asConnectRequestList(arr: ReadableArray): List { for (value in arr.toArrayList()) { when (value) { is ReadableMap -> list.add(asConnectRequest(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -70,7 +70,7 @@ fun asGetInfoRequestList(arr: ReadableArray): List { for (value in arr.toArrayList()) { when (value) { is ReadableMap -> list.add(asGetInfoRequest(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -107,7 +107,7 @@ fun asGetInfoResponseList(arr: ReadableArray): List { for (value in arr.toArrayList()) { when (value) { is ReadableMap -> list.add(asGetInfoResponse(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -140,7 +140,7 @@ fun asPrepareReceiveRequestList(arr: ReadableArray): List for (value in arr.toArrayList()) { when (value) { is ReadableMap -> list.add(asPrepareReceiveRequest(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -181,7 +181,7 @@ fun asPrepareReceiveResponseList(arr: ReadableArray): List list.add(asPrepareReceiveResponse(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -214,7 +214,7 @@ fun asPrepareSendRequestList(arr: ReadableArray): List { for (value in arr.toArrayList()) { when (value) { is ReadableMap -> list.add(asPrepareSendRequest(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -267,7 +267,7 @@ fun asPrepareSendResponseList(arr: ReadableArray): List { for (value in arr.toArrayList()) { when (value) { is ReadableMap -> list.add(asPrepareSendResponse(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -304,7 +304,7 @@ fun asReceivePaymentResponseList(arr: ReadableArray): List list.add(asReceivePaymentResponse(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -335,7 +335,7 @@ fun asRestoreRequestList(arr: ReadableArray): List { for (value in arr.toArrayList()) { when (value) { is ReadableMap -> list.add(asRestoreRequest(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -368,7 +368,7 @@ fun asSendPaymentResponseList(arr: ReadableArray): List { for (value in arr.toArrayList()) { when (value) { is ReadableMap -> list.add(asSendPaymentResponse(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -383,7 +383,7 @@ fun asNetworkList(arr: ReadableArray): List { for (value in arr.toArrayList()) { when (value) { is String -> list.add(asNetwork(value)!!) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list @@ -423,7 +423,7 @@ fun pushToArray( null -> array.pushNull() is Array<*> -> array.pushArray(readableArrayOf(value.asIterable())) is List<*> -> array.pushArray(readableArrayOf(value)) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } @@ -448,7 +448,7 @@ fun pushToMap( is ULong -> map.putDouble(key, value.toDouble()) is Array<*> -> map.putArray(key, readableArrayOf(value.asIterable())) is List<*> -> map.putArray(key, readableArrayOf(value)) - else -> throw LsSdkException.Generic("Unexpected type ${value::class.java.name} for key [$key]") + else -> throw LiquidSdkException.Generic("Unexpected type ${value::class.java.name} for key [$key]") } } @@ -470,7 +470,7 @@ fun asUByteList(arr: ReadableArray): List { is Double -> list.add(value.toInt().toUByte()) is Int -> list.add(value.toUByte()) is UByte -> list.add(value) - else -> throw LsSdkException.Generic(errUnexpectedType("${value::class.java.name}")) + else -> throw LiquidSdkException.Generic(errUnexpectedType("${value::class.java.name}")) } } return list diff --git a/packages/react-native/android/src/main/java/com/breezliquidsdk/BreezLiquidSDKModule.kt b/packages/react-native/android/src/main/java/com/breezliquidsdk/BreezLiquidSDKModule.kt index 7b14e8d..78c3304 100644 --- a/packages/react-native/android/src/main/java/com/breezliquidsdk/BreezLiquidSDKModule.kt +++ b/packages/react-native/android/src/main/java/com/breezliquidsdk/BreezLiquidSDKModule.kt @@ -24,13 +24,13 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext return TAG } - @Throws(LsSdkException::class) + @Throws(LiquidSdkException::class) fun getBindingWallet(): BindingWallet { if (bindingWallet != null) { return bindingWallet!! } - throw LsSdkException.Generic("Not initialized") + throw LiquidSdkException.Generic("Not initialized") } @ReactMethod @@ -54,7 +54,7 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext var connectRequest = asConnectRequest( req, - ) ?: run { throw LsSdkException.Generic(errMissingMandatoryField("req", "ConnectRequest")) } + ) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "ConnectRequest")) } connectRequest.dataDir = connectRequest.dataDir.takeUnless { it.isEmpty() } ?: run { reactApplicationContext.filesDir.toString() + "/breezLiquidSdk" } @@ -76,7 +76,7 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext val getInfoRequest = asGetInfoRequest( req, - ) ?: run { throw LsSdkException.Generic(errMissingMandatoryField("req", "GetInfoRequest")) } + ) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "GetInfoRequest")) } val res = getBindingWallet().getInfo(getInfoRequest) promise.resolve(readableMapOf(res)) } catch (e: Exception) { @@ -94,7 +94,7 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext try { val prepareSendRequest = asPrepareSendRequest(req) ?: run { - throw LsSdkException.Generic(errMissingMandatoryField("req", "PrepareSendRequest")) + throw LiquidSdkException.Generic(errMissingMandatoryField("req", "PrepareSendRequest")) } val res = getBindingWallet().prepareSendPayment(prepareSendRequest) promise.resolve(readableMapOf(res)) @@ -113,7 +113,7 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext try { val prepareSendResponse = asPrepareSendResponse(req) ?: run { - throw LsSdkException.Generic(errMissingMandatoryField("req", "PrepareSendResponse")) + throw LiquidSdkException.Generic(errMissingMandatoryField("req", "PrepareSendResponse")) } val res = getBindingWallet().sendPayment(prepareSendResponse) promise.resolve(readableMapOf(res)) @@ -132,7 +132,7 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext try { val prepareReceiveRequest = asPrepareReceiveRequest(req) ?: run { - throw LsSdkException.Generic(errMissingMandatoryField("req", "PrepareReceiveRequest")) + throw LiquidSdkException.Generic(errMissingMandatoryField("req", "PrepareReceiveRequest")) } val res = getBindingWallet().prepareReceivePayment(prepareReceiveRequest) promise.resolve(readableMapOf(res)) @@ -151,7 +151,7 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext try { val prepareReceiveResponse = asPrepareReceiveResponse(req) ?: run { - throw LsSdkException.Generic(errMissingMandatoryField("req", "PrepareReceiveResponse")) + throw LiquidSdkException.Generic(errMissingMandatoryField("req", "PrepareReceiveResponse")) } val res = getBindingWallet().receivePayment(prepareReceiveResponse) promise.resolve(readableMapOf(res)) @@ -183,7 +183,7 @@ class BreezLiquidSDKModule(reactContext: ReactApplicationContext) : ReactContext val restoreRequest = asRestoreRequest( req, - ) ?: run { throw LsSdkException.Generic(errMissingMandatoryField("req", "RestoreRequest")) } + ) ?: run { throw LiquidSdkException.Generic(errMissingMandatoryField("req", "RestoreRequest")) } getBindingWallet().restore(restoreRequest) promise.resolve(readableMapOf("status" to "ok")) } catch (e: Exception) { diff --git a/packages/react-native/ios/BreezLiquidSDKMapper.swift b/packages/react-native/ios/BreezLiquidSDKMapper.swift index 873d326..fbfa04c 100644 --- a/packages/react-native/ios/BreezLiquidSDKMapper.swift +++ b/packages/react-native/ios/BreezLiquidSDKMapper.swift @@ -4,17 +4,17 @@ import Foundation enum BreezLiquidSDKMapper { static func asConnectRequest(connectRequest: [String: Any?]) throws -> ConnectRequest { guard let mnemonic = connectRequest["mnemonic"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "mnemonic", typeName: "ConnectRequest")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "mnemonic", typeName: "ConnectRequest")) } guard let networkTmp = connectRequest["network"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "network", typeName: "ConnectRequest")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "network", typeName: "ConnectRequest")) } let network = try asNetwork(network: networkTmp) var dataDir: String? if hasNonNilKey(data: connectRequest, key: "dataDir") { guard let dataDirTmp = connectRequest["dataDir"] as? String else { - throw LsSdkError.Generic(message: errUnexpectedValue(fieldName: "dataDir")) + throw LiquidSdkError.Generic(message: errUnexpectedValue(fieldName: "dataDir")) } dataDir = dataDirTmp } @@ -41,7 +41,7 @@ enum BreezLiquidSDKMapper { var connectRequest = try asConnectRequest(connectRequest: val) list.append(connectRequest) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "ConnectRequest")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "ConnectRequest")) } } return list @@ -53,7 +53,7 @@ enum BreezLiquidSDKMapper { static func asGetInfoRequest(getInfoRequest: [String: Any?]) throws -> GetInfoRequest { guard let withScan = getInfoRequest["withScan"] as? Bool else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "withScan", typeName: "GetInfoRequest")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "withScan", typeName: "GetInfoRequest")) } return GetInfoRequest( @@ -73,7 +73,7 @@ enum BreezLiquidSDKMapper { var getInfoRequest = try asGetInfoRequest(getInfoRequest: val) list.append(getInfoRequest) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "GetInfoRequest")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "GetInfoRequest")) } } return list @@ -85,10 +85,10 @@ enum BreezLiquidSDKMapper { static func asGetInfoResponse(getInfoResponse: [String: Any?]) throws -> GetInfoResponse { guard let balanceSat = getInfoResponse["balanceSat"] as? UInt64 else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "balanceSat", typeName: "GetInfoResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "balanceSat", typeName: "GetInfoResponse")) } guard let pubkey = getInfoResponse["pubkey"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "pubkey", typeName: "GetInfoResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "pubkey", typeName: "GetInfoResponse")) } return GetInfoResponse( @@ -111,7 +111,7 @@ enum BreezLiquidSDKMapper { var getInfoResponse = try asGetInfoResponse(getInfoResponse: val) list.append(getInfoResponse) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "GetInfoResponse")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "GetInfoResponse")) } } return list @@ -123,7 +123,7 @@ enum BreezLiquidSDKMapper { static func asPrepareReceiveRequest(prepareReceiveRequest: [String: Any?]) throws -> PrepareReceiveRequest { guard let payerAmountSat = prepareReceiveRequest["payerAmountSat"] as? UInt64 else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "payerAmountSat", typeName: "PrepareReceiveRequest")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "payerAmountSat", typeName: "PrepareReceiveRequest")) } return PrepareReceiveRequest( @@ -143,7 +143,7 @@ enum BreezLiquidSDKMapper { var prepareReceiveRequest = try asPrepareReceiveRequest(prepareReceiveRequest: val) list.append(prepareReceiveRequest) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "PrepareReceiveRequest")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "PrepareReceiveRequest")) } } return list @@ -155,13 +155,13 @@ enum BreezLiquidSDKMapper { static func asPrepareReceiveResponse(prepareReceiveResponse: [String: Any?]) throws -> PrepareReceiveResponse { guard let pairHash = prepareReceiveResponse["pairHash"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "pairHash", typeName: "PrepareReceiveResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "pairHash", typeName: "PrepareReceiveResponse")) } guard let payerAmountSat = prepareReceiveResponse["payerAmountSat"] as? UInt64 else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "payerAmountSat", typeName: "PrepareReceiveResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "payerAmountSat", typeName: "PrepareReceiveResponse")) } guard let feesSat = prepareReceiveResponse["feesSat"] as? UInt64 else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "feesSat", typeName: "PrepareReceiveResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "feesSat", typeName: "PrepareReceiveResponse")) } return PrepareReceiveResponse( @@ -186,7 +186,7 @@ enum BreezLiquidSDKMapper { var prepareReceiveResponse = try asPrepareReceiveResponse(prepareReceiveResponse: val) list.append(prepareReceiveResponse) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "PrepareReceiveResponse")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "PrepareReceiveResponse")) } } return list @@ -198,7 +198,7 @@ enum BreezLiquidSDKMapper { static func asPrepareSendRequest(prepareSendRequest: [String: Any?]) throws -> PrepareSendRequest { guard let invoice = prepareSendRequest["invoice"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "invoice", typeName: "PrepareSendRequest")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "invoice", typeName: "PrepareSendRequest")) } return PrepareSendRequest( @@ -218,7 +218,7 @@ enum BreezLiquidSDKMapper { var prepareSendRequest = try asPrepareSendRequest(prepareSendRequest: val) list.append(prepareSendRequest) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "PrepareSendRequest")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "PrepareSendRequest")) } } return list @@ -230,22 +230,22 @@ enum BreezLiquidSDKMapper { static func asPrepareSendResponse(prepareSendResponse: [String: Any?]) throws -> PrepareSendResponse { guard let id = prepareSendResponse["id"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "id", typeName: "PrepareSendResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "id", typeName: "PrepareSendResponse")) } guard let payerAmountSat = prepareSendResponse["payerAmountSat"] as? UInt64 else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "payerAmountSat", typeName: "PrepareSendResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "payerAmountSat", typeName: "PrepareSendResponse")) } guard let receiverAmountSat = prepareSendResponse["receiverAmountSat"] as? UInt64 else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "receiverAmountSat", typeName: "PrepareSendResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "receiverAmountSat", typeName: "PrepareSendResponse")) } guard let totalFees = prepareSendResponse["totalFees"] as? UInt64 else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "totalFees", typeName: "PrepareSendResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "totalFees", typeName: "PrepareSendResponse")) } guard let fundingAddress = prepareSendResponse["fundingAddress"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "fundingAddress", typeName: "PrepareSendResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "fundingAddress", typeName: "PrepareSendResponse")) } guard let invoice = prepareSendResponse["invoice"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "invoice", typeName: "PrepareSendResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "invoice", typeName: "PrepareSendResponse")) } return PrepareSendResponse( @@ -276,7 +276,7 @@ enum BreezLiquidSDKMapper { var prepareSendResponse = try asPrepareSendResponse(prepareSendResponse: val) list.append(prepareSendResponse) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "PrepareSendResponse")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "PrepareSendResponse")) } } return list @@ -288,10 +288,10 @@ enum BreezLiquidSDKMapper { static func asReceivePaymentResponse(receivePaymentResponse: [String: Any?]) throws -> ReceivePaymentResponse { guard let id = receivePaymentResponse["id"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "id", typeName: "ReceivePaymentResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "id", typeName: "ReceivePaymentResponse")) } guard let invoice = receivePaymentResponse["invoice"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "invoice", typeName: "ReceivePaymentResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "invoice", typeName: "ReceivePaymentResponse")) } return ReceivePaymentResponse( @@ -314,7 +314,7 @@ enum BreezLiquidSDKMapper { var receivePaymentResponse = try asReceivePaymentResponse(receivePaymentResponse: val) list.append(receivePaymentResponse) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "ReceivePaymentResponse")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "ReceivePaymentResponse")) } } return list @@ -328,7 +328,7 @@ enum BreezLiquidSDKMapper { var backupPath: String? if hasNonNilKey(data: restoreRequest, key: "backupPath") { guard let backupPathTmp = restoreRequest["backupPath"] as? String else { - throw LsSdkError.Generic(message: errUnexpectedValue(fieldName: "backupPath")) + throw LiquidSdkError.Generic(message: errUnexpectedValue(fieldName: "backupPath")) } backupPath = backupPathTmp } @@ -350,7 +350,7 @@ enum BreezLiquidSDKMapper { var restoreRequest = try asRestoreRequest(restoreRequest: val) list.append(restoreRequest) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "RestoreRequest")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "RestoreRequest")) } } return list @@ -362,7 +362,7 @@ enum BreezLiquidSDKMapper { static func asSendPaymentResponse(sendPaymentResponse: [String: Any?]) throws -> SendPaymentResponse { guard let txid = sendPaymentResponse["txid"] as? String else { - throw LsSdkError.Generic(message: errMissingMandatoryField(fieldName: "txid", typeName: "SendPaymentResponse")) + throw LiquidSdkError.Generic(message: errMissingMandatoryField(fieldName: "txid", typeName: "SendPaymentResponse")) } return SendPaymentResponse( @@ -382,7 +382,7 @@ enum BreezLiquidSDKMapper { var sendPaymentResponse = try asSendPaymentResponse(sendPaymentResponse: val) list.append(sendPaymentResponse) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "SendPaymentResponse")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "SendPaymentResponse")) } } return list @@ -400,7 +400,7 @@ enum BreezLiquidSDKMapper { case "liquidTestnet": return Network.liquidTestnet - default: throw LsSdkError.Generic(message: "Invalid variant \(network) for enum Network") + default: throw LiquidSdkError.Generic(message: "Invalid variant \(network) for enum Network") } } @@ -425,7 +425,7 @@ enum BreezLiquidSDKMapper { var network = try asNetwork(network: val) list.append(network) } else { - throw LsSdkError.Generic(message: errUnexpectedType(typeName: "Network")) + throw LiquidSdkError.Generic(message: errUnexpectedType(typeName: "Network")) } } return list diff --git a/packages/react-native/ios/RNBreezLiquidSDK.swift b/packages/react-native/ios/RNBreezLiquidSDK.swift index 5bfcf89..5498dd8 100644 --- a/packages/react-native/ios/RNBreezLiquidSDK.swift +++ b/packages/react-native/ios/RNBreezLiquidSDK.swift @@ -48,7 +48,7 @@ class RNBreezLiquidSDK: RCTEventEmitter { return bindingWallet } - throw LsSdkError.Generic(message: "Not initialized") + throw LiquidSdkError.Generic(message: "Not initialized") } @objc(connect:resolve:reject:)