cake_wallet/lib/view_model/lightning_view_model.dart
2024-02-22 12:32:06 -05:00

52 lines
1.6 KiB
Dart

import 'dart:async';
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
import 'package:mobx/mobx.dart';
part 'lightning_view_model.g.dart';
class LightningViewModel = LightningViewModelBase with _$LightningViewModel;
abstract class LightningViewModelBase with Store {
LightningViewModelBase() {}
// @observable
// ExecutionState state;
Future<List<String>> receiveOnchain() async {
final sdk = await BreezSDK();
ReceiveOnchainRequest req = const ReceiveOnchainRequest();
SwapInfo swapInfo = await sdk.receiveOnchain(req: req);
print(swapInfo.bitcoinAddress);
print("Minimum amount allowed to deposit in sats: ${swapInfo.minAllowedDeposit}");
print("Maximum amount allowed to deposit in sats: ${swapInfo.maxAllowedDeposit}");
return [
swapInfo.bitcoinAddress,
swapInfo.minAllowedDeposit.toString(),
swapInfo.maxAllowedDeposit.toString()
];
}
Future<String> createInvoice({required String amount, String? description}) async {
final sdk = await BreezSDK();
final req = ReceivePaymentRequest(
amountMsat: (double.parse(amount) * 100000000).round(),
description: description ?? '',
);
final res = await sdk.receivePayment(req: req);
return res.lnInvoice.bolt11;
}
Future<List<String>> invoiceLimits() async {
final sdk = await BreezSDK();
final req = ReceivePaymentRequest(
amountMsat: 1000,
description: 'limits',
);
final res = await sdk.receivePayment(req: req);
// sdk.
// TODO: CW-563 figure out how to get the limits
return [(res.openingFeeMsat).toString(), '20000'];
}
}