Skip to content

Commit d99ad68

Browse files
authored
Merge pull request #226 from synonymdev/ldk-121
feat: update bindings to 0.0.121
2 parents 94b0741 + 5ba9f2e commit d99ad68

File tree

42 files changed

+53163
-41170
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+53163
-41170
lines changed

lib/android/libs/LDK-release.aar

794 KB
Binary file not shown.

lib/android/libs/ldk-java-javadoc.jar

-8.11 MB
Binary file not shown.

lib/android/src/main/java/com/reactnativeldk/Helpers.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ val Bolt11Invoice.asJson: WritableMap
7272
val rawInvoice = signedInv.raw_invoice()
7373

7474
if (amount_milli_satoshis() is Option_u64Z.Some) result.putInt("amount_satoshis", ((amount_milli_satoshis() as Option_u64Z.Some).some.toInt() / 1000)) else result.putNull("amount_satoshis")
75-
result.putString("description", rawInvoice.description()?.into_inner())
75+
result.putString("description", rawInvoice.description()?.to_str())
7676
result.putBoolean("check_signature", signedInv.check_signature())
7777
result.putBoolean("is_expired", is_expired)
7878
result.putInt("duration_since_epoch", duration_since_epoch().toInt())

lib/android/src/main/java/com/reactnativeldk/LdkModule.kt

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,16 @@ import org.ldk.batteries.NioPeerHandler
99
import org.ldk.enums.Currency
1010
import org.ldk.enums.Network
1111
import org.ldk.enums.Recipient
12+
import org.ldk.enums.RetryableSendFailure
13+
import org.ldk.impl.bindings.LDKPaymentSendFailure.DuplicatePayment
1214
import org.ldk.impl.bindings.get_ldk_c_bindings_version
1315
import org.ldk.impl.bindings.get_ldk_version
1416
import org.ldk.structs.*
1517
import org.ldk.structs.Result_Bolt11InvoiceParseOrSemanticErrorZ.Result_Bolt11InvoiceParseOrSemanticErrorZ_OK
1618
import org.ldk.structs.Result_Bolt11InvoiceSignOrCreationErrorZ.Result_Bolt11InvoiceSignOrCreationErrorZ_OK
1719
import org.ldk.structs.Result_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ.Result_C2Tuple_ThirtyTwoBytesChannelMonitorZDecodeErrorZ_OK
20+
import org.ldk.structs.Result_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ.Result_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ_OK
21+
import org.ldk.structs.Result_NoneRetryableSendFailureZ.Result_NoneRetryableSendFailureZ_Err
1822
import org.ldk.structs.Result_PublicKeyNoneZ.Result_PublicKeyNoneZ_OK
1923
import org.ldk.structs.Result_StrSecp256k1ErrorZ.Result_StrSecp256k1ErrorZ_OK
2024
import org.ldk.util.UInt128
@@ -73,11 +77,9 @@ enum class LdkErrors {
7377
invoice_payment_fail_must_specify_amount,
7478
invoice_payment_fail_must_not_specify_amount,
7579
invoice_payment_fail_invoice,
76-
invoice_payment_fail_sending,
77-
invoice_payment_fail_resend_safe,
78-
invoice_payment_fail_parameter_error,
79-
invoice_payment_fail_partial,
80-
invoice_payment_fail_path_parameter_error,
80+
invoice_payment_fail_duplicate_payment,
81+
invoice_payment_fail_payment_expired,
82+
invoice_payment_fail_route_not_found,
8183
init_ldk_currency,
8284
invoice_create_failed,
8385
init_scorer_failed,
@@ -564,8 +566,8 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
564566
//MARK: Update methods
565567

566568
@ReactMethod
567-
fun updateFees(anchorChannelFee: Double, nonAnchorChannelFee: Double, channelCloseMinimum: Double, minAllowedAnchorChannelRemoteFee: Double, maxAllowedNonAnchorChannelRemoteFee: Double, onChainSweep: Double, minAllowedNonAnchorChannelRemoteFee: Double, promise: Promise) {
568-
feeEstimator.update(anchorChannelFee.toInt(), nonAnchorChannelFee.toInt(), channelCloseMinimum.toInt(), minAllowedAnchorChannelRemoteFee.toInt(), maxAllowedNonAnchorChannelRemoteFee.toInt(), onChainSweep.toInt(), minAllowedNonAnchorChannelRemoteFee.toInt())
569+
fun updateFees(anchorChannelFee: Double, nonAnchorChannelFee: Double, channelCloseMinimum: Double, minAllowedAnchorChannelRemoteFee: Double, onChainSweep: Double, minAllowedNonAnchorChannelRemoteFee: Double, promise: Promise) {
570+
feeEstimator.update(anchorChannelFee.toInt(), nonAnchorChannelFee.toInt(), channelCloseMinimum.toInt(), minAllowedAnchorChannelRemoteFee.toInt(), onChainSweep.toInt(), minAllowedNonAnchorChannelRemoteFee.toInt())
569571
handleResolve(promise, LdkCallbackResponses.fees_updated)
570572
}
571573

@@ -772,14 +774,27 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
772774
return handleReject(promise, LdkErrors.invoice_payment_fail_must_not_specify_amount)
773775
}
774776

775-
val res = if (isZeroValueInvoice)
776-
UtilMethods.pay_zero_value_invoice(invoice, amountSats.toLong() * 1000, Retry.timeout(timeoutSeconds.toLong()), channelManager) else
777-
UtilMethods.pay_invoice(invoice, Retry.timeout(timeoutSeconds.toLong()), channelManager)
777+
val paymentId = invoice.payment_hash()
778+
val detailsRes = if (isZeroValueInvoice)
779+
UtilMethods.payment_parameters_from_zero_amount_invoice(invoice, amountSats.toLong()) else
780+
UtilMethods.payment_parameters_from_invoice(invoice)
781+
782+
if (!detailsRes.is_ok) {
783+
return handleReject(promise, LdkErrors.invoice_payment_fail_invoice)
784+
}
785+
786+
val sendDetails = detailsRes as Result_C3Tuple_ThirtyTwoBytesRecipientOnionFieldsRouteParametersZNoneZ_OK
787+
val paymentHash = sendDetails.res._a
788+
val recipientOnion = sendDetails.res._b
789+
val routeParams = sendDetails.res._c
790+
791+
val res = channelManager!!.send_payment(paymentHash, recipientOnion, paymentId, routeParams, Retry.timeout(timeoutSeconds.toLong()))
792+
778793
if (res.is_ok) {
779794
channelManagerPersister.persistPaymentSent(hashMapOf(
780795
"bolt11_invoice" to paymentRequest,
781-
"description" to (invoice.into_signed_raw().raw_invoice().description()?.into_inner() ?: ""),
782-
"payment_id" to (res as Result_ThirtyTwoBytesPaymentErrorZ.Result_ThirtyTwoBytesPaymentErrorZ_OK).res.hexEncodedString(),
796+
"description" to (invoice.into_signed_raw().raw_invoice().description()?.to_str() ?: ""),
797+
"payment_id" to paymentId.hexEncodedString(),
783798
"payment_hash" to invoice.payment_hash().hexEncodedString(),
784799
"amount_sat" to if (isZeroValueInvoice) amountSats.toLong() else ((invoice.amount_milli_satoshis() as Option_u64Z.Some).some.toInt() / 1000),
785800
"unix_timestamp" to (System.currentTimeMillis() / 1000).toInt(),
@@ -789,39 +804,24 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
789804
return handleResolve(promise, LdkCallbackResponses.invoice_payment_success)
790805
}
791806

792-
val error = res as? Result_ThirtyTwoBytesPaymentErrorZ.Result_ThirtyTwoBytesPaymentErrorZ_Err
807+
val error = res as? Result_NoneRetryableSendFailureZ_Err
808+
?: return handleReject(promise, LdkErrors.invoice_payment_fail_unknown)
793809

794-
val invoiceError = error?.err as? PaymentError.Invoice
795-
if (invoiceError != null) {
796-
return handleReject(promise, LdkErrors.invoice_payment_fail_invoice, Error(invoiceError.invoice))
797-
}
798-
799-
val sendingError = error?.err as? PaymentError.Sending
800-
if (sendingError != null) {
801-
val paymentAllFailedResendSafe = sendingError.sending as? PaymentSendFailure.AllFailedResendSafe
802-
if (paymentAllFailedResendSafe != null) {
803-
return handleReject(promise, LdkErrors.invoice_payment_fail_resend_safe, Error(paymentAllFailedResendSafe.all_failed_resend_safe.map { it.toString() }.toString()))
810+
when (error.err) {
811+
RetryableSendFailure.LDKRetryableSendFailure_DuplicatePayment -> {
812+
handleReject(promise, LdkErrors.invoice_payment_fail_duplicate_payment)
804813
}
805814

806-
val paymentParameterError = sendingError.sending as? PaymentSendFailure.ParameterError
807-
if (paymentParameterError != null) {
808-
return handleReject(promise, LdkErrors.invoice_payment_fail_parameter_error, Error(paymentParameterError.parameter_error.toString()))
815+
RetryableSendFailure.LDKRetryableSendFailure_PaymentExpired -> {
816+
handleReject(promise, LdkErrors.invoice_payment_fail_payment_expired)
809817
}
810818

811-
val paymentPartialFailure = sendingError.sending as? PaymentSendFailure.PartialFailure
812-
if (paymentPartialFailure != null) {
813-
return handleReject(promise, LdkErrors.invoice_payment_fail_partial, Error(paymentPartialFailure.toString()))
819+
RetryableSendFailure.LDKRetryableSendFailure_RouteNotFound -> {
820+
handleReject(promise, LdkErrors.invoice_payment_fail_route_not_found)
814821
}
815822

816-
val paymentPathParameterError = sendingError.sending as? PaymentSendFailure.PathParameterError
817-
if (paymentPathParameterError != null) {
818-
return handleReject(promise, LdkErrors.invoice_payment_fail_path_parameter_error, Error(paymentPartialFailure.toString()))
819-
}
820-
821-
return handleReject(promise, LdkErrors.invoice_payment_fail_sending, Error("PaymentError.Sending"))
823+
else -> handleReject(promise, LdkErrors.invoice_payment_fail_unknown)
822824
}
823-
824-
return handleReject(promise, LdkErrors.invoice_payment_fail_unknown)
825825
}
826826

827827
@ReactMethod
@@ -1090,7 +1090,7 @@ class LdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaMod
10901090

10911091
val output = TxOut(outputValue.toLong(), outputScriptPubKey.hexa())
10921092
val outpoint = OutPoint.of(outpointTxId.hexa().reversedArray(), outpointIndex.toInt().toShort())
1093-
val descriptor = SpendableOutputDescriptor.static_output(outpoint, output)
1093+
val descriptor = SpendableOutputDescriptor.static_output(outpoint, output, byteArrayOf())
10941094

10951095
val ldkDescriptors: MutableList<SpendableOutputDescriptor> = arrayListOf()
10961096
ldkDescriptors.add(descriptor)

lib/android/src/main/java/com/reactnativeldk/classes/CustomKeysManager.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import org.ldk.structs.Result_ShutdownScriptNoneZ
1010
import org.ldk.structs.Result_TransactionNoneZ
1111
import org.ldk.structs.Result_WriteableEcdsaChannelSignerDecodeErrorZ
1212
import org.ldk.structs.ShutdownScript
13-
import org.ldk.structs.SignerProvider
1413
import org.ldk.structs.SignerProvider.SignerProviderInterface
1514
import org.ldk.structs.SpendableOutputDescriptor
1615
import org.ldk.structs.TxOut
16+
import org.ldk.structs.WitnessProgram
1717
import org.ldk.structs.WriteableEcdsaChannelSigner
1818
import org.ldk.util.UInt128
1919
import org.ldk.util.WitnessVersion
@@ -59,15 +59,13 @@ class CustomKeysManager(
5959
class CustomSignerProvider : SignerProviderInterface {
6060
lateinit var customKeysManager: CustomKeysManager
6161

62-
override fun get_destination_script(): Result_CVec_u8ZNoneZ {
62+
override fun get_destination_script(p0: ByteArray?): Result_CVec_u8ZNoneZ {
6363
return Result_CVec_u8ZNoneZ.ok(customKeysManager.destinationScriptPublicKey)
6464
}
6565

6666
override fun get_shutdown_scriptpubkey(): Result_ShutdownScriptNoneZ {
67-
val res = ShutdownScript.new_witness_program(
68-
WitnessVersion(customKeysManager.witnessProgramVersion),
69-
customKeysManager.witnessProgram
70-
)
67+
val witness = WitnessProgram(customKeysManager.witnessProgram, WitnessVersion(customKeysManager.witnessProgramVersion))
68+
val res = ShutdownScript.new_witness_program(witness)
7169

7270
return if (res.is_ok) {
7371
Result_ShutdownScriptNoneZ.ok((res as Result_ShutdownScriptInvalidShutdownScriptZ.Result_ShutdownScriptInvalidShutdownScriptZ_OK).res)

lib/android/src/main/java/com/reactnativeldk/classes/LdkFeeEstimator.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,14 @@ class LdkFeeEstimator {
99
var nonAnchorChannelFee: Int = 0
1010
var channelCloseMinimum: Int = 0
1111
var minAllowedAnchorChannelRemoteFee: Int = 0
12-
var maxAllowedNonAnchorChannelRemoteFee: Int = 0
1312
var onChainSweep: Int = 0
1413
var minAllowedNonAnchorChannelRemoteFee: Int = 0
1514

16-
fun update(anchorChannelFee: Int, nonAnchorChannelFee: Int, channelCloseMinimum: Int, minAllowedAnchorChannelRemoteFee: Int, maxAllowedNonAnchorChannelRemoteFee: Int, onChainSweep: Int, minAllowedNonAnchorChannelRemoteFee: Int) {
15+
fun update(anchorChannelFee: Int, nonAnchorChannelFee: Int, channelCloseMinimum: Int, minAllowedAnchorChannelRemoteFee: Int, onChainSweep: Int, minAllowedNonAnchorChannelRemoteFee: Int) {
1716
this.anchorChannelFee = anchorChannelFee
1817
this.nonAnchorChannelFee = nonAnchorChannelFee
1918
this.channelCloseMinimum = channelCloseMinimum
2019
this.minAllowedAnchorChannelRemoteFee = minAllowedAnchorChannelRemoteFee
21-
this.maxAllowedNonAnchorChannelRemoteFee = maxAllowedNonAnchorChannelRemoteFee
2220
this.onChainSweep = onChainSweep
2321
this.minAllowedNonAnchorChannelRemoteFee = minAllowedNonAnchorChannelRemoteFee
2422

@@ -31,7 +29,6 @@ class LdkFeeEstimator {
3129
ConfirmationTarget.LDKConfirmationTarget_NonAnchorChannelFee -> nonAnchorChannelFee
3230
ConfirmationTarget.LDKConfirmationTarget_ChannelCloseMinimum -> channelCloseMinimum
3331
ConfirmationTarget.LDKConfirmationTarget_MinAllowedAnchorChannelRemoteFee -> minAllowedAnchorChannelRemoteFee
34-
ConfirmationTarget.LDKConfirmationTarget_MaxAllowedNonAnchorChannelRemoteFee -> maxAllowedNonAnchorChannelRemoteFee
3532
ConfirmationTarget.LDKConfirmationTarget_OnChainSweep -> onChainSweep
3633
ConfirmationTarget.LDKConfirmationTarget_MinAllowedNonAnchorChannelRemoteFee -> minAllowedNonAnchorChannelRemoteFee
3734
else -> {

lib/ios/Classes/CustomKeysManager.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ class CustomKeysManager {
5353
class CustomSignerProvider: SignerProvider {
5454
weak var customKeysManager: CustomKeysManager?
5555

56-
override func getDestinationScript() -> Bindings.Result_CVec_u8ZNoneZ {
56+
override func getDestinationScript(channelKeysId: [UInt8]) -> Bindings.Result_CVec_u8ZNoneZ {
5757
let destinationScriptPublicKey = customKeysManager!.destinationScriptPublicKey
5858
return Bindings.Result_CVec_u8ZNoneZ.initWithOk(o: destinationScriptPublicKey)
5959
}
6060

6161
override func getShutdownScriptpubkey() -> Bindings.Result_ShutdownScriptNoneZ {
62-
let res = ShutdownScript.newWitnessProgram(version: customKeysManager!.witnessProgramVersion, program: customKeysManager!.witnessProgram)
62+
let res = ShutdownScript.newWitnessProgram(witnessProgram: .init(version: customKeysManager!.witnessProgramVersion, program: customKeysManager!.witnessProgram))
6363
if res.isOk() {
6464
return Bindings.Result_ShutdownScriptNoneZ.initWithOk(o: res.getValue()!)
6565
}

lib/ios/Classes/LdkChannelManagerPersister.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,9 +295,7 @@ class LdkChannelManagerPersister: Persister, ExtendedChannelManagerPersister {
295295
}
296296

297297
LdkEventEmitter.shared.send(withEvent: .native_log, body: "TODO📣: BumpTransaction")
298-
299298
return
300-
301299
case .ProbeFailed:
302300
LdkEventEmitter.shared.send(withEvent: .native_log, body: "Unused Persister event: ProbeFailed")
303301
return
@@ -314,6 +312,9 @@ class LdkChannelManagerPersister: Persister, ExtendedChannelManagerPersister {
314312
case .HTLCHandlingFailed:
315313
LdkEventEmitter.shared.send(withEvent: .native_log, body: "Unused Persister event: HTLCHandlingFailed")
316314
return
315+
case .ConnectionNeeded:
316+
LdkEventEmitter.shared.send(withEvent: .native_log, body: "Unused Persister event: ConnectionNeeded")
317+
return
317318
}
318319
}
319320

lib/ios/Classes/LdkFeeEstimator.swift

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,14 @@ class LdkFeeEstimator: FeeEstimator {
1313
private var nonAnchorChannelFee: UInt32 = 0
1414
private var channelCloseMinimum: UInt32 = 0
1515
private var minAllowedAnchorChannelRemoteFee: UInt32 = 0
16-
private var maxAllowedNonAnchorChannelRemoteFee: UInt32 = 0
1716
private var onChainSweep: UInt32 = 0
1817
private var minAllowedNonAnchorChannelRemoteFee: UInt32 = 0
1918

20-
func update(anchorChannelFee: UInt32, nonAnchorChannelFee: UInt32, channelCloseMinimum: UInt32, minAllowedAnchorChannelRemoteFee: UInt32, maxAllowedNonAnchorChannelRemoteFee: UInt32, onChainSweep: UInt32, minAllowedNonAnchorChannelRemoteFee: UInt32) {
19+
func update(anchorChannelFee: UInt32, nonAnchorChannelFee: UInt32, channelCloseMinimum: UInt32, minAllowedAnchorChannelRemoteFee: UInt32, onChainSweep: UInt32, minAllowedNonAnchorChannelRemoteFee: UInt32) {
2120
self.anchorChannelFee = anchorChannelFee
2221
self.nonAnchorChannelFee = nonAnchorChannelFee
2322
self.channelCloseMinimum = channelCloseMinimum
2423
self.minAllowedAnchorChannelRemoteFee = minAllowedAnchorChannelRemoteFee
25-
self.maxAllowedNonAnchorChannelRemoteFee = maxAllowedNonAnchorChannelRemoteFee
2624
self.onChainSweep = onChainSweep
2725
self.minAllowedNonAnchorChannelRemoteFee = minAllowedNonAnchorChannelRemoteFee
2826

@@ -41,8 +39,6 @@ class LdkFeeEstimator: FeeEstimator {
4139
return channelCloseMinimum
4240
case .MinAllowedAnchorChannelRemoteFee:
4341
return minAllowedAnchorChannelRemoteFee
44-
case .MaxAllowedNonAnchorChannelRemoteFee:
45-
return maxAllowedNonAnchorChannelRemoteFee
4642
case .OnChainSweep:
4743
return onChainSweep
4844
case .MinAllowedNonAnchorChannelRemoteFee:

lib/ios/Helpers.swift

Lines changed: 2 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,11 @@ extension Bolt11Invoice {
7676
//Break down to get the decription. Will crash if all on a single line.
7777
let signedRawInvoice = intoSignedRaw()
7878
let rawInvoice = signedRawInvoice.rawInvoice()
79-
let description = rawInvoice.description()
80-
let descriptionString = description?.intoInner() ?? ""
79+
let description = rawInvoice.description()?.intoInner().getA() ?? ""
8180

8281
return [
8382
"amount_satoshis": amountMilliSatoshis() != nil ? amountMilliSatoshis()! / 1000 : nil,
84-
"description": descriptionString,
83+
"description": description,
8584
"check_signature": checkSignature().isOk(),
8685
"is_expired": isExpired(),
8786
"duration_since_epoch": durationSinceEpoch(),
@@ -465,47 +464,6 @@ extension ChainMonitor {
465464
}
466465
}
467466

468-
func handlePaymentSendFailure(_ reject: RCTPromiseRejectBlock, error: Bindings.PaymentSendFailure) {
469-
switch error.getValueType() {
470-
case .AllFailedResendSafe:
471-
// let errorMessage = ""
472-
// error.getValueAsAllFailedRetrySafe()?.forEach({ apiError in
473-
// apiError.getValueType() //TODO iterate through all
474-
// })
475-
476-
return handleReject(reject, .invoice_payment_fail_resend_safe, nil, error.getValueAsAllFailedResendSafe().map { $0.description } )
477-
case .ParameterError:
478-
guard let parameterError = error.getValueAsParameterError() else {
479-
return handleReject(reject, .invoice_payment_fail_parameter_error)
480-
}
481-
482-
let parameterErrorType = parameterError.getValueType()
483-
484-
switch parameterErrorType {
485-
case .APIMisuseError:
486-
return handleReject(reject, .invoice_payment_fail_parameter_error, nil, "parameterError.getValueType().debugDescription")
487-
case .FeeRateTooHigh:
488-
return handleReject(reject, .invoice_payment_fail_parameter_error, nil, parameterError.getValueAsFeeRateTooHigh()?.getErr())
489-
case .InvalidRoute:
490-
return handleReject(reject, .invoice_payment_fail_parameter_error, nil, parameterError.getValueAsInvalidRoute()?.getErr())
491-
case .ChannelUnavailable:
492-
return handleReject(reject, .invoice_payment_fail_parameter_error, nil, parameterError.getValueAsChannelUnavailable()?.getErr())
493-
case .IncompatibleShutdownScript:
494-
return handleReject(reject, .invoice_payment_fail_parameter_error, nil, "IncompatibleShutdownScript")
495-
case .MonitorUpdateInProgress:
496-
return handleReject(reject, .invoice_payment_fail_parameter_error, nil, "MonitorUpdateInProgress")
497-
@unknown default:
498-
return handleReject(reject, .invoice_payment_fail_parameter_error, nil, error.getValueAsParameterError().debugDescription)
499-
}
500-
case .PartialFailure:
501-
return handleReject(reject, .invoice_payment_fail_partial, nil, error.getValueAsPartialFailure().debugDescription)
502-
case .PathParameterError:
503-
return handleReject(reject, .invoice_payment_fail_path_parameter_error, nil, error.getValueAsPartialFailure().debugDescription)
504-
default:
505-
return handleReject(reject, .invoice_payment_fail_sending)
506-
}
507-
}
508-
509467
/// Helper for returning real network and currency as a tuple from a string
510468
/// - Parameter network: network name from JS
511469
/// - Returns: network and currency tuple

0 commit comments

Comments
 (0)