Files
breez-sdk-liquid/packages/react-native/ios/BreezSDKLiquidMapper.swift
Ross Savage 59f5e0636c Handle in RN codegen multiple fields in enum variant (#453)
* Update RN example

* Handle enum variants with multiple fields
2024-08-23 06:12:39 +02:00

3463 lines
149 KiB
Swift

import BreezSDKLiquid
import Foundation
enum BreezSDKLiquidMapper {
static func asAesSuccessActionDataDecrypted(aesSuccessActionDataDecrypted: [String: Any?]) throws -> AesSuccessActionDataDecrypted {
guard let description = aesSuccessActionDataDecrypted["description"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "description", typeName: "AesSuccessActionDataDecrypted"))
}
guard let plaintext = aesSuccessActionDataDecrypted["plaintext"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "plaintext", typeName: "AesSuccessActionDataDecrypted"))
}
return AesSuccessActionDataDecrypted(description: description, plaintext: plaintext)
}
static func dictionaryOf(aesSuccessActionDataDecrypted: AesSuccessActionDataDecrypted) -> [String: Any?] {
return [
"description": aesSuccessActionDataDecrypted.description,
"plaintext": aesSuccessActionDataDecrypted.plaintext,
]
}
static func asAesSuccessActionDataDecryptedList(arr: [Any]) throws -> [AesSuccessActionDataDecrypted] {
var list = [AesSuccessActionDataDecrypted]()
for value in arr {
if let val = value as? [String: Any?] {
var aesSuccessActionDataDecrypted = try asAesSuccessActionDataDecrypted(aesSuccessActionDataDecrypted: val)
list.append(aesSuccessActionDataDecrypted)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "AesSuccessActionDataDecrypted"))
}
}
return list
}
static func arrayOf(aesSuccessActionDataDecryptedList: [AesSuccessActionDataDecrypted]) -> [Any] {
return aesSuccessActionDataDecryptedList.map { v -> [String: Any?] in return dictionaryOf(aesSuccessActionDataDecrypted: v) }
}
static func asBackupRequest(backupRequest: [String: Any?]) throws -> BackupRequest {
var backupPath: String?
if hasNonNilKey(data: backupRequest, key: "backupPath") {
guard let backupPathTmp = backupRequest["backupPath"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "backupPath"))
}
backupPath = backupPathTmp
}
return BackupRequest(backupPath: backupPath)
}
static func dictionaryOf(backupRequest: BackupRequest) -> [String: Any?] {
return [
"backupPath": backupRequest.backupPath == nil ? nil : backupRequest.backupPath,
]
}
static func asBackupRequestList(arr: [Any]) throws -> [BackupRequest] {
var list = [BackupRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var backupRequest = try asBackupRequest(backupRequest: val)
list.append(backupRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "BackupRequest"))
}
}
return list
}
static func arrayOf(backupRequestList: [BackupRequest]) -> [Any] {
return backupRequestList.map { v -> [String: Any?] in return dictionaryOf(backupRequest: v) }
}
static func asBitcoinAddressData(bitcoinAddressData: [String: Any?]) throws -> BitcoinAddressData {
guard let address = bitcoinAddressData["address"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "address", typeName: "BitcoinAddressData"))
}
guard let networkTmp = bitcoinAddressData["network"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "network", typeName: "BitcoinAddressData"))
}
let network = try asNetwork(network: networkTmp)
var amountSat: UInt64?
if hasNonNilKey(data: bitcoinAddressData, key: "amountSat") {
guard let amountSatTmp = bitcoinAddressData["amountSat"] as? UInt64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "amountSat"))
}
amountSat = amountSatTmp
}
var label: String?
if hasNonNilKey(data: bitcoinAddressData, key: "label") {
guard let labelTmp = bitcoinAddressData["label"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "label"))
}
label = labelTmp
}
var message: String?
if hasNonNilKey(data: bitcoinAddressData, key: "message") {
guard let messageTmp = bitcoinAddressData["message"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "message"))
}
message = messageTmp
}
return BitcoinAddressData(address: address, network: network, amountSat: amountSat, label: label, message: message)
}
static func dictionaryOf(bitcoinAddressData: BitcoinAddressData) -> [String: Any?] {
return [
"address": bitcoinAddressData.address,
"network": valueOf(network: bitcoinAddressData.network),
"amountSat": bitcoinAddressData.amountSat == nil ? nil : bitcoinAddressData.amountSat,
"label": bitcoinAddressData.label == nil ? nil : bitcoinAddressData.label,
"message": bitcoinAddressData.message == nil ? nil : bitcoinAddressData.message,
]
}
static func asBitcoinAddressDataList(arr: [Any]) throws -> [BitcoinAddressData] {
var list = [BitcoinAddressData]()
for value in arr {
if let val = value as? [String: Any?] {
var bitcoinAddressData = try asBitcoinAddressData(bitcoinAddressData: val)
list.append(bitcoinAddressData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "BitcoinAddressData"))
}
}
return list
}
static func arrayOf(bitcoinAddressDataList: [BitcoinAddressData]) -> [Any] {
return bitcoinAddressDataList.map { v -> [String: Any?] in return dictionaryOf(bitcoinAddressData: v) }
}
static func asBuyBitcoinRequest(buyBitcoinRequest: [String: Any?]) throws -> BuyBitcoinRequest {
guard let prepareResponseTmp = buyBitcoinRequest["prepareResponse"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "prepareResponse", typeName: "BuyBitcoinRequest"))
}
let prepareResponse = try asPrepareBuyBitcoinResponse(prepareBuyBitcoinResponse: prepareResponseTmp)
var redirectUrl: String?
if hasNonNilKey(data: buyBitcoinRequest, key: "redirectUrl") {
guard let redirectUrlTmp = buyBitcoinRequest["redirectUrl"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "redirectUrl"))
}
redirectUrl = redirectUrlTmp
}
return BuyBitcoinRequest(prepareResponse: prepareResponse, redirectUrl: redirectUrl)
}
static func dictionaryOf(buyBitcoinRequest: BuyBitcoinRequest) -> [String: Any?] {
return [
"prepareResponse": dictionaryOf(prepareBuyBitcoinResponse: buyBitcoinRequest.prepareResponse),
"redirectUrl": buyBitcoinRequest.redirectUrl == nil ? nil : buyBitcoinRequest.redirectUrl,
]
}
static func asBuyBitcoinRequestList(arr: [Any]) throws -> [BuyBitcoinRequest] {
var list = [BuyBitcoinRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var buyBitcoinRequest = try asBuyBitcoinRequest(buyBitcoinRequest: val)
list.append(buyBitcoinRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "BuyBitcoinRequest"))
}
}
return list
}
static func arrayOf(buyBitcoinRequestList: [BuyBitcoinRequest]) -> [Any] {
return buyBitcoinRequestList.map { v -> [String: Any?] in return dictionaryOf(buyBitcoinRequest: v) }
}
static func asConfig(config: [String: Any?]) throws -> Config {
guard let liquidElectrumUrl = config["liquidElectrumUrl"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "liquidElectrumUrl", typeName: "Config"))
}
guard let bitcoinElectrumUrl = config["bitcoinElectrumUrl"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "bitcoinElectrumUrl", typeName: "Config"))
}
guard let mempoolspaceUrl = config["mempoolspaceUrl"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "mempoolspaceUrl", typeName: "Config"))
}
guard let workingDir = config["workingDir"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "workingDir", typeName: "Config"))
}
guard let networkTmp = config["network"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "network", typeName: "Config"))
}
let network = try asLiquidNetwork(liquidNetwork: networkTmp)
guard let paymentTimeoutSec = config["paymentTimeoutSec"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "paymentTimeoutSec", typeName: "Config"))
}
guard let zeroConfMinFeeRateMsat = config["zeroConfMinFeeRateMsat"] as? UInt32 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "zeroConfMinFeeRateMsat", typeName: "Config"))
}
var zeroConfMaxAmountSat: UInt64?
if hasNonNilKey(data: config, key: "zeroConfMaxAmountSat") {
guard let zeroConfMaxAmountSatTmp = config["zeroConfMaxAmountSat"] as? UInt64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "zeroConfMaxAmountSat"))
}
zeroConfMaxAmountSat = zeroConfMaxAmountSatTmp
}
return Config(liquidElectrumUrl: liquidElectrumUrl, bitcoinElectrumUrl: bitcoinElectrumUrl, mempoolspaceUrl: mempoolspaceUrl, workingDir: workingDir, network: network, paymentTimeoutSec: paymentTimeoutSec, zeroConfMinFeeRateMsat: zeroConfMinFeeRateMsat, zeroConfMaxAmountSat: zeroConfMaxAmountSat)
}
static func dictionaryOf(config: Config) -> [String: Any?] {
return [
"liquidElectrumUrl": config.liquidElectrumUrl,
"bitcoinElectrumUrl": config.bitcoinElectrumUrl,
"mempoolspaceUrl": config.mempoolspaceUrl,
"workingDir": config.workingDir,
"network": valueOf(liquidNetwork: config.network),
"paymentTimeoutSec": config.paymentTimeoutSec,
"zeroConfMinFeeRateMsat": config.zeroConfMinFeeRateMsat,
"zeroConfMaxAmountSat": config.zeroConfMaxAmountSat == nil ? nil : config.zeroConfMaxAmountSat,
]
}
static func asConfigList(arr: [Any]) throws -> [Config] {
var list = [Config]()
for value in arr {
if let val = value as? [String: Any?] {
var config = try asConfig(config: val)
list.append(config)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "Config"))
}
}
return list
}
static func arrayOf(configList: [Config]) -> [Any] {
return configList.map { v -> [String: Any?] in return dictionaryOf(config: v) }
}
static func asConnectRequest(connectRequest: [String: Any?]) throws -> ConnectRequest {
guard let configTmp = connectRequest["config"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "config", typeName: "ConnectRequest"))
}
let config = try asConfig(config: configTmp)
guard let mnemonic = connectRequest["mnemonic"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "mnemonic", typeName: "ConnectRequest"))
}
return ConnectRequest(config: config, mnemonic: mnemonic)
}
static func dictionaryOf(connectRequest: ConnectRequest) -> [String: Any?] {
return [
"config": dictionaryOf(config: connectRequest.config),
"mnemonic": connectRequest.mnemonic,
]
}
static func asConnectRequestList(arr: [Any]) throws -> [ConnectRequest] {
var list = [ConnectRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var connectRequest = try asConnectRequest(connectRequest: val)
list.append(connectRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "ConnectRequest"))
}
}
return list
}
static func arrayOf(connectRequestList: [ConnectRequest]) -> [Any] {
return connectRequestList.map { v -> [String: Any?] in return dictionaryOf(connectRequest: v) }
}
static func asCurrencyInfo(currencyInfo: [String: Any?]) throws -> CurrencyInfo {
guard let name = currencyInfo["name"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "name", typeName: "CurrencyInfo"))
}
guard let fractionSize = currencyInfo["fractionSize"] as? UInt32 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "fractionSize", typeName: "CurrencyInfo"))
}
var spacing: UInt32?
if hasNonNilKey(data: currencyInfo, key: "spacing") {
guard let spacingTmp = currencyInfo["spacing"] as? UInt32 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "spacing"))
}
spacing = spacingTmp
}
var symbol: Symbol?
if let symbolTmp = currencyInfo["symbol"] as? [String: Any?] {
symbol = try asSymbol(symbol: symbolTmp)
}
var uniqSymbol: Symbol?
if let uniqSymbolTmp = currencyInfo["uniqSymbol"] as? [String: Any?] {
uniqSymbol = try asSymbol(symbol: uniqSymbolTmp)
}
guard let localizedNameTmp = currencyInfo["localizedName"] as? [[String: Any?]] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "localizedName", typeName: "CurrencyInfo"))
}
let localizedName = try asLocalizedNameList(arr: localizedNameTmp)
guard let localeOverridesTmp = currencyInfo["localeOverrides"] as? [[String: Any?]] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "localeOverrides", typeName: "CurrencyInfo"))
}
let localeOverrides = try asLocaleOverridesList(arr: localeOverridesTmp)
return CurrencyInfo(name: name, fractionSize: fractionSize, spacing: spacing, symbol: symbol, uniqSymbol: uniqSymbol, localizedName: localizedName, localeOverrides: localeOverrides)
}
static func dictionaryOf(currencyInfo: CurrencyInfo) -> [String: Any?] {
return [
"name": currencyInfo.name,
"fractionSize": currencyInfo.fractionSize,
"spacing": currencyInfo.spacing == nil ? nil : currencyInfo.spacing,
"symbol": currencyInfo.symbol == nil ? nil : dictionaryOf(symbol: currencyInfo.symbol!),
"uniqSymbol": currencyInfo.uniqSymbol == nil ? nil : dictionaryOf(symbol: currencyInfo.uniqSymbol!),
"localizedName": arrayOf(localizedNameList: currencyInfo.localizedName),
"localeOverrides": arrayOf(localeOverridesList: currencyInfo.localeOverrides),
]
}
static func asCurrencyInfoList(arr: [Any]) throws -> [CurrencyInfo] {
var list = [CurrencyInfo]()
for value in arr {
if let val = value as? [String: Any?] {
var currencyInfo = try asCurrencyInfo(currencyInfo: val)
list.append(currencyInfo)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "CurrencyInfo"))
}
}
return list
}
static func arrayOf(currencyInfoList: [CurrencyInfo]) -> [Any] {
return currencyInfoList.map { v -> [String: Any?] in return dictionaryOf(currencyInfo: 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"))
}
guard let infoTmp = fiatCurrency["info"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "info", typeName: "FiatCurrency"))
}
let info = try asCurrencyInfo(currencyInfo: infoTmp)
return FiatCurrency(id: id, info: info)
}
static func dictionaryOf(fiatCurrency: FiatCurrency) -> [String: Any?] {
return [
"id": fiatCurrency.id,
"info": dictionaryOf(currencyInfo: fiatCurrency.info),
]
}
static func asFiatCurrencyList(arr: [Any]) throws -> [FiatCurrency] {
var list = [FiatCurrency]()
for value in arr {
if let val = value as? [String: Any?] {
var fiatCurrency = try asFiatCurrency(fiatCurrency: val)
list.append(fiatCurrency)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "FiatCurrency"))
}
}
return list
}
static func arrayOf(fiatCurrencyList: [FiatCurrency]) -> [Any] {
return fiatCurrencyList.map { v -> [String: Any?] in return dictionaryOf(fiatCurrency: v) }
}
static func asGetInfoResponse(getInfoResponse: [String: Any?]) throws -> GetInfoResponse {
guard let balanceSat = getInfoResponse["balanceSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "balanceSat", typeName: "GetInfoResponse"))
}
guard let pendingSendSat = getInfoResponse["pendingSendSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "pendingSendSat", typeName: "GetInfoResponse"))
}
guard let pendingReceiveSat = getInfoResponse["pendingReceiveSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "pendingReceiveSat", typeName: "GetInfoResponse"))
}
guard let pubkey = getInfoResponse["pubkey"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "pubkey", typeName: "GetInfoResponse"))
}
return GetInfoResponse(balanceSat: balanceSat, pendingSendSat: pendingSendSat, pendingReceiveSat: pendingReceiveSat, pubkey: pubkey)
}
static func dictionaryOf(getInfoResponse: GetInfoResponse) -> [String: Any?] {
return [
"balanceSat": getInfoResponse.balanceSat,
"pendingSendSat": getInfoResponse.pendingSendSat,
"pendingReceiveSat": getInfoResponse.pendingReceiveSat,
"pubkey": getInfoResponse.pubkey,
]
}
static func asGetInfoResponseList(arr: [Any]) throws -> [GetInfoResponse] {
var list = [GetInfoResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var getInfoResponse = try asGetInfoResponse(getInfoResponse: val)
list.append(getInfoResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "GetInfoResponse"))
}
}
return list
}
static func arrayOf(getInfoResponseList: [GetInfoResponse]) -> [Any] {
return getInfoResponseList.map { v -> [String: Any?] in return dictionaryOf(getInfoResponse: v) }
}
static func asLnInvoice(lnInvoice: [String: Any?]) throws -> LnInvoice {
guard let bolt11 = lnInvoice["bolt11"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "bolt11", typeName: "LnInvoice"))
}
guard let networkTmp = lnInvoice["network"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "network", typeName: "LnInvoice"))
}
let network = try asNetwork(network: networkTmp)
guard let payeePubkey = lnInvoice["payeePubkey"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "payeePubkey", typeName: "LnInvoice"))
}
guard let paymentHash = lnInvoice["paymentHash"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "paymentHash", typeName: "LnInvoice"))
}
var description: String?
if hasNonNilKey(data: lnInvoice, key: "description") {
guard let descriptionTmp = lnInvoice["description"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "description"))
}
description = descriptionTmp
}
var descriptionHash: String?
if hasNonNilKey(data: lnInvoice, key: "descriptionHash") {
guard let descriptionHashTmp = lnInvoice["descriptionHash"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "descriptionHash"))
}
descriptionHash = descriptionHashTmp
}
var amountMsat: UInt64?
if hasNonNilKey(data: lnInvoice, key: "amountMsat") {
guard let amountMsatTmp = lnInvoice["amountMsat"] as? UInt64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "amountMsat"))
}
amountMsat = amountMsatTmp
}
guard let timestamp = lnInvoice["timestamp"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "timestamp", typeName: "LnInvoice"))
}
guard let expiry = lnInvoice["expiry"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "expiry", typeName: "LnInvoice"))
}
guard let routingHintsTmp = lnInvoice["routingHints"] as? [[String: Any?]] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "routingHints", typeName: "LnInvoice"))
}
let routingHints = try asRouteHintList(arr: routingHintsTmp)
guard let paymentSecret = lnInvoice["paymentSecret"] as? [UInt8] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "paymentSecret", typeName: "LnInvoice"))
}
guard let minFinalCltvExpiryDelta = lnInvoice["minFinalCltvExpiryDelta"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "minFinalCltvExpiryDelta", typeName: "LnInvoice"))
}
return LnInvoice(bolt11: bolt11, network: network, payeePubkey: payeePubkey, paymentHash: paymentHash, description: description, descriptionHash: descriptionHash, amountMsat: amountMsat, timestamp: timestamp, expiry: expiry, routingHints: routingHints, paymentSecret: paymentSecret, minFinalCltvExpiryDelta: minFinalCltvExpiryDelta)
}
static func dictionaryOf(lnInvoice: LnInvoice) -> [String: Any?] {
return [
"bolt11": lnInvoice.bolt11,
"network": valueOf(network: lnInvoice.network),
"payeePubkey": lnInvoice.payeePubkey,
"paymentHash": lnInvoice.paymentHash,
"description": lnInvoice.description == nil ? nil : lnInvoice.description,
"descriptionHash": lnInvoice.descriptionHash == nil ? nil : lnInvoice.descriptionHash,
"amountMsat": lnInvoice.amountMsat == nil ? nil : lnInvoice.amountMsat,
"timestamp": lnInvoice.timestamp,
"expiry": lnInvoice.expiry,
"routingHints": arrayOf(routeHintList: lnInvoice.routingHints),
"paymentSecret": lnInvoice.paymentSecret,
"minFinalCltvExpiryDelta": lnInvoice.minFinalCltvExpiryDelta,
]
}
static func asLnInvoiceList(arr: [Any]) throws -> [LnInvoice] {
var list = [LnInvoice]()
for value in arr {
if let val = value as? [String: Any?] {
var lnInvoice = try asLnInvoice(lnInvoice: val)
list.append(lnInvoice)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnInvoice"))
}
}
return list
}
static func arrayOf(lnInvoiceList: [LnInvoice]) -> [Any] {
return lnInvoiceList.map { v -> [String: Any?] in return dictionaryOf(lnInvoice: v) }
}
static func asLightningPaymentLimitsResponse(lightningPaymentLimitsResponse: [String: Any?]) throws -> LightningPaymentLimitsResponse {
guard let sendTmp = lightningPaymentLimitsResponse["send"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "send", typeName: "LightningPaymentLimitsResponse"))
}
let send = try asLimits(limits: sendTmp)
guard let receiveTmp = lightningPaymentLimitsResponse["receive"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "receive", typeName: "LightningPaymentLimitsResponse"))
}
let receive = try asLimits(limits: receiveTmp)
return LightningPaymentLimitsResponse(send: send, receive: receive)
}
static func dictionaryOf(lightningPaymentLimitsResponse: LightningPaymentLimitsResponse) -> [String: Any?] {
return [
"send": dictionaryOf(limits: lightningPaymentLimitsResponse.send),
"receive": dictionaryOf(limits: lightningPaymentLimitsResponse.receive),
]
}
static func asLightningPaymentLimitsResponseList(arr: [Any]) throws -> [LightningPaymentLimitsResponse] {
var list = [LightningPaymentLimitsResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var lightningPaymentLimitsResponse = try asLightningPaymentLimitsResponse(lightningPaymentLimitsResponse: val)
list.append(lightningPaymentLimitsResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LightningPaymentLimitsResponse"))
}
}
return list
}
static func arrayOf(lightningPaymentLimitsResponseList: [LightningPaymentLimitsResponse]) -> [Any] {
return lightningPaymentLimitsResponseList.map { v -> [String: Any?] in return dictionaryOf(lightningPaymentLimitsResponse: v) }
}
static func asLimits(limits: [String: Any?]) throws -> Limits {
guard let minSat = limits["minSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "minSat", typeName: "Limits"))
}
guard let maxSat = limits["maxSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "maxSat", typeName: "Limits"))
}
guard let maxZeroConfSat = limits["maxZeroConfSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "maxZeroConfSat", typeName: "Limits"))
}
return Limits(minSat: minSat, maxSat: maxSat, maxZeroConfSat: maxZeroConfSat)
}
static func dictionaryOf(limits: Limits) -> [String: Any?] {
return [
"minSat": limits.minSat,
"maxSat": limits.maxSat,
"maxZeroConfSat": limits.maxZeroConfSat,
]
}
static func asLimitsList(arr: [Any]) throws -> [Limits] {
var list = [Limits]()
for value in arr {
if let val = value as? [String: Any?] {
var limits = try asLimits(limits: val)
list.append(limits)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "Limits"))
}
}
return list
}
static func arrayOf(limitsList: [Limits]) -> [Any] {
return limitsList.map { v -> [String: Any?] in return dictionaryOf(limits: v) }
}
static func asLiquidAddressData(liquidAddressData: [String: Any?]) throws -> LiquidAddressData {
guard let address = liquidAddressData["address"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "address", typeName: "LiquidAddressData"))
}
guard let networkTmp = liquidAddressData["network"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "network", typeName: "LiquidAddressData"))
}
let network = try asNetwork(network: networkTmp)
var assetId: String?
if hasNonNilKey(data: liquidAddressData, key: "assetId") {
guard let assetIdTmp = liquidAddressData["assetId"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "assetId"))
}
assetId = assetIdTmp
}
var amountSat: UInt64?
if hasNonNilKey(data: liquidAddressData, key: "amountSat") {
guard let amountSatTmp = liquidAddressData["amountSat"] as? UInt64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "amountSat"))
}
amountSat = amountSatTmp
}
var label: String?
if hasNonNilKey(data: liquidAddressData, key: "label") {
guard let labelTmp = liquidAddressData["label"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "label"))
}
label = labelTmp
}
var message: String?
if hasNonNilKey(data: liquidAddressData, key: "message") {
guard let messageTmp = liquidAddressData["message"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "message"))
}
message = messageTmp
}
return LiquidAddressData(address: address, network: network, assetId: assetId, amountSat: amountSat, label: label, message: message)
}
static func dictionaryOf(liquidAddressData: LiquidAddressData) -> [String: Any?] {
return [
"address": liquidAddressData.address,
"network": valueOf(network: liquidAddressData.network),
"assetId": liquidAddressData.assetId == nil ? nil : liquidAddressData.assetId,
"amountSat": liquidAddressData.amountSat == nil ? nil : liquidAddressData.amountSat,
"label": liquidAddressData.label == nil ? nil : liquidAddressData.label,
"message": liquidAddressData.message == nil ? nil : liquidAddressData.message,
]
}
static func asLiquidAddressDataList(arr: [Any]) throws -> [LiquidAddressData] {
var list = [LiquidAddressData]()
for value in arr {
if let val = value as? [String: Any?] {
var liquidAddressData = try asLiquidAddressData(liquidAddressData: val)
list.append(liquidAddressData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LiquidAddressData"))
}
}
return list
}
static func arrayOf(liquidAddressDataList: [LiquidAddressData]) -> [Any] {
return liquidAddressDataList.map { v -> [String: Any?] in return dictionaryOf(liquidAddressData: v) }
}
static func asListPaymentsRequest(listPaymentsRequest: [String: Any?]) throws -> ListPaymentsRequest {
var filters: [PaymentType]?
if let filtersTmp = listPaymentsRequest["filters"] as? [String] {
filters = try asPaymentTypeList(arr: filtersTmp)
}
var fromTimestamp: Int64?
if hasNonNilKey(data: listPaymentsRequest, key: "fromTimestamp") {
guard let fromTimestampTmp = listPaymentsRequest["fromTimestamp"] as? Int64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "fromTimestamp"))
}
fromTimestamp = fromTimestampTmp
}
var toTimestamp: Int64?
if hasNonNilKey(data: listPaymentsRequest, key: "toTimestamp") {
guard let toTimestampTmp = listPaymentsRequest["toTimestamp"] as? Int64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "toTimestamp"))
}
toTimestamp = toTimestampTmp
}
var offset: UInt32?
if hasNonNilKey(data: listPaymentsRequest, key: "offset") {
guard let offsetTmp = listPaymentsRequest["offset"] as? UInt32 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "offset"))
}
offset = offsetTmp
}
var limit: UInt32?
if hasNonNilKey(data: listPaymentsRequest, key: "limit") {
guard let limitTmp = listPaymentsRequest["limit"] as? UInt32 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "limit"))
}
limit = limitTmp
}
return ListPaymentsRequest(filters: filters, fromTimestamp: fromTimestamp, toTimestamp: toTimestamp, offset: offset, limit: limit)
}
static func dictionaryOf(listPaymentsRequest: ListPaymentsRequest) -> [String: Any?] {
return [
"filters": listPaymentsRequest.filters == nil ? nil : arrayOf(paymentTypeList: listPaymentsRequest.filters!),
"fromTimestamp": listPaymentsRequest.fromTimestamp == nil ? nil : listPaymentsRequest.fromTimestamp,
"toTimestamp": listPaymentsRequest.toTimestamp == nil ? nil : listPaymentsRequest.toTimestamp,
"offset": listPaymentsRequest.offset == nil ? nil : listPaymentsRequest.offset,
"limit": listPaymentsRequest.limit == nil ? nil : listPaymentsRequest.limit,
]
}
static func asListPaymentsRequestList(arr: [Any]) throws -> [ListPaymentsRequest] {
var list = [ListPaymentsRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var listPaymentsRequest = try asListPaymentsRequest(listPaymentsRequest: val)
list.append(listPaymentsRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "ListPaymentsRequest"))
}
}
return list
}
static func arrayOf(listPaymentsRequestList: [ListPaymentsRequest]) -> [Any] {
return listPaymentsRequestList.map { v -> [String: Any?] in return dictionaryOf(listPaymentsRequest: v) }
}
static func asLnUrlAuthRequestData(lnUrlAuthRequestData: [String: Any?]) throws -> LnUrlAuthRequestData {
guard let k1 = lnUrlAuthRequestData["k1"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "k1", typeName: "LnUrlAuthRequestData"))
}
guard let domain = lnUrlAuthRequestData["domain"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "domain", typeName: "LnUrlAuthRequestData"))
}
guard let url = lnUrlAuthRequestData["url"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "url", typeName: "LnUrlAuthRequestData"))
}
var action: String?
if hasNonNilKey(data: lnUrlAuthRequestData, key: "action") {
guard let actionTmp = lnUrlAuthRequestData["action"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "action"))
}
action = actionTmp
}
return LnUrlAuthRequestData(k1: k1, domain: domain, url: url, action: action)
}
static func dictionaryOf(lnUrlAuthRequestData: LnUrlAuthRequestData) -> [String: Any?] {
return [
"k1": lnUrlAuthRequestData.k1,
"domain": lnUrlAuthRequestData.domain,
"url": lnUrlAuthRequestData.url,
"action": lnUrlAuthRequestData.action == nil ? nil : lnUrlAuthRequestData.action,
]
}
static func asLnUrlAuthRequestDataList(arr: [Any]) throws -> [LnUrlAuthRequestData] {
var list = [LnUrlAuthRequestData]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlAuthRequestData = try asLnUrlAuthRequestData(lnUrlAuthRequestData: val)
list.append(lnUrlAuthRequestData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlAuthRequestData"))
}
}
return list
}
static func arrayOf(lnUrlAuthRequestDataList: [LnUrlAuthRequestData]) -> [Any] {
return lnUrlAuthRequestDataList.map { v -> [String: Any?] in return dictionaryOf(lnUrlAuthRequestData: v) }
}
static func asLnUrlErrorData(lnUrlErrorData: [String: Any?]) throws -> LnUrlErrorData {
guard let reason = lnUrlErrorData["reason"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "reason", typeName: "LnUrlErrorData"))
}
return LnUrlErrorData(reason: reason)
}
static func dictionaryOf(lnUrlErrorData: LnUrlErrorData) -> [String: Any?] {
return [
"reason": lnUrlErrorData.reason,
]
}
static func asLnUrlErrorDataList(arr: [Any]) throws -> [LnUrlErrorData] {
var list = [LnUrlErrorData]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlErrorData = try asLnUrlErrorData(lnUrlErrorData: val)
list.append(lnUrlErrorData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlErrorData"))
}
}
return list
}
static func arrayOf(lnUrlErrorDataList: [LnUrlErrorData]) -> [Any] {
return lnUrlErrorDataList.map { v -> [String: Any?] in return dictionaryOf(lnUrlErrorData: 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"))
}
guard let reason = lnUrlPayErrorData["reason"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "reason", typeName: "LnUrlPayErrorData"))
}
return LnUrlPayErrorData(paymentHash: paymentHash, reason: reason)
}
static func dictionaryOf(lnUrlPayErrorData: LnUrlPayErrorData) -> [String: Any?] {
return [
"paymentHash": lnUrlPayErrorData.paymentHash,
"reason": lnUrlPayErrorData.reason,
]
}
static func asLnUrlPayErrorDataList(arr: [Any]) throws -> [LnUrlPayErrorData] {
var list = [LnUrlPayErrorData]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlPayErrorData = try asLnUrlPayErrorData(lnUrlPayErrorData: val)
list.append(lnUrlPayErrorData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlPayErrorData"))
}
}
return list
}
static func arrayOf(lnUrlPayErrorDataList: [LnUrlPayErrorData]) -> [Any] {
return lnUrlPayErrorDataList.map { v -> [String: Any?] in return dictionaryOf(lnUrlPayErrorData: v) }
}
static func asLnUrlPayRequest(lnUrlPayRequest: [String: Any?]) throws -> LnUrlPayRequest {
guard let dataTmp = lnUrlPayRequest["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "LnUrlPayRequest"))
}
let data = try asLnUrlPayRequestData(lnUrlPayRequestData: dataTmp)
guard let amountMsat = lnUrlPayRequest["amountMsat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "amountMsat", typeName: "LnUrlPayRequest"))
}
var comment: String?
if hasNonNilKey(data: lnUrlPayRequest, key: "comment") {
guard let commentTmp = lnUrlPayRequest["comment"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "comment"))
}
comment = commentTmp
}
var paymentLabel: String?
if hasNonNilKey(data: lnUrlPayRequest, key: "paymentLabel") {
guard let paymentLabelTmp = lnUrlPayRequest["paymentLabel"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "paymentLabel"))
}
paymentLabel = paymentLabelTmp
}
var validateSuccessActionUrl: Bool?
if hasNonNilKey(data: lnUrlPayRequest, key: "validateSuccessActionUrl") {
guard let validateSuccessActionUrlTmp = lnUrlPayRequest["validateSuccessActionUrl"] as? Bool else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "validateSuccessActionUrl"))
}
validateSuccessActionUrl = validateSuccessActionUrlTmp
}
return LnUrlPayRequest(data: data, amountMsat: amountMsat, comment: comment, paymentLabel: paymentLabel, validateSuccessActionUrl: validateSuccessActionUrl)
}
static func dictionaryOf(lnUrlPayRequest: LnUrlPayRequest) -> [String: Any?] {
return [
"data": dictionaryOf(lnUrlPayRequestData: lnUrlPayRequest.data),
"amountMsat": lnUrlPayRequest.amountMsat,
"comment": lnUrlPayRequest.comment == nil ? nil : lnUrlPayRequest.comment,
"paymentLabel": lnUrlPayRequest.paymentLabel == nil ? nil : lnUrlPayRequest.paymentLabel,
"validateSuccessActionUrl": lnUrlPayRequest.validateSuccessActionUrl == nil ? nil : lnUrlPayRequest.validateSuccessActionUrl,
]
}
static func asLnUrlPayRequestList(arr: [Any]) throws -> [LnUrlPayRequest] {
var list = [LnUrlPayRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlPayRequest = try asLnUrlPayRequest(lnUrlPayRequest: val)
list.append(lnUrlPayRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlPayRequest"))
}
}
return list
}
static func arrayOf(lnUrlPayRequestList: [LnUrlPayRequest]) -> [Any] {
return lnUrlPayRequestList.map { v -> [String: Any?] in return dictionaryOf(lnUrlPayRequest: v) }
}
static func asLnUrlPayRequestData(lnUrlPayRequestData: [String: Any?]) throws -> LnUrlPayRequestData {
guard let callback = lnUrlPayRequestData["callback"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "callback", typeName: "LnUrlPayRequestData"))
}
guard let minSendable = lnUrlPayRequestData["minSendable"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "minSendable", typeName: "LnUrlPayRequestData"))
}
guard let maxSendable = lnUrlPayRequestData["maxSendable"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "maxSendable", typeName: "LnUrlPayRequestData"))
}
guard let metadataStr = lnUrlPayRequestData["metadataStr"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "metadataStr", typeName: "LnUrlPayRequestData"))
}
guard let commentAllowed = lnUrlPayRequestData["commentAllowed"] as? UInt16 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "commentAllowed", typeName: "LnUrlPayRequestData"))
}
guard let domain = lnUrlPayRequestData["domain"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "domain", typeName: "LnUrlPayRequestData"))
}
guard let allowsNostr = lnUrlPayRequestData["allowsNostr"] as? Bool else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "allowsNostr", typeName: "LnUrlPayRequestData"))
}
var nostrPubkey: String?
if hasNonNilKey(data: lnUrlPayRequestData, key: "nostrPubkey") {
guard let nostrPubkeyTmp = lnUrlPayRequestData["nostrPubkey"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "nostrPubkey"))
}
nostrPubkey = nostrPubkeyTmp
}
var lnAddress: String?
if hasNonNilKey(data: lnUrlPayRequestData, key: "lnAddress") {
guard let lnAddressTmp = lnUrlPayRequestData["lnAddress"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "lnAddress"))
}
lnAddress = lnAddressTmp
}
return LnUrlPayRequestData(callback: callback, minSendable: minSendable, maxSendable: maxSendable, metadataStr: metadataStr, commentAllowed: commentAllowed, domain: domain, allowsNostr: allowsNostr, nostrPubkey: nostrPubkey, lnAddress: lnAddress)
}
static func dictionaryOf(lnUrlPayRequestData: LnUrlPayRequestData) -> [String: Any?] {
return [
"callback": lnUrlPayRequestData.callback,
"minSendable": lnUrlPayRequestData.minSendable,
"maxSendable": lnUrlPayRequestData.maxSendable,
"metadataStr": lnUrlPayRequestData.metadataStr,
"commentAllowed": lnUrlPayRequestData.commentAllowed,
"domain": lnUrlPayRequestData.domain,
"allowsNostr": lnUrlPayRequestData.allowsNostr,
"nostrPubkey": lnUrlPayRequestData.nostrPubkey == nil ? nil : lnUrlPayRequestData.nostrPubkey,
"lnAddress": lnUrlPayRequestData.lnAddress == nil ? nil : lnUrlPayRequestData.lnAddress,
]
}
static func asLnUrlPayRequestDataList(arr: [Any]) throws -> [LnUrlPayRequestData] {
var list = [LnUrlPayRequestData]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlPayRequestData = try asLnUrlPayRequestData(lnUrlPayRequestData: val)
list.append(lnUrlPayRequestData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlPayRequestData"))
}
}
return list
}
static func arrayOf(lnUrlPayRequestDataList: [LnUrlPayRequestData]) -> [Any] {
return lnUrlPayRequestDataList.map { v -> [String: Any?] in return dictionaryOf(lnUrlPayRequestData: v) }
}
static func asLnUrlPaySuccessData(lnUrlPaySuccessData: [String: Any?]) throws -> LnUrlPaySuccessData {
var successAction: SuccessActionProcessed?
if let successActionTmp = lnUrlPaySuccessData["successAction"] as? [String: Any?] {
successAction = try asSuccessActionProcessed(successActionProcessed: successActionTmp)
}
guard let paymentTmp = lnUrlPaySuccessData["payment"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "payment", typeName: "LnUrlPaySuccessData"))
}
let payment = try asPayment(payment: paymentTmp)
return LnUrlPaySuccessData(successAction: successAction, payment: payment)
}
static func dictionaryOf(lnUrlPaySuccessData: LnUrlPaySuccessData) -> [String: Any?] {
return [
"successAction": lnUrlPaySuccessData.successAction == nil ? nil : dictionaryOf(successActionProcessed: lnUrlPaySuccessData.successAction!),
"payment": dictionaryOf(payment: lnUrlPaySuccessData.payment),
]
}
static func asLnUrlPaySuccessDataList(arr: [Any]) throws -> [LnUrlPaySuccessData] {
var list = [LnUrlPaySuccessData]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlPaySuccessData = try asLnUrlPaySuccessData(lnUrlPaySuccessData: val)
list.append(lnUrlPaySuccessData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlPaySuccessData"))
}
}
return list
}
static func arrayOf(lnUrlPaySuccessDataList: [LnUrlPaySuccessData]) -> [Any] {
return lnUrlPaySuccessDataList.map { v -> [String: Any?] in return dictionaryOf(lnUrlPaySuccessData: v) }
}
static func asLnUrlWithdrawRequest(lnUrlWithdrawRequest: [String: Any?]) throws -> LnUrlWithdrawRequest {
guard let dataTmp = lnUrlWithdrawRequest["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "LnUrlWithdrawRequest"))
}
let data = try asLnUrlWithdrawRequestData(lnUrlWithdrawRequestData: dataTmp)
guard let amountMsat = lnUrlWithdrawRequest["amountMsat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "amountMsat", typeName: "LnUrlWithdrawRequest"))
}
var description: String?
if hasNonNilKey(data: lnUrlWithdrawRequest, key: "description") {
guard let descriptionTmp = lnUrlWithdrawRequest["description"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "description"))
}
description = descriptionTmp
}
return LnUrlWithdrawRequest(data: data, amountMsat: amountMsat, description: description)
}
static func dictionaryOf(lnUrlWithdrawRequest: LnUrlWithdrawRequest) -> [String: Any?] {
return [
"data": dictionaryOf(lnUrlWithdrawRequestData: lnUrlWithdrawRequest.data),
"amountMsat": lnUrlWithdrawRequest.amountMsat,
"description": lnUrlWithdrawRequest.description == nil ? nil : lnUrlWithdrawRequest.description,
]
}
static func asLnUrlWithdrawRequestList(arr: [Any]) throws -> [LnUrlWithdrawRequest] {
var list = [LnUrlWithdrawRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlWithdrawRequest = try asLnUrlWithdrawRequest(lnUrlWithdrawRequest: val)
list.append(lnUrlWithdrawRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlWithdrawRequest"))
}
}
return list
}
static func arrayOf(lnUrlWithdrawRequestList: [LnUrlWithdrawRequest]) -> [Any] {
return lnUrlWithdrawRequestList.map { v -> [String: Any?] in return dictionaryOf(lnUrlWithdrawRequest: v) }
}
static func asLnUrlWithdrawRequestData(lnUrlWithdrawRequestData: [String: Any?]) throws -> LnUrlWithdrawRequestData {
guard let callback = lnUrlWithdrawRequestData["callback"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "callback", typeName: "LnUrlWithdrawRequestData"))
}
guard let k1 = lnUrlWithdrawRequestData["k1"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "k1", typeName: "LnUrlWithdrawRequestData"))
}
guard let defaultDescription = lnUrlWithdrawRequestData["defaultDescription"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "defaultDescription", typeName: "LnUrlWithdrawRequestData"))
}
guard let minWithdrawable = lnUrlWithdrawRequestData["minWithdrawable"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "minWithdrawable", typeName: "LnUrlWithdrawRequestData"))
}
guard let maxWithdrawable = lnUrlWithdrawRequestData["maxWithdrawable"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "maxWithdrawable", typeName: "LnUrlWithdrawRequestData"))
}
return LnUrlWithdrawRequestData(callback: callback, k1: k1, defaultDescription: defaultDescription, minWithdrawable: minWithdrawable, maxWithdrawable: maxWithdrawable)
}
static func dictionaryOf(lnUrlWithdrawRequestData: LnUrlWithdrawRequestData) -> [String: Any?] {
return [
"callback": lnUrlWithdrawRequestData.callback,
"k1": lnUrlWithdrawRequestData.k1,
"defaultDescription": lnUrlWithdrawRequestData.defaultDescription,
"minWithdrawable": lnUrlWithdrawRequestData.minWithdrawable,
"maxWithdrawable": lnUrlWithdrawRequestData.maxWithdrawable,
]
}
static func asLnUrlWithdrawRequestDataList(arr: [Any]) throws -> [LnUrlWithdrawRequestData] {
var list = [LnUrlWithdrawRequestData]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlWithdrawRequestData = try asLnUrlWithdrawRequestData(lnUrlWithdrawRequestData: val)
list.append(lnUrlWithdrawRequestData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlWithdrawRequestData"))
}
}
return list
}
static func arrayOf(lnUrlWithdrawRequestDataList: [LnUrlWithdrawRequestData]) -> [Any] {
return lnUrlWithdrawRequestDataList.map { v -> [String: Any?] in return dictionaryOf(lnUrlWithdrawRequestData: v) }
}
static func asLnUrlWithdrawSuccessData(lnUrlWithdrawSuccessData: [String: Any?]) throws -> LnUrlWithdrawSuccessData {
guard let invoiceTmp = lnUrlWithdrawSuccessData["invoice"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "invoice", typeName: "LnUrlWithdrawSuccessData"))
}
let invoice = try asLnInvoice(lnInvoice: invoiceTmp)
return LnUrlWithdrawSuccessData(invoice: invoice)
}
static func dictionaryOf(lnUrlWithdrawSuccessData: LnUrlWithdrawSuccessData) -> [String: Any?] {
return [
"invoice": dictionaryOf(lnInvoice: lnUrlWithdrawSuccessData.invoice),
]
}
static func asLnUrlWithdrawSuccessDataList(arr: [Any]) throws -> [LnUrlWithdrawSuccessData] {
var list = [LnUrlWithdrawSuccessData]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlWithdrawSuccessData = try asLnUrlWithdrawSuccessData(lnUrlWithdrawSuccessData: val)
list.append(lnUrlWithdrawSuccessData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlWithdrawSuccessData"))
}
}
return list
}
static func arrayOf(lnUrlWithdrawSuccessDataList: [LnUrlWithdrawSuccessData]) -> [Any] {
return lnUrlWithdrawSuccessDataList.map { v -> [String: Any?] in return dictionaryOf(lnUrlWithdrawSuccessData: v) }
}
static func asLocaleOverrides(localeOverrides: [String: Any?]) throws -> LocaleOverrides {
guard let locale = localeOverrides["locale"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "locale", typeName: "LocaleOverrides"))
}
var spacing: UInt32?
if hasNonNilKey(data: localeOverrides, key: "spacing") {
guard let spacingTmp = localeOverrides["spacing"] as? UInt32 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "spacing"))
}
spacing = spacingTmp
}
guard let symbolTmp = localeOverrides["symbol"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "symbol", typeName: "LocaleOverrides"))
}
let symbol = try asSymbol(symbol: symbolTmp)
return LocaleOverrides(locale: locale, spacing: spacing, symbol: symbol)
}
static func dictionaryOf(localeOverrides: LocaleOverrides) -> [String: Any?] {
return [
"locale": localeOverrides.locale,
"spacing": localeOverrides.spacing == nil ? nil : localeOverrides.spacing,
"symbol": dictionaryOf(symbol: localeOverrides.symbol),
]
}
static func asLocaleOverridesList(arr: [Any]) throws -> [LocaleOverrides] {
var list = [LocaleOverrides]()
for value in arr {
if let val = value as? [String: Any?] {
var localeOverrides = try asLocaleOverrides(localeOverrides: val)
list.append(localeOverrides)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LocaleOverrides"))
}
}
return list
}
static func arrayOf(localeOverridesList: [LocaleOverrides]) -> [Any] {
return localeOverridesList.map { v -> [String: Any?] in return dictionaryOf(localeOverrides: v) }
}
static func asLocalizedName(localizedName: [String: Any?]) throws -> LocalizedName {
guard let locale = localizedName["locale"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "locale", typeName: "LocalizedName"))
}
guard let name = localizedName["name"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "name", typeName: "LocalizedName"))
}
return LocalizedName(locale: locale, name: name)
}
static func dictionaryOf(localizedName: LocalizedName) -> [String: Any?] {
return [
"locale": localizedName.locale,
"name": localizedName.name,
]
}
static func asLocalizedNameList(arr: [Any]) throws -> [LocalizedName] {
var list = [LocalizedName]()
for value in arr {
if let val = value as? [String: Any?] {
var localizedName = try asLocalizedName(localizedName: val)
list.append(localizedName)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LocalizedName"))
}
}
return list
}
static func arrayOf(localizedNameList: [LocalizedName]) -> [Any] {
return localizedNameList.map { v -> [String: Any?] in return dictionaryOf(localizedName: v) }
}
static func asLogEntry(logEntry: [String: Any?]) throws -> LogEntry {
guard let line = logEntry["line"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "line", typeName: "LogEntry"))
}
guard let level = logEntry["level"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "level", typeName: "LogEntry"))
}
return LogEntry(line: line, level: level)
}
static func dictionaryOf(logEntry: LogEntry) -> [String: Any?] {
return [
"line": logEntry.line,
"level": logEntry.level,
]
}
static func asLogEntryList(arr: [Any]) throws -> [LogEntry] {
var list = [LogEntry]()
for value in arr {
if let val = value as? [String: Any?] {
var logEntry = try asLogEntry(logEntry: val)
list.append(logEntry)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LogEntry"))
}
}
return list
}
static func arrayOf(logEntryList: [LogEntry]) -> [Any] {
return logEntryList.map { v -> [String: Any?] in return dictionaryOf(logEntry: v) }
}
static func asMessageSuccessActionData(messageSuccessActionData: [String: Any?]) throws -> MessageSuccessActionData {
guard let message = messageSuccessActionData["message"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "message", typeName: "MessageSuccessActionData"))
}
return MessageSuccessActionData(message: message)
}
static func dictionaryOf(messageSuccessActionData: MessageSuccessActionData) -> [String: Any?] {
return [
"message": messageSuccessActionData.message,
]
}
static func asMessageSuccessActionDataList(arr: [Any]) throws -> [MessageSuccessActionData] {
var list = [MessageSuccessActionData]()
for value in arr {
if let val = value as? [String: Any?] {
var messageSuccessActionData = try asMessageSuccessActionData(messageSuccessActionData: val)
list.append(messageSuccessActionData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "MessageSuccessActionData"))
}
}
return list
}
static func arrayOf(messageSuccessActionDataList: [MessageSuccessActionData]) -> [Any] {
return messageSuccessActionDataList.map { v -> [String: Any?] in return dictionaryOf(messageSuccessActionData: v) }
}
static func asOnchainPaymentLimitsResponse(onchainPaymentLimitsResponse: [String: Any?]) throws -> OnchainPaymentLimitsResponse {
guard let sendTmp = onchainPaymentLimitsResponse["send"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "send", typeName: "OnchainPaymentLimitsResponse"))
}
let send = try asLimits(limits: sendTmp)
guard let receiveTmp = onchainPaymentLimitsResponse["receive"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "receive", typeName: "OnchainPaymentLimitsResponse"))
}
let receive = try asLimits(limits: receiveTmp)
return OnchainPaymentLimitsResponse(send: send, receive: receive)
}
static func dictionaryOf(onchainPaymentLimitsResponse: OnchainPaymentLimitsResponse) -> [String: Any?] {
return [
"send": dictionaryOf(limits: onchainPaymentLimitsResponse.send),
"receive": dictionaryOf(limits: onchainPaymentLimitsResponse.receive),
]
}
static func asOnchainPaymentLimitsResponseList(arr: [Any]) throws -> [OnchainPaymentLimitsResponse] {
var list = [OnchainPaymentLimitsResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var onchainPaymentLimitsResponse = try asOnchainPaymentLimitsResponse(onchainPaymentLimitsResponse: val)
list.append(onchainPaymentLimitsResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "OnchainPaymentLimitsResponse"))
}
}
return list
}
static func arrayOf(onchainPaymentLimitsResponseList: [OnchainPaymentLimitsResponse]) -> [Any] {
return onchainPaymentLimitsResponseList.map { v -> [String: Any?] in return dictionaryOf(onchainPaymentLimitsResponse: v) }
}
static func asPayOnchainRequest(payOnchainRequest: [String: Any?]) throws -> PayOnchainRequest {
guard let address = payOnchainRequest["address"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "address", typeName: "PayOnchainRequest"))
}
guard let prepareResponseTmp = payOnchainRequest["prepareResponse"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "prepareResponse", typeName: "PayOnchainRequest"))
}
let prepareResponse = try asPreparePayOnchainResponse(preparePayOnchainResponse: prepareResponseTmp)
return PayOnchainRequest(address: address, prepareResponse: prepareResponse)
}
static func dictionaryOf(payOnchainRequest: PayOnchainRequest) -> [String: Any?] {
return [
"address": payOnchainRequest.address,
"prepareResponse": dictionaryOf(preparePayOnchainResponse: payOnchainRequest.prepareResponse),
]
}
static func asPayOnchainRequestList(arr: [Any]) throws -> [PayOnchainRequest] {
var list = [PayOnchainRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var payOnchainRequest = try asPayOnchainRequest(payOnchainRequest: val)
list.append(payOnchainRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PayOnchainRequest"))
}
}
return list
}
static func arrayOf(payOnchainRequestList: [PayOnchainRequest]) -> [Any] {
return payOnchainRequestList.map { v -> [String: Any?] in return dictionaryOf(payOnchainRequest: v) }
}
static func asPayment(payment: [String: Any?]) throws -> Payment {
var destination: String?
if hasNonNilKey(data: payment, key: "destination") {
guard let destinationTmp = payment["destination"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "destination"))
}
destination = destinationTmp
}
var txId: String?
if hasNonNilKey(data: payment, key: "txId") {
guard let txIdTmp = payment["txId"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "txId"))
}
txId = txIdTmp
}
guard let timestamp = payment["timestamp"] as? UInt32 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "timestamp", typeName: "Payment"))
}
guard let amountSat = payment["amountSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "amountSat", typeName: "Payment"))
}
guard let feesSat = payment["feesSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "feesSat", typeName: "Payment"))
}
guard let paymentTypeTmp = payment["paymentType"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "paymentType", typeName: "Payment"))
}
let paymentType = try asPaymentType(paymentType: paymentTypeTmp)
guard let statusTmp = payment["status"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "status", typeName: "Payment"))
}
let status = try asPaymentState(paymentState: statusTmp)
var details: PaymentDetails?
if let detailsTmp = payment["details"] as? [String: Any?] {
details = try asPaymentDetails(paymentDetails: detailsTmp)
}
return Payment(destination: destination, txId: txId, timestamp: timestamp, amountSat: amountSat, feesSat: feesSat, paymentType: paymentType, status: status, details: details)
}
static func dictionaryOf(payment: Payment) -> [String: Any?] {
return [
"destination": payment.destination == nil ? nil : payment.destination,
"txId": payment.txId == nil ? nil : payment.txId,
"timestamp": payment.timestamp,
"amountSat": payment.amountSat,
"feesSat": payment.feesSat,
"paymentType": valueOf(paymentType: payment.paymentType),
"status": valueOf(paymentState: payment.status),
"details": payment.details == nil ? nil : dictionaryOf(paymentDetails: payment.details!),
]
}
static func asPaymentList(arr: [Any]) throws -> [Payment] {
var list = [Payment]()
for value in arr {
if let val = value as? [String: Any?] {
var payment = try asPayment(payment: val)
list.append(payment)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "Payment"))
}
}
return list
}
static func arrayOf(paymentList: [Payment]) -> [Any] {
return paymentList.map { v -> [String: Any?] in return dictionaryOf(payment: v) }
}
static func asPrepareBuyBitcoinRequest(prepareBuyBitcoinRequest: [String: Any?]) throws -> PrepareBuyBitcoinRequest {
guard let providerTmp = prepareBuyBitcoinRequest["provider"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "provider", typeName: "PrepareBuyBitcoinRequest"))
}
let provider = try asBuyBitcoinProvider(buyBitcoinProvider: providerTmp)
guard let amountSat = prepareBuyBitcoinRequest["amountSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "amountSat", typeName: "PrepareBuyBitcoinRequest"))
}
return PrepareBuyBitcoinRequest(provider: provider, amountSat: amountSat)
}
static func dictionaryOf(prepareBuyBitcoinRequest: PrepareBuyBitcoinRequest) -> [String: Any?] {
return [
"provider": valueOf(buyBitcoinProvider: prepareBuyBitcoinRequest.provider),
"amountSat": prepareBuyBitcoinRequest.amountSat,
]
}
static func asPrepareBuyBitcoinRequestList(arr: [Any]) throws -> [PrepareBuyBitcoinRequest] {
var list = [PrepareBuyBitcoinRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var prepareBuyBitcoinRequest = try asPrepareBuyBitcoinRequest(prepareBuyBitcoinRequest: val)
list.append(prepareBuyBitcoinRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PrepareBuyBitcoinRequest"))
}
}
return list
}
static func arrayOf(prepareBuyBitcoinRequestList: [PrepareBuyBitcoinRequest]) -> [Any] {
return prepareBuyBitcoinRequestList.map { v -> [String: Any?] in return dictionaryOf(prepareBuyBitcoinRequest: v) }
}
static func asPrepareBuyBitcoinResponse(prepareBuyBitcoinResponse: [String: Any?]) throws -> PrepareBuyBitcoinResponse {
guard let providerTmp = prepareBuyBitcoinResponse["provider"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "provider", typeName: "PrepareBuyBitcoinResponse"))
}
let provider = try asBuyBitcoinProvider(buyBitcoinProvider: providerTmp)
guard let amountSat = prepareBuyBitcoinResponse["amountSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "amountSat", typeName: "PrepareBuyBitcoinResponse"))
}
guard let feesSat = prepareBuyBitcoinResponse["feesSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "feesSat", typeName: "PrepareBuyBitcoinResponse"))
}
return PrepareBuyBitcoinResponse(provider: provider, amountSat: amountSat, feesSat: feesSat)
}
static func dictionaryOf(prepareBuyBitcoinResponse: PrepareBuyBitcoinResponse) -> [String: Any?] {
return [
"provider": valueOf(buyBitcoinProvider: prepareBuyBitcoinResponse.provider),
"amountSat": prepareBuyBitcoinResponse.amountSat,
"feesSat": prepareBuyBitcoinResponse.feesSat,
]
}
static func asPrepareBuyBitcoinResponseList(arr: [Any]) throws -> [PrepareBuyBitcoinResponse] {
var list = [PrepareBuyBitcoinResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var prepareBuyBitcoinResponse = try asPrepareBuyBitcoinResponse(prepareBuyBitcoinResponse: val)
list.append(prepareBuyBitcoinResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PrepareBuyBitcoinResponse"))
}
}
return list
}
static func arrayOf(prepareBuyBitcoinResponseList: [PrepareBuyBitcoinResponse]) -> [Any] {
return prepareBuyBitcoinResponseList.map { v -> [String: Any?] in return dictionaryOf(prepareBuyBitcoinResponse: v) }
}
static func asPreparePayOnchainRequest(preparePayOnchainRequest: [String: Any?]) throws -> PreparePayOnchainRequest {
guard let receiverAmountSat = preparePayOnchainRequest["receiverAmountSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "receiverAmountSat", typeName: "PreparePayOnchainRequest"))
}
var satPerVbyte: UInt32?
if hasNonNilKey(data: preparePayOnchainRequest, key: "satPerVbyte") {
guard let satPerVbyteTmp = preparePayOnchainRequest["satPerVbyte"] as? UInt32 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "satPerVbyte"))
}
satPerVbyte = satPerVbyteTmp
}
return PreparePayOnchainRequest(receiverAmountSat: receiverAmountSat, satPerVbyte: satPerVbyte)
}
static func dictionaryOf(preparePayOnchainRequest: PreparePayOnchainRequest) -> [String: Any?] {
return [
"receiverAmountSat": preparePayOnchainRequest.receiverAmountSat,
"satPerVbyte": preparePayOnchainRequest.satPerVbyte == nil ? nil : preparePayOnchainRequest.satPerVbyte,
]
}
static func asPreparePayOnchainRequestList(arr: [Any]) throws -> [PreparePayOnchainRequest] {
var list = [PreparePayOnchainRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var preparePayOnchainRequest = try asPreparePayOnchainRequest(preparePayOnchainRequest: val)
list.append(preparePayOnchainRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PreparePayOnchainRequest"))
}
}
return list
}
static func arrayOf(preparePayOnchainRequestList: [PreparePayOnchainRequest]) -> [Any] {
return preparePayOnchainRequestList.map { v -> [String: Any?] in return dictionaryOf(preparePayOnchainRequest: v) }
}
static func asPreparePayOnchainResponse(preparePayOnchainResponse: [String: Any?]) throws -> PreparePayOnchainResponse {
guard let receiverAmountSat = preparePayOnchainResponse["receiverAmountSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "receiverAmountSat", typeName: "PreparePayOnchainResponse"))
}
guard let claimFeesSat = preparePayOnchainResponse["claimFeesSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "claimFeesSat", typeName: "PreparePayOnchainResponse"))
}
guard let totalFeesSat = preparePayOnchainResponse["totalFeesSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "totalFeesSat", typeName: "PreparePayOnchainResponse"))
}
return PreparePayOnchainResponse(receiverAmountSat: receiverAmountSat, claimFeesSat: claimFeesSat, totalFeesSat: totalFeesSat)
}
static func dictionaryOf(preparePayOnchainResponse: PreparePayOnchainResponse) -> [String: Any?] {
return [
"receiverAmountSat": preparePayOnchainResponse.receiverAmountSat,
"claimFeesSat": preparePayOnchainResponse.claimFeesSat,
"totalFeesSat": preparePayOnchainResponse.totalFeesSat,
]
}
static func asPreparePayOnchainResponseList(arr: [Any]) throws -> [PreparePayOnchainResponse] {
var list = [PreparePayOnchainResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var preparePayOnchainResponse = try asPreparePayOnchainResponse(preparePayOnchainResponse: val)
list.append(preparePayOnchainResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PreparePayOnchainResponse"))
}
}
return list
}
static func arrayOf(preparePayOnchainResponseList: [PreparePayOnchainResponse]) -> [Any] {
return preparePayOnchainResponseList.map { v -> [String: Any?] in return dictionaryOf(preparePayOnchainResponse: v) }
}
static func asPrepareReceiveRequest(prepareReceiveRequest: [String: Any?]) throws -> PrepareReceiveRequest {
var payerAmountSat: UInt64?
if hasNonNilKey(data: prepareReceiveRequest, key: "payerAmountSat") {
guard let payerAmountSatTmp = prepareReceiveRequest["payerAmountSat"] as? UInt64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "payerAmountSat"))
}
payerAmountSat = payerAmountSatTmp
}
guard let paymentMethodTmp = prepareReceiveRequest["paymentMethod"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "paymentMethod", typeName: "PrepareReceiveRequest"))
}
let paymentMethod = try asPaymentMethod(paymentMethod: paymentMethodTmp)
return PrepareReceiveRequest(payerAmountSat: payerAmountSat, paymentMethod: paymentMethod)
}
static func dictionaryOf(prepareReceiveRequest: PrepareReceiveRequest) -> [String: Any?] {
return [
"payerAmountSat": prepareReceiveRequest.payerAmountSat == nil ? nil : prepareReceiveRequest.payerAmountSat,
"paymentMethod": valueOf(paymentMethod: prepareReceiveRequest.paymentMethod),
]
}
static func asPrepareReceiveRequestList(arr: [Any]) throws -> [PrepareReceiveRequest] {
var list = [PrepareReceiveRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var prepareReceiveRequest = try asPrepareReceiveRequest(prepareReceiveRequest: val)
list.append(prepareReceiveRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PrepareReceiveRequest"))
}
}
return list
}
static func arrayOf(prepareReceiveRequestList: [PrepareReceiveRequest]) -> [Any] {
return prepareReceiveRequestList.map { v -> [String: Any?] in return dictionaryOf(prepareReceiveRequest: v) }
}
static func asPrepareReceiveResponse(prepareReceiveResponse: [String: Any?]) throws -> PrepareReceiveResponse {
var payerAmountSat: UInt64?
if hasNonNilKey(data: prepareReceiveResponse, key: "payerAmountSat") {
guard let payerAmountSatTmp = prepareReceiveResponse["payerAmountSat"] as? UInt64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "payerAmountSat"))
}
payerAmountSat = payerAmountSatTmp
}
guard let paymentMethodTmp = prepareReceiveResponse["paymentMethod"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "paymentMethod", typeName: "PrepareReceiveResponse"))
}
let paymentMethod = try asPaymentMethod(paymentMethod: paymentMethodTmp)
guard let feesSat = prepareReceiveResponse["feesSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "feesSat", typeName: "PrepareReceiveResponse"))
}
return PrepareReceiveResponse(payerAmountSat: payerAmountSat, paymentMethod: paymentMethod, feesSat: feesSat)
}
static func dictionaryOf(prepareReceiveResponse: PrepareReceiveResponse) -> [String: Any?] {
return [
"payerAmountSat": prepareReceiveResponse.payerAmountSat == nil ? nil : prepareReceiveResponse.payerAmountSat,
"paymentMethod": valueOf(paymentMethod: prepareReceiveResponse.paymentMethod),
"feesSat": prepareReceiveResponse.feesSat,
]
}
static func asPrepareReceiveResponseList(arr: [Any]) throws -> [PrepareReceiveResponse] {
var list = [PrepareReceiveResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var prepareReceiveResponse = try asPrepareReceiveResponse(prepareReceiveResponse: val)
list.append(prepareReceiveResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PrepareReceiveResponse"))
}
}
return list
}
static func arrayOf(prepareReceiveResponseList: [PrepareReceiveResponse]) -> [Any] {
return prepareReceiveResponseList.map { v -> [String: Any?] in return dictionaryOf(prepareReceiveResponse: v) }
}
static func asPrepareRefundRequest(prepareRefundRequest: [String: Any?]) throws -> PrepareRefundRequest {
guard let swapAddress = prepareRefundRequest["swapAddress"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "swapAddress", typeName: "PrepareRefundRequest"))
}
guard let refundAddress = prepareRefundRequest["refundAddress"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "refundAddress", typeName: "PrepareRefundRequest"))
}
guard let satPerVbyte = prepareRefundRequest["satPerVbyte"] as? UInt32 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "satPerVbyte", typeName: "PrepareRefundRequest"))
}
return PrepareRefundRequest(swapAddress: swapAddress, refundAddress: refundAddress, satPerVbyte: satPerVbyte)
}
static func dictionaryOf(prepareRefundRequest: PrepareRefundRequest) -> [String: Any?] {
return [
"swapAddress": prepareRefundRequest.swapAddress,
"refundAddress": prepareRefundRequest.refundAddress,
"satPerVbyte": prepareRefundRequest.satPerVbyte,
]
}
static func asPrepareRefundRequestList(arr: [Any]) throws -> [PrepareRefundRequest] {
var list = [PrepareRefundRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var prepareRefundRequest = try asPrepareRefundRequest(prepareRefundRequest: val)
list.append(prepareRefundRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PrepareRefundRequest"))
}
}
return list
}
static func arrayOf(prepareRefundRequestList: [PrepareRefundRequest]) -> [Any] {
return prepareRefundRequestList.map { v -> [String: Any?] in return dictionaryOf(prepareRefundRequest: v) }
}
static func asPrepareRefundResponse(prepareRefundResponse: [String: Any?]) throws -> PrepareRefundResponse {
guard let txVsize = prepareRefundResponse["txVsize"] as? UInt32 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "txVsize", typeName: "PrepareRefundResponse"))
}
guard let txFeeSat = prepareRefundResponse["txFeeSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "txFeeSat", typeName: "PrepareRefundResponse"))
}
var refundTxId: String?
if hasNonNilKey(data: prepareRefundResponse, key: "refundTxId") {
guard let refundTxIdTmp = prepareRefundResponse["refundTxId"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "refundTxId"))
}
refundTxId = refundTxIdTmp
}
return PrepareRefundResponse(txVsize: txVsize, txFeeSat: txFeeSat, refundTxId: refundTxId)
}
static func dictionaryOf(prepareRefundResponse: PrepareRefundResponse) -> [String: Any?] {
return [
"txVsize": prepareRefundResponse.txVsize,
"txFeeSat": prepareRefundResponse.txFeeSat,
"refundTxId": prepareRefundResponse.refundTxId == nil ? nil : prepareRefundResponse.refundTxId,
]
}
static func asPrepareRefundResponseList(arr: [Any]) throws -> [PrepareRefundResponse] {
var list = [PrepareRefundResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var prepareRefundResponse = try asPrepareRefundResponse(prepareRefundResponse: val)
list.append(prepareRefundResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PrepareRefundResponse"))
}
}
return list
}
static func arrayOf(prepareRefundResponseList: [PrepareRefundResponse]) -> [Any] {
return prepareRefundResponseList.map { v -> [String: Any?] in return dictionaryOf(prepareRefundResponse: v) }
}
static func asPrepareSendRequest(prepareSendRequest: [String: Any?]) throws -> PrepareSendRequest {
guard let destination = prepareSendRequest["destination"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "destination", typeName: "PrepareSendRequest"))
}
var amountSat: UInt64?
if hasNonNilKey(data: prepareSendRequest, key: "amountSat") {
guard let amountSatTmp = prepareSendRequest["amountSat"] as? UInt64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "amountSat"))
}
amountSat = amountSatTmp
}
return PrepareSendRequest(destination: destination, amountSat: amountSat)
}
static func dictionaryOf(prepareSendRequest: PrepareSendRequest) -> [String: Any?] {
return [
"destination": prepareSendRequest.destination,
"amountSat": prepareSendRequest.amountSat == nil ? nil : prepareSendRequest.amountSat,
]
}
static func asPrepareSendRequestList(arr: [Any]) throws -> [PrepareSendRequest] {
var list = [PrepareSendRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var prepareSendRequest = try asPrepareSendRequest(prepareSendRequest: val)
list.append(prepareSendRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PrepareSendRequest"))
}
}
return list
}
static func arrayOf(prepareSendRequestList: [PrepareSendRequest]) -> [Any] {
return prepareSendRequestList.map { v -> [String: Any?] in return dictionaryOf(prepareSendRequest: v) }
}
static func asPrepareSendResponse(prepareSendResponse: [String: Any?]) throws -> PrepareSendResponse {
guard let destinationTmp = prepareSendResponse["destination"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "destination", typeName: "PrepareSendResponse"))
}
let destination = try asSendDestination(sendDestination: destinationTmp)
guard let feesSat = prepareSendResponse["feesSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "feesSat", typeName: "PrepareSendResponse"))
}
return PrepareSendResponse(destination: destination, feesSat: feesSat)
}
static func dictionaryOf(prepareSendResponse: PrepareSendResponse) -> [String: Any?] {
return [
"destination": dictionaryOf(sendDestination: prepareSendResponse.destination),
"feesSat": prepareSendResponse.feesSat,
]
}
static func asPrepareSendResponseList(arr: [Any]) throws -> [PrepareSendResponse] {
var list = [PrepareSendResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var prepareSendResponse = try asPrepareSendResponse(prepareSendResponse: val)
list.append(prepareSendResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PrepareSendResponse"))
}
}
return list
}
static func arrayOf(prepareSendResponseList: [PrepareSendResponse]) -> [Any] {
return prepareSendResponseList.map { v -> [String: Any?] in return dictionaryOf(prepareSendResponse: v) }
}
static func asRate(rate: [String: Any?]) throws -> Rate {
guard let coin = rate["coin"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "coin", typeName: "Rate"))
}
guard let value = rate["value"] as? Double else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "value", typeName: "Rate"))
}
return Rate(coin: coin, value: value)
}
static func dictionaryOf(rate: Rate) -> [String: Any?] {
return [
"coin": rate.coin,
"value": rate.value,
]
}
static func asRateList(arr: [Any]) throws -> [Rate] {
var list = [Rate]()
for value in arr {
if let val = value as? [String: Any?] {
var rate = try asRate(rate: val)
list.append(rate)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "Rate"))
}
}
return list
}
static func arrayOf(rateList: [Rate]) -> [Any] {
return rateList.map { v -> [String: Any?] in return dictionaryOf(rate: v) }
}
static func asReceivePaymentRequest(receivePaymentRequest: [String: Any?]) throws -> ReceivePaymentRequest {
guard let prepareResponseTmp = receivePaymentRequest["prepareResponse"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "prepareResponse", typeName: "ReceivePaymentRequest"))
}
let prepareResponse = try asPrepareReceiveResponse(prepareReceiveResponse: prepareResponseTmp)
var description: String?
if hasNonNilKey(data: receivePaymentRequest, key: "description") {
guard let descriptionTmp = receivePaymentRequest["description"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "description"))
}
description = descriptionTmp
}
return ReceivePaymentRequest(prepareResponse: prepareResponse, description: description)
}
static func dictionaryOf(receivePaymentRequest: ReceivePaymentRequest) -> [String: Any?] {
return [
"prepareResponse": dictionaryOf(prepareReceiveResponse: receivePaymentRequest.prepareResponse),
"description": receivePaymentRequest.description == nil ? nil : receivePaymentRequest.description,
]
}
static func asReceivePaymentRequestList(arr: [Any]) throws -> [ReceivePaymentRequest] {
var list = [ReceivePaymentRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var receivePaymentRequest = try asReceivePaymentRequest(receivePaymentRequest: val)
list.append(receivePaymentRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "ReceivePaymentRequest"))
}
}
return list
}
static func arrayOf(receivePaymentRequestList: [ReceivePaymentRequest]) -> [Any] {
return receivePaymentRequestList.map { v -> [String: Any?] in return dictionaryOf(receivePaymentRequest: v) }
}
static func asReceivePaymentResponse(receivePaymentResponse: [String: Any?]) throws -> ReceivePaymentResponse {
guard let destination = receivePaymentResponse["destination"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "destination", typeName: "ReceivePaymentResponse"))
}
return ReceivePaymentResponse(destination: destination)
}
static func dictionaryOf(receivePaymentResponse: ReceivePaymentResponse) -> [String: Any?] {
return [
"destination": receivePaymentResponse.destination,
]
}
static func asReceivePaymentResponseList(arr: [Any]) throws -> [ReceivePaymentResponse] {
var list = [ReceivePaymentResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var receivePaymentResponse = try asReceivePaymentResponse(receivePaymentResponse: val)
list.append(receivePaymentResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "ReceivePaymentResponse"))
}
}
return list
}
static func arrayOf(receivePaymentResponseList: [ReceivePaymentResponse]) -> [Any] {
return receivePaymentResponseList.map { v -> [String: Any?] in return dictionaryOf(receivePaymentResponse: v) }
}
static func asRecommendedFees(recommendedFees: [String: Any?]) throws -> RecommendedFees {
guard let fastestFee = recommendedFees["fastestFee"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "fastestFee", typeName: "RecommendedFees"))
}
guard let halfHourFee = recommendedFees["halfHourFee"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "halfHourFee", typeName: "RecommendedFees"))
}
guard let hourFee = recommendedFees["hourFee"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "hourFee", typeName: "RecommendedFees"))
}
guard let economyFee = recommendedFees["economyFee"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "economyFee", typeName: "RecommendedFees"))
}
guard let minimumFee = recommendedFees["minimumFee"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "minimumFee", typeName: "RecommendedFees"))
}
return RecommendedFees(fastestFee: fastestFee, halfHourFee: halfHourFee, hourFee: hourFee, economyFee: economyFee, minimumFee: minimumFee)
}
static func dictionaryOf(recommendedFees: RecommendedFees) -> [String: Any?] {
return [
"fastestFee": recommendedFees.fastestFee,
"halfHourFee": recommendedFees.halfHourFee,
"hourFee": recommendedFees.hourFee,
"economyFee": recommendedFees.economyFee,
"minimumFee": recommendedFees.minimumFee,
]
}
static func asRecommendedFeesList(arr: [Any]) throws -> [RecommendedFees] {
var list = [RecommendedFees]()
for value in arr {
if let val = value as? [String: Any?] {
var recommendedFees = try asRecommendedFees(recommendedFees: val)
list.append(recommendedFees)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "RecommendedFees"))
}
}
return list
}
static func arrayOf(recommendedFeesList: [RecommendedFees]) -> [Any] {
return recommendedFeesList.map { v -> [String: Any?] in return dictionaryOf(recommendedFees: v) }
}
static func asRefundRequest(refundRequest: [String: Any?]) throws -> RefundRequest {
guard let swapAddress = refundRequest["swapAddress"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "swapAddress", typeName: "RefundRequest"))
}
guard let refundAddress = refundRequest["refundAddress"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "refundAddress", typeName: "RefundRequest"))
}
guard let satPerVbyte = refundRequest["satPerVbyte"] as? UInt32 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "satPerVbyte", typeName: "RefundRequest"))
}
return RefundRequest(swapAddress: swapAddress, refundAddress: refundAddress, satPerVbyte: satPerVbyte)
}
static func dictionaryOf(refundRequest: RefundRequest) -> [String: Any?] {
return [
"swapAddress": refundRequest.swapAddress,
"refundAddress": refundRequest.refundAddress,
"satPerVbyte": refundRequest.satPerVbyte,
]
}
static func asRefundRequestList(arr: [Any]) throws -> [RefundRequest] {
var list = [RefundRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var refundRequest = try asRefundRequest(refundRequest: val)
list.append(refundRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "RefundRequest"))
}
}
return list
}
static func arrayOf(refundRequestList: [RefundRequest]) -> [Any] {
return refundRequestList.map { v -> [String: Any?] in return dictionaryOf(refundRequest: v) }
}
static func asRefundResponse(refundResponse: [String: Any?]) throws -> RefundResponse {
guard let refundTxId = refundResponse["refundTxId"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "refundTxId", typeName: "RefundResponse"))
}
return RefundResponse(refundTxId: refundTxId)
}
static func dictionaryOf(refundResponse: RefundResponse) -> [String: Any?] {
return [
"refundTxId": refundResponse.refundTxId,
]
}
static func asRefundResponseList(arr: [Any]) throws -> [RefundResponse] {
var list = [RefundResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var refundResponse = try asRefundResponse(refundResponse: val)
list.append(refundResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "RefundResponse"))
}
}
return list
}
static func arrayOf(refundResponseList: [RefundResponse]) -> [Any] {
return refundResponseList.map { v -> [String: Any?] in return dictionaryOf(refundResponse: v) }
}
static func asRefundableSwap(refundableSwap: [String: Any?]) throws -> RefundableSwap {
guard let swapAddress = refundableSwap["swapAddress"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "swapAddress", typeName: "RefundableSwap"))
}
guard let timestamp = refundableSwap["timestamp"] as? UInt32 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "timestamp", typeName: "RefundableSwap"))
}
guard let amountSat = refundableSwap["amountSat"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "amountSat", typeName: "RefundableSwap"))
}
return RefundableSwap(swapAddress: swapAddress, timestamp: timestamp, amountSat: amountSat)
}
static func dictionaryOf(refundableSwap: RefundableSwap) -> [String: Any?] {
return [
"swapAddress": refundableSwap.swapAddress,
"timestamp": refundableSwap.timestamp,
"amountSat": refundableSwap.amountSat,
]
}
static func asRefundableSwapList(arr: [Any]) throws -> [RefundableSwap] {
var list = [RefundableSwap]()
for value in arr {
if let val = value as? [String: Any?] {
var refundableSwap = try asRefundableSwap(refundableSwap: val)
list.append(refundableSwap)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "RefundableSwap"))
}
}
return list
}
static func arrayOf(refundableSwapList: [RefundableSwap]) -> [Any] {
return refundableSwapList.map { v -> [String: Any?] in return dictionaryOf(refundableSwap: v) }
}
static func asRestoreRequest(restoreRequest: [String: Any?]) throws -> RestoreRequest {
var backupPath: String?
if hasNonNilKey(data: restoreRequest, key: "backupPath") {
guard let backupPathTmp = restoreRequest["backupPath"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "backupPath"))
}
backupPath = backupPathTmp
}
return RestoreRequest(backupPath: backupPath)
}
static func dictionaryOf(restoreRequest: RestoreRequest) -> [String: Any?] {
return [
"backupPath": restoreRequest.backupPath == nil ? nil : restoreRequest.backupPath,
]
}
static func asRestoreRequestList(arr: [Any]) throws -> [RestoreRequest] {
var list = [RestoreRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var restoreRequest = try asRestoreRequest(restoreRequest: val)
list.append(restoreRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "RestoreRequest"))
}
}
return list
}
static func arrayOf(restoreRequestList: [RestoreRequest]) -> [Any] {
return restoreRequestList.map { v -> [String: Any?] in return dictionaryOf(restoreRequest: v) }
}
static func asRouteHint(routeHint: [String: Any?]) throws -> RouteHint {
guard let hopsTmp = routeHint["hops"] as? [[String: Any?]] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "hops", typeName: "RouteHint"))
}
let hops = try asRouteHintHopList(arr: hopsTmp)
return RouteHint(hops: hops)
}
static func dictionaryOf(routeHint: RouteHint) -> [String: Any?] {
return [
"hops": arrayOf(routeHintHopList: routeHint.hops),
]
}
static func asRouteHintList(arr: [Any]) throws -> [RouteHint] {
var list = [RouteHint]()
for value in arr {
if let val = value as? [String: Any?] {
var routeHint = try asRouteHint(routeHint: val)
list.append(routeHint)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "RouteHint"))
}
}
return list
}
static func arrayOf(routeHintList: [RouteHint]) -> [Any] {
return routeHintList.map { v -> [String: Any?] in return dictionaryOf(routeHint: v) }
}
static func asRouteHintHop(routeHintHop: [String: Any?]) throws -> RouteHintHop {
guard let srcNodeId = routeHintHop["srcNodeId"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "srcNodeId", typeName: "RouteHintHop"))
}
guard let shortChannelId = routeHintHop["shortChannelId"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "shortChannelId", typeName: "RouteHintHop"))
}
guard let feesBaseMsat = routeHintHop["feesBaseMsat"] as? UInt32 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "feesBaseMsat", typeName: "RouteHintHop"))
}
guard let feesProportionalMillionths = routeHintHop["feesProportionalMillionths"] as? UInt32 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "feesProportionalMillionths", typeName: "RouteHintHop"))
}
guard let cltvExpiryDelta = routeHintHop["cltvExpiryDelta"] as? UInt64 else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "cltvExpiryDelta", typeName: "RouteHintHop"))
}
var htlcMinimumMsat: UInt64?
if hasNonNilKey(data: routeHintHop, key: "htlcMinimumMsat") {
guard let htlcMinimumMsatTmp = routeHintHop["htlcMinimumMsat"] as? UInt64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "htlcMinimumMsat"))
}
htlcMinimumMsat = htlcMinimumMsatTmp
}
var htlcMaximumMsat: UInt64?
if hasNonNilKey(data: routeHintHop, key: "htlcMaximumMsat") {
guard let htlcMaximumMsatTmp = routeHintHop["htlcMaximumMsat"] as? UInt64 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "htlcMaximumMsat"))
}
htlcMaximumMsat = htlcMaximumMsatTmp
}
return RouteHintHop(srcNodeId: srcNodeId, shortChannelId: shortChannelId, feesBaseMsat: feesBaseMsat, feesProportionalMillionths: feesProportionalMillionths, cltvExpiryDelta: cltvExpiryDelta, htlcMinimumMsat: htlcMinimumMsat, htlcMaximumMsat: htlcMaximumMsat)
}
static func dictionaryOf(routeHintHop: RouteHintHop) -> [String: Any?] {
return [
"srcNodeId": routeHintHop.srcNodeId,
"shortChannelId": routeHintHop.shortChannelId,
"feesBaseMsat": routeHintHop.feesBaseMsat,
"feesProportionalMillionths": routeHintHop.feesProportionalMillionths,
"cltvExpiryDelta": routeHintHop.cltvExpiryDelta,
"htlcMinimumMsat": routeHintHop.htlcMinimumMsat == nil ? nil : routeHintHop.htlcMinimumMsat,
"htlcMaximumMsat": routeHintHop.htlcMaximumMsat == nil ? nil : routeHintHop.htlcMaximumMsat,
]
}
static func asRouteHintHopList(arr: [Any]) throws -> [RouteHintHop] {
var list = [RouteHintHop]()
for value in arr {
if let val = value as? [String: Any?] {
var routeHintHop = try asRouteHintHop(routeHintHop: val)
list.append(routeHintHop)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "RouteHintHop"))
}
}
return list
}
static func arrayOf(routeHintHopList: [RouteHintHop]) -> [Any] {
return routeHintHopList.map { v -> [String: Any?] in return dictionaryOf(routeHintHop: v) }
}
static func asSendPaymentRequest(sendPaymentRequest: [String: Any?]) throws -> SendPaymentRequest {
guard let prepareResponseTmp = sendPaymentRequest["prepareResponse"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "prepareResponse", typeName: "SendPaymentRequest"))
}
let prepareResponse = try asPrepareSendResponse(prepareSendResponse: prepareResponseTmp)
return SendPaymentRequest(prepareResponse: prepareResponse)
}
static func dictionaryOf(sendPaymentRequest: SendPaymentRequest) -> [String: Any?] {
return [
"prepareResponse": dictionaryOf(prepareSendResponse: sendPaymentRequest.prepareResponse),
]
}
static func asSendPaymentRequestList(arr: [Any]) throws -> [SendPaymentRequest] {
var list = [SendPaymentRequest]()
for value in arr {
if let val = value as? [String: Any?] {
var sendPaymentRequest = try asSendPaymentRequest(sendPaymentRequest: val)
list.append(sendPaymentRequest)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "SendPaymentRequest"))
}
}
return list
}
static func arrayOf(sendPaymentRequestList: [SendPaymentRequest]) -> [Any] {
return sendPaymentRequestList.map { v -> [String: Any?] in return dictionaryOf(sendPaymentRequest: v) }
}
static func asSendPaymentResponse(sendPaymentResponse: [String: Any?]) throws -> SendPaymentResponse {
guard let paymentTmp = sendPaymentResponse["payment"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "payment", typeName: "SendPaymentResponse"))
}
let payment = try asPayment(payment: paymentTmp)
return SendPaymentResponse(payment: payment)
}
static func dictionaryOf(sendPaymentResponse: SendPaymentResponse) -> [String: Any?] {
return [
"payment": dictionaryOf(payment: sendPaymentResponse.payment),
]
}
static func asSendPaymentResponseList(arr: [Any]) throws -> [SendPaymentResponse] {
var list = [SendPaymentResponse]()
for value in arr {
if let val = value as? [String: Any?] {
var sendPaymentResponse = try asSendPaymentResponse(sendPaymentResponse: val)
list.append(sendPaymentResponse)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "SendPaymentResponse"))
}
}
return list
}
static func arrayOf(sendPaymentResponseList: [SendPaymentResponse]) -> [Any] {
return sendPaymentResponseList.map { v -> [String: Any?] in return dictionaryOf(sendPaymentResponse: v) }
}
static func asSymbol(symbol: [String: Any?]) throws -> Symbol {
var grapheme: String?
if hasNonNilKey(data: symbol, key: "grapheme") {
guard let graphemeTmp = symbol["grapheme"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "grapheme"))
}
grapheme = graphemeTmp
}
var template: String?
if hasNonNilKey(data: symbol, key: "template") {
guard let templateTmp = symbol["template"] as? String else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "template"))
}
template = templateTmp
}
var rtl: Bool?
if hasNonNilKey(data: symbol, key: "rtl") {
guard let rtlTmp = symbol["rtl"] as? Bool else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "rtl"))
}
rtl = rtlTmp
}
var position: UInt32?
if hasNonNilKey(data: symbol, key: "position") {
guard let positionTmp = symbol["position"] as? UInt32 else {
throw SdkError.Generic(message: errUnexpectedValue(fieldName: "position"))
}
position = positionTmp
}
return Symbol(grapheme: grapheme, template: template, rtl: rtl, position: position)
}
static func dictionaryOf(symbol: Symbol) -> [String: Any?] {
return [
"grapheme": symbol.grapheme == nil ? nil : symbol.grapheme,
"template": symbol.template == nil ? nil : symbol.template,
"rtl": symbol.rtl == nil ? nil : symbol.rtl,
"position": symbol.position == nil ? nil : symbol.position,
]
}
static func asSymbolList(arr: [Any]) throws -> [Symbol] {
var list = [Symbol]()
for value in arr {
if let val = value as? [String: Any?] {
var symbol = try asSymbol(symbol: val)
list.append(symbol)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "Symbol"))
}
}
return list
}
static func arrayOf(symbolList: [Symbol]) -> [Any] {
return symbolList.map { v -> [String: Any?] in return dictionaryOf(symbol: v) }
}
static func asUrlSuccessActionData(urlSuccessActionData: [String: Any?]) throws -> UrlSuccessActionData {
guard let description = urlSuccessActionData["description"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "description", typeName: "UrlSuccessActionData"))
}
guard let url = urlSuccessActionData["url"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "url", typeName: "UrlSuccessActionData"))
}
guard let matchesCallbackDomain = urlSuccessActionData["matchesCallbackDomain"] as? Bool else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "matchesCallbackDomain", typeName: "UrlSuccessActionData"))
}
return UrlSuccessActionData(description: description, url: url, matchesCallbackDomain: matchesCallbackDomain)
}
static func dictionaryOf(urlSuccessActionData: UrlSuccessActionData) -> [String: Any?] {
return [
"description": urlSuccessActionData.description,
"url": urlSuccessActionData.url,
"matchesCallbackDomain": urlSuccessActionData.matchesCallbackDomain,
]
}
static func asUrlSuccessActionDataList(arr: [Any]) throws -> [UrlSuccessActionData] {
var list = [UrlSuccessActionData]()
for value in arr {
if let val = value as? [String: Any?] {
var urlSuccessActionData = try asUrlSuccessActionData(urlSuccessActionData: val)
list.append(urlSuccessActionData)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "UrlSuccessActionData"))
}
}
return list
}
static func arrayOf(urlSuccessActionDataList: [UrlSuccessActionData]) -> [Any] {
return urlSuccessActionDataList.map { v -> [String: Any?] in return dictionaryOf(urlSuccessActionData: v) }
}
static func asAesSuccessActionDataResult(aesSuccessActionDataResult: [String: Any?]) throws -> AesSuccessActionDataResult {
let type = aesSuccessActionDataResult["type"] as! String
if type == "decrypted" {
guard let dataTmp = aesSuccessActionDataResult["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "AesSuccessActionDataResult"))
}
let _data = try asAesSuccessActionDataDecrypted(aesSuccessActionDataDecrypted: dataTmp)
return AesSuccessActionDataResult.decrypted(data: _data)
}
if type == "errorStatus" {
guard let _reason = aesSuccessActionDataResult["reason"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "reason", typeName: "AesSuccessActionDataResult"))
}
return AesSuccessActionDataResult.errorStatus(reason: _reason)
}
throw SdkError.Generic(message: "Unexpected type \(type) for enum AesSuccessActionDataResult")
}
static func dictionaryOf(aesSuccessActionDataResult: AesSuccessActionDataResult) -> [String: Any?] {
switch aesSuccessActionDataResult {
case let .decrypted(
data
):
return [
"type": "decrypted",
"data": dictionaryOf(aesSuccessActionDataDecrypted: data),
]
case let .errorStatus(
reason
):
return [
"type": "errorStatus",
"reason": reason,
]
}
}
static func arrayOf(aesSuccessActionDataResultList: [AesSuccessActionDataResult]) -> [Any] {
return aesSuccessActionDataResultList.map { v -> [String: Any?] in return dictionaryOf(aesSuccessActionDataResult: v) }
}
static func asAesSuccessActionDataResultList(arr: [Any]) throws -> [AesSuccessActionDataResult] {
var list = [AesSuccessActionDataResult]()
for value in arr {
if let val = value as? [String: Any?] {
var aesSuccessActionDataResult = try asAesSuccessActionDataResult(aesSuccessActionDataResult: val)
list.append(aesSuccessActionDataResult)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "AesSuccessActionDataResult"))
}
}
return list
}
static func asBuyBitcoinProvider(buyBitcoinProvider: String) throws -> BuyBitcoinProvider {
switch buyBitcoinProvider {
case "moonpay":
return BuyBitcoinProvider.moonpay
default: throw SdkError.Generic(message: "Invalid variant \(buyBitcoinProvider) for enum BuyBitcoinProvider")
}
}
static func valueOf(buyBitcoinProvider: BuyBitcoinProvider) -> String {
switch buyBitcoinProvider {
case .moonpay:
return "moonpay"
}
}
static func arrayOf(buyBitcoinProviderList: [BuyBitcoinProvider]) -> [String] {
return buyBitcoinProviderList.map { v -> String in return valueOf(buyBitcoinProvider: v) }
}
static func asBuyBitcoinProviderList(arr: [Any]) throws -> [BuyBitcoinProvider] {
var list = [BuyBitcoinProvider]()
for value in arr {
if let val = value as? String {
var buyBitcoinProvider = try asBuyBitcoinProvider(buyBitcoinProvider: val)
list.append(buyBitcoinProvider)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "BuyBitcoinProvider"))
}
}
return list
}
static func asInputType(inputType: [String: Any?]) throws -> InputType {
let type = inputType["type"] as! String
if type == "bitcoinAddress" {
guard let addressTmp = inputType["address"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "address", typeName: "InputType"))
}
let _address = try asBitcoinAddressData(bitcoinAddressData: addressTmp)
return InputType.bitcoinAddress(address: _address)
}
if type == "liquidAddress" {
guard let addressTmp = inputType["address"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "address", typeName: "InputType"))
}
let _address = try asLiquidAddressData(liquidAddressData: addressTmp)
return InputType.liquidAddress(address: _address)
}
if type == "bolt11" {
guard let invoiceTmp = inputType["invoice"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "invoice", typeName: "InputType"))
}
let _invoice = try asLnInvoice(lnInvoice: invoiceTmp)
return InputType.bolt11(invoice: _invoice)
}
if type == "nodeId" {
guard let _nodeId = inputType["nodeId"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "nodeId", typeName: "InputType"))
}
return InputType.nodeId(nodeId: _nodeId)
}
if type == "url" {
guard let _url = inputType["url"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "url", typeName: "InputType"))
}
return InputType.url(url: _url)
}
if type == "lnUrlPay" {
guard let dataTmp = inputType["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "InputType"))
}
let _data = try asLnUrlPayRequestData(lnUrlPayRequestData: dataTmp)
return InputType.lnUrlPay(data: _data)
}
if type == "lnUrlWithdraw" {
guard let dataTmp = inputType["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "InputType"))
}
let _data = try asLnUrlWithdrawRequestData(lnUrlWithdrawRequestData: dataTmp)
return InputType.lnUrlWithdraw(data: _data)
}
if type == "lnUrlAuth" {
guard let dataTmp = inputType["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "InputType"))
}
let _data = try asLnUrlAuthRequestData(lnUrlAuthRequestData: dataTmp)
return InputType.lnUrlAuth(data: _data)
}
if type == "lnUrlError" {
guard let dataTmp = inputType["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "InputType"))
}
let _data = try asLnUrlErrorData(lnUrlErrorData: dataTmp)
return InputType.lnUrlError(data: _data)
}
throw SdkError.Generic(message: "Unexpected type \(type) for enum InputType")
}
static func dictionaryOf(inputType: InputType) -> [String: Any?] {
switch inputType {
case let .bitcoinAddress(
address
):
return [
"type": "bitcoinAddress",
"address": dictionaryOf(bitcoinAddressData: address),
]
case let .liquidAddress(
address
):
return [
"type": "liquidAddress",
"address": dictionaryOf(liquidAddressData: address),
]
case let .bolt11(
invoice
):
return [
"type": "bolt11",
"invoice": dictionaryOf(lnInvoice: invoice),
]
case let .nodeId(
nodeId
):
return [
"type": "nodeId",
"nodeId": nodeId,
]
case let .url(
url
):
return [
"type": "url",
"url": url,
]
case let .lnUrlPay(
data
):
return [
"type": "lnUrlPay",
"data": dictionaryOf(lnUrlPayRequestData: data),
]
case let .lnUrlWithdraw(
data
):
return [
"type": "lnUrlWithdraw",
"data": dictionaryOf(lnUrlWithdrawRequestData: data),
]
case let .lnUrlAuth(
data
):
return [
"type": "lnUrlAuth",
"data": dictionaryOf(lnUrlAuthRequestData: data),
]
case let .lnUrlError(
data
):
return [
"type": "lnUrlError",
"data": dictionaryOf(lnUrlErrorData: data),
]
}
}
static func arrayOf(inputTypeList: [InputType]) -> [Any] {
return inputTypeList.map { v -> [String: Any?] in return dictionaryOf(inputType: v) }
}
static func asInputTypeList(arr: [Any]) throws -> [InputType] {
var list = [InputType]()
for value in arr {
if let val = value as? [String: Any?] {
var inputType = try asInputType(inputType: val)
list.append(inputType)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "InputType"))
}
}
return list
}
static func asLiquidNetwork(liquidNetwork: String) throws -> LiquidNetwork {
switch liquidNetwork {
case "mainnet":
return LiquidNetwork.mainnet
case "testnet":
return LiquidNetwork.testnet
default: throw SdkError.Generic(message: "Invalid variant \(liquidNetwork) for enum LiquidNetwork")
}
}
static func valueOf(liquidNetwork: LiquidNetwork) -> String {
switch liquidNetwork {
case .mainnet:
return "mainnet"
case .testnet:
return "testnet"
}
}
static func arrayOf(liquidNetworkList: [LiquidNetwork]) -> [String] {
return liquidNetworkList.map { v -> String in return valueOf(liquidNetwork: v) }
}
static func asLiquidNetworkList(arr: [Any]) throws -> [LiquidNetwork] {
var list = [LiquidNetwork]()
for value in arr {
if let val = value as? String {
var liquidNetwork = try asLiquidNetwork(liquidNetwork: val)
list.append(liquidNetwork)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LiquidNetwork"))
}
}
return list
}
static func asLnUrlCallbackStatus(lnUrlCallbackStatus: [String: Any?]) throws -> LnUrlCallbackStatus {
let type = lnUrlCallbackStatus["type"] as! String
if type == "ok" {
return LnUrlCallbackStatus.ok
}
if type == "errorStatus" {
guard let dataTmp = lnUrlCallbackStatus["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "LnUrlCallbackStatus"))
}
let _data = try asLnUrlErrorData(lnUrlErrorData: dataTmp)
return LnUrlCallbackStatus.errorStatus(data: _data)
}
throw SdkError.Generic(message: "Unexpected type \(type) for enum LnUrlCallbackStatus")
}
static func dictionaryOf(lnUrlCallbackStatus: LnUrlCallbackStatus) -> [String: Any?] {
switch lnUrlCallbackStatus {
case .ok:
return [
"type": "ok",
]
case let .errorStatus(
data
):
return [
"type": "errorStatus",
"data": dictionaryOf(lnUrlErrorData: data),
]
}
}
static func arrayOf(lnUrlCallbackStatusList: [LnUrlCallbackStatus]) -> [Any] {
return lnUrlCallbackStatusList.map { v -> [String: Any?] in return dictionaryOf(lnUrlCallbackStatus: v) }
}
static func asLnUrlCallbackStatusList(arr: [Any]) throws -> [LnUrlCallbackStatus] {
var list = [LnUrlCallbackStatus]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlCallbackStatus = try asLnUrlCallbackStatus(lnUrlCallbackStatus: val)
list.append(lnUrlCallbackStatus)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlCallbackStatus"))
}
}
return list
}
static func asLnUrlPayResult(lnUrlPayResult: [String: Any?]) throws -> LnUrlPayResult {
let type = lnUrlPayResult["type"] as! String
if type == "endpointSuccess" {
guard let dataTmp = lnUrlPayResult["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "LnUrlPayResult"))
}
let _data = try asLnUrlPaySuccessData(lnUrlPaySuccessData: dataTmp)
return LnUrlPayResult.endpointSuccess(data: _data)
}
if type == "endpointError" {
guard let dataTmp = lnUrlPayResult["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "LnUrlPayResult"))
}
let _data = try asLnUrlErrorData(lnUrlErrorData: dataTmp)
return LnUrlPayResult.endpointError(data: _data)
}
if type == "payError" {
guard let dataTmp = lnUrlPayResult["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "LnUrlPayResult"))
}
let _data = try asLnUrlPayErrorData(lnUrlPayErrorData: dataTmp)
return LnUrlPayResult.payError(data: _data)
}
throw SdkError.Generic(message: "Unexpected type \(type) for enum LnUrlPayResult")
}
static func dictionaryOf(lnUrlPayResult: LnUrlPayResult) -> [String: Any?] {
switch lnUrlPayResult {
case let .endpointSuccess(
data
):
return [
"type": "endpointSuccess",
"data": dictionaryOf(lnUrlPaySuccessData: data),
]
case let .endpointError(
data
):
return [
"type": "endpointError",
"data": dictionaryOf(lnUrlErrorData: data),
]
case let .payError(
data
):
return [
"type": "payError",
"data": dictionaryOf(lnUrlPayErrorData: data),
]
}
}
static func arrayOf(lnUrlPayResultList: [LnUrlPayResult]) -> [Any] {
return lnUrlPayResultList.map { v -> [String: Any?] in return dictionaryOf(lnUrlPayResult: v) }
}
static func asLnUrlPayResultList(arr: [Any]) throws -> [LnUrlPayResult] {
var list = [LnUrlPayResult]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlPayResult = try asLnUrlPayResult(lnUrlPayResult: val)
list.append(lnUrlPayResult)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlPayResult"))
}
}
return list
}
static func asLnUrlWithdrawResult(lnUrlWithdrawResult: [String: Any?]) throws -> LnUrlWithdrawResult {
let type = lnUrlWithdrawResult["type"] as! String
if type == "ok" {
guard let dataTmp = lnUrlWithdrawResult["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "LnUrlWithdrawResult"))
}
let _data = try asLnUrlWithdrawSuccessData(lnUrlWithdrawSuccessData: dataTmp)
return LnUrlWithdrawResult.ok(data: _data)
}
if type == "timeout" {
guard let dataTmp = lnUrlWithdrawResult["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "LnUrlWithdrawResult"))
}
let _data = try asLnUrlWithdrawSuccessData(lnUrlWithdrawSuccessData: dataTmp)
return LnUrlWithdrawResult.timeout(data: _data)
}
if type == "errorStatus" {
guard let dataTmp = lnUrlWithdrawResult["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "LnUrlWithdrawResult"))
}
let _data = try asLnUrlErrorData(lnUrlErrorData: dataTmp)
return LnUrlWithdrawResult.errorStatus(data: _data)
}
throw SdkError.Generic(message: "Unexpected type \(type) for enum LnUrlWithdrawResult")
}
static func dictionaryOf(lnUrlWithdrawResult: LnUrlWithdrawResult) -> [String: Any?] {
switch lnUrlWithdrawResult {
case let .ok(
data
):
return [
"type": "ok",
"data": dictionaryOf(lnUrlWithdrawSuccessData: data),
]
case let .timeout(
data
):
return [
"type": "timeout",
"data": dictionaryOf(lnUrlWithdrawSuccessData: data),
]
case let .errorStatus(
data
):
return [
"type": "errorStatus",
"data": dictionaryOf(lnUrlErrorData: data),
]
}
}
static func arrayOf(lnUrlWithdrawResultList: [LnUrlWithdrawResult]) -> [Any] {
return lnUrlWithdrawResultList.map { v -> [String: Any?] in return dictionaryOf(lnUrlWithdrawResult: v) }
}
static func asLnUrlWithdrawResultList(arr: [Any]) throws -> [LnUrlWithdrawResult] {
var list = [LnUrlWithdrawResult]()
for value in arr {
if let val = value as? [String: Any?] {
var lnUrlWithdrawResult = try asLnUrlWithdrawResult(lnUrlWithdrawResult: val)
list.append(lnUrlWithdrawResult)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "LnUrlWithdrawResult"))
}
}
return list
}
static func asNetwork(network: String) throws -> Network {
switch network {
case "bitcoin":
return Network.bitcoin
case "testnet":
return Network.testnet
case "signet":
return Network.signet
case "regtest":
return Network.regtest
default: throw SdkError.Generic(message: "Invalid variant \(network) for enum Network")
}
}
static func valueOf(network: Network) -> String {
switch network {
case .bitcoin:
return "bitcoin"
case .testnet:
return "testnet"
case .signet:
return "signet"
case .regtest:
return "regtest"
}
}
static func arrayOf(networkList: [Network]) -> [String] {
return networkList.map { v -> String in return valueOf(network: v) }
}
static func asNetworkList(arr: [Any]) throws -> [Network] {
var list = [Network]()
for value in arr {
if let val = value as? String {
var network = try asNetwork(network: val)
list.append(network)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "Network"))
}
}
return list
}
static func asPaymentDetails(paymentDetails: [String: Any?]) throws -> PaymentDetails {
let type = paymentDetails["type"] as! String
if type == "lightning" {
guard let _swapId = paymentDetails["swapId"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "swapId", typeName: "PaymentDetails"))
}
guard let _description = paymentDetails["description"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "description", typeName: "PaymentDetails"))
}
let _preimage = paymentDetails["preimage"] as? String
let _bolt11 = paymentDetails["bolt11"] as? String
let _refundTxId = paymentDetails["refundTxId"] as? String
let _refundTxAmountSat = paymentDetails["refundTxAmountSat"] as? UInt64
return PaymentDetails.lightning(swapId: _swapId, description: _description, preimage: _preimage, bolt11: _bolt11, refundTxId: _refundTxId, refundTxAmountSat: _refundTxAmountSat)
}
if type == "liquid" {
guard let _destination = paymentDetails["destination"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "destination", typeName: "PaymentDetails"))
}
guard let _description = paymentDetails["description"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "description", typeName: "PaymentDetails"))
}
return PaymentDetails.liquid(destination: _destination, description: _description)
}
if type == "bitcoin" {
guard let _swapId = paymentDetails["swapId"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "swapId", typeName: "PaymentDetails"))
}
guard let _description = paymentDetails["description"] as? String else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "description", typeName: "PaymentDetails"))
}
let _refundTxId = paymentDetails["refundTxId"] as? String
let _refundTxAmountSat = paymentDetails["refundTxAmountSat"] as? UInt64
return PaymentDetails.bitcoin(swapId: _swapId, description: _description, refundTxId: _refundTxId, refundTxAmountSat: _refundTxAmountSat)
}
throw SdkError.Generic(message: "Unexpected type \(type) for enum PaymentDetails")
}
static func dictionaryOf(paymentDetails: PaymentDetails) -> [String: Any?] {
switch paymentDetails {
case let .lightning(
swapId, description, preimage, bolt11, refundTxId, refundTxAmountSat
):
return [
"type": "lightning",
"swapId": swapId,
"description": description,
"preimage": preimage == nil ? nil : preimage,
"bolt11": bolt11 == nil ? nil : bolt11,
"refundTxId": refundTxId == nil ? nil : refundTxId,
"refundTxAmountSat": refundTxAmountSat == nil ? nil : refundTxAmountSat,
]
case let .liquid(
destination, description
):
return [
"type": "liquid",
"destination": destination,
"description": description,
]
case let .bitcoin(
swapId, description, refundTxId, refundTxAmountSat
):
return [
"type": "bitcoin",
"swapId": swapId,
"description": description,
"refundTxId": refundTxId == nil ? nil : refundTxId,
"refundTxAmountSat": refundTxAmountSat == nil ? nil : refundTxAmountSat,
]
}
}
static func arrayOf(paymentDetailsList: [PaymentDetails]) -> [Any] {
return paymentDetailsList.map { v -> [String: Any?] in return dictionaryOf(paymentDetails: v) }
}
static func asPaymentDetailsList(arr: [Any]) throws -> [PaymentDetails] {
var list = [PaymentDetails]()
for value in arr {
if let val = value as? [String: Any?] {
var paymentDetails = try asPaymentDetails(paymentDetails: val)
list.append(paymentDetails)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PaymentDetails"))
}
}
return list
}
static func asPaymentMethod(paymentMethod: String) throws -> PaymentMethod {
switch paymentMethod {
case "lightning":
return PaymentMethod.lightning
case "bitcoinAddress":
return PaymentMethod.bitcoinAddress
case "liquidAddress":
return PaymentMethod.liquidAddress
default: throw SdkError.Generic(message: "Invalid variant \(paymentMethod) for enum PaymentMethod")
}
}
static func valueOf(paymentMethod: PaymentMethod) -> String {
switch paymentMethod {
case .lightning:
return "lightning"
case .bitcoinAddress:
return "bitcoinAddress"
case .liquidAddress:
return "liquidAddress"
}
}
static func arrayOf(paymentMethodList: [PaymentMethod]) -> [String] {
return paymentMethodList.map { v -> String in return valueOf(paymentMethod: v) }
}
static func asPaymentMethodList(arr: [Any]) throws -> [PaymentMethod] {
var list = [PaymentMethod]()
for value in arr {
if let val = value as? String {
var paymentMethod = try asPaymentMethod(paymentMethod: val)
list.append(paymentMethod)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PaymentMethod"))
}
}
return list
}
static func asPaymentState(paymentState: String) throws -> PaymentState {
switch paymentState {
case "created":
return PaymentState.created
case "pending":
return PaymentState.pending
case "complete":
return PaymentState.complete
case "failed":
return PaymentState.failed
case "timedOut":
return PaymentState.timedOut
case "refundable":
return PaymentState.refundable
case "refundPending":
return PaymentState.refundPending
default: throw SdkError.Generic(message: "Invalid variant \(paymentState) for enum PaymentState")
}
}
static func valueOf(paymentState: PaymentState) -> String {
switch paymentState {
case .created:
return "created"
case .pending:
return "pending"
case .complete:
return "complete"
case .failed:
return "failed"
case .timedOut:
return "timedOut"
case .refundable:
return "refundable"
case .refundPending:
return "refundPending"
}
}
static func arrayOf(paymentStateList: [PaymentState]) -> [String] {
return paymentStateList.map { v -> String in return valueOf(paymentState: v) }
}
static func asPaymentStateList(arr: [Any]) throws -> [PaymentState] {
var list = [PaymentState]()
for value in arr {
if let val = value as? String {
var paymentState = try asPaymentState(paymentState: val)
list.append(paymentState)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PaymentState"))
}
}
return list
}
static func asPaymentType(paymentType: String) throws -> PaymentType {
switch paymentType {
case "receive":
return PaymentType.receive
case "send":
return PaymentType.send
default: throw SdkError.Generic(message: "Invalid variant \(paymentType) for enum PaymentType")
}
}
static func valueOf(paymentType: PaymentType) -> String {
switch paymentType {
case .receive:
return "receive"
case .send:
return "send"
}
}
static func arrayOf(paymentTypeList: [PaymentType]) -> [String] {
return paymentTypeList.map { v -> String in return valueOf(paymentType: v) }
}
static func asPaymentTypeList(arr: [Any]) throws -> [PaymentType] {
var list = [PaymentType]()
for value in arr {
if let val = value as? String {
var paymentType = try asPaymentType(paymentType: val)
list.append(paymentType)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "PaymentType"))
}
}
return list
}
static func asSdkEvent(sdkEvent: [String: Any?]) throws -> SdkEvent {
let type = sdkEvent["type"] as! String
if type == "paymentFailed" {
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.paymentFailed(details: _details)
}
if type == "paymentPending" {
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.paymentPending(details: _details)
}
if type == "paymentRefunded" {
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.paymentRefunded(details: _details)
}
if type == "paymentRefundPending" {
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.paymentRefundPending(details: _details)
}
if type == "paymentSucceeded" {
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.paymentSucceeded(details: _details)
}
if type == "paymentWaitingConfirmation" {
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.paymentWaitingConfirmation(details: _details)
}
if type == "synced" {
return SdkEvent.synced
}
throw SdkError.Generic(message: "Unexpected type \(type) for enum SdkEvent")
}
static func dictionaryOf(sdkEvent: SdkEvent) -> [String: Any?] {
switch sdkEvent {
case let .paymentFailed(
details
):
return [
"type": "paymentFailed",
"details": dictionaryOf(payment: details),
]
case let .paymentPending(
details
):
return [
"type": "paymentPending",
"details": dictionaryOf(payment: details),
]
case let .paymentRefunded(
details
):
return [
"type": "paymentRefunded",
"details": dictionaryOf(payment: details),
]
case let .paymentRefundPending(
details
):
return [
"type": "paymentRefundPending",
"details": dictionaryOf(payment: details),
]
case let .paymentSucceeded(
details
):
return [
"type": "paymentSucceeded",
"details": dictionaryOf(payment: details),
]
case let .paymentWaitingConfirmation(
details
):
return [
"type": "paymentWaitingConfirmation",
"details": dictionaryOf(payment: details),
]
case .synced:
return [
"type": "synced",
]
}
}
static func arrayOf(sdkEventList: [SdkEvent]) -> [Any] {
return sdkEventList.map { v -> [String: Any?] in return dictionaryOf(sdkEvent: v) }
}
static func asSdkEventList(arr: [Any]) throws -> [SdkEvent] {
var list = [SdkEvent]()
for value in arr {
if let val = value as? [String: Any?] {
var sdkEvent = try asSdkEvent(sdkEvent: val)
list.append(sdkEvent)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "SdkEvent"))
}
}
return list
}
static func asSendDestination(sendDestination: [String: Any?]) throws -> SendDestination {
let type = sendDestination["type"] as! String
if type == "liquidAddress" {
guard let addressDataTmp = sendDestination["addressData"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "addressData", typeName: "SendDestination"))
}
let _addressData = try asLiquidAddressData(liquidAddressData: addressDataTmp)
return SendDestination.liquidAddress(addressData: _addressData)
}
if type == "bolt11" {
guard let invoiceTmp = sendDestination["invoice"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "invoice", typeName: "SendDestination"))
}
let _invoice = try asLnInvoice(lnInvoice: invoiceTmp)
return SendDestination.bolt11(invoice: _invoice)
}
throw SdkError.Generic(message: "Unexpected type \(type) for enum SendDestination")
}
static func dictionaryOf(sendDestination: SendDestination) -> [String: Any?] {
switch sendDestination {
case let .liquidAddress(
addressData
):
return [
"type": "liquidAddress",
"addressData": dictionaryOf(liquidAddressData: addressData),
]
case let .bolt11(
invoice
):
return [
"type": "bolt11",
"invoice": dictionaryOf(lnInvoice: invoice),
]
}
}
static func arrayOf(sendDestinationList: [SendDestination]) -> [Any] {
return sendDestinationList.map { v -> [String: Any?] in return dictionaryOf(sendDestination: v) }
}
static func asSendDestinationList(arr: [Any]) throws -> [SendDestination] {
var list = [SendDestination]()
for value in arr {
if let val = value as? [String: Any?] {
var sendDestination = try asSendDestination(sendDestination: val)
list.append(sendDestination)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "SendDestination"))
}
}
return list
}
static func asSuccessActionProcessed(successActionProcessed: [String: Any?]) throws -> SuccessActionProcessed {
let type = successActionProcessed["type"] as! String
if type == "aes" {
guard let resultTmp = successActionProcessed["result"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "result", typeName: "SuccessActionProcessed"))
}
let _result = try asAesSuccessActionDataResult(aesSuccessActionDataResult: resultTmp)
return SuccessActionProcessed.aes(result: _result)
}
if type == "message" {
guard let dataTmp = successActionProcessed["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "SuccessActionProcessed"))
}
let _data = try asMessageSuccessActionData(messageSuccessActionData: dataTmp)
return SuccessActionProcessed.message(data: _data)
}
if type == "url" {
guard let dataTmp = successActionProcessed["data"] as? [String: Any?] else {
throw SdkError.Generic(message: errMissingMandatoryField(fieldName: "data", typeName: "SuccessActionProcessed"))
}
let _data = try asUrlSuccessActionData(urlSuccessActionData: dataTmp)
return SuccessActionProcessed.url(data: _data)
}
throw SdkError.Generic(message: "Unexpected type \(type) for enum SuccessActionProcessed")
}
static func dictionaryOf(successActionProcessed: SuccessActionProcessed) -> [String: Any?] {
switch successActionProcessed {
case let .aes(
result
):
return [
"type": "aes",
"result": dictionaryOf(aesSuccessActionDataResult: result),
]
case let .message(
data
):
return [
"type": "message",
"data": dictionaryOf(messageSuccessActionData: data),
]
case let .url(
data
):
return [
"type": "url",
"data": dictionaryOf(urlSuccessActionData: data),
]
}
}
static func arrayOf(successActionProcessedList: [SuccessActionProcessed]) -> [Any] {
return successActionProcessedList.map { v -> [String: Any?] in return dictionaryOf(successActionProcessed: v) }
}
static func asSuccessActionProcessedList(arr: [Any]) throws -> [SuccessActionProcessed] {
var list = [SuccessActionProcessed]()
for value in arr {
if let val = value as? [String: Any?] {
var successActionProcessed = try asSuccessActionProcessed(successActionProcessed: val)
list.append(successActionProcessed)
} else {
throw SdkError.Generic(message: errUnexpectedType(typeName: "SuccessActionProcessed"))
}
}
return list
}
static func hasNonNilKey(data: [String: Any?], key: String) -> Bool {
if let val = data[key] {
return !(val == nil || val is NSNull)
}
return false
}
static func errMissingMandatoryField(fieldName: String, typeName: String) -> String {
return "Missing mandatory field \(fieldName) for type \(typeName)"
}
static func errUnexpectedType(typeName: String) -> String {
return "Unexpected type \(typeName)"
}
static func errUnexpectedValue(fieldName: String) -> String {
return "Unexpected value for optional field \(fieldName)"
}
}