mirror of
https://github.com/aljazceru/breez-sdk-liquid.git
synced 2025-12-18 22:44:22 +01:00
Expose fees for review + auto accept
This commit is contained in:
@@ -3,6 +3,36 @@ import breez_sdk_liquid.*
|
||||
import com.facebook.react.bridge.*
|
||||
import java.util.*
|
||||
|
||||
fun asAcceptPaymentProposedFeesRequest(acceptPaymentProposedFeesRequest: ReadableMap): AcceptPaymentProposedFeesRequest? {
|
||||
if (!validateMandatoryFields(
|
||||
acceptPaymentProposedFeesRequest,
|
||||
arrayOf(
|
||||
"response",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val response = acceptPaymentProposedFeesRequest.getMap("response")?.let { asFetchPaymentProposedFeesResponse(it) }!!
|
||||
return AcceptPaymentProposedFeesRequest(response)
|
||||
}
|
||||
|
||||
fun readableMapOf(acceptPaymentProposedFeesRequest: AcceptPaymentProposedFeesRequest): ReadableMap =
|
||||
readableMapOf(
|
||||
"response" to readableMapOf(acceptPaymentProposedFeesRequest.response),
|
||||
)
|
||||
|
||||
fun asAcceptPaymentProposedFeesRequestList(arr: ReadableArray): List<AcceptPaymentProposedFeesRequest> {
|
||||
val list = ArrayList<AcceptPaymentProposedFeesRequest>()
|
||||
for (value in arr.toList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asAcceptPaymentProposedFeesRequest(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType(value))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asAesSuccessActionData(aesSuccessActionData: ReadableMap): AesSuccessActionData? {
|
||||
if (!validateMandatoryFields(
|
||||
aesSuccessActionData,
|
||||
@@ -284,6 +314,16 @@ fun asConfig(config: ReadableMap): Config? {
|
||||
} else {
|
||||
null
|
||||
}
|
||||
val onchainFeeRateLeewaySatPerVbyte =
|
||||
if (hasNonNullKey(
|
||||
config,
|
||||
"onchainFeeRateLeewaySatPerVbyte",
|
||||
)
|
||||
) {
|
||||
config.getInt("onchainFeeRateLeewaySatPerVbyte").toUInt()
|
||||
} else {
|
||||
null
|
||||
}
|
||||
return Config(
|
||||
liquidElectrumUrl,
|
||||
bitcoinElectrumUrl,
|
||||
@@ -298,6 +338,7 @@ fun asConfig(config: ReadableMap): Config? {
|
||||
zeroConfMaxAmountSat,
|
||||
useDefaultExternalInputParsers,
|
||||
externalInputParsers,
|
||||
onchainFeeRateLeewaySatPerVbyte,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -316,6 +357,7 @@ fun readableMapOf(config: Config): ReadableMap =
|
||||
"zeroConfMaxAmountSat" to config.zeroConfMaxAmountSat,
|
||||
"useDefaultExternalInputParsers" to config.useDefaultExternalInputParsers,
|
||||
"externalInputParsers" to config.externalInputParsers?.let { readableArrayOf(it) },
|
||||
"onchainFeeRateLeewaySatPerVbyte" to config.onchainFeeRateLeewaySatPerVbyte,
|
||||
)
|
||||
|
||||
fun asConfigList(arr: ReadableArray): List<Config> {
|
||||
@@ -473,6 +515,72 @@ fun asExternalInputParserList(arr: ReadableArray): List<ExternalInputParser> {
|
||||
return list
|
||||
}
|
||||
|
||||
fun asFetchPaymentProposedFeesRequest(fetchPaymentProposedFeesRequest: ReadableMap): FetchPaymentProposedFeesRequest? {
|
||||
if (!validateMandatoryFields(
|
||||
fetchPaymentProposedFeesRequest,
|
||||
arrayOf(
|
||||
"swapId",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val swapId = fetchPaymentProposedFeesRequest.getString("swapId")!!
|
||||
return FetchPaymentProposedFeesRequest(swapId)
|
||||
}
|
||||
|
||||
fun readableMapOf(fetchPaymentProposedFeesRequest: FetchPaymentProposedFeesRequest): ReadableMap =
|
||||
readableMapOf(
|
||||
"swapId" to fetchPaymentProposedFeesRequest.swapId,
|
||||
)
|
||||
|
||||
fun asFetchPaymentProposedFeesRequestList(arr: ReadableArray): List<FetchPaymentProposedFeesRequest> {
|
||||
val list = ArrayList<FetchPaymentProposedFeesRequest>()
|
||||
for (value in arr.toList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asFetchPaymentProposedFeesRequest(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType(value))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asFetchPaymentProposedFeesResponse(fetchPaymentProposedFeesResponse: ReadableMap): FetchPaymentProposedFeesResponse? {
|
||||
if (!validateMandatoryFields(
|
||||
fetchPaymentProposedFeesResponse,
|
||||
arrayOf(
|
||||
"swapId",
|
||||
"feesSat",
|
||||
"payerAmountSat",
|
||||
),
|
||||
)
|
||||
) {
|
||||
return null
|
||||
}
|
||||
val swapId = fetchPaymentProposedFeesResponse.getString("swapId")!!
|
||||
val feesSat = fetchPaymentProposedFeesResponse.getDouble("feesSat").toULong()
|
||||
val payerAmountSat = fetchPaymentProposedFeesResponse.getDouble("payerAmountSat").toULong()
|
||||
return FetchPaymentProposedFeesResponse(swapId, feesSat, payerAmountSat)
|
||||
}
|
||||
|
||||
fun readableMapOf(fetchPaymentProposedFeesResponse: FetchPaymentProposedFeesResponse): ReadableMap =
|
||||
readableMapOf(
|
||||
"swapId" to fetchPaymentProposedFeesResponse.swapId,
|
||||
"feesSat" to fetchPaymentProposedFeesResponse.feesSat,
|
||||
"payerAmountSat" to fetchPaymentProposedFeesResponse.payerAmountSat,
|
||||
)
|
||||
|
||||
fun asFetchPaymentProposedFeesResponseList(arr: ReadableArray): List<FetchPaymentProposedFeesResponse> {
|
||||
val list = ArrayList<FetchPaymentProposedFeesResponse>()
|
||||
for (value in arr.toList()) {
|
||||
when (value) {
|
||||
is ReadableMap -> list.add(asFetchPaymentProposedFeesResponse(value)!!)
|
||||
else -> throw SdkException.Generic(errUnexpectedType(value))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
fun asFiatCurrency(fiatCurrency: ReadableMap): FiatCurrency? {
|
||||
if (!validateMandatoryFields(
|
||||
fiatCurrency,
|
||||
@@ -3230,6 +3338,10 @@ fun asSdkEvent(sdkEvent: ReadableMap): SdkEvent? {
|
||||
val details = sdkEvent.getMap("details")?.let { asPayment(it) }!!
|
||||
return SdkEvent.PaymentWaitingConfirmation(details)
|
||||
}
|
||||
if (type == "paymentWaitingFeeAcceptance") {
|
||||
val details = sdkEvent.getMap("details")?.let { asPayment(it) }!!
|
||||
return SdkEvent.PaymentWaitingFeeAcceptance(details)
|
||||
}
|
||||
if (type == "synced") {
|
||||
return SdkEvent.Synced
|
||||
}
|
||||
@@ -3263,6 +3375,10 @@ fun readableMapOf(sdkEvent: SdkEvent): ReadableMap? {
|
||||
pushToMap(map, "type", "paymentWaitingConfirmation")
|
||||
pushToMap(map, "details", readableMapOf(sdkEvent.details))
|
||||
}
|
||||
is SdkEvent.PaymentWaitingFeeAcceptance -> {
|
||||
pushToMap(map, "type", "paymentWaitingFeeAcceptance")
|
||||
pushToMap(map, "details", readableMapOf(sdkEvent.details))
|
||||
}
|
||||
is SdkEvent.Synced -> {
|
||||
pushToMap(map, "type", "synced")
|
||||
}
|
||||
|
||||
@@ -420,6 +420,42 @@ class BreezSDKLiquidModule(
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun fetchPaymentProposedFees(
|
||||
req: ReadableMap,
|
||||
promise: Promise,
|
||||
) {
|
||||
executor.execute {
|
||||
try {
|
||||
val fetchPaymentProposedFeesRequest =
|
||||
asFetchPaymentProposedFeesRequest(req)
|
||||
?: run { throw SdkException.Generic(errMissingMandatoryField("req", "FetchPaymentProposedFeesRequest")) }
|
||||
val res = getBindingLiquidSdk().fetchPaymentProposedFees(fetchPaymentProposedFeesRequest)
|
||||
promise.resolve(readableMapOf(res))
|
||||
} catch (e: Exception) {
|
||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun acceptPaymentProposedFees(
|
||||
req: ReadableMap,
|
||||
promise: Promise,
|
||||
) {
|
||||
executor.execute {
|
||||
try {
|
||||
val acceptPaymentProposedFeesRequest =
|
||||
asAcceptPaymentProposedFeesRequest(req)
|
||||
?: run { throw SdkException.Generic(errMissingMandatoryField("req", "AcceptPaymentProposedFeesRequest")) }
|
||||
getBindingLiquidSdk().acceptPaymentProposedFees(acceptPaymentProposedFeesRequest)
|
||||
promise.resolve(readableMapOf("status" to "ok"))
|
||||
} catch (e: Exception) {
|
||||
promise.reject(e.javaClass.simpleName.replace("Exception", "Error"), e.message, e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
fun listRefundables(promise: Promise) {
|
||||
executor.execute {
|
||||
|
||||
@@ -2,6 +2,38 @@ import BreezSDKLiquid
|
||||
import Foundation
|
||||
|
||||
enum BreezSDKLiquidMapper {
|
||||
static func asAcceptPaymentProposedFeesRequest(acceptPaymentProposedFeesRequest: [String: Any?]) throws -> AcceptPaymentProposedFeesRequest {
|
||||
guard let responseTmp = acceptPaymentProposedFeesRequest["response"] as? [String: Any?] else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "response", typeName: "AcceptPaymentProposedFeesRequest"))
|
||||
}
|
||||
let response = try asFetchPaymentProposedFeesResponse(fetchPaymentProposedFeesResponse: responseTmp)
|
||||
|
||||
return AcceptPaymentProposedFeesRequest(response: response)
|
||||
}
|
||||
|
||||
static func dictionaryOf(acceptPaymentProposedFeesRequest: AcceptPaymentProposedFeesRequest) -> [String: Any?] {
|
||||
return [
|
||||
"response": dictionaryOf(fetchPaymentProposedFeesResponse: acceptPaymentProposedFeesRequest.response),
|
||||
]
|
||||
}
|
||||
|
||||
static func asAcceptPaymentProposedFeesRequestList(arr: [Any]) throws -> [AcceptPaymentProposedFeesRequest] {
|
||||
var list = [AcceptPaymentProposedFeesRequest]()
|
||||
for value in arr {
|
||||
if let val = value as? [String: Any?] {
|
||||
var acceptPaymentProposedFeesRequest = try asAcceptPaymentProposedFeesRequest(acceptPaymentProposedFeesRequest: val)
|
||||
list.append(acceptPaymentProposedFeesRequest)
|
||||
} else {
|
||||
throw SdkError.Generic(message: errUnexpectedType(typeName: "AcceptPaymentProposedFeesRequest"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
static func arrayOf(acceptPaymentProposedFeesRequestList: [AcceptPaymentProposedFeesRequest]) -> [Any] {
|
||||
return acceptPaymentProposedFeesRequestList.map { v -> [String: Any?] in return dictionaryOf(acceptPaymentProposedFeesRequest: v) }
|
||||
}
|
||||
|
||||
static func asAesSuccessActionData(aesSuccessActionData: [String: Any?]) throws -> AesSuccessActionData {
|
||||
guard let description = aesSuccessActionData["description"] as? String else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "description", typeName: "AesSuccessActionData"))
|
||||
@@ -307,9 +339,6 @@ enum BreezSDKLiquidMapper {
|
||||
guard let zeroConfMinFeeRateMsat = config["zeroConfMinFeeRateMsat"] as? UInt32 else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "zeroConfMinFeeRateMsat", typeName: "Config"))
|
||||
}
|
||||
guard let syncServiceUrl = config["syncServiceUrl"] as? String else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "syncServiceUrl", typeName: "Config"))
|
||||
}
|
||||
var breezApiKey: String?
|
||||
if hasNonNilKey(data: config, key: "breezApiKey") {
|
||||
guard let breezApiKeyTmp = config["breezApiKey"] as? String else {
|
||||
@@ -339,7 +368,15 @@ enum BreezSDKLiquidMapper {
|
||||
externalInputParsers = try asExternalInputParserList(arr: externalInputParsersTmp)
|
||||
}
|
||||
|
||||
return Config(liquidElectrumUrl: liquidElectrumUrl, bitcoinElectrumUrl: bitcoinElectrumUrl, mempoolspaceUrl: mempoolspaceUrl, workingDir: workingDir, network: network, paymentTimeoutSec: paymentTimeoutSec, zeroConfMinFeeRateMsat: zeroConfMinFeeRateMsat, syncServiceUrl: syncServiceUrl, breezApiKey: breezApiKey, cacheDir: cacheDir, zeroConfMaxAmountSat: zeroConfMaxAmountSat, useDefaultExternalInputParsers: useDefaultExternalInputParsers, externalInputParsers: externalInputParsers)
|
||||
var onchainFeeRateLeewaySatPerVbyte: UInt32?
|
||||
if hasNonNilKey(data: config, key: "onchainFeeRateLeewaySatPerVbyte") {
|
||||
guard let onchainFeeRateLeewaySatPerVbyteTmp = config["onchainFeeRateLeewaySatPerVbyte"] as? UInt32 else {
|
||||
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "onchainFeeRateLeewaySatPerVbyte"))
|
||||
}
|
||||
onchainFeeRateLeewaySatPerVbyte = onchainFeeRateLeewaySatPerVbyteTmp
|
||||
}
|
||||
|
||||
return Config(liquidElectrumUrl: liquidElectrumUrl, bitcoinElectrumUrl: bitcoinElectrumUrl, mempoolspaceUrl: mempoolspaceUrl, workingDir: workingDir, network: network, paymentTimeoutSec: paymentTimeoutSec, zeroConfMinFeeRateMsat: zeroConfMinFeeRateMsat, breezApiKey: breezApiKey, cacheDir: cacheDir, zeroConfMaxAmountSat: zeroConfMaxAmountSat, useDefaultExternalInputParsers: useDefaultExternalInputParsers, externalInputParsers: externalInputParsers, onchainFeeRateLeewaySatPerVbyte: onchainFeeRateLeewaySatPerVbyte)
|
||||
}
|
||||
|
||||
static func dictionaryOf(config: Config) -> [String: Any?] {
|
||||
@@ -351,12 +388,12 @@ enum BreezSDKLiquidMapper {
|
||||
"network": valueOf(liquidNetwork: config.network),
|
||||
"paymentTimeoutSec": config.paymentTimeoutSec,
|
||||
"zeroConfMinFeeRateMsat": config.zeroConfMinFeeRateMsat,
|
||||
"syncServiceUrl": config.syncServiceUrl,
|
||||
"breezApiKey": config.breezApiKey == nil ? nil : config.breezApiKey,
|
||||
"cacheDir": config.cacheDir == nil ? nil : config.cacheDir,
|
||||
"zeroConfMaxAmountSat": config.zeroConfMaxAmountSat == nil ? nil : config.zeroConfMaxAmountSat,
|
||||
"useDefaultExternalInputParsers": config.useDefaultExternalInputParsers,
|
||||
"externalInputParsers": config.externalInputParsers == nil ? nil : arrayOf(externalInputParserList: config.externalInputParsers!),
|
||||
"onchainFeeRateLeewaySatPerVbyte": config.onchainFeeRateLeewaySatPerVbyte == nil ? nil : config.onchainFeeRateLeewaySatPerVbyte,
|
||||
]
|
||||
}
|
||||
|
||||
@@ -551,6 +588,76 @@ enum BreezSDKLiquidMapper {
|
||||
return externalInputParserList.map { v -> [String: Any?] in return dictionaryOf(externalInputParser: v) }
|
||||
}
|
||||
|
||||
static func asFetchPaymentProposedFeesRequest(fetchPaymentProposedFeesRequest: [String: Any?]) throws -> FetchPaymentProposedFeesRequest {
|
||||
guard let swapId = fetchPaymentProposedFeesRequest["swapId"] as? String else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "swapId", typeName: "FetchPaymentProposedFeesRequest"))
|
||||
}
|
||||
|
||||
return FetchPaymentProposedFeesRequest(swapId: swapId)
|
||||
}
|
||||
|
||||
static func dictionaryOf(fetchPaymentProposedFeesRequest: FetchPaymentProposedFeesRequest) -> [String: Any?] {
|
||||
return [
|
||||
"swapId": fetchPaymentProposedFeesRequest.swapId,
|
||||
]
|
||||
}
|
||||
|
||||
static func asFetchPaymentProposedFeesRequestList(arr: [Any]) throws -> [FetchPaymentProposedFeesRequest] {
|
||||
var list = [FetchPaymentProposedFeesRequest]()
|
||||
for value in arr {
|
||||
if let val = value as? [String: Any?] {
|
||||
var fetchPaymentProposedFeesRequest = try asFetchPaymentProposedFeesRequest(fetchPaymentProposedFeesRequest: val)
|
||||
list.append(fetchPaymentProposedFeesRequest)
|
||||
} else {
|
||||
throw SdkError.Generic(message: errUnexpectedType(typeName: "FetchPaymentProposedFeesRequest"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
static func arrayOf(fetchPaymentProposedFeesRequestList: [FetchPaymentProposedFeesRequest]) -> [Any] {
|
||||
return fetchPaymentProposedFeesRequestList.map { v -> [String: Any?] in return dictionaryOf(fetchPaymentProposedFeesRequest: v) }
|
||||
}
|
||||
|
||||
static func asFetchPaymentProposedFeesResponse(fetchPaymentProposedFeesResponse: [String: Any?]) throws -> FetchPaymentProposedFeesResponse {
|
||||
guard let swapId = fetchPaymentProposedFeesResponse["swapId"] as? String else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "swapId", typeName: "FetchPaymentProposedFeesResponse"))
|
||||
}
|
||||
guard let feesSat = fetchPaymentProposedFeesResponse["feesSat"] as? UInt64 else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "feesSat", typeName: "FetchPaymentProposedFeesResponse"))
|
||||
}
|
||||
guard let payerAmountSat = fetchPaymentProposedFeesResponse["payerAmountSat"] as? UInt64 else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "payerAmountSat", typeName: "FetchPaymentProposedFeesResponse"))
|
||||
}
|
||||
|
||||
return FetchPaymentProposedFeesResponse(swapId: swapId, feesSat: feesSat, payerAmountSat: payerAmountSat)
|
||||
}
|
||||
|
||||
static func dictionaryOf(fetchPaymentProposedFeesResponse: FetchPaymentProposedFeesResponse) -> [String: Any?] {
|
||||
return [
|
||||
"swapId": fetchPaymentProposedFeesResponse.swapId,
|
||||
"feesSat": fetchPaymentProposedFeesResponse.feesSat,
|
||||
"payerAmountSat": fetchPaymentProposedFeesResponse.payerAmountSat,
|
||||
]
|
||||
}
|
||||
|
||||
static func asFetchPaymentProposedFeesResponseList(arr: [Any]) throws -> [FetchPaymentProposedFeesResponse] {
|
||||
var list = [FetchPaymentProposedFeesResponse]()
|
||||
for value in arr {
|
||||
if let val = value as? [String: Any?] {
|
||||
var fetchPaymentProposedFeesResponse = try asFetchPaymentProposedFeesResponse(fetchPaymentProposedFeesResponse: val)
|
||||
list.append(fetchPaymentProposedFeesResponse)
|
||||
} else {
|
||||
throw SdkError.Generic(message: errUnexpectedType(typeName: "FetchPaymentProposedFeesResponse"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
static func arrayOf(fetchPaymentProposedFeesResponseList: [FetchPaymentProposedFeesResponse]) -> [Any] {
|
||||
return fetchPaymentProposedFeesResponseList.map { v -> [String: Any?] in return dictionaryOf(fetchPaymentProposedFeesResponse: v) }
|
||||
}
|
||||
|
||||
static func asFiatCurrency(fiatCurrency: [String: Any?]) throws -> FiatCurrency {
|
||||
guard let id = fiatCurrency["id"] as? String else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "id", typeName: "FiatCurrency"))
|
||||
@@ -956,11 +1063,6 @@ enum BreezSDKLiquidMapper {
|
||||
filters = try asPaymentTypeList(arr: filtersTmp)
|
||||
}
|
||||
|
||||
var states: [PaymentState]?
|
||||
if let statesTmp = listPaymentsRequest["states"] as? [String] {
|
||||
states = try asPaymentStateList(arr: statesTmp)
|
||||
}
|
||||
|
||||
var fromTimestamp: Int64?
|
||||
if hasNonNilKey(data: listPaymentsRequest, key: "fromTimestamp") {
|
||||
guard let fromTimestampTmp = listPaymentsRequest["fromTimestamp"] as? Int64 else {
|
||||
@@ -994,13 +1096,12 @@ enum BreezSDKLiquidMapper {
|
||||
details = try asListPaymentDetails(listPaymentDetails: detailsTmp)
|
||||
}
|
||||
|
||||
return ListPaymentsRequest(filters: filters, states: states, fromTimestamp: fromTimestamp, toTimestamp: toTimestamp, offset: offset, limit: limit, details: details)
|
||||
return ListPaymentsRequest(filters: filters, fromTimestamp: fromTimestamp, toTimestamp: toTimestamp, offset: offset, limit: limit, details: details)
|
||||
}
|
||||
|
||||
static func dictionaryOf(listPaymentsRequest: ListPaymentsRequest) -> [String: Any?] {
|
||||
return [
|
||||
"filters": listPaymentsRequest.filters == nil ? nil : arrayOf(paymentTypeList: listPaymentsRequest.filters!),
|
||||
"states": listPaymentsRequest.states == nil ? nil : arrayOf(paymentStateList: listPaymentsRequest.states!),
|
||||
"fromTimestamp": listPaymentsRequest.fromTimestamp == nil ? nil : listPaymentsRequest.fromTimestamp,
|
||||
"toTimestamp": listPaymentsRequest.toTimestamp == nil ? nil : listPaymentsRequest.toTimestamp,
|
||||
"offset": listPaymentsRequest.offset == nil ? nil : listPaymentsRequest.offset,
|
||||
@@ -1135,85 +1236,6 @@ enum BreezSDKLiquidMapper {
|
||||
return lnUrlErrorDataList.map { v -> [String: Any?] in return dictionaryOf(lnUrlErrorData: v) }
|
||||
}
|
||||
|
||||
static func asLnUrlInfo(lnUrlInfo: [String: Any?]) throws -> LnUrlInfo {
|
||||
var lnAddress: String?
|
||||
if hasNonNilKey(data: lnUrlInfo, key: "lnAddress") {
|
||||
guard let lnAddressTmp = lnUrlInfo["lnAddress"] as? String else {
|
||||
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "lnAddress"))
|
||||
}
|
||||
lnAddress = lnAddressTmp
|
||||
}
|
||||
var lnurlPayComment: String?
|
||||
if hasNonNilKey(data: lnUrlInfo, key: "lnurlPayComment") {
|
||||
guard let lnurlPayCommentTmp = lnUrlInfo["lnurlPayComment"] as? String else {
|
||||
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "lnurlPayComment"))
|
||||
}
|
||||
lnurlPayComment = lnurlPayCommentTmp
|
||||
}
|
||||
var lnurlPayDomain: String?
|
||||
if hasNonNilKey(data: lnUrlInfo, key: "lnurlPayDomain") {
|
||||
guard let lnurlPayDomainTmp = lnUrlInfo["lnurlPayDomain"] as? String else {
|
||||
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "lnurlPayDomain"))
|
||||
}
|
||||
lnurlPayDomain = lnurlPayDomainTmp
|
||||
}
|
||||
var lnurlPayMetadata: String?
|
||||
if hasNonNilKey(data: lnUrlInfo, key: "lnurlPayMetadata") {
|
||||
guard let lnurlPayMetadataTmp = lnUrlInfo["lnurlPayMetadata"] as? String else {
|
||||
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "lnurlPayMetadata"))
|
||||
}
|
||||
lnurlPayMetadata = lnurlPayMetadataTmp
|
||||
}
|
||||
var lnurlPaySuccessAction: SuccessActionProcessed?
|
||||
if let lnurlPaySuccessActionTmp = lnUrlInfo["lnurlPaySuccessAction"] as? [String: Any?] {
|
||||
lnurlPaySuccessAction = try asSuccessActionProcessed(successActionProcessed: lnurlPaySuccessActionTmp)
|
||||
}
|
||||
|
||||
var lnurlPayUnprocessedSuccessAction: SuccessAction?
|
||||
if let lnurlPayUnprocessedSuccessActionTmp = lnUrlInfo["lnurlPayUnprocessedSuccessAction"] as? [String: Any?] {
|
||||
lnurlPayUnprocessedSuccessAction = try asSuccessAction(successAction: lnurlPayUnprocessedSuccessActionTmp)
|
||||
}
|
||||
|
||||
var lnurlWithdrawEndpoint: String?
|
||||
if hasNonNilKey(data: lnUrlInfo, key: "lnurlWithdrawEndpoint") {
|
||||
guard let lnurlWithdrawEndpointTmp = lnUrlInfo["lnurlWithdrawEndpoint"] as? String else {
|
||||
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "lnurlWithdrawEndpoint"))
|
||||
}
|
||||
lnurlWithdrawEndpoint = lnurlWithdrawEndpointTmp
|
||||
}
|
||||
|
||||
return LnUrlInfo(lnAddress: lnAddress, lnurlPayComment: lnurlPayComment, lnurlPayDomain: lnurlPayDomain, lnurlPayMetadata: lnurlPayMetadata, lnurlPaySuccessAction: lnurlPaySuccessAction, lnurlPayUnprocessedSuccessAction: lnurlPayUnprocessedSuccessAction, lnurlWithdrawEndpoint: lnurlWithdrawEndpoint)
|
||||
}
|
||||
|
||||
static func dictionaryOf(lnUrlInfo: LnUrlInfo) -> [String: Any?] {
|
||||
return [
|
||||
"lnAddress": lnUrlInfo.lnAddress == nil ? nil : lnUrlInfo.lnAddress,
|
||||
"lnurlPayComment": lnUrlInfo.lnurlPayComment == nil ? nil : lnUrlInfo.lnurlPayComment,
|
||||
"lnurlPayDomain": lnUrlInfo.lnurlPayDomain == nil ? nil : lnUrlInfo.lnurlPayDomain,
|
||||
"lnurlPayMetadata": lnUrlInfo.lnurlPayMetadata == nil ? nil : lnUrlInfo.lnurlPayMetadata,
|
||||
"lnurlPaySuccessAction": lnUrlInfo.lnurlPaySuccessAction == nil ? nil : dictionaryOf(successActionProcessed: lnUrlInfo.lnurlPaySuccessAction!),
|
||||
"lnurlPayUnprocessedSuccessAction": lnUrlInfo.lnurlPayUnprocessedSuccessAction == nil ? nil : dictionaryOf(successAction: lnUrlInfo.lnurlPayUnprocessedSuccessAction!),
|
||||
"lnurlWithdrawEndpoint": lnUrlInfo.lnurlWithdrawEndpoint == nil ? nil : lnUrlInfo.lnurlWithdrawEndpoint,
|
||||
]
|
||||
}
|
||||
|
||||
static func asLnUrlInfoList(arr: [Any]) throws -> [LnUrlInfo] {
|
||||
var list = [LnUrlInfo]()
|
||||
for value in arr {
|
||||
if let val = value as? [String: Any?] {
|
||||
var lnUrlInfo = try asLnUrlInfo(lnUrlInfo: val)
|
||||
list.append(lnUrlInfo)
|
||||
} else {
|
||||
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlInfo"))
|
||||
}
|
||||
}
|
||||
return list
|
||||
}
|
||||
|
||||
static func arrayOf(lnUrlInfoList: [LnUrlInfo]) -> [Any] {
|
||||
return lnUrlInfoList.map { v -> [String: Any?] in return dictionaryOf(lnUrlInfo: v) }
|
||||
}
|
||||
|
||||
static func asLnUrlPayErrorData(lnUrlPayErrorData: [String: Any?]) throws -> LnUrlPayErrorData {
|
||||
guard let paymentHash = lnUrlPayErrorData["paymentHash"] as? String else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "paymentHash", typeName: "LnUrlPayErrorData"))
|
||||
@@ -1962,32 +1984,18 @@ enum BreezSDKLiquidMapper {
|
||||
guard let feesSat = prepareLnUrlPayResponse["feesSat"] as? UInt64 else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "feesSat", typeName: "PrepareLnUrlPayResponse"))
|
||||
}
|
||||
guard let dataTmp = prepareLnUrlPayResponse["data"] as? [String: Any?] else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "PrepareLnUrlPayResponse"))
|
||||
}
|
||||
let data = try asLnUrlPayRequestData(lnUrlPayRequestData: dataTmp)
|
||||
|
||||
var comment: String?
|
||||
if hasNonNilKey(data: prepareLnUrlPayResponse, key: "comment") {
|
||||
guard let commentTmp = prepareLnUrlPayResponse["comment"] as? String else {
|
||||
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "comment"))
|
||||
}
|
||||
comment = commentTmp
|
||||
}
|
||||
var successAction: SuccessAction?
|
||||
if let successActionTmp = prepareLnUrlPayResponse["successAction"] as? [String: Any?] {
|
||||
successAction = try asSuccessAction(successAction: successActionTmp)
|
||||
}
|
||||
|
||||
return PrepareLnUrlPayResponse(destination: destination, feesSat: feesSat, data: data, comment: comment, successAction: successAction)
|
||||
return PrepareLnUrlPayResponse(destination: destination, feesSat: feesSat, successAction: successAction)
|
||||
}
|
||||
|
||||
static func dictionaryOf(prepareLnUrlPayResponse: PrepareLnUrlPayResponse) -> [String: Any?] {
|
||||
return [
|
||||
"destination": dictionaryOf(sendDestination: prepareLnUrlPayResponse.destination),
|
||||
"feesSat": prepareLnUrlPayResponse.feesSat,
|
||||
"data": dictionaryOf(lnUrlPayRequestData: prepareLnUrlPayResponse.data),
|
||||
"comment": prepareLnUrlPayResponse.comment == nil ? nil : prepareLnUrlPayResponse.comment,
|
||||
"successAction": prepareLnUrlPayResponse.successAction == nil ? nil : dictionaryOf(successAction: prepareLnUrlPayResponse.successAction!),
|
||||
]
|
||||
}
|
||||
@@ -3764,16 +3772,11 @@ enum BreezSDKLiquidMapper {
|
||||
|
||||
let _paymentHash = paymentDetails["paymentHash"] as? String
|
||||
|
||||
var _lnurlInfo: LnUrlInfo?
|
||||
if let lnurlInfoTmp = paymentDetails["lnurlInfo"] as? [String: Any?] {
|
||||
_lnurlInfo = try asLnUrlInfo(lnUrlInfo: lnurlInfoTmp)
|
||||
}
|
||||
|
||||
let _refundTxId = paymentDetails["refundTxId"] as? String
|
||||
|
||||
let _refundTxAmountSat = paymentDetails["refundTxAmountSat"] as? UInt64
|
||||
|
||||
return PaymentDetails.lightning(swapId: _swapId, description: _description, preimage: _preimage, bolt11: _bolt11, bolt12Offer: _bolt12Offer, paymentHash: _paymentHash, lnurlInfo: _lnurlInfo, refundTxId: _refundTxId, refundTxAmountSat: _refundTxAmountSat)
|
||||
return PaymentDetails.lightning(swapId: _swapId, description: _description, preimage: _preimage, bolt11: _bolt11, bolt12Offer: _bolt12Offer, paymentHash: _paymentHash, refundTxId: _refundTxId, refundTxAmountSat: _refundTxAmountSat)
|
||||
}
|
||||
if type == "liquid" {
|
||||
guard let _destination = paymentDetails["destination"] as? String else {
|
||||
@@ -3804,7 +3807,7 @@ enum BreezSDKLiquidMapper {
|
||||
static func dictionaryOf(paymentDetails: PaymentDetails) -> [String: Any?] {
|
||||
switch paymentDetails {
|
||||
case let .lightning(
|
||||
swapId, description, preimage, bolt11, bolt12Offer, paymentHash, lnurlInfo, refundTxId, refundTxAmountSat
|
||||
swapId, description, preimage, bolt11, bolt12Offer, paymentHash, refundTxId, refundTxAmountSat
|
||||
):
|
||||
return [
|
||||
"type": "lightning",
|
||||
@@ -3814,7 +3817,6 @@ enum BreezSDKLiquidMapper {
|
||||
"bolt11": bolt11 == nil ? nil : bolt11,
|
||||
"bolt12Offer": bolt12Offer == nil ? nil : bolt12Offer,
|
||||
"paymentHash": paymentHash == nil ? nil : paymentHash,
|
||||
"lnurlInfo": lnurlInfo == nil ? nil : dictionaryOf(lnUrlInfo: lnurlInfo!),
|
||||
"refundTxId": refundTxId == nil ? nil : refundTxId,
|
||||
"refundTxAmountSat": refundTxAmountSat == nil ? nil : refundTxAmountSat,
|
||||
]
|
||||
@@ -3926,6 +3928,9 @@ enum BreezSDKLiquidMapper {
|
||||
case "refundPending":
|
||||
return PaymentState.refundPending
|
||||
|
||||
case "waitingFeeAcceptance":
|
||||
return PaymentState.waitingFeeAcceptance
|
||||
|
||||
default: throw SdkError.Generic(message: "Invalid variant \(paymentState) for enum PaymentState")
|
||||
}
|
||||
}
|
||||
@@ -3952,6 +3957,9 @@ enum BreezSDKLiquidMapper {
|
||||
|
||||
case .refundPending:
|
||||
return "refundPending"
|
||||
|
||||
case .waitingFeeAcceptance:
|
||||
return "waitingFeeAcceptance"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4061,6 +4069,14 @@ enum BreezSDKLiquidMapper {
|
||||
|
||||
return SdkEvent.paymentWaitingConfirmation(details: _details)
|
||||
}
|
||||
if type == "paymentWaitingFeeAcceptance" {
|
||||
guard let detailsTmp = sdkEvent["details"] as? [String: Any?] else {
|
||||
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "details", typeName: "SdkEvent"))
|
||||
}
|
||||
let _details = try asPayment(payment: detailsTmp)
|
||||
|
||||
return SdkEvent.paymentWaitingFeeAcceptance(details: _details)
|
||||
}
|
||||
if type == "synced" {
|
||||
return SdkEvent.synced
|
||||
}
|
||||
@@ -4118,6 +4134,14 @@ enum BreezSDKLiquidMapper {
|
||||
"details": dictionaryOf(payment: details),
|
||||
]
|
||||
|
||||
case let .paymentWaitingFeeAcceptance(
|
||||
details
|
||||
):
|
||||
return [
|
||||
"type": "paymentWaitingFeeAcceptance",
|
||||
"details": dictionaryOf(payment: details),
|
||||
]
|
||||
|
||||
case .synced:
|
||||
return [
|
||||
"type": "synced",
|
||||
|
||||
@@ -131,6 +131,18 @@ RCT_EXTERN_METHOD(
|
||||
reject: (RCTPromiseRejectBlock)reject
|
||||
)
|
||||
|
||||
RCT_EXTERN_METHOD(
|
||||
fetchPaymentProposedFees: (NSDictionary*)req
|
||||
resolve: (RCTPromiseResolveBlock)resolve
|
||||
reject: (RCTPromiseRejectBlock)reject
|
||||
)
|
||||
|
||||
RCT_EXTERN_METHOD(
|
||||
acceptPaymentProposedFees: (NSDictionary*)req
|
||||
resolve: (RCTPromiseResolveBlock)resolve
|
||||
reject: (RCTPromiseRejectBlock)reject
|
||||
)
|
||||
|
||||
RCT_EXTERN_METHOD(
|
||||
listRefundables: (RCTPromiseResolveBlock)resolve
|
||||
reject: (RCTPromiseRejectBlock)reject
|
||||
|
||||
@@ -321,6 +321,28 @@ class RNBreezSDKLiquid: RCTEventEmitter {
|
||||
}
|
||||
}
|
||||
|
||||
@objc(fetchPaymentProposedFees:resolve:reject:)
|
||||
func fetchPaymentProposedFees(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
||||
do {
|
||||
let fetchPaymentProposedFeesRequest = try BreezSDKLiquidMapper.asFetchPaymentProposedFeesRequest(fetchPaymentProposedFeesRequest: req)
|
||||
var res = try getBindingLiquidSdk().fetchPaymentProposedFees(req: fetchPaymentProposedFeesRequest)
|
||||
resolve(BreezSDKLiquidMapper.dictionaryOf(fetchPaymentProposedFeesResponse: res))
|
||||
} catch let err {
|
||||
rejectErr(err: err, reject: reject)
|
||||
}
|
||||
}
|
||||
|
||||
@objc(acceptPaymentProposedFees:resolve:reject:)
|
||||
func acceptPaymentProposedFees(_ req: [String: Any], resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
||||
do {
|
||||
let acceptPaymentProposedFeesRequest = try BreezSDKLiquidMapper.asAcceptPaymentProposedFeesRequest(acceptPaymentProposedFeesRequest: req)
|
||||
try getBindingLiquidSdk().acceptPaymentProposedFees(req: acceptPaymentProposedFeesRequest)
|
||||
resolve(["status": "ok"])
|
||||
} catch let err {
|
||||
rejectErr(err: err, reject: reject)
|
||||
}
|
||||
}
|
||||
|
||||
@objc(listRefundables:reject:)
|
||||
func listRefundables(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
|
||||
do {
|
||||
|
||||
@@ -19,6 +19,10 @@ const BreezSDKLiquid = NativeModules.RNBreezSDKLiquid
|
||||
|
||||
const BreezSDKLiquidEmitter = new NativeEventEmitter(BreezSDKLiquid)
|
||||
|
||||
export interface AcceptPaymentProposedFeesRequest {
|
||||
response: FetchPaymentProposedFeesResponse
|
||||
}
|
||||
|
||||
export interface AesSuccessActionData {
|
||||
description: string
|
||||
ciphertext: string
|
||||
@@ -71,6 +75,7 @@ export interface Config {
|
||||
zeroConfMaxAmountSat?: number
|
||||
useDefaultExternalInputParsers: boolean
|
||||
externalInputParsers?: ExternalInputParser[]
|
||||
onchainFeeRateLeewaySatPerVbyte?: number
|
||||
}
|
||||
|
||||
export interface ConnectRequest {
|
||||
@@ -98,6 +103,16 @@ export interface ExternalInputParser {
|
||||
parserUrl: string
|
||||
}
|
||||
|
||||
export interface FetchPaymentProposedFeesRequest {
|
||||
swapId: string
|
||||
}
|
||||
|
||||
export interface FetchPaymentProposedFeesResponse {
|
||||
swapId: string
|
||||
feesSat: number
|
||||
payerAmountSat: number
|
||||
}
|
||||
|
||||
export interface FiatCurrency {
|
||||
id: string
|
||||
info: CurrencyInfo
|
||||
@@ -648,7 +663,8 @@ export enum PaymentState {
|
||||
FAILED = "failed",
|
||||
TIMED_OUT = "timedOut",
|
||||
REFUNDABLE = "refundable",
|
||||
REFUND_PENDING = "refundPending"
|
||||
REFUND_PENDING = "refundPending",
|
||||
WAITING_FEE_ACCEPTANCE = "waitingFeeAcceptance"
|
||||
}
|
||||
|
||||
export enum PaymentType {
|
||||
@@ -663,6 +679,7 @@ export enum SdkEventVariant {
|
||||
PAYMENT_REFUND_PENDING = "paymentRefundPending",
|
||||
PAYMENT_SUCCEEDED = "paymentSucceeded",
|
||||
PAYMENT_WAITING_CONFIRMATION = "paymentWaitingConfirmation",
|
||||
PAYMENT_WAITING_FEE_ACCEPTANCE = "paymentWaitingFeeAcceptance",
|
||||
SYNCED = "synced"
|
||||
}
|
||||
|
||||
@@ -684,6 +701,9 @@ export type SdkEvent = {
|
||||
} | {
|
||||
type: SdkEventVariant.PAYMENT_WAITING_CONFIRMATION,
|
||||
details: Payment
|
||||
} | {
|
||||
type: SdkEventVariant.PAYMENT_WAITING_FEE_ACCEPTANCE,
|
||||
details: Payment
|
||||
} | {
|
||||
type: SdkEventVariant.SYNCED
|
||||
}
|
||||
@@ -861,6 +881,15 @@ export const getPayment = async (req: GetPaymentRequest): Promise<Payment | null
|
||||
return response
|
||||
}
|
||||
|
||||
export const fetchPaymentProposedFees = async (req: FetchPaymentProposedFeesRequest): Promise<FetchPaymentProposedFeesResponse> => {
|
||||
const response = await BreezSDKLiquid.fetchPaymentProposedFees(req)
|
||||
return response
|
||||
}
|
||||
|
||||
export const acceptPaymentProposedFees = async (req: AcceptPaymentProposedFeesRequest): Promise<void> => {
|
||||
await BreezSDKLiquid.acceptPaymentProposedFees(req)
|
||||
}
|
||||
|
||||
export const listRefundables = async (): Promise<RefundableSwap[]> => {
|
||||
const response = await BreezSDKLiquid.listRefundables()
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user