Create Dart snippets and reference them

Co-Authored-By: ok300 <106775972+ok300@users.noreply.github.com>
This commit is contained in:
Erdem Yerebasmaz
2023-10-24 21:25:46 +03:00
parent c29cad2bd2
commit ec4955c488
35 changed files with 1039 additions and 272 deletions

View File

@@ -0,0 +1,10 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<BuyBitcoinResponse> buyBitcoin() async {
// ANCHOR: buy-btc
BuyBitcoinRequest req = const BuyBitcoinRequest(provider: BuyBitcoinProvider.Moonpay);
BuyBitcoinResponse resp = await BreezSDK().buyBitcoin(req: req);
// ANCHOR_END: buy-btc
return resp;
}

View File

@@ -0,0 +1,17 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<void> getLspInfo() async {
// ANCHOR: get-lsp-info
String? lspId = await BreezSDK().lspId();
LspInformation? lspInfo = await BreezSDK().lspInfo();
print(lspId);
print(lspInfo);
// ANCHOR_END: get-lsp-info
}
Future<void> connectLsp(String lspId) async {
// ANCHOR: connect-lsp
return await BreezSDK().connectLSP(lspId);
// ANCHOR_END: connect-lsp
}

View File

@@ -0,0 +1,40 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<List<FiatCurrency>> listFiatCurrencies() async {
// ANCHOR: list-fiat-currencies
List<FiatCurrency> fiatCurrencyList = await BreezSDK().listFiatCurrencies();
// ANCHOR_END: list-fiat-currencies
return fiatCurrencyList;
}
Future<Map<String, Rate>> fetchFiatRates(String lspId) async {
// ANCHOR: fetch-fiat-rates
Map<String, Rate> fiatRatesMap = await BreezSDK().fetchFiatRates();
// print your desired rate
print(fiatRatesMap["USD"]?.value);
// ANCHOR_END: fetch-fiat-rates
return fiatRatesMap;
}
Future<Map<FiatCurrency, Rate>> fiatCurrenciesAndRate() async {
// ANCHOR: get-fiat-currencies-and-rates
List<FiatCurrency> fiatCurrencies = await BreezSDK().listFiatCurrencies();
Map<String, Rate> fiatRates = await BreezSDK().fetchFiatRates();
var sorted = fiatCurrencies.toList();
sorted.sort((f1, f2) {
return f1.id.compareTo(f2.id);
});
Map<FiatCurrency, Rate> result = {};
for (var currency in sorted) {
var rate = fiatRates[currency.id];
if (rate != null) {
result[currency] = rate;
}
}
return result;
// ANCHOR_END: get-fiat-currencies-and-rates
}

View File

@@ -0,0 +1,46 @@
import 'dart:typed_data';
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<void> initializeSDK() async {
// ANCHOR: init-sdk
// Initialize SDK logs listener
BreezSDK().initialize();
// Create the default config
Uint8List seed = await BreezSDK().mnemonicToSeed("<mnemonic words>");
String inviteCode = "<invite code>";
String apiKey = "<api key>";
NodeConfig nodeConfig = NodeConfig.greenlight(
config: GreenlightNodeConfig(
partnerCredentials: null,
inviteCode: inviteCode,
),
);
Config config = await BreezSDK().defaultConfig(
envType: EnvironmentType.Production,
apiKey: apiKey,
nodeConfig: nodeConfig,
);
// Customize the config object according to your needs
config = config.copyWith(workingDir: "path to an existing directory");
// Connect to the Breez SDK make it ready for use
return await BreezSDK().connect(config: config, seed: seed);
// ANCHOR_END: init-sdk
}
Future<void> fetchBalance(String lspId) async {
// ANCHOR: fetch-balance
NodeState? nodeInfo = await BreezSDK().nodeInfo();
if (nodeInfo != null) {
int lnBalance = nodeInfo.channelsBalanceMsat;
int onchainBalance = nodeInfo.onchainBalanceMsat;
print(lnBalance);
print(onchainBalance);
}
// ANCHOR_END: fetch-balance
}

View File

@@ -0,0 +1,33 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<List<Payment>> listPayments() async {
// ANCHOR: list-payments
ListPaymentsRequest req = ListPaymentsRequest(filter: PaymentTypeFilter.All);
List<Payment> paymentsList = await BreezSDK().listPayments(req: req);
print(paymentsList);
// ANCHOR_END: list-payments
return paymentsList;
}
Future<List<Payment>> listPaymentsFiltered({
DateTime? startDate,
DateTime? endDate,
bool? includeFailures,
int? offset,
int? limit,
}) async {
// ANCHOR: list-payments-filtered
ListPaymentsRequest req = ListPaymentsRequest(
filter: PaymentTypeFilter.Sent,
fromTimestamp: startDate?.millisecondsSinceEpoch,
toTimestamp: endDate?.millisecondsSinceEpoch,
includeFailures: includeFailures,
offset: offset,
limit: limit,
);
List<Payment> paymentsList = await BreezSDK().listPayments(req: req);
print(paymentsList);
// ANCHOR_END: list-payments-filtered
return paymentsList;
}

View File

@@ -0,0 +1,21 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<void> lnurlAuth() async {
// ANCHOR: lnurl-auth
/// Endpoint can also be of the form:
/// keyauth://domain.com/auth?key=val
String lnurlAuthUrl =
"lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttvdankjm3lw3skw0tvdankjm3xdvcn6vtp8q6n2dfsx5mrjwtrxdjnqvtzv56rzcnyv3jrxv3sxqmkyenrvv6kve3exv6nqdtyv43nqcmzvdsnvdrzx33rsenxx5unqc3cxgeqgntfgu";
InputType inputType = await BreezSDK().parseInput(input: lnurlAuthUrl);
if (inputType is InputType_LnUrlAuth) {
LnUrlCallbackStatus result = await BreezSDK().lnurlAuth(reqData: inputType.data);
if (result is LnUrlCallbackStatus_Ok) {
print("Successfully authenticated");
} else {
print("Failed to authenticate");
}
}
// ANCHOR_END: lnurl-auth
}

View File

@@ -0,0 +1,23 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<void> lnurlPay() async {
// ANCHOR: lnurl-pay
/// Endpoint can also be of the form:
/// lnurlp://domain.com/lnurl-pay?key=val
/// lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf
String lnurlPayUrl = "lightning@address.com";
InputType inputType = await BreezSDK().parseInput(input: lnurlPayUrl);
if (inputType is InputType_LnUrlPay) {
int amountMsat = inputType.data.minSendable;
LnUrlPayRequest req = LnUrlPayRequest(
data: inputType.data,
amountMsat: amountMsat,
comment: "<comment>",
);
LnUrlPayResult result = await BreezSDK().lnurlPay(req: req);
print(result.data);
}
// ANCHOR_END: lnurl-pay
}

View File

@@ -0,0 +1,23 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<void> lnurlWithdraw() async {
// ANCHOR: lnurl-withdraw
/// Endpoint can also be of the form:
/// lnurlw://domain.com/lnurl-withdraw?key=val
String lnurlWithdrawUrl =
"lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4exctthd96xserjv9mn7um9wdekjmmw843xxwpexdnxzen9vgunsvfexq6rvdecx93rgdmyxcuxverrvcursenpxvukzv3c8qunsdecx33nzwpnvg6ryc3hv93nzvecxgcxgwp3h33lxk";
InputType inputType = await BreezSDK().parseInput(input: lnurlWithdrawUrl);
if (inputType is InputType_LnUrlWithdraw) {
int amountMsat = inputType.data.minWithdrawable;
LnUrlWithdrawRequest req = LnUrlWithdrawRequest(
data: inputType.data,
amountMsat: amountMsat,
description: "<description>",
);
LnUrlWithdrawResult result = await BreezSDK().lnurlWithdraw(req: req);
print(result.data);
}
// ANCHOR_END: lnurl-withdraw
}

View File

@@ -0,0 +1,61 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<SwapInfo> generateReceiveOnchainAddress() async {
// ANCHOR: generate-receive-onchain-address
ReceiveOnchainRequest req = const ReceiveOnchainRequest();
SwapInfo swapInfo = await BreezSDK().receiveOnchain(req: req);
// Send your funds to the below bitcoin address
final address = swapInfo.bitcoinAddress;
print(address);
return swapInfo;
// ANCHOR_END: generate-receive-onchain-address
}
Future<SwapInfo?> getInProgressSwap() async {
// ANCHOR: in-progress-swap
SwapInfo? swapInfo = await BreezSDK().inProgressSwap();
print(swapInfo);
// ANCHOR_END: in-progress-swap
return swapInfo;
}
Future<List<SwapInfo>> listRefundables() async {
// ANCHOR: list-refundables
List<SwapInfo> refundables = await BreezSDK().listRefundables();
for (var refundable in refundables) {
print(refundable.bitcoinAddress);
}
// ANCHOR_END: list-refundables
return refundables;
}
Future<RefundResponse> executeRefund({
required String swapAddress,
required String toAddress,
required int satPerVbyte,
}) async {
// ANCHOR: execute-refund
RefundRequest req = RefundRequest(
swapAddress: swapAddress,
toAddress: toAddress,
satPerVbyte: satPerVbyte,
);
RefundResponse resp = await BreezSDK().refund(req: req);
print(resp.refundTxId);
// ANCHOR_END: execute-refund
return resp;
}
Future<OpenChannelFeeResponse> getChannelOpeningFees({
required int amountMsat,
int? expiry,
}) async {
// ANCHOR: get-channel-opening-fees
OpenChannelFeeRequest req = OpenChannelFeeRequest(amountMsat: amountMsat, expiry: expiry);
OpenChannelFeeResponse resp = await BreezSDK().openChannelFee(req: req);
print(resp.feeMsat);
// ANCHOR_END: get-channel-opening-fees
return resp;
}

View File

@@ -0,0 +1,14 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<ReceivePaymentResponse> receivePayment() async {
// ANCHOR: receive-payment
ReceivePaymentRequest req = const ReceivePaymentRequest(
amountMsat: 3000000,
description: "Invoice for 3000 sats",
);
ReceivePaymentResponse resp = await BreezSDK().receivePayment(req: req);
print(resp.lnInvoice);
// ANCHOR_END: receive-payment
return resp;
}

View File

@@ -0,0 +1,46 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<ReverseSwapPairInfo> estimateCurrentFees() async {
// ANCHOR: estimate-current-reverse-swap-total-fees
ReverseSwapFeesRequest req = const ReverseSwapFeesRequest(sendAmountSat: 50000);
ReverseSwapPairInfo currentFees = await BreezSDK().fetchReverseSwapFees(req: req);
print("Total estimated fees for reverse swap: ${currentFees.totalEstimatedFees}");
// ANCHOR_END: estimate-current-reverse-swap-total-fees
return currentFees;
}
void listCurrentFees({required ReverseSwapPairInfo currentFees}) {
// ANCHOR: get-current-reverse-swap-min-max
print("Minimum amount, in sats: ${currentFees.min}");
print("Maximum amount, in sats: ${currentFees.max}");
// ANCHOR_END: get-current-reverse-swap-min-max
}
Future<SendOnchainResponse> startReverseSwap({
required int amountSat,
required String onchainRecipientAddress,
required String pairHash,
required int satPerVbyte,
}) async {
// ANCHOR: start-reverse-swap
SendOnchainRequest req = SendOnchainRequest(
amountSat: amountSat,
onchainRecipientAddress: onchainRecipientAddress,
pairHash: pairHash,
satPerVbyte: satPerVbyte,
);
SendOnchainResponse resp = await BreezSDK().sendOnchain(req: req);
// ANCHOR_END: start-reverse-swap
return resp;
}
Future<List<ReverseSwapInfo>> checkReverseSwapStatus() async {
// ANCHOR: check-reverse-swaps-status
List<ReverseSwapInfo> inProgRevSwapList = await BreezSDK().inProgressReverseSwaps();
for (var inProgRevSwap in inProgRevSwapList) {
print("Reverse swap ${inProgRevSwap.id} in progress, status is ${inProgRevSwap.status.name}");
}
// ANCHOR_END: check-reverse-swaps-status
return inProgRevSwapList;
}

View File

@@ -0,0 +1,10 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<SendPaymentResponse> buyBitcoin({required String bolt11}) async {
// ANCHOR: send-payment
SendPaymentRequest req = SendPaymentRequest(bolt11: bolt11);
SendPaymentResponse resp = await BreezSDK().sendPayment(req: req);
// ANCHOR_END: send-payment
return resp;
}

View File

@@ -0,0 +1,15 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<SendPaymentResponse> sendSpontaneousPayment({
required String nodeId,
}) async {
// ANCHOR: send-spontaneous-payment
SendSpontaneousPaymentRequest req = SendSpontaneousPaymentRequest(
amountMsat: 3000000,
nodeId: nodeId,
);
SendPaymentResponse resp = await BreezSDK().sendSpontaneousPayment(req: req);
// ANCHOR_END: send-spontaneous-payment
return resp;
}

View File

@@ -0,0 +1,10 @@
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
Future<StaticBackupResponse> retrieveBackupFiles({required String workingDir}) async {
// ANCHOR: static-channel-backup
StaticBackupRequest req = StaticBackupRequest(workingDir: workingDir);
StaticBackupResponse resp = await BreezSDK().staticBackup(req: req);
// ANCHOR_END: static-channel-backup
return resp;
}