LNBitsKit

一个用于与 LNBits 交互的 Swift 包。

要求

文档

连接到 LNBits

let lnbits = LNBits(server: "https://legend.lnbits.com", adminKey: "145a510c4ce1496e827e1fc34934b980", invoiceKey: "a04c53fec8524ba3aa63d8385e41c288")

这些密钥位于您的 LNBits 钱包的 Api 文档中。

测试连接

if await lnbits.testConnection() {
    // connected
}else {
    // not connected
}

生成发票

let invoice = try! await lnbits.createInvoice(sats: 21, memo: "Hello :)")
let paymentRequest = invoice.paymentRequest

解码发票

let decodeInvoice = try! await lnbits.decodeInvoice(invoice: "lnbc210n1pjd62g3sp5pwlfye29mk6mmsxzhj8w3cvq4va3tu2uwj2klwjqpguzhw67x38qpp5upej4ls9ytz7ard5ttq93m4ngrz6uw20tgv0jskmmvgv9y0e40wqdq2f38xy6t5wvxqzjccqpjrzjqw6lfdpjecp4d5t0gxk5khkrzfejjxyxtxg5exqsd95py6rhwwh72rpgrgqq3hcqqgqqqqlgqqqqqqgq9q9qxpqysgq9szuwpy2kd7ksk9vsgdnef9z0pdzdermcya50dd7ncgemzzlqptyukew6zd
let amount = decodeInvoice.amount
let memo = decodeInvoice.description

支付发票

try! await lnbits.payInvoice(invoice: "lnbc210n1pjd62g3sp5pwlfye29mk6mmsxzhj8w3cvq4va3tu2uwj2klwjqpguzhw67x38qpp5upej4ls9ytz7ard5ttq93m4ngrz6uw20tgv0jskmmvgv9y0e40wqdq2f38xy6t5wvxqzjccqpjrzjqw6lfdpjecp4d5t0gxk5khkrzfejjxyxtxg5exqsd95py6rhwwh72rpgrgqq3hcqqgqqqqlgqqqqqqgq9q9qxpqysgq9szuwpy2kd7ksk9vsgdnef9z0pdzdermcya50dd7ncgemzzlqptyukew6zd2m0ynan6shxv0s02qxvgzkapdfvps59vzx550hul6g0gp0937wp")

获取钱包余额

let balance = try await lnbits.getBalance()

余额单位为聪 (sats)。

获取钱包名称

let name = try await lnbits.getName()

列出所有交易

let txs = try await lnbits.getTXs()

更改钱包名称

try await lnbits.changeName(name: "Wallet")

创建 LNURLPay 链接

let lnurl = try await lnbits.createLNURLPayLink()
let link = lnurl.lnurl

列出所有已创建的 LNURLPay 链接

let lnurls = try await lnbits.getPayLinks()
let links = lnurls.map { lnurl in
    lnurl.lnurl
}

解码 LNURL

let lnurl = try await lnbits.decodeLNURL(lnurl: "LNURLBITCOINISAWESOME")
switch lnurl.kind {
    case .pay:
    // LNURL Pay
    case .withdraw:
    // LNURL Withdraw
    case .auth:
    // LNURL Auth
}

支付 LNURL Pay 链接

try await lnbits.payLNURL(lnurl: "LNURLBITCOINISAWESOME", amount: 21)

创建 LNURL Withdraw

let lnurl = try await lnbits.createLNURLWithdraw()
let link = lnurl.lnurl

列出 LNURL Withdraw

let lnurl = try await lnbits.getLNURLWithdraws()
let a = lnurl.map { i in
    i.lnurl
}

从 LNURL Withdraw 链接提款

try! await lnbits.withdrawFromLNURLWithdraw(lnurl: "LNURLBITCOINISAWESOME")

此函数会自动提取尽可能多的金额。但您也可以设置金额。

try! await lnbits.withdrawFromLNURLWithdraw(lnurl: "LNURLBITCOINISAWESOME", amount: 21)

删除 LNURL Pay 链接

try await lnbits.deleteLNURLPay(id: "BTC21M")

该 ID 位于 LNURLPay 对象中。

let lnurl = try await lnbits.createLNURLPayLink()
try await lnbits.deleteLNURLPay(id: lnurl.id)

删除 LNURL Withdraw 链接

try await lnbits.deleteLNURLWithdraw(id: "BTC21M")

LNURL Auth

try await lnbits.lnurlAuth(lnurl: "LNURLLOGINWITHLIGHTNING")

错误处理

do {
// Code
}catch LNBitsError.error(let error) {
    print(error)
}

Boltz 子水下交换

let swap = try await lnbits.createSubMarineSwap(amount: 100000, refundAddress: "bc1qbitcoinfixesthis")

每次交换最少 50000 聪 (sats)。

列出 Boltz 子水下交换

let swaps = try await lnbits.getSubMarineSwaps()

退款 Boltz 子水下交换

try await lnbits.refundSubMarineSwap(swapID: "mySwapID")

Boltz 反向子水下交换

let swap = try await lnbitscreateReversedSubMarineSwap(amount: 100000, onChainAddress: "bc1qbitcoinfixesthis")

列出 Boltz 反向子水下交换

let swap = try await lnbits.getReversedSubMarineSwaps()