From 4d76d28c08db181acdc21a9287522f0c1bcda4e3 Mon Sep 17 00:00:00 2001 From: Justin Date: Fri, 10 Jul 2026 14:14:34 -0500 Subject: [PATCH 1/3] feat: cryptography for ble sending --- lib/frb_generated.dart | 4995 +++++++++--------------- lib/frb_generated.io.dart | 367 +- lib/frb_generated.web.dart | 359 +- lib/lib.dart | 12 + lib/nostr.dart | 19 +- lib/tap_transfer.dart | 23 + rust/ecashapp/Cargo.lock | 12 + rust/ecashapp/Cargo.toml | 5 + rust/ecashapp/src/frb_generated.rs | 5753 +++++++++------------------- rust/ecashapp/src/lib.rs | 13 + rust/ecashapp/src/tap_transfer.rs | 275 ++ 11 files changed, 4309 insertions(+), 7524 deletions(-) create mode 100644 lib/tap_transfer.dart create mode 100644 rust/ecashapp/src/tap_transfer.rs diff --git a/lib/frb_generated.dart b/lib/frb_generated.dart index ef36ae65..0b6a21ca 100644 --- a/lib/frb_generated.dart +++ b/lib/frb_generated.dart @@ -13,10 +13,10 @@ import 'frb_generated.dart'; import 'frb_generated.io.dart' if (dart.library.js_interop) 'frb_generated.web.dart'; import 'lib.dart'; -import 'lnurl_client.dart'; import 'multimint.dart'; import 'nostr.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; +import 'tap_transfer.dart'; /// Main entrypoint of the Rust API class RustLib extends BaseEntrypoint { @@ -69,7 +69,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.9.0'; @override - int get rustContentHash => 1098215331; + int get rustContentHash => -733282414; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -348,6 +348,8 @@ abstract class RustLibApi extends BaseApi { required FederationId federationId, }); + Future crateMultimintMultimintClearPinHash({required Multimint that}); + Future> crateMultimintMultimintComputeAllGatewayPreviews({ required Multimint that, @@ -441,92 +443,16 @@ abstract class RustLibApi extends BaseApi { Future crateMultimintMultimintGetRecoveryProgress({ required Multimint that, required FederationId federationId, - required RecoveryModule recoveryModule, - }); - - Future crateMultimintMultimintGetShowMsats({required Multimint that}); - - Future crateMultimintMultimintGuardianAddGateway({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, - }); - - Future crateMultimintMultimintGuardianAudit({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - }); - - Future - crateMultimintMultimintGuardianBackupStatistics({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - }); - - Future> crateMultimintMultimintGuardianListGateways({ - required Multimint that, - required FederationId federationId, - required int peer, - }); - - Future crateMultimintMultimintGuardianLogin({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - }); - - Future crateMultimintMultimintGuardianMetaAccept({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - required String valueHex, - }); - - Future crateMultimintMultimintGuardianMetaProposeField({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - required String field, - String? value, - }); - - Future crateMultimintMultimintGuardianMetaState({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, + required int moduleId, }); - Future crateMultimintMultimintGuardianMetaWithdraw({ + Future crateMultimintMultimintGetRequirePinForSpending({ required Multimint that, - required FederationId federationId, - required int peer, - required String password, }); - Future crateMultimintMultimintGuardianRemoveGateway({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, - }); + Future crateMultimintMultimintGetShowMsats({required Multimint that}); - Future crateMultimintMultimintGuardianStatus({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - }); + Future crateMultimintMultimintHasPinCode({required Multimint that}); Future crateMultimintMultimintHasSeedPhraseAck({ required Multimint that, @@ -543,14 +469,6 @@ abstract class RustLibApi extends BaseApi { required FederationId federationId, }); - Future crateMultimintMultimintMaxLightningSend({ - required Multimint that, - required FederationId federationId, - required SafeUrl gateway, - required bool isLnv2, - required bool loopback, - }); - Future crateMultimintMultimintNew({ required Database db, required MultimintCreation creationType, @@ -562,14 +480,6 @@ abstract class RustLibApi extends BaseApi { required OobNotes notes, }); - Future crateMultimintMultimintProbeInvoiceIsLoopback({ - required Multimint that, - required FederationId federationId, - required SafeUrl gateway, - required bool isLnv2, - required Bolt11Invoice invoice, - }); - Future<(Bolt11Invoice, OperationId)> crateMultimintMultimintReceive({ required Multimint that, required FederationId federationId, @@ -598,11 +508,6 @@ abstract class RustLibApi extends BaseApi { required Multimint that, }); - Future crateMultimintMultimintRefreshFederationMeta({ - required Multimint that, - required FederationId federationId, - }); - Future crateMultimintMultimintRegisterLnAddress({ required Multimint that, required FederationId federationId, @@ -624,6 +529,13 @@ abstract class RustLibApi extends BaseApi { required List backupInviteCodes, }); + Future crateMultimintMultimintSelectSendGateway({ + required Multimint that, + required FederationId federationId, + required Amount amount, + required Bolt11Invoice bolt11, + }); + Future crateMultimintMultimintSend({ required Multimint that, required FederationId federationId, @@ -658,6 +570,16 @@ abstract class RustLibApi extends BaseApi { required FiatCurrency fiatCurrency, }); + Future crateMultimintMultimintSetPinHash({ + required Multimint that, + required String pin, + }); + + Future crateMultimintMultimintSetRequirePinForSpending({ + required Multimint that, + required bool require, + }); + Future crateMultimintMultimintSetShowMsats({ required Multimint that, required bool showMsats, @@ -671,6 +593,11 @@ abstract class RustLibApi extends BaseApi { required List modules, }); + Future crateMultimintMultimintVerifyPin({ + required Multimint that, + required String pin, + }); + Future> crateMultimintMultimintWalletSummary({ required Multimint that, String? invite, @@ -722,6 +649,12 @@ abstract class RustLibApi extends BaseApi { required String npub, }); + Future<(NostrWalletConnectConfig, NWCConnectionInfo)> + crateNostrNostrClientGetNwcConfig({ + required NostrClient that, + required FederationId federationId, + }); + Future> crateNostrNostrClientGetNwcConnectionInfo({required NostrClient that}); @@ -743,6 +676,11 @@ abstract class RustLibApi extends BaseApi { required String relayUri, }); + Future crateNostrNostrClientListenForNwc({ + required FederationId federationId, + required NostrWalletConnectConfig nwcConfig, + }); + Future crateNostrNostrClientNew({ required Database db, required List recoverRelays, @@ -876,6 +814,15 @@ abstract class RustLibApi extends BaseApi { String? picture, }); + String crateTapTransferTapRecipientDecrypt({ + required TapRecipient that, + required List blob, + }); + + TapRecipient crateTapTransferTapRecipientNew(); + + Uint8List crateTapTransferTapRecipientPublicKey({required TapRecipient that}); + BigInt crateMultimintWithdrawFeesResponseAutoAccessorGetFederationFeeMsats({ required WithdrawFeesResponse that, }); @@ -929,7 +876,7 @@ abstract class RustLibApi extends BaseApi { required FederationId federationId, }); - Future<(bool, BigInt?)> crateAwaitEcashReissue({ + Future<(ReissueExternalNotesState, BigInt?)> crateAwaitEcashReissue({ required FederationId federationId, required OperationId operationId, }); @@ -969,11 +916,6 @@ abstract class RustLibApi extends BaseApi { required BigInt amountSats, }); - Future crateChangePinCode({ - required String currentPin, - required String newPin, - }); - Future crateCheckEcashSpent({ required FederationId federationId, required String ecash, @@ -1018,6 +960,11 @@ abstract class RustLibApi extends BaseApi { required bool isDesktop, }); + Uint8List crateEncryptEcashForTap({ + required String ecash, + required List recipientPubkey, + }); + Future crateExecuteLnurlWithdraw({ required FederationId federationId, required String callback, @@ -1067,7 +1014,6 @@ abstract class RustLibApi extends BaseApi { }); Future crateGetInvoiceFromLnaddressOrLnurl({ - required FederationId federationId, required BigInt amountMsats, required String lnaddressOrLnurl, }); @@ -1085,7 +1031,7 @@ abstract class RustLibApi extends BaseApi { Future<(int, int)> crateGetModuleRecoveryProgress({ required FederationId federationId, - required RecoveryModule recoveryModule, + required int moduleId, }); Future> crateGetNoteSummary({ @@ -1095,10 +1041,6 @@ abstract class RustLibApi extends BaseApi { Future> crateGetNwcConnectionInfo(); - Future crateGetNwcDailyBudgetSats(); - - Future crateGetNwcMaxPaymentSats(); - Future crateGetPeginFeeQuote({ required FederationId federationId, }); @@ -1109,76 +1051,6 @@ abstract class RustLibApi extends BaseApi { Future crateGetShowMsats(); - Future crateGuardianAddGateway({ - required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, - }); - - Future crateGuardianAudit({ - required FederationId federationId, - required int peer, - required String password, - }); - - Future crateGuardianBackupStatistics({ - required FederationId federationId, - required int peer, - required String password, - }); - - Future> crateGuardianListGateways({ - required FederationId federationId, - required int peer, - }); - - Future crateGuardianLogin({ - required FederationId federationId, - required int peer, - required String password, - }); - - Future crateGuardianMetaAccept({ - required FederationId federationId, - required int peer, - required String password, - required String valueHex, - }); - - Future crateGuardianMetaProposeField({ - required FederationId federationId, - required int peer, - required String password, - required String field, - String? value, - }); - - Future crateGuardianMetaState({ - required FederationId federationId, - required int peer, - required String password, - }); - - Future crateGuardianMetaWithdraw({ - required FederationId federationId, - required int peer, - required String password, - }); - - Future crateGuardianRemoveGateway({ - required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, - }); - - Future crateGuardianStatus({ - required FederationId federationId, - required int peer, - required String password, - }); - Future crateHasImportedContacts(); Future crateHasPinCode(); @@ -1216,13 +1088,6 @@ abstract class RustLibApi extends BaseApi { required bool isDesktop, }); - Future crateMaxLightningSend({ - required FederationId federationId, - required String lnaddressOrLnurl, - required String gateway, - required bool isLnv2, - }); - Future> cratePaginateContacts({ BigInt? cursorLastPaidAt, BigInt? cursorCreatedAt, @@ -1254,8 +1119,6 @@ abstract class RustLibApi extends BaseApi { required String bolt11, }); - Future cratePinLockoutSeconds(); - Future<(String, OperationId, String, String, BigInt)> crateReceive({ required FederationId federationId, required BigInt amountMsatsWithFees, @@ -1273,10 +1136,6 @@ abstract class RustLibApi extends BaseApi { Future crateRefreshConnections(); - Future crateRefreshFederationMeta({ - required FederationId federationId, - }); - Future crateRegisterLnAddress({ required FederationId federationId, required String recurringdApi, @@ -1316,6 +1175,12 @@ abstract class RustLibApi extends BaseApi { required BigInt feeMsats, }); + Future crateSendLnaddress({ + required FederationId federationId, + required BigInt amountMsats, + required String address, + }); + Future crateSetBitcoinDisplay({required BitcoinDisplay bitcoinDisplay}); Future crateSetFederationOrder({required List order}); @@ -1328,16 +1193,9 @@ abstract class RustLibApi extends BaseApi { required bool isDesktop, }); - Future crateSetNwcDailyBudgetSats({required BigInt sats}); - - Future crateSetNwcMaxPaymentSats({required BigInt sats}); - Future crateSetPinCode({required String pin}); - Future crateSetRequirePinForSpending({ - required bool require, - String? currentPin, - }); + Future crateSetRequirePinForSpending({required bool require}); Future crateSetShowMsats({required bool showMsats}); @@ -1354,7 +1212,7 @@ abstract class RustLibApi extends BaseApi { Stream<(int, int)> crateSubscribeRecoveryProgress({ required FederationId federationId, - required RecoveryModule recoveryModule, + required int moduleId, }); Future crateSyncContacts({required String npub}); @@ -1633,6 +1491,14 @@ abstract class RustLibApi extends BaseApi { CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SafeUrlPtr; + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_TapRecipient; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_TapRecipient; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_TapRecipientPtr; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_WithdrawFees; @@ -3432,7 +3298,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { }, codec: SseCodec( decodeSuccessData: sse_decode_u_64, - decodeErrorData: sse_decode_AnyhowException, + decodeErrorData: null, ), constMeta: kCrateMultimintMultimintBalanceConstMeta, argValues: [that, federationId], @@ -3688,6 +3554,40 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ], ); + @override + Future crateMultimintMultimintClearPinHash({required Multimint that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 56, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateMultimintMultimintClearPinHashConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateMultimintMultimintClearPinHashConstMeta => + const TaskConstMeta( + debugName: "Multimint_clear_pin_hash", + argNames: ["that"], + ); + @override Future> crateMultimintMultimintComputeAllGatewayPreviews({ @@ -3719,7 +3619,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 56, + funcId: 57, port: port_, ); }, @@ -3775,7 +3675,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 57, + funcId: 58, port: port_, ); }, @@ -3832,7 +3732,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 58, + funcId: 59, port: port_, ); }, @@ -3868,7 +3768,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 59, + funcId: 60, port: port_, ); }, @@ -3910,7 +3810,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 60, + funcId: 61, port: port_, ); }, @@ -3947,7 +3847,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 61, + funcId: 62, port: port_, ); }, @@ -3983,7 +3883,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 62, + funcId: 63, port: port_, ); }, @@ -4019,7 +3919,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 63, + funcId: 64, port: port_, ); }, @@ -4055,7 +3955,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 64, + funcId: 65, port: port_, ); }, @@ -4098,7 +3998,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 65, + funcId: 66, port: port_, ); }, @@ -4135,7 +4035,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 66, + funcId: 67, port: port_, ); }, @@ -4172,7 +4072,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 67, + funcId: 68, port: port_, ); }, @@ -4215,7 +4115,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 68, + funcId: 69, port: port_, ); }, @@ -4256,7 +4156,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 69, + funcId: 70, port: port_, ); }, @@ -4300,7 +4200,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 70, + funcId: 71, port: port_, ); }, @@ -4337,7 +4237,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 71, + funcId: 72, port: port_, ); }, @@ -4378,7 +4278,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 72, + funcId: 73, port: port_, ); }, @@ -4419,7 +4319,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 73, + funcId: 74, port: port_, ); }, @@ -4444,7 +4344,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { Future crateMultimintMultimintGetRecoveryProgress({ required Multimint that, required FederationId federationId, - required RecoveryModule recoveryModule, + required int moduleId, }) { return handler.executeNormal( NormalTask( @@ -4458,11 +4358,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_recovery_module(recoveryModule, serializer); + sse_encode_u_16(moduleId, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 74, + funcId: 75, port: port_, ); }, @@ -4472,7 +4372,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeErrorData: null, ), constMeta: kCrateMultimintMultimintGetRecoveryProgressConstMeta, - argValues: [that, federationId, recoveryModule], + argValues: [that, federationId, moduleId], apiImpl: this, ), ); @@ -4481,11 +4381,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kCrateMultimintMultimintGetRecoveryProgressConstMeta => const TaskConstMeta( debugName: "Multimint_get_recovery_progress", - argNames: ["that", "federationId", "recoveryModule"], + argNames: ["that", "federationId", "moduleId"], ); @override - Future crateMultimintMultimintGetShowMsats({required Multimint that}) { + Future crateMultimintMultimintGetRequirePinForSpending({ + required Multimint that, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -4497,7 +4399,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 75, + funcId: 76, port: port_, ); }, @@ -4505,27 +4407,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_bool, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintGetShowMsatsConstMeta, + constMeta: kCrateMultimintMultimintGetRequirePinForSpendingConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGetShowMsatsConstMeta => + TaskConstMeta get kCrateMultimintMultimintGetRequirePinForSpendingConstMeta => const TaskConstMeta( - debugName: "Multimint_get_show_msats", + debugName: "Multimint_get_require_pin_for_spending", argNames: ["that"], ); @override - Future crateMultimintMultimintGuardianAddGateway({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, - }) { + Future crateMultimintMultimintGetShowMsats({required Multimint that}) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -4534,44 +4430,32 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); - sse_encode_String(gatewayUrl, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 76, + funcId: 77, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_bool, - decodeErrorData: sse_decode_AnyhowException, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintGuardianAddGatewayConstMeta, - argValues: [that, federationId, peer, password, gatewayUrl], + constMeta: kCrateMultimintMultimintGetShowMsatsConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianAddGatewayConstMeta => + TaskConstMeta get kCrateMultimintMultimintGetShowMsatsConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_add_gateway", - argNames: ["that", "federationId", "peer", "password", "gatewayUrl"], + debugName: "Multimint_get_show_msats", + argNames: ["that"], ); @override - Future crateMultimintMultimintGuardianAudit({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - }) { + Future crateMultimintMultimintHasPinCode({required Multimint that}) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -4580,43 +4464,33 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 77, + funcId: 78, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_guardian_audit_summary, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintGuardianAuditConstMeta, - argValues: [that, federationId, peer, password], + constMeta: kCrateMultimintMultimintHasPinCodeConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianAuditConstMeta => + TaskConstMeta get kCrateMultimintMultimintHasPinCodeConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_audit", - argNames: ["that", "federationId", "peer", "password"], + debugName: "Multimint_has_pin_code", + argNames: ["that"], ); @override - Future - crateMultimintMultimintGuardianBackupStatistics({ + Future crateMultimintMultimintHasSeedPhraseAck({ required Multimint that, - required FederationId federationId, - required int peer, - required String password, }) { return handler.executeNormal( NormalTask( @@ -4626,91 +4500,81 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 78, + funcId: 79, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_guardian_backup_statistics, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintGuardianBackupStatisticsConstMeta, - argValues: [that, federationId, peer, password], + constMeta: kCrateMultimintMultimintHasSeedPhraseAckConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianBackupStatisticsConstMeta => + TaskConstMeta get kCrateMultimintMultimintHasSeedPhraseAckConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_backup_statistics", - argNames: ["that", "federationId", "peer", "password"], + debugName: "Multimint_has_seed_phrase_ack", + argNames: ["that"], ); @override - Future> crateMultimintMultimintGuardianListGateways({ + Future crateMultimintMultimintJoinFederation({ required Multimint that, - required FederationId federationId, - required int peer, + required String invite, + required bool recover, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); + sse_encode_String(invite, serializer); + sse_encode_bool(recover, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 79, + funcId: 80, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_String, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationSelector, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintGuardianListGatewaysConstMeta, - argValues: [that, federationId, peer], + constMeta: kCrateMultimintMultimintJoinFederationConstMeta, + argValues: [that, invite, recover], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianListGatewaysConstMeta => + TaskConstMeta get kCrateMultimintMultimintJoinFederationConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_list_gateways", - argNames: ["that", "federationId", "peer"], + debugName: "Multimint_join_federation", + argNames: ["that", "invite", "recover"], ); @override - Future crateMultimintMultimintGuardianLogin({ + Future crateMultimintMultimintLeaveFederation({ required Multimint that, required FederationId federationId, - required int peer, - required String password, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); @@ -4718,87 +4582,73 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 80, + funcId: 81, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintGuardianLoginConstMeta, - argValues: [that, federationId, peer, password], + constMeta: kCrateMultimintMultimintLeaveFederationConstMeta, + argValues: [that, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianLoginConstMeta => + TaskConstMeta get kCrateMultimintMultimintLeaveFederationConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_login", - argNames: ["that", "federationId", "peer", "password"], + debugName: "Multimint_leave_federation", + argNames: ["that", "federationId"], ); @override - Future crateMultimintMultimintGuardianMetaAccept({ - required Multimint that, - required FederationId federationId, - required int peer, - required String password, - required String valueHex, + Future crateMultimintMultimintNew({ + required Database db, + required MultimintCreation creationType, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( - that, - serializer, - ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDatabase( + db, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); - sse_encode_String(valueHex, serializer); + sse_encode_box_autoadd_multimint_creation(creationType, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 81, + funcId: 82, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintGuardianMetaAcceptConstMeta, - argValues: [that, federationId, peer, password, valueHex], + constMeta: kCrateMultimintMultimintNewConstMeta, + argValues: [db, creationType], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianMetaAcceptConstMeta => - const TaskConstMeta( - debugName: "Multimint_guardian_meta_accept", - argNames: ["that", "federationId", "peer", "password", "valueHex"], - ); + TaskConstMeta get kCrateMultimintMultimintNewConstMeta => const TaskConstMeta( + debugName: "Multimint_new", + argNames: ["db", "creationType"], + ); @override - Future crateMultimintMultimintGuardianMetaProposeField({ + Future crateMultimintMultimintParseEcash({ required Multimint that, required FederationId federationId, - required int peer, - required String password, - required String field, - String? value, + required OobNotes notes, }) { return handler.executeNormal( NormalTask( @@ -4812,47 +4662,44 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); - sse_encode_String(field, serializer); - sse_encode_opt_String(value, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotes( + notes, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 82, + funcId: 83, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_u_64, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintGuardianMetaProposeFieldConstMeta, - argValues: [that, federationId, peer, password, field, value], + constMeta: kCrateMultimintMultimintParseEcashConstMeta, + argValues: [that, federationId, notes], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianMetaProposeFieldConstMeta => + TaskConstMeta get kCrateMultimintMultimintParseEcashConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_meta_propose_field", - argNames: [ - "that", - "federationId", - "peer", - "password", - "field", - "value", - ], + debugName: "Multimint_parse_ecash", + argNames: ["that", "federationId", "notes"], ); @override - Future crateMultimintMultimintGuardianMetaState({ + Future<(Bolt11Invoice, OperationId)> crateMultimintMultimintReceive({ required Multimint that, required FederationId federationId, - required int peer, - required String password, + required BigInt amountMsatsWithFees, + required BigInt amountMsatsWithoutFees, + required BigInt federationFeeMsats, + required BigInt gatewayFeeMsats, + required SafeUrl gateway, + required bool isLnv2, }) { return handler.executeNormal( NormalTask( @@ -4866,38 +4713,63 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); + sse_encode_u_64(amountMsatsWithFees, serializer); + sse_encode_u_64(amountMsatsWithoutFees, serializer); + sse_encode_u_64(federationFeeMsats, serializer); + sse_encode_u_64(gatewayFeeMsats, serializer); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + gateway, + serializer, + ); + sse_encode_bool(isLnv2, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 83, + funcId: 84, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_guardian_meta_state, + decodeSuccessData: + sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_bolt_11_invoice_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_operation_id, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintGuardianMetaStateConstMeta, - argValues: [that, federationId, peer, password], + constMeta: kCrateMultimintMultimintReceiveConstMeta, + argValues: [ + that, + federationId, + amountMsatsWithFees, + amountMsatsWithoutFees, + federationFeeMsats, + gatewayFeeMsats, + gateway, + isLnv2, + ], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianMetaStateConstMeta => + TaskConstMeta get kCrateMultimintMultimintReceiveConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_meta_state", - argNames: ["that", "federationId", "peer", "password"], + debugName: "Multimint_receive", + argNames: [ + "that", + "federationId", + "amountMsatsWithFees", + "amountMsatsWithoutFees", + "federationFeeMsats", + "gatewayFeeMsats", + "gateway", + "isLnv2", + ], ); @override - Future crateMultimintMultimintGuardianMetaWithdraw({ + Future crateMultimintMultimintRecheckAddress({ required Multimint that, required FederationId federationId, - required int peer, - required String password, + required BigInt tweakIdx, }) { return handler.executeNormal( NormalTask( @@ -4911,12 +4783,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); + sse_encode_u_64(tweakIdx, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 84, + funcId: 85, port: port_, ); }, @@ -4924,26 +4795,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintGuardianMetaWithdrawConstMeta, - argValues: [that, federationId, peer, password], + constMeta: kCrateMultimintMultimintRecheckAddressConstMeta, + argValues: [that, federationId, tweakIdx], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianMetaWithdrawConstMeta => + TaskConstMeta get kCrateMultimintMultimintRecheckAddressConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_meta_withdraw", - argNames: ["that", "federationId", "peer", "password"], + debugName: "Multimint_recheck_address", + argNames: ["that", "federationId", "tweakIdx"], ); @override - Future crateMultimintMultimintGuardianRemoveGateway({ + Future crateMultimintMultimintRecoverLnAddress({ required Multimint that, required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, + required String lnAddressApi, + required String recurringdApi, }) { return handler.executeNormal( NormalTask( @@ -4957,39 +4827,35 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); - sse_encode_String(gatewayUrl, serializer); + sse_encode_String(lnAddressApi, serializer); + sse_encode_String(recurringdApi, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 85, + funcId: 86, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, + decodeSuccessData: sse_decode_unit, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintGuardianRemoveGatewayConstMeta, - argValues: [that, federationId, peer, password, gatewayUrl], + constMeta: kCrateMultimintMultimintRecoverLnAddressConstMeta, + argValues: [that, federationId, lnAddressApi, recurringdApi], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianRemoveGatewayConstMeta => + TaskConstMeta get kCrateMultimintMultimintRecoverLnAddressConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_remove_gateway", - argNames: ["that", "federationId", "peer", "password", "gatewayUrl"], + debugName: "Multimint_recover_ln_address", + argNames: ["that", "federationId", "lnAddressApi", "recurringdApi"], ); @override - Future crateMultimintMultimintGuardianStatus({ + Future crateMultimintMultimintRefreshConnections({ required Multimint that, - required FederationId federationId, - required int peer, - required String password, }) { return handler.executeNormal( NormalTask( @@ -4999,39 +4865,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 86, + funcId: 87, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_guardian_status_summary, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintGuardianStatusConstMeta, - argValues: [that, federationId, peer, password], + constMeta: kCrateMultimintMultimintRefreshConnectionsConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGuardianStatusConstMeta => + TaskConstMeta get kCrateMultimintMultimintRefreshConnectionsConstMeta => const TaskConstMeta( - debugName: "Multimint_guardian_status", - argNames: ["that", "federationId", "peer", "password"], + debugName: "Multimint_refresh_connections", + argNames: ["that"], ); @override - Future crateMultimintMultimintHasSeedPhraseAck({ + Future crateMultimintMultimintRegisterLnAddress({ required Multimint that, + required FederationId federationId, + required String recurringdApi, + required String lnAddressApi, + required String username, + required String domain, }) { return handler.executeNormal( NormalTask( @@ -5041,75 +4906,102 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(recurringdApi, serializer); + sse_encode_String(lnAddressApi, serializer); + sse_encode_String(username, serializer); + sse_encode_String(domain, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 87, + funcId: 88, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintHasSeedPhraseAckConstMeta, - argValues: [that], + constMeta: kCrateMultimintMultimintRegisterLnAddressConstMeta, + argValues: [ + that, + federationId, + recurringdApi, + lnAddressApi, + username, + domain, + ], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintHasSeedPhraseAckConstMeta => + TaskConstMeta get kCrateMultimintMultimintRegisterLnAddressConstMeta => const TaskConstMeta( - debugName: "Multimint_has_seed_phrase_ack", - argNames: ["that"], + debugName: "Multimint_register_ln_address", + argNames: [ + "that", + "federationId", + "recurringdApi", + "lnAddressApi", + "username", + "domain", + ], ); @override - Future crateMultimintMultimintJoinFederation({ + Future crateMultimintMultimintReissueEcash({ required Multimint that, - required String invite, - required bool recover, + required FederationId federationId, + required String ecash, + required ReissueFees fees, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_String(invite, serializer); - sse_encode_bool(recover, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(ecash, serializer); + sse_encode_box_autoadd_reissue_fees(fees, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 88, + funcId: 89, port: port_, ); }, codec: SseCodec( decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationSelector, - decodeErrorData: sse_decode_AnyhowException, + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintJoinFederationConstMeta, - argValues: [that, invite, recover], + constMeta: kCrateMultimintMultimintReissueEcashConstMeta, + argValues: [that, federationId, ecash, fees], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintJoinFederationConstMeta => + TaskConstMeta get kCrateMultimintMultimintReissueEcashConstMeta => const TaskConstMeta( - debugName: "Multimint_join_federation", - argNames: ["that", "invite", "recover"], + debugName: "Multimint_reissue_ecash", + argNames: ["that", "federationId", "ecash", "fees"], ); @override - Future crateMultimintMultimintLeaveFederation({ + Future crateMultimintMultimintRejoinFromBackupInvites({ required Multimint that, - required FederationId federationId, + required List backupInviteCodes, }) { return handler.executeNormal( NormalTask( @@ -5119,14 +5011,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); + sse_encode_list_String(backupInviteCodes, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 89, + funcId: 90, port: port_, ); }, @@ -5134,26 +5023,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintLeaveFederationConstMeta, - argValues: [that, federationId], + constMeta: kCrateMultimintMultimintRejoinFromBackupInvitesConstMeta, + argValues: [that, backupInviteCodes], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintLeaveFederationConstMeta => + TaskConstMeta get kCrateMultimintMultimintRejoinFromBackupInvitesConstMeta => const TaskConstMeta( - debugName: "Multimint_leave_federation", - argNames: ["that", "federationId"], + debugName: "Multimint_rejoin_from_backup_invites", + argNames: ["that", "backupInviteCodes"], ); @override - Future crateMultimintMultimintMaxLightningSend({ + Future crateMultimintMultimintSelectSendGateway({ required Multimint that, required FederationId federationId, - required SafeUrl gateway, - required bool isLnv2, - required bool loopback, + required Amount amount, + required Bolt11Invoice bolt11, }) { return handler.executeNormal( NormalTask( @@ -5167,79 +5055,123 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( - gateway, + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAmount( + amount, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBolt11Invoice( + bolt11, serializer, ); - sse_encode_bool(isLnv2, serializer); - sse_encode_bool(loopback, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 90, + funcId: 91, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, + decodeSuccessData: sse_decode_send_gateway_selection, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintMaxLightningSendConstMeta, - argValues: [that, federationId, gateway, isLnv2, loopback], + constMeta: kCrateMultimintMultimintSelectSendGatewayConstMeta, + argValues: [that, federationId, amount, bolt11], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintMaxLightningSendConstMeta => + TaskConstMeta get kCrateMultimintMultimintSelectSendGatewayConstMeta => const TaskConstMeta( - debugName: "Multimint_max_lightning_send", - argNames: ["that", "federationId", "gateway", "isLnv2", "loopback"], + debugName: "Multimint_select_send_gateway", + argNames: ["that", "federationId", "amount", "bolt11"], ); @override - Future crateMultimintMultimintNew({ - required Database db, - required MultimintCreation creationType, + Future crateMultimintMultimintSend({ + required Multimint that, + required FederationId federationId, + required String invoice, + required SafeUrl gateway, + required bool isLnv2, + required BigInt amountWithFees, + required BigInt federationFeeMsats, + required BigInt gatewayFeeMsats, + String? lnAddress, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDatabase( - db, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + that, serializer, ); - sse_encode_box_autoadd_multimint_creation(creationType, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(invoice, serializer); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + gateway, + serializer, + ); + sse_encode_bool(isLnv2, serializer); + sse_encode_u_64(amountWithFees, serializer); + sse_encode_u_64(federationFeeMsats, serializer); + sse_encode_u_64(gatewayFeeMsats, serializer); + sse_encode_opt_String(lnAddress, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 91, + funcId: 92, port: port_, ); }, codec: SseCodec( decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint, - decodeErrorData: sse_decode_AnyhowException, + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintNewConstMeta, - argValues: [db, creationType], + constMeta: kCrateMultimintMultimintSendConstMeta, + argValues: [ + that, + federationId, + invoice, + gateway, + isLnv2, + amountWithFees, + federationFeeMsats, + gatewayFeeMsats, + lnAddress, + ], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintNewConstMeta => const TaskConstMeta( - debugName: "Multimint_new", - argNames: ["db", "creationType"], - ); + TaskConstMeta get kCrateMultimintMultimintSendConstMeta => + const TaskConstMeta( + debugName: "Multimint_send", + argNames: [ + "that", + "federationId", + "invoice", + "gateway", + "isLnv2", + "amountWithFees", + "federationFeeMsats", + "gatewayFeeMsats", + "lnAddress", + ], + ); @override - Future crateMultimintMultimintParseEcash({ + Future crateMultimintMultimintSendEcash({ required Multimint that, required FederationId federationId, - required OobNotes notes, + required BigInt amountMsats, + required BigInt feeMsats, }) { return handler.executeNormal( NormalTask( @@ -5253,41 +5185,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotes( - notes, - serializer, - ); + sse_encode_u_64(amountMsats, serializer); + sse_encode_u_64(feeMsats, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 92, + funcId: 93, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOOBNotesWrapper, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintParseEcashConstMeta, - argValues: [that, federationId, notes], + constMeta: kCrateMultimintMultimintSendEcashConstMeta, + argValues: [that, federationId, amountMsats, feeMsats], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintParseEcashConstMeta => + TaskConstMeta get kCrateMultimintMultimintSendEcashConstMeta => const TaskConstMeta( - debugName: "Multimint_parse_ecash", - argNames: ["that", "federationId", "notes"], + debugName: "Multimint_send_ecash", + argNames: ["that", "federationId", "amountMsats", "feeMsats"], ); @override - Future crateMultimintMultimintProbeInvoiceIsLoopback({ + Future crateMultimintMultimintSetBitcoinDisplay({ required Multimint that, - required FederationId federationId, - required SafeUrl gateway, - required bool isLnv2, - required Bolt11Invoice invoice, + required BitcoinDisplay bitcoinDisplay, }) { return handler.executeNormal( NormalTask( @@ -5297,53 +5225,35 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( - gateway, - serializer, - ); - sse_encode_bool(isLnv2, serializer); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBolt11Invoice( - invoice, - serializer, - ); + sse_encode_bitcoin_display(bitcoinDisplay, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 93, + funcId: 94, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintProbeInvoiceIsLoopbackConstMeta, - argValues: [that, federationId, gateway, isLnv2, invoice], + constMeta: kCrateMultimintMultimintSetBitcoinDisplayConstMeta, + argValues: [that, bitcoinDisplay], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintProbeInvoiceIsLoopbackConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetBitcoinDisplayConstMeta => const TaskConstMeta( - debugName: "Multimint_probe_invoice_is_loopback", - argNames: ["that", "federationId", "gateway", "isLnv2", "invoice"], + debugName: "Multimint_set_bitcoin_display", + argNames: ["that", "bitcoinDisplay"], ); @override - Future<(Bolt11Invoice, OperationId)> crateMultimintMultimintReceive({ + Future crateMultimintMultimintSetFederationOrder({ required Multimint that, - required FederationId federationId, - required BigInt amountMsatsWithFees, - required BigInt amountMsatsWithoutFees, - required BigInt federationFeeMsats, - required BigInt gatewayFeeMsats, - required SafeUrl gateway, - required bool isLnv2, + required List order, }) { return handler.executeNormal( NormalTask( @@ -5353,67 +5263,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_64(amountMsatsWithFees, serializer); - sse_encode_u_64(amountMsatsWithoutFees, serializer); - sse_encode_u_64(federationFeeMsats, serializer); - sse_encode_u_64(gatewayFeeMsats, serializer); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( - gateway, + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + order, serializer, ); - sse_encode_bool(isLnv2, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 94, + funcId: 95, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_bolt_11_invoice_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_operation_id, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintReceiveConstMeta, - argValues: [ - that, - federationId, - amountMsatsWithFees, - amountMsatsWithoutFees, - federationFeeMsats, - gatewayFeeMsats, - gateway, - isLnv2, - ], + constMeta: kCrateMultimintMultimintSetFederationOrderConstMeta, + argValues: [that, order], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintReceiveConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetFederationOrderConstMeta => const TaskConstMeta( - debugName: "Multimint_receive", - argNames: [ - "that", - "federationId", - "amountMsatsWithFees", - "amountMsatsWithoutFees", - "federationFeeMsats", - "gatewayFeeMsats", - "gateway", - "isLnv2", - ], + debugName: "Multimint_set_federation_order", + argNames: ["that", "order"], ); @override - Future crateMultimintMultimintRecheckAddress({ + Future crateMultimintMultimintSetFiatCurrency({ required Multimint that, - required FederationId federationId, - required BigInt tweakIdx, + required FiatCurrency fiatCurrency, }) { return handler.executeNormal( NormalTask( @@ -5423,41 +5304,35 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_64(tweakIdx, serializer); + sse_encode_fiat_currency(fiatCurrency, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 95, + funcId: 96, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintRecheckAddressConstMeta, - argValues: [that, federationId, tweakIdx], + constMeta: kCrateMultimintMultimintSetFiatCurrencyConstMeta, + argValues: [that, fiatCurrency], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRecheckAddressConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetFiatCurrencyConstMeta => const TaskConstMeta( - debugName: "Multimint_recheck_address", - argNames: ["that", "federationId", "tweakIdx"], + debugName: "Multimint_set_fiat_currency", + argNames: ["that", "fiatCurrency"], ); @override - Future crateMultimintMultimintRecoverLnAddress({ + Future crateMultimintMultimintSetPinHash({ required Multimint that, - required FederationId federationId, - required String lnAddressApi, - required String recurringdApi, + required String pin, }) { return handler.executeNormal( NormalTask( @@ -5467,16 +5342,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_String(lnAddressApi, serializer); - sse_encode_String(recurringdApi, serializer); + sse_encode_String(pin, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 96, + funcId: 97, port: port_, ); }, @@ -5484,22 +5354,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintRecoverLnAddressConstMeta, - argValues: [that, federationId, lnAddressApi, recurringdApi], + constMeta: kCrateMultimintMultimintSetPinHashConstMeta, + argValues: [that, pin], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRecoverLnAddressConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetPinHashConstMeta => const TaskConstMeta( - debugName: "Multimint_recover_ln_address", - argNames: ["that", "federationId", "lnAddressApi", "recurringdApi"], + debugName: "Multimint_set_pin_hash", + argNames: ["that", "pin"], ); @override - Future crateMultimintMultimintRefreshConnections({ + Future crateMultimintMultimintSetRequirePinForSpending({ required Multimint that, + required bool require, }) { return handler.executeNormal( NormalTask( @@ -5509,10 +5380,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_bool(require, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 97, + funcId: 98, port: port_, ); }, @@ -5520,23 +5392,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintRefreshConnectionsConstMeta, - argValues: [that], + constMeta: kCrateMultimintMultimintSetRequirePinForSpendingConstMeta, + argValues: [that, require], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRefreshConnectionsConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetRequirePinForSpendingConstMeta => const TaskConstMeta( - debugName: "Multimint_refresh_connections", - argNames: ["that"], + debugName: "Multimint_set_require_pin_for_spending", + argNames: ["that", "require"], ); @override - Future crateMultimintMultimintRefreshFederationMeta({ + Future crateMultimintMultimintSetShowMsats({ required Multimint that, - required FederationId federationId, + required bool showMsats, }) { return handler.executeNormal( NormalTask( @@ -5546,43 +5418,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); + sse_encode_bool(showMsats, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 98, + funcId: 99, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationMeta, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintRefreshFederationMetaConstMeta, - argValues: [that, federationId], + constMeta: kCrateMultimintMultimintSetShowMsatsConstMeta, + argValues: [that, showMsats], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRefreshFederationMetaConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetShowMsatsConstMeta => const TaskConstMeta( - debugName: "Multimint_refresh_federation_meta", - argNames: ["that", "federationId"], + debugName: "Multimint_set_show_msats", + argNames: ["that", "showMsats"], ); @override - Future crateMultimintMultimintRegisterLnAddress({ + Future> crateMultimintMultimintTransactions({ required Multimint that, required FederationId federationId, - required String recurringdApi, - required String lnAddressApi, - required String username, - required String domain, + BigInt? timestamp, + Uint8List? operationId, + required List modules, }) { return handler.executeNormal( NormalTask( @@ -5596,54 +5463,43 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_String(recurringdApi, serializer); - sse_encode_String(lnAddressApi, serializer); - sse_encode_String(username, serializer); - sse_encode_String(domain, serializer); + sse_encode_opt_box_autoadd_u_64(timestamp, serializer); + sse_encode_opt_list_prim_u_8_strict(operationId, serializer); + sse_encode_list_String(modules, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 99, + funcId: 100, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_list_transaction, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintRegisterLnAddressConstMeta, - argValues: [ - that, - federationId, - recurringdApi, - lnAddressApi, - username, - domain, - ], + constMeta: kCrateMultimintMultimintTransactionsConstMeta, + argValues: [that, federationId, timestamp, operationId, modules], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRegisterLnAddressConstMeta => + TaskConstMeta get kCrateMultimintMultimintTransactionsConstMeta => const TaskConstMeta( - debugName: "Multimint_register_ln_address", + debugName: "Multimint_transactions", argNames: [ "that", "federationId", - "recurringdApi", - "lnAddressApi", - "username", - "domain", + "timestamp", + "operationId", + "modules", ], ); @override - Future crateMultimintMultimintReissueEcash({ + Future crateMultimintMultimintVerifyPin({ required Multimint that, - required FederationId federationId, - required String ecash, - required ReissueFees fees, + required String pin, }) { return handler.executeNormal( NormalTask( @@ -5653,86 +5509,82 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_String(ecash, serializer); - sse_encode_box_autoadd_reissue_fees(fees, serializer); + sse_encode_String(pin, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 100, + funcId: 101, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, + decodeSuccessData: sse_decode_bool, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintReissueEcashConstMeta, - argValues: [that, federationId, ecash, fees], + constMeta: kCrateMultimintMultimintVerifyPinConstMeta, + argValues: [that, pin], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintReissueEcashConstMeta => + TaskConstMeta get kCrateMultimintMultimintVerifyPinConstMeta => const TaskConstMeta( - debugName: "Multimint_reissue_ecash", - argNames: ["that", "federationId", "ecash", "fees"], + debugName: "Multimint_verify_pin", + argNames: ["that", "pin"], ); @override - Future crateMultimintMultimintRejoinFromBackupInvites({ + Future> crateMultimintMultimintWalletSummary({ required Multimint that, - required List backupInviteCodes, + String? invite, + FederationId? federationId, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_list_String(backupInviteCodes, serializer); + sse_encode_opt_String(invite, serializer); + sse_encode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 101, + funcId: 102, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: sse_decode_list_utxo, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintRejoinFromBackupInvitesConstMeta, - argValues: [that, backupInviteCodes], + constMeta: kCrateMultimintMultimintWalletSummaryConstMeta, + argValues: [that, invite, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRejoinFromBackupInvitesConstMeta => + TaskConstMeta get kCrateMultimintMultimintWalletSummaryConstMeta => const TaskConstMeta( - debugName: "Multimint_rejoin_from_backup_invites", - argNames: ["that", "backupInviteCodes"], + debugName: "Multimint_wallet_summary", + argNames: ["that", "invite", "federationId"], ); @override - Future crateMultimintMultimintSend({ + Future crateMultimintMultimintWithdrawToAddress({ required Multimint that, required FederationId federationId, - required String invoice, - required SafeUrl gateway, - required bool isLnv2, - required BigInt amountWithFees, + required String address, + required BigInt amountSats, + required WithdrawFees fees, required BigInt federationFeeMsats, - required BigInt gatewayFeeMsats, - String? lnAddress, }) { return handler.executeNormal( NormalTask( @@ -5746,20 +5598,17 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_String(invoice, serializer); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( - gateway, + sse_encode_String(address, serializer); + sse_encode_u_64(amountSats, serializer); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( + fees, serializer, ); - sse_encode_bool(isLnv2, serializer); - sse_encode_u_64(amountWithFees, serializer); sse_encode_u_64(federationFeeMsats, serializer); - sse_encode_u_64(gatewayFeeMsats, serializer); - sse_encode_opt_String(lnAddress, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 102, + funcId: 103, port: port_, ); }, @@ -5768,407 +5617,334 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintSendConstMeta, + constMeta: kCrateMultimintMultimintWithdrawToAddressConstMeta, argValues: [ that, federationId, - invoice, - gateway, - isLnv2, - amountWithFees, + address, + amountSats, + fees, federationFeeMsats, - gatewayFeeMsats, - lnAddress, ], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSendConstMeta => + TaskConstMeta get kCrateMultimintMultimintWithdrawToAddressConstMeta => const TaskConstMeta( - debugName: "Multimint_send", + debugName: "Multimint_withdraw_to_address", argNames: [ "that", "federationId", - "invoice", - "gateway", - "isLnv2", - "amountWithFees", + "address", + "amountSats", + "fees", "federationFeeMsats", - "gatewayFeeMsats", - "lnAddress", ], ); @override - Future crateMultimintMultimintSendEcash({ - required Multimint that, - required FederationId federationId, - required BigInt amountMsats, - required BigInt feeMsats, + Future crateNostrNostrClientBackupInviteCodes({ + required NostrClient that, + required List inviteCodes, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_64(amountMsats, serializer); - sse_encode_u_64(feeMsats, serializer); + sse_encode_list_String(inviteCodes, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 103, + funcId: 104, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOOBNotesWrapper, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintSendEcashConstMeta, - argValues: [that, federationId, amountMsats, feeMsats], + constMeta: kCrateNostrNostrClientBackupInviteCodesConstMeta, + argValues: [that, inviteCodes], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSendEcashConstMeta => + TaskConstMeta get kCrateNostrNostrClientBackupInviteCodesConstMeta => const TaskConstMeta( - debugName: "Multimint_send_ecash", - argNames: ["that", "federationId", "amountMsats", "feeMsats"], + debugName: "NostrClient_backup_invite_codes", + argNames: ["that", "inviteCodes"], ); @override - Future crateMultimintMultimintSetBitcoinDisplay({ - required Multimint that, - required BitcoinDisplay bitcoinDisplay, + Future crateNostrNostrClientClearContactsAndStopSync({ + required NostrClient that, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_bitcoin_display(bitcoinDisplay, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 104, + funcId: 105, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_usize, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintSetBitcoinDisplayConstMeta, - argValues: [that, bitcoinDisplay], + constMeta: kCrateNostrNostrClientClearContactsAndStopSyncConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetBitcoinDisplayConstMeta => + TaskConstMeta get kCrateNostrNostrClientClearContactsAndStopSyncConstMeta => const TaskConstMeta( - debugName: "Multimint_set_bitcoin_display", - argNames: ["that", "bitcoinDisplay"], + debugName: "NostrClient_clear_contacts_and_stop_sync", + argNames: ["that"], ); @override - Future crateMultimintMultimintSetFederationOrder({ - required Multimint that, - required List order, + Future> crateNostrNostrClientFetchNostrProfiles({ + required NostrClient that, + required List npubs, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - order, - serializer, - ); + sse_encode_list_String(npubs, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 105, + funcId: 106, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: sse_decode_list_nostr_profile, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintSetFederationOrderConstMeta, - argValues: [that, order], + constMeta: kCrateNostrNostrClientFetchNostrProfilesConstMeta, + argValues: [that, npubs], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetFederationOrderConstMeta => + TaskConstMeta get kCrateNostrNostrClientFetchNostrProfilesConstMeta => const TaskConstMeta( - debugName: "Multimint_set_federation_order", - argNames: ["that", "order"], + debugName: "NostrClient_fetch_nostr_profiles", + argNames: ["that", "npubs"], ); @override - Future crateMultimintMultimintSetFiatCurrency({ - required Multimint that, - required FiatCurrency fiatCurrency, + Future> crateNostrNostrClientGetAllContacts({ + required NostrClient that, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_fiat_currency(fiatCurrency, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 106, + funcId: 107, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_list_contact, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintSetFiatCurrencyConstMeta, - argValues: [that, fiatCurrency], + constMeta: kCrateNostrNostrClientGetAllContactsConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetFiatCurrencyConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetAllContactsConstMeta => const TaskConstMeta( - debugName: "Multimint_set_fiat_currency", - argNames: ["that", "fiatCurrency"], + debugName: "NostrClient_get_all_contacts", + argNames: ["that"], ); @override - Future crateMultimintMultimintSetShowMsats({ - required Multimint that, - required bool showMsats, + Future> crateNostrNostrClientGetBackupInviteCodes({ + required NostrClient that, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_bool(showMsats, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 107, + funcId: 108, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_list_String, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintSetShowMsatsConstMeta, - argValues: [that, showMsats], + constMeta: kCrateNostrNostrClientGetBackupInviteCodesConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetShowMsatsConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetBackupInviteCodesConstMeta => const TaskConstMeta( - debugName: "Multimint_set_show_msats", - argNames: ["that", "showMsats"], + debugName: "NostrClient_get_backup_invite_codes", + argNames: ["that"], ); @override - Future> crateMultimintMultimintTransactions({ - required Multimint that, - required FederationId federationId, - BigInt? timestamp, - Uint8List? operationId, - required List modules, + Future crateNostrNostrClientGetContact({ + required NostrClient that, + required String npub, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_opt_box_autoadd_u_64(timestamp, serializer); - sse_encode_opt_list_prim_u_8_strict(operationId, serializer); - sse_encode_list_String(modules, serializer); + sse_encode_String(npub, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 108, + funcId: 109, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_transaction, + decodeSuccessData: sse_decode_opt_box_autoadd_contact, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintTransactionsConstMeta, - argValues: [that, federationId, timestamp, operationId, modules], + constMeta: kCrateNostrNostrClientGetContactConstMeta, + argValues: [that, npub], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintTransactionsConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetContactConstMeta => const TaskConstMeta( - debugName: "Multimint_transactions", - argNames: [ - "that", - "federationId", - "timestamp", - "operationId", - "modules", - ], + debugName: "NostrClient_get_contact", + argNames: ["that", "npub"], ); @override - Future> crateMultimintMultimintWalletSummary({ - required Multimint that, - String? invite, - FederationId? federationId, + Future crateNostrNostrClientGetContactSyncConfig({ + required NostrClient that, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_opt_String(invite, serializer); - sse_encode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 109, + funcId: 110, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_utxo, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_opt_box_autoadd_contact_sync_config, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintWalletSummaryConstMeta, - argValues: [that, invite, federationId], + constMeta: kCrateNostrNostrClientGetContactSyncConfigConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintWalletSummaryConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetContactSyncConfigConstMeta => const TaskConstMeta( - debugName: "Multimint_wallet_summary", - argNames: ["that", "invite", "federationId"], + debugName: "NostrClient_get_contact_sync_config", + argNames: ["that"], ); @override - Future crateMultimintMultimintWithdrawToAddress({ - required Multimint that, - required FederationId federationId, - required String address, - required BigInt amountSats, - required WithdrawFees fees, - required BigInt federationFeeMsats, + Future> crateNostrNostrClientGetFollowsForPubkey({ + required NostrClient that, + required String npub, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_String(address, serializer); - sse_encode_u_64(amountSats, serializer); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( - fees, - serializer, - ); - sse_encode_u_64(federationFeeMsats, serializer); + sse_encode_String(npub, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 110, + funcId: 111, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, - decodeErrorData: null, + decodeSuccessData: sse_decode_list_String, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintWithdrawToAddressConstMeta, - argValues: [ - that, - federationId, - address, - amountSats, - fees, - federationFeeMsats, - ], + constMeta: kCrateNostrNostrClientGetFollowsForPubkeyConstMeta, + argValues: [that, npub], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintWithdrawToAddressConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetFollowsForPubkeyConstMeta => const TaskConstMeta( - debugName: "Multimint_withdraw_to_address", - argNames: [ - "that", - "federationId", - "address", - "amountSats", - "fees", - "federationFeeMsats", - ], + debugName: "NostrClient_get_follows_for_pubkey", + argNames: ["that", "npub"], ); @override - Future crateNostrNostrClientBackupInviteCodes({ + Future<(NostrWalletConnectConfig, NWCConnectionInfo)> + crateNostrNostrClientGetNwcConfig({ required NostrClient that, - required List inviteCodes, + required FederationId federationId, }) { return handler.executeNormal( NormalTask( @@ -6178,35 +5954,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_list_String(inviteCodes, serializer); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 111, + funcId: 112, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_record_nostr_wallet_connect_config_nwc_connection_info, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientBackupInviteCodesConstMeta, - argValues: [that, inviteCodes], + constMeta: kCrateNostrNostrClientGetNwcConfigConstMeta, + argValues: [that, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientBackupInviteCodesConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetNwcConfigConstMeta => const TaskConstMeta( - debugName: "NostrClient_backup_invite_codes", - argNames: ["that", "inviteCodes"], + debugName: "NostrClient_get_nwc_config", + argNames: ["that", "federationId"], ); @override - Future crateNostrNostrClientClearContactsAndStopSync({ - required NostrClient that, - }) { + Future> + crateNostrNostrClientGetNwcConnectionInfo({required NostrClient that}) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -6218,67 +5997,69 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 112, + funcId: 113, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_usize, + decodeSuccessData: + sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_nwc_connection_info, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientClearContactsAndStopSyncConstMeta, + constMeta: kCrateNostrNostrClientGetNwcConnectionInfoConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientClearContactsAndStopSyncConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetNwcConnectionInfoConstMeta => const TaskConstMeta( - debugName: "NostrClient_clear_contacts_and_stop_sync", + debugName: "NostrClient_get_nwc_connection_info", argNames: ["that"], ); @override - Future> crateNostrNostrClientFetchNostrProfiles({ + Future> crateNostrNostrClientGetPublicFederations({ required NostrClient that, - required List npubs, + required bool forceUpdate, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_list_String(npubs, serializer); + sse_encode_bool(forceUpdate, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 113, + funcId: 114, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_nostr_profile, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation, + decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientFetchNostrProfilesConstMeta, - argValues: [that, npubs], + constMeta: kCrateNostrNostrClientGetPublicFederationsConstMeta, + argValues: [that, forceUpdate], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientFetchNostrProfilesConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetPublicFederationsConstMeta => const TaskConstMeta( - debugName: "NostrClient_fetch_nostr_profiles", - argNames: ["that", "npubs"], + debugName: "NostrClient_get_public_federations", + argNames: ["that", "forceUpdate"], ); @override - Future> crateNostrNostrClientGetAllContacts({ + Future> crateNostrNostrClientGetRelays({ required NostrClient that, }) { return handler.executeNormal( @@ -6292,29 +6073,29 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 114, + funcId: 115, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_contact, + decodeSuccessData: sse_decode_list_record_string_bool, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetAllContactsConstMeta, + constMeta: kCrateNostrNostrClientGetRelaysConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetAllContactsConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetRelaysConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_all_contacts", + debugName: "NostrClient_get_relays", argNames: ["that"], ); @override - Future> crateNostrNostrClientGetBackupInviteCodes({ + Future crateNostrNostrClientHasImportedContacts({ required NostrClient that, }) { return handler.executeNormal( @@ -6328,31 +6109,31 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 115, + funcId: 116, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_String, + decodeSuccessData: sse_decode_bool, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetBackupInviteCodesConstMeta, + constMeta: kCrateNostrNostrClientHasImportedContactsConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetBackupInviteCodesConstMeta => + TaskConstMeta get kCrateNostrNostrClientHasImportedContactsConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_backup_invite_codes", + debugName: "NostrClient_has_imported_contacts", argNames: ["that"], ); @override - Future crateNostrNostrClientGetContact({ + Future crateNostrNostrClientInsertRelay({ required NostrClient that, - required String npub, + required String relayUri, }) { return handler.executeNormal( NormalTask( @@ -6362,108 +6143,118 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_String(npub, serializer); + sse_encode_String(relayUri, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 116, + funcId: 117, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_opt_box_autoadd_contact, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientGetContactConstMeta, - argValues: [that, npub], + constMeta: kCrateNostrNostrClientInsertRelayConstMeta, + argValues: [that, relayUri], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetContactConstMeta => + TaskConstMeta get kCrateNostrNostrClientInsertRelayConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_contact", - argNames: ["that", "npub"], + debugName: "NostrClient_insert_relay", + argNames: ["that", "relayUri"], ); @override - Future crateNostrNostrClientGetContactSyncConfig({ - required NostrClient that, + Future crateNostrNostrClientListenForNwc({ + required FederationId federationId, + required NostrWalletConnectConfig nwcConfig, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( - that, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_box_autoadd_nostr_wallet_connect_config( + nwcConfig, serializer, ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 117, + funcId: 118, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_opt_box_autoadd_contact_sync_config, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetContactSyncConfigConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientListenForNwcConstMeta, + argValues: [federationId, nwcConfig], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetContactSyncConfigConstMeta => + TaskConstMeta get kCrateNostrNostrClientListenForNwcConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_contact_sync_config", - argNames: ["that"], + debugName: "NostrClient_listen_for_nwc", + argNames: ["federationId", "nwcConfig"], ); @override - Future> crateNostrNostrClientGetFollowsForPubkey({ - required NostrClient that, - required String npub, + Future crateNostrNostrClientNew({ + required Database db, + required List recoverRelays, + required bool isDesktop, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( - that, + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDatabase( + db, serializer, ); - sse_encode_String(npub, serializer); + sse_encode_list_String(recoverRelays, serializer); + sse_encode_bool(isDesktop, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 118, + funcId: 119, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_String, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientGetFollowsForPubkeyConstMeta, - argValues: [that, npub], + constMeta: kCrateNostrNostrClientNewConstMeta, + argValues: [db, recoverRelays, isDesktop], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetFollowsForPubkeyConstMeta => - const TaskConstMeta( - debugName: "NostrClient_get_follows_for_pubkey", - argNames: ["that", "npub"], - ); + TaskConstMeta get kCrateNostrNostrClientNewConstMeta => const TaskConstMeta( + debugName: "NostrClient_new", + argNames: ["db", "recoverRelays", "isDesktop"], + ); @override - Future> - crateNostrNostrClientGetNwcConnectionInfo({required NostrClient that}) { + Future> crateNostrNostrClientPaginateContacts({ + required NostrClient that, + ContactCursor? cursor, + required BigInt limit, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -6472,73 +6263,78 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_opt_box_autoadd_contact_cursor(cursor, serializer); + sse_encode_usize(limit, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 119, + funcId: 120, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_nwc_connection_info, + decodeSuccessData: sse_decode_list_contact, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetNwcConnectionInfoConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientPaginateContactsConstMeta, + argValues: [that, cursor, limit], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetNwcConnectionInfoConstMeta => + TaskConstMeta get kCrateNostrNostrClientPaginateContactsConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_nwc_connection_info", - argNames: ["that"], + debugName: "NostrClient_paginate_contacts", + argNames: ["that", "cursor", "limit"], ); @override - Future> crateNostrNostrClientGetPublicFederations({ + Future> crateNostrNostrClientPaginateSearchContacts({ required NostrClient that, - required bool forceUpdate, + required String query, + ContactCursor? cursor, + required BigInt limit, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_bool(forceUpdate, serializer); + sse_encode_String(query, serializer); + sse_encode_opt_box_autoadd_contact_cursor(cursor, serializer); + sse_encode_usize(limit, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 120, + funcId: 121, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation, + decodeSuccessData: sse_decode_list_contact, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetPublicFederationsConstMeta, - argValues: [that, forceUpdate], + constMeta: kCrateNostrNostrClientPaginateSearchContactsConstMeta, + argValues: [that, query, cursor, limit], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetPublicFederationsConstMeta => + TaskConstMeta get kCrateNostrNostrClientPaginateSearchContactsConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_public_federations", - argNames: ["that", "forceUpdate"], + debugName: "NostrClient_paginate_search_contacts", + argNames: ["that", "query", "cursor", "limit"], ); @override - Future> crateNostrNostrClientGetRelays({ + Future crateNostrNostrClientRemoveNwcConnectionInfo({ required NostrClient that, + required FederationId federationId, }) { return handler.executeNormal( NormalTask( @@ -6548,33 +6344,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 121, + funcId: 122, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_record_string_bool, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetRelaysConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientRemoveNwcConnectionInfoConstMeta, + argValues: [that, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetRelaysConstMeta => + TaskConstMeta get kCrateNostrNostrClientRemoveNwcConnectionInfoConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_relays", - argNames: ["that"], + debugName: "NostrClient_remove_nwc_connection_info", + argNames: ["that", "federationId"], ); @override - Future crateNostrNostrClientHasImportedContacts({ + Future crateNostrNostrClientRemoveRelay({ required NostrClient that, + required String relayUri, }) { return handler.executeNormal( NormalTask( @@ -6584,34 +6385,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_String(relayUri, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 122, + funcId: 123, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientHasImportedContactsConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientRemoveRelayConstMeta, + argValues: [that, relayUri], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientHasImportedContactsConstMeta => + TaskConstMeta get kCrateNostrNostrClientRemoveRelayConstMeta => const TaskConstMeta( - debugName: "NostrClient_has_imported_contacts", - argNames: ["that"], + debugName: "NostrClient_remove_relay", + argNames: ["that", "relayUri"], ); @override - Future crateNostrNostrClientInsertRelay({ + Future crateNostrNostrClientSetContactSyncConfig({ required NostrClient that, - required String relayUri, + required String npub, + required bool enabled, }) { return handler.executeNormal( NormalTask( @@ -6621,270 +6424,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_String(relayUri, serializer); + sse_encode_String(npub, serializer); + sse_encode_bool(enabled, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 123, + funcId: 124, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientInsertRelayConstMeta, - argValues: [that, relayUri], + constMeta: kCrateNostrNostrClientSetContactSyncConfigConstMeta, + argValues: [that, npub, enabled], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientInsertRelayConstMeta => + TaskConstMeta get kCrateNostrNostrClientSetContactSyncConfigConstMeta => const TaskConstMeta( - debugName: "NostrClient_insert_relay", - argNames: ["that", "relayUri"], - ); - - @override - Future crateNostrNostrClientNew({ - required Database db, - required List recoverRelays, - required bool isDesktop, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDatabase( - db, - serializer, - ); - sse_encode_list_String(recoverRelays, serializer); - sse_encode_bool(isDesktop, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 124, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateNostrNostrClientNewConstMeta, - argValues: [db, recoverRelays, isDesktop], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateNostrNostrClientNewConstMeta => const TaskConstMeta( - debugName: "NostrClient_new", - argNames: ["db", "recoverRelays", "isDesktop"], - ); - - @override - Future> crateNostrNostrClientPaginateContacts({ - required NostrClient that, - ContactCursor? cursor, - required BigInt limit, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( - that, - serializer, - ); - sse_encode_opt_box_autoadd_contact_cursor(cursor, serializer); - sse_encode_usize(limit, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 125, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_list_contact, - decodeErrorData: null, - ), - constMeta: kCrateNostrNostrClientPaginateContactsConstMeta, - argValues: [that, cursor, limit], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateNostrNostrClientPaginateContactsConstMeta => - const TaskConstMeta( - debugName: "NostrClient_paginate_contacts", - argNames: ["that", "cursor", "limit"], - ); - - @override - Future> crateNostrNostrClientPaginateSearchContacts({ - required NostrClient that, - required String query, - ContactCursor? cursor, - required BigInt limit, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( - that, - serializer, - ); - sse_encode_String(query, serializer); - sse_encode_opt_box_autoadd_contact_cursor(cursor, serializer); - sse_encode_usize(limit, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 126, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_list_contact, - decodeErrorData: null, - ), - constMeta: kCrateNostrNostrClientPaginateSearchContactsConstMeta, - argValues: [that, query, cursor, limit], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateNostrNostrClientPaginateSearchContactsConstMeta => - const TaskConstMeta( - debugName: "NostrClient_paginate_search_contacts", - argNames: ["that", "query", "cursor", "limit"], - ); - - @override - Future crateNostrNostrClientRemoveNwcConnectionInfo({ - required NostrClient that, - required FederationId federationId, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( - that, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 127, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kCrateNostrNostrClientRemoveNwcConnectionInfoConstMeta, - argValues: [that, federationId], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateNostrNostrClientRemoveNwcConnectionInfoConstMeta => - const TaskConstMeta( - debugName: "NostrClient_remove_nwc_connection_info", - argNames: ["that", "federationId"], - ); - - @override - Future crateNostrNostrClientRemoveRelay({ - required NostrClient that, - required String relayUri, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( - that, - serializer, - ); - sse_encode_String(relayUri, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 128, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateNostrNostrClientRemoveRelayConstMeta, - argValues: [that, relayUri], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateNostrNostrClientRemoveRelayConstMeta => - const TaskConstMeta( - debugName: "NostrClient_remove_relay", - argNames: ["that", "relayUri"], - ); - - @override - Future crateNostrNostrClientSetContactSyncConfig({ - required NostrClient that, - required String npub, - required bool enabled, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( - that, - serializer, - ); - sse_encode_String(npub, serializer); - sse_encode_bool(enabled, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 129, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kCrateNostrNostrClientSetContactSyncConfigConstMeta, - argValues: [that, npub, enabled], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateNostrNostrClientSetContactSyncConfigConstMeta => - const TaskConstMeta( - debugName: "NostrClient_set_contact_sync_config", - argNames: ["that", "npub", "enabled"], + debugName: "NostrClient_set_contact_sync_config", + argNames: ["that", "npub", "enabled"], ); @override @@ -6911,7 +6474,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 130, + funcId: 125, port: port_, ); }, @@ -6945,7 +6508,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 131, + funcId: 126, port: port_, ); }, @@ -6983,7 +6546,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 132, + funcId: 127, port: port_, ); }, @@ -7021,7 +6584,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 133, + funcId: 128, )!; }, codec: SseCodec( @@ -7051,7 +6614,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 134, + funcId: 129, )!; }, codec: SseCodec( @@ -7084,7 +6647,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 135, + funcId: 130, )!; }, codec: SseCodec( @@ -7120,7 +6683,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 136, + funcId: 131, port: port_, ); }, @@ -7156,7 +6719,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 137, + funcId: 132, )!; }, codec: SseCodec( @@ -7191,7 +6754,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 138, + funcId: 133, )!; }, codec: SseCodec( @@ -7226,7 +6789,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 139, + funcId: 134, )!; }, codec: SseCodec( @@ -7261,7 +6824,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 140, + funcId: 135, )!; }, codec: SseCodec( @@ -7299,7 +6862,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 141, + funcId: 136, )!; }, codec: SseCodec( @@ -7336,7 +6899,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 142, + funcId: 137, )!; }, codec: SseCodec( @@ -7373,7 +6936,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 143, + funcId: 138, )!; }, codec: SseCodec( @@ -7409,7 +6972,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 144, + funcId: 139, )!; }, codec: SseCodec( @@ -7445,7 +7008,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 145, + funcId: 140, )!; }, codec: SseCodec( @@ -7483,7 +7046,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 146, + funcId: 141, )!; }, codec: SseCodec( @@ -7523,7 +7086,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 147, + funcId: 142, )!; }, codec: SseCodec( @@ -7562,7 +7125,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 148, + funcId: 143, )!; }, codec: SseCodec( @@ -7601,7 +7164,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 149, + funcId: 144, )!; }, codec: SseCodec( @@ -7640,7 +7203,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 150, + funcId: 145, )!; }, codec: SseCodec( @@ -7678,7 +7241,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 151, + funcId: 146, )!; }, codec: SseCodec( @@ -7716,7 +7279,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 152, + funcId: 147, )!; }, codec: SseCodec( @@ -7737,6 +7300,105 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["that", "picture"], ); + @override + String crateTapTransferTapRecipientDecrypt({ + required TapRecipient that, + required List blob, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + that, + serializer, + ); + sse_encode_list_prim_u_8_loose(blob, serializer); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 148, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_ecash_app_error, + ), + constMeta: kCrateTapTransferTapRecipientDecryptConstMeta, + argValues: [that, blob], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateTapTransferTapRecipientDecryptConstMeta => + const TaskConstMeta( + debugName: "TapRecipient_decrypt", + argNames: ["that", "blob"], + ); + + @override + TapRecipient crateTapTransferTapRecipientNew() { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 149, + )!; + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient, + decodeErrorData: null, + ), + constMeta: kCrateTapTransferTapRecipientNewConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateTapTransferTapRecipientNewConstMeta => + const TaskConstMeta(debugName: "TapRecipient_new", argNames: []); + + @override + Uint8List crateTapTransferTapRecipientPublicKey({ + required TapRecipient that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + that, + serializer, + ); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 150, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: null, + ), + constMeta: kCrateTapTransferTapRecipientPublicKeyConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateTapTransferTapRecipientPublicKeyConstMeta => + const TaskConstMeta( + debugName: "TapRecipient_public_key", + argNames: ["that"], + ); + @override BigInt crateMultimintWithdrawFeesResponseAutoAccessorGetFederationFeeMsats({ required WithdrawFeesResponse that, @@ -7752,7 +7414,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 153, + funcId: 151, )!; }, codec: SseCodec( @@ -7790,7 +7452,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 154, + funcId: 152, )!; }, codec: SseCodec( @@ -7827,7 +7489,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 155, + funcId: 153, )!; }, codec: SseCodec( @@ -7865,7 +7527,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 156, + funcId: 154, )!; }, codec: SseCodec( @@ -7903,7 +7565,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 157, + funcId: 155, )!; }, codec: SseCodec( @@ -7942,7 +7604,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 158, + funcId: 156, )!; }, codec: SseCodec( @@ -7982,7 +7644,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 159, + funcId: 157, )!; }, codec: SseCodec( @@ -8021,7 +7683,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 160, + funcId: 158, )!; }, codec: SseCodec( @@ -8064,7 +7726,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 161, + funcId: 159, )!; }, codec: SseCodec( @@ -8103,7 +7765,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 162, + funcId: 160, )!; }, codec: SseCodec( @@ -8134,7 +7796,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 163, + funcId: 161, port: port_, ); }, @@ -8162,7 +7824,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 164, + funcId: 162, port: port_, ); }, @@ -8195,7 +7857,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 165, + funcId: 163, port: port_, ); }, @@ -8217,7 +7879,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); @override - Future<(bool, BigInt?)> crateAwaitEcashReissue({ + Future<(ReissueExternalNotesState, BigInt?)> crateAwaitEcashReissue({ required FederationId federationId, required OperationId operationId, }) { @@ -8236,12 +7898,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 166, + funcId: 164, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_record_bool_opt_box_autoadd_u_64, + decodeSuccessData: + sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_reissue_external_notes_state_opt_box_autoadd_u_64, decodeErrorData: sse_decode_AnyhowException, ), constMeta: kCrateAwaitEcashReissueConstMeta, @@ -8276,7 +7939,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 167, + funcId: 165, port: port_, ); }, @@ -8317,7 +7980,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 168, + funcId: 166, port: port_, ); }, @@ -8357,7 +8020,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 169, + funcId: 167, port: port_, ); }, @@ -8386,7 +8049,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 170, + funcId: 168, port: port_, ); }, @@ -8417,13 +8080,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 171, + funcId: 169, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_u_64, - decodeErrorData: sse_decode_AnyhowException, + decodeErrorData: null, ), constMeta: kCrateBalanceConstMeta, argValues: [federationId], @@ -8452,7 +8115,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 172, + funcId: 170, port: port_, ); }, @@ -8490,7 +8153,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 173, + funcId: 171, port: port_, ); }, @@ -8530,7 +8193,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 174, + funcId: 172, port: port_, ); }, @@ -8551,40 +8214,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["federationId", "address", "amountSats"], ); - @override - Future crateChangePinCode({ - required String currentPin, - required String newPin, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(currentPin, serializer); - sse_encode_String(newPin, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 175, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateChangePinCodeConstMeta, - argValues: [currentPin, newPin], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateChangePinCodeConstMeta => const TaskConstMeta( - debugName: "change_pin_code", - argNames: ["currentPin", "newPin"], - ); - @override Future crateCheckEcashSpent({ required FederationId federationId, @@ -8602,7 +8231,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 176, + funcId: 173, port: port_, ); }, @@ -8645,7 +8274,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 177, + funcId: 174, port: port_, ); }, @@ -8697,7 +8326,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 178, + funcId: 175, port: port_, ); }, @@ -8726,7 +8355,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 179, + funcId: 176, port: port_, ); }, @@ -8757,7 +8386,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 180, + funcId: 177, port: port_, ); }, @@ -8798,7 +8427,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 181, + funcId: 178, port: port_, ); }, @@ -8834,7 +8463,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 182, + funcId: 179, port: port_, ); }, @@ -8868,7 +8497,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 183, + funcId: 180, port: port_, ); }, @@ -8903,7 +8532,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 184, + funcId: 181, port: port_, ); }, @@ -8923,6 +8552,39 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["path", "isDesktop"], ); + @override + Uint8List crateEncryptEcashForTap({ + required String ecash, + required List recipientPubkey, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(ecash, serializer); + sse_encode_list_prim_u_8_loose(recipientPubkey, serializer); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 182, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: sse_decode_ecash_app_error, + ), + constMeta: kCrateEncryptEcashForTapConstMeta, + argValues: [ecash, recipientPubkey], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateEncryptEcashForTapConstMeta => const TaskConstMeta( + debugName: "encrypt_ecash_for_tap", + argNames: ["ecash", "recipientPubkey"], + ); + @override Future crateExecuteLnurlWithdraw({ required FederationId federationId, @@ -8954,7 +8616,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 185, + funcId: 183, port: port_, ); }, @@ -9010,7 +8672,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 186, + funcId: 184, port: port_, ); }, @@ -9039,572 +8701,145 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 187, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_bool, - decodeErrorData: null, - ), - constMeta: kCrateFederationsConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateFederationsConstMeta => - const TaskConstMeta(debugName: "federations", argNames: []); - - @override - Future crateFetchLnurlWithdraw({required String url}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(url, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 188, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_lnurl_withdraw_params, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateFetchLnurlWithdrawConstMeta, - argValues: [url], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateFetchLnurlWithdrawConstMeta => - const TaskConstMeta(debugName: "fetch_lnurl_withdraw", argNames: ["url"]); - - @override - Future> crateGetAddresses({ - required FederationId federationId, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 189, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_list_record_string_opt_box_autoadd_u_64_opt_box_autoadd_u_64, - decodeErrorData: null, - ), - constMeta: kCrateGetAddressesConstMeta, - argValues: [federationId], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetAddressesConstMeta => const TaskConstMeta( - debugName: "get_addresses", - argNames: ["federationId"], - ); - - @override - Future?> crateGetAllBtcPrices() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 190, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_opt_list_record_fiat_currency_u_64, - decodeErrorData: null, - ), - constMeta: kCrateGetAllBtcPricesConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetAllBtcPricesConstMeta => - const TaskConstMeta(debugName: "get_all_btc_prices", argNames: []); - - @override - Future> crateGetAllContacts() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 191, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_list_contact, - decodeErrorData: null, - ), - constMeta: kCrateGetAllContactsConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetAllContactsConstMeta => - const TaskConstMeta(debugName: "get_all_contacts", argNames: []); - - @override - Future crateGetBitcoinDisplay() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 192, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_bitcoin_display, - decodeErrorData: null, - ), - constMeta: kCrateGetBitcoinDisplayConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetBitcoinDisplayConstMeta => - const TaskConstMeta(debugName: "get_bitcoin_display", argNames: []); - - @override - Future crateGetBtcPrice() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 193, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_opt_box_autoadd_u_64, - decodeErrorData: null, - ), - constMeta: kCrateGetBtcPriceConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetBtcPriceConstMeta => - const TaskConstMeta(debugName: "get_btc_price", argNames: []); - - @override - Future crateGetEventBus() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 194, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEventBusMultimintEvent, - decodeErrorData: null, - ), - constMeta: kCrateGetEventBusConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetEventBusConstMeta => - const TaskConstMeta(debugName: "get_event_bus", argNames: []); - - @override - Future crateGetFederationMeta({ - String? inviteCode, - FederationId? federationId, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_opt_String(inviteCode, serializer); - sse_encode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 195, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationMeta, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateGetFederationMetaConstMeta, - argValues: [inviteCode, federationId], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetFederationMetaConstMeta => const TaskConstMeta( - debugName: "get_federation_meta", - argNames: ["inviteCode", "federationId"], - ); - - @override - Future?> crateGetFederationOrder() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 196, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_opt_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId, - decodeErrorData: null, - ), - constMeta: kCrateGetFederationOrderConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetFederationOrderConstMeta => - const TaskConstMeta(debugName: "get_federation_order", argNames: []); - - @override - Future crateGetFiatCurrency() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 197, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_fiat_currency, - decodeErrorData: null, - ), - constMeta: kCrateGetFiatCurrencyConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetFiatCurrencyConstMeta => - const TaskConstMeta(debugName: "get_fiat_currency", argNames: []); - - @override - Future crateGetInviteCode({ - required FederationId federationId, - required int peer, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 198, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateGetInviteCodeConstMeta, - argValues: [federationId, peer], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetInviteCodeConstMeta => const TaskConstMeta( - debugName: "get_invite_code", - argNames: ["federationId", "peer"], - ); - - @override - Future crateGetInvoiceFromLnaddressOrLnurl({ - required FederationId federationId, - required BigInt amountMsats, - required String lnaddressOrLnurl, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_64(amountMsats, serializer); - sse_encode_String(lnaddressOrLnurl, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 199, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_ecash_app_error, - ), - constMeta: kCrateGetInvoiceFromLnaddressOrLnurlConstMeta, - argValues: [federationId, amountMsats, lnaddressOrLnurl], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetInvoiceFromLnaddressOrLnurlConstMeta => - const TaskConstMeta( - debugName: "get_invoice_from_lnaddress_or_lnurl", - argNames: ["federationId", "amountMsats", "lnaddressOrLnurl"], - ); - - @override - Future crateGetLnAddressConfig({ - required FederationId federationId, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 200, + funcId: 185, port: port_, ); }, codec: SseCodec( decodeSuccessData: - sse_decode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerLightningAddressConfig, + sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_bool, decodeErrorData: null, ), - constMeta: kCrateGetLnAddressConfigConstMeta, - argValues: [federationId], + constMeta: kCrateFederationsConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetLnAddressConfigConstMeta => const TaskConstMeta( - debugName: "get_ln_address_config", - argNames: ["federationId"], - ); + TaskConstMeta get kCrateFederationsConstMeta => + const TaskConstMeta(debugName: "federations", argNames: []); @override - Future crateGetMaxWithdrawableAmount({ - required FederationId federationId, - required String address, - }) { + Future crateFetchLnurlWithdraw({required String url}) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_String(address, serializer); + sse_encode_String(url, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 201, + funcId: 186, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, - decodeErrorData: sse_decode_ecash_app_error, + decodeSuccessData: sse_decode_lnurl_withdraw_params, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetMaxWithdrawableAmountConstMeta, - argValues: [federationId, address], + constMeta: kCrateFetchLnurlWithdrawConstMeta, + argValues: [url], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetMaxWithdrawableAmountConstMeta => - const TaskConstMeta( - debugName: "get_max_withdrawable_amount", - argNames: ["federationId", "address"], - ); + TaskConstMeta get kCrateFetchLnurlWithdrawConstMeta => + const TaskConstMeta(debugName: "fetch_lnurl_withdraw", argNames: ["url"]); @override - Future> crateGetMnemonic() { + Future> crateGetAddresses({ + required FederationId federationId, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 202, + funcId: 187, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_String, + decodeSuccessData: + sse_decode_list_record_string_opt_box_autoadd_u_64_opt_box_autoadd_u_64, decodeErrorData: null, ), - constMeta: kCrateGetMnemonicConstMeta, - argValues: [], + constMeta: kCrateGetAddressesConstMeta, + argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetMnemonicConstMeta => - const TaskConstMeta(debugName: "get_mnemonic", argNames: []); + TaskConstMeta get kCrateGetAddressesConstMeta => const TaskConstMeta( + debugName: "get_addresses", + argNames: ["federationId"], + ); @override - Future<(int, int)> crateGetModuleRecoveryProgress({ - required FederationId federationId, - required RecoveryModule recoveryModule, - }) { + Future?> crateGetAllBtcPrices() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_recovery_module(recoveryModule, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 203, + funcId: 188, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_record_u_32_u_32, + decodeSuccessData: sse_decode_opt_list_record_fiat_currency_u_64, decodeErrorData: null, ), - constMeta: kCrateGetModuleRecoveryProgressConstMeta, - argValues: [federationId, recoveryModule], + constMeta: kCrateGetAllBtcPricesConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetModuleRecoveryProgressConstMeta => - const TaskConstMeta( - debugName: "get_module_recovery_progress", - argNames: ["federationId", "recoveryModule"], - ); + TaskConstMeta get kCrateGetAllBtcPricesConstMeta => + const TaskConstMeta(debugName: "get_all_btc_prices", argNames: []); @override - Future> crateGetNoteSummary({ - required FederationId federationId, - }) { + Future> crateGetAllContacts() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 204, + funcId: 189, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_record_u_64_usize, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_list_contact, + decodeErrorData: null, ), - constMeta: kCrateGetNoteSummaryConstMeta, - argValues: [federationId], + constMeta: kCrateGetAllContactsConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetNoteSummaryConstMeta => const TaskConstMeta( - debugName: "get_note_summary", - argNames: ["federationId"], - ); + TaskConstMeta get kCrateGetAllContactsConstMeta => + const TaskConstMeta(debugName: "get_all_contacts", argNames: []); @override - Future> - crateGetNwcConnectionInfo() { + Future crateGetBitcoinDisplay() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -9612,27 +8847,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 205, + funcId: 190, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_nwc_connection_info, + decodeSuccessData: sse_decode_bitcoin_display, decodeErrorData: null, ), - constMeta: kCrateGetNwcConnectionInfoConstMeta, + constMeta: kCrateGetBitcoinDisplayConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetNwcConnectionInfoConstMeta => - const TaskConstMeta(debugName: "get_nwc_connection_info", argNames: []); + TaskConstMeta get kCrateGetBitcoinDisplayConstMeta => + const TaskConstMeta(debugName: "get_bitcoin_display", argNames: []); @override - Future crateGetNwcDailyBudgetSats() { + Future crateGetBtcPrice() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -9640,26 +8874,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 206, + funcId: 191, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, + decodeSuccessData: sse_decode_opt_box_autoadd_u_64, decodeErrorData: null, ), - constMeta: kCrateGetNwcDailyBudgetSatsConstMeta, + constMeta: kCrateGetBtcPriceConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetNwcDailyBudgetSatsConstMeta => - const TaskConstMeta(debugName: "get_nwc_daily_budget_sats", argNames: []); + TaskConstMeta get kCrateGetBtcPriceConstMeta => + const TaskConstMeta(debugName: "get_btc_price", argNames: []); @override - Future crateGetNwcMaxPaymentSats() { + Future crateGetEventBus() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -9667,61 +8901,65 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 207, + funcId: 192, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEventBusMultimintEvent, decodeErrorData: null, ), - constMeta: kCrateGetNwcMaxPaymentSatsConstMeta, + constMeta: kCrateGetEventBusConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetNwcMaxPaymentSatsConstMeta => - const TaskConstMeta(debugName: "get_nwc_max_payment_sats", argNames: []); + TaskConstMeta get kCrateGetEventBusConstMeta => + const TaskConstMeta(debugName: "get_event_bus", argNames: []); @override - Future crateGetPeginFeeQuote({ - required FederationId federationId, + Future crateGetFederationMeta({ + String? inviteCode, + FederationId? federationId, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + sse_encode_opt_String(inviteCode, serializer); + sse_encode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( federationId, serializer, ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 208, + funcId: 193, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_pegin_fee_quote, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationMeta, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetPeginFeeQuoteConstMeta, - argValues: [federationId], + constMeta: kCrateGetFederationMetaConstMeta, + argValues: [inviteCode, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetPeginFeeQuoteConstMeta => const TaskConstMeta( - debugName: "get_pegin_fee_quote", - argNames: ["federationId"], + TaskConstMeta get kCrateGetFederationMetaConstMeta => const TaskConstMeta( + debugName: "get_federation_meta", + argNames: ["inviteCode", "federationId"], ); @override - Future> crateGetRelays() { + Future?> crateGetFederationOrder() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -9729,26 +8967,27 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 209, + funcId: 194, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_record_string_bool, + decodeSuccessData: + sse_decode_opt_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId, decodeErrorData: null, ), - constMeta: kCrateGetRelaysConstMeta, + constMeta: kCrateGetFederationOrderConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetRelaysConstMeta => - const TaskConstMeta(debugName: "get_relays", argNames: []); + TaskConstMeta get kCrateGetFederationOrderConstMeta => + const TaskConstMeta(debugName: "get_federation_order", argNames: []); @override - Future crateGetRequirePinForSpending() { + Future crateGetFiatCurrency() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -9756,100 +8995,99 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 210, + funcId: 195, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, + decodeSuccessData: sse_decode_fiat_currency, decodeErrorData: null, ), - constMeta: kCrateGetRequirePinForSpendingConstMeta, + constMeta: kCrateGetFiatCurrencyConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetRequirePinForSpendingConstMeta => - const TaskConstMeta( - debugName: "get_require_pin_for_spending", - argNames: [], - ); + TaskConstMeta get kCrateGetFiatCurrencyConstMeta => + const TaskConstMeta(debugName: "get_fiat_currency", argNames: []); @override - Future crateGetShowMsats() { + Future crateGetInviteCode({ + required FederationId federationId, + required int peer, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 211, + funcId: 196, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: null, + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetShowMsatsConstMeta, - argValues: [], + constMeta: kCrateGetInviteCodeConstMeta, + argValues: [federationId, peer], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetShowMsatsConstMeta => - const TaskConstMeta(debugName: "get_show_msats", argNames: []); + TaskConstMeta get kCrateGetInviteCodeConstMeta => const TaskConstMeta( + debugName: "get_invite_code", + argNames: ["federationId", "peer"], + ); @override - Future crateGuardianAddGateway({ - required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, + Future crateGetInvoiceFromLnaddressOrLnurl({ + required BigInt amountMsats, + required String lnaddressOrLnurl, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); - sse_encode_String(gatewayUrl, serializer); + sse_encode_u_64(amountMsats, serializer); + sse_encode_String(lnaddressOrLnurl, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 212, + funcId: 197, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_ecash_app_error, ), - constMeta: kCrateGuardianAddGatewayConstMeta, - argValues: [federationId, peer, password, gatewayUrl], + constMeta: kCrateGetInvoiceFromLnaddressOrLnurlConstMeta, + argValues: [amountMsats, lnaddressOrLnurl], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianAddGatewayConstMeta => const TaskConstMeta( - debugName: "guardian_add_gateway", - argNames: ["federationId", "peer", "password", "gatewayUrl"], - ); + TaskConstMeta get kCrateGetInvoiceFromLnaddressOrLnurlConstMeta => + const TaskConstMeta( + debugName: "get_invoice_from_lnaddress_or_lnurl", + argNames: ["amountMsats", "lnaddressOrLnurl"], + ); @override - Future crateGuardianAudit({ + Future crateGetLnAddressConfig({ required FederationId federationId, - required int peer, - required String password, }) { return handler.executeNormal( NormalTask( @@ -9859,36 +9097,34 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 213, + funcId: 198, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_guardian_audit_summary, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: + sse_decode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerLightningAddressConfig, + decodeErrorData: null, ), - constMeta: kCrateGuardianAuditConstMeta, - argValues: [federationId, peer, password], + constMeta: kCrateGetLnAddressConfigConstMeta, + argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianAuditConstMeta => const TaskConstMeta( - debugName: "guardian_audit", - argNames: ["federationId", "peer", "password"], + TaskConstMeta get kCrateGetLnAddressConfigConstMeta => const TaskConstMeta( + debugName: "get_ln_address_config", + argNames: ["federationId"], ); @override - Future crateGuardianBackupStatistics({ + Future crateGetMaxWithdrawableAmount({ required FederationId federationId, - required int peer, - required String password, + required String address, }) { return handler.executeNormal( NormalTask( @@ -9898,74 +9134,62 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); + sse_encode_String(address, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 214, + funcId: 199, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_guardian_backup_statistics, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_ecash_app_error, ), - constMeta: kCrateGuardianBackupStatisticsConstMeta, - argValues: [federationId, peer, password], + constMeta: kCrateGetMaxWithdrawableAmountConstMeta, + argValues: [federationId, address], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianBackupStatisticsConstMeta => + TaskConstMeta get kCrateGetMaxWithdrawableAmountConstMeta => const TaskConstMeta( - debugName: "guardian_backup_statistics", - argNames: ["federationId", "peer", "password"], + debugName: "get_max_withdrawable_amount", + argNames: ["federationId", "address"], ); @override - Future> crateGuardianListGateways({ - required FederationId federationId, - required int peer, - }) { + Future> crateGetMnemonic() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 215, + funcId: 200, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_list_String, - decodeErrorData: sse_decode_AnyhowException, + decodeErrorData: null, ), - constMeta: kCrateGuardianListGatewaysConstMeta, - argValues: [federationId, peer], + constMeta: kCrateGetMnemonicConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianListGatewaysConstMeta => const TaskConstMeta( - debugName: "guardian_list_gateways", - argNames: ["federationId", "peer"], - ); + TaskConstMeta get kCrateGetMnemonicConstMeta => + const TaskConstMeta(debugName: "get_mnemonic", argNames: []); @override - Future crateGuardianLogin({ + Future<(int, int)> crateGetModuleRecoveryProgress({ required FederationId federationId, - required int peer, - required String password, + required int moduleId, }) { return handler.executeNormal( NormalTask( @@ -9975,37 +9199,34 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); + sse_encode_u_16(moduleId, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 216, + funcId: 201, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_record_u_32_u_32, + decodeErrorData: null, ), - constMeta: kCrateGuardianLoginConstMeta, - argValues: [federationId, peer, password], + constMeta: kCrateGetModuleRecoveryProgressConstMeta, + argValues: [federationId, moduleId], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianLoginConstMeta => const TaskConstMeta( - debugName: "guardian_login", - argNames: ["federationId", "peer", "password"], - ); + TaskConstMeta get kCrateGetModuleRecoveryProgressConstMeta => + const TaskConstMeta( + debugName: "get_module_recovery_progress", + argNames: ["federationId", "moduleId"], + ); @override - Future crateGuardianMetaAccept({ + Future> crateGetNoteSummary({ required FederationId federationId, - required int peer, - required String password, - required String valueHex, }) { return handler.executeNormal( NormalTask( @@ -10015,233 +9236,176 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); - sse_encode_String(valueHex, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 217, + funcId: 202, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_list_record_u_64_usize, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGuardianMetaAcceptConstMeta, - argValues: [federationId, peer, password, valueHex], + constMeta: kCrateGetNoteSummaryConstMeta, + argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianMetaAcceptConstMeta => const TaskConstMeta( - debugName: "guardian_meta_accept", - argNames: ["federationId", "peer", "password", "valueHex"], + TaskConstMeta get kCrateGetNoteSummaryConstMeta => const TaskConstMeta( + debugName: "get_note_summary", + argNames: ["federationId"], ); @override - Future crateGuardianMetaProposeField({ - required FederationId federationId, - required int peer, - required String password, - required String field, - String? value, - }) { + Future> + crateGetNwcConnectionInfo() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); - sse_encode_String(field, serializer); - sse_encode_opt_String(value, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 218, + funcId: 203, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: + sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_nwc_connection_info, + decodeErrorData: null, ), - constMeta: kCrateGuardianMetaProposeFieldConstMeta, - argValues: [federationId, peer, password, field, value], + constMeta: kCrateGetNwcConnectionInfoConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianMetaProposeFieldConstMeta => - const TaskConstMeta( - debugName: "guardian_meta_propose_field", - argNames: ["federationId", "peer", "password", "field", "value"], - ); + TaskConstMeta get kCrateGetNwcConnectionInfoConstMeta => + const TaskConstMeta(debugName: "get_nwc_connection_info", argNames: []); @override - Future crateGuardianMetaState({ + Future crateGetPeginFeeQuote({ required FederationId federationId, - required int peer, - required String password, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( federationId, serializer, ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 219, + funcId: 204, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_guardian_meta_state, + decodeSuccessData: sse_decode_pegin_fee_quote, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGuardianMetaStateConstMeta, - argValues: [federationId, peer, password], + constMeta: kCrateGetPeginFeeQuoteConstMeta, + argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianMetaStateConstMeta => const TaskConstMeta( - debugName: "guardian_meta_state", - argNames: ["federationId", "peer", "password"], + TaskConstMeta get kCrateGetPeginFeeQuoteConstMeta => const TaskConstMeta( + debugName: "get_pegin_fee_quote", + argNames: ["federationId"], ); @override - Future crateGuardianMetaWithdraw({ - required FederationId federationId, - required int peer, - required String password, - }) { + Future> crateGetRelays() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 220, + funcId: 205, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_list_record_string_bool, + decodeErrorData: null, ), - constMeta: kCrateGuardianMetaWithdrawConstMeta, - argValues: [federationId, peer, password], + constMeta: kCrateGetRelaysConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianMetaWithdrawConstMeta => const TaskConstMeta( - debugName: "guardian_meta_withdraw", - argNames: ["federationId", "peer", "password"], - ); + TaskConstMeta get kCrateGetRelaysConstMeta => + const TaskConstMeta(debugName: "get_relays", argNames: []); @override - Future crateGuardianRemoveGateway({ - required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, - }) { + Future crateGetRequirePinForSpending() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); - sse_encode_String(gatewayUrl, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 221, + funcId: 206, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_bool, - decodeErrorData: sse_decode_AnyhowException, + decodeErrorData: null, ), - constMeta: kCrateGuardianRemoveGatewayConstMeta, - argValues: [federationId, peer, password, gatewayUrl], + constMeta: kCrateGetRequirePinForSpendingConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianRemoveGatewayConstMeta => const TaskConstMeta( - debugName: "guardian_remove_gateway", - argNames: ["federationId", "peer", "password", "gatewayUrl"], - ); + TaskConstMeta get kCrateGetRequirePinForSpendingConstMeta => + const TaskConstMeta( + debugName: "get_require_pin_for_spending", + argNames: [], + ); @override - Future crateGuardianStatus({ - required FederationId federationId, - required int peer, - required String password, - }) { + Future crateGetShowMsats() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_16(peer, serializer); - sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 222, + funcId: 207, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_guardian_status_summary, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, ), - constMeta: kCrateGuardianStatusConstMeta, - argValues: [federationId, peer, password], + constMeta: kCrateGetShowMsatsConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGuardianStatusConstMeta => const TaskConstMeta( - debugName: "guardian_status", - argNames: ["federationId", "peer", "password"], - ); + TaskConstMeta get kCrateGetShowMsatsConstMeta => + const TaskConstMeta(debugName: "get_show_msats", argNames: []); @override Future crateHasImportedContacts() { @@ -10252,7 +9416,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 223, + funcId: 208, port: port_, ); }, @@ -10279,7 +9443,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 224, + funcId: 209, port: port_, ); }, @@ -10306,7 +9470,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 225, + funcId: 210, port: port_, ); }, @@ -10334,7 +9498,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 226, + funcId: 211, port: port_, ); }, @@ -10362,7 +9526,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 227, + funcId: 212, )!; }, codec: SseCodec( @@ -10393,7 +9557,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 228, + funcId: 213, port: port_, ); }, @@ -10427,7 +9591,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 229, + funcId: 214, port: port_, ); }, @@ -10459,7 +9623,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 230, + funcId: 215, port: port_, ); }, @@ -10498,7 +9662,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 231, + funcId: 216, port: port_, ); }, @@ -10530,7 +9694,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 232, + funcId: 217, port: port_, ); }, @@ -10560,7 +9724,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 233, + funcId: 218, port: port_, ); }, @@ -10594,7 +9758,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 234, + funcId: 219, port: port_, ); }, @@ -10614,47 +9778,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["path", "isDesktop"], ); - @override - Future crateMaxLightningSend({ - required FederationId federationId, - required String lnaddressOrLnurl, - required String gateway, - required bool isLnv2, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_String(lnaddressOrLnurl, serializer); - sse_encode_String(gateway, serializer); - sse_encode_bool(isLnv2, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 235, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_u_64, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateMaxLightningSendConstMeta, - argValues: [federationId, lnaddressOrLnurl, gateway, isLnv2], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateMaxLightningSendConstMeta => const TaskConstMeta( - debugName: "max_lightning_send", - argNames: ["federationId", "lnaddressOrLnurl", "gateway", "isLnv2"], - ); - @override Future> cratePaginateContacts({ BigInt? cursorLastPaidAt, @@ -10673,7 +9796,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 236, + funcId: 220, port: port_, ); }, @@ -10713,7 +9836,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 237, + funcId: 221, port: port_, ); }, @@ -10756,7 +9879,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 238, + funcId: 222, )!; }, codec: SseCodec( @@ -10791,7 +9914,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 239, + funcId: 223, port: port_, ); }, @@ -10825,7 +9948,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 240, + funcId: 224, port: port_, ); }, @@ -10861,7 +9984,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 241, + funcId: 225, port: port_, ); }, @@ -10882,33 +10005,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["federationId", "bolt11"], ); - @override - Future cratePinLockoutSeconds() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 242, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_u_64, - decodeErrorData: null, - ), - constMeta: kCratePinLockoutSecondsConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCratePinLockoutSecondsConstMeta => - const TaskConstMeta(debugName: "pin_lockout_seconds", argNames: []); - @override Future<(String, OperationId, String, String, BigInt)> crateReceive({ required FederationId federationId, @@ -10936,7 +10032,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 243, + funcId: 226, port: port_, ); }, @@ -10990,7 +10086,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 244, + funcId: 227, port: port_, ); }, @@ -11019,7 +10115,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 245, + funcId: 228, port: port_, ); }, @@ -11037,42 +10133,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kCrateRefreshConnectionsConstMeta => const TaskConstMeta(debugName: "refresh_connections", argNames: []); - @override - Future crateRefreshFederationMeta({ - required FederationId federationId, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 246, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationMeta, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateRefreshFederationMetaConstMeta, - argValues: [federationId], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateRefreshFederationMetaConstMeta => const TaskConstMeta( - debugName: "refresh_federation_meta", - argNames: ["federationId"], - ); - @override Future crateRegisterLnAddress({ required FederationId federationId, @@ -11096,7 +10156,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 247, + funcId: 229, port: port_, ); }, @@ -11147,7 +10207,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 248, + funcId: 230, port: port_, ); }, @@ -11177,7 +10237,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 249, + funcId: 231, port: port_, ); }, @@ -11213,7 +10273,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 250, + funcId: 232, port: port_, ); }, @@ -11244,7 +10304,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 251, + funcId: 233, port: port_, ); }, @@ -11291,7 +10351,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 252, + funcId: 234, port: port_, ); }, @@ -11349,7 +10409,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 253, + funcId: 235, port: port_, ); }, @@ -11370,6 +10430,46 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["federationId", "amountMsats", "feeMsats"], ); + @override + Future crateSendLnaddress({ + required FederationId federationId, + required BigInt amountMsats, + required String address, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_64(amountMsats, serializer); + sse_encode_String(address, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 236, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId, + decodeErrorData: sse_decode_ecash_app_error, + ), + constMeta: kCrateSendLnaddressConstMeta, + argValues: [federationId, amountMsats, address], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateSendLnaddressConstMeta => const TaskConstMeta( + debugName: "send_lnaddress", + argNames: ["federationId", "amountMsats", "address"], + ); + @override Future crateSetBitcoinDisplay({ required BitcoinDisplay bitcoinDisplay, @@ -11382,7 +10482,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 254, + funcId: 237, port: port_, ); }, @@ -11415,7 +10515,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 255, + funcId: 238, port: port_, ); }, @@ -11445,7 +10545,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 256, + funcId: 239, port: port_, ); }, @@ -11484,7 +10584,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 257, + funcId: 240, port: port_, ); }, @@ -11504,66 +10604,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["federationId", "relay", "isDesktop"], ); - @override - Future crateSetNwcDailyBudgetSats({required BigInt sats}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_u_64(sats, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 258, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateSetNwcDailyBudgetSatsConstMeta, - argValues: [sats], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateSetNwcDailyBudgetSatsConstMeta => const TaskConstMeta( - debugName: "set_nwc_daily_budget_sats", - argNames: ["sats"], - ); - - @override - Future crateSetNwcMaxPaymentSats({required BigInt sats}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_u_64(sats, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 259, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kCrateSetNwcMaxPaymentSatsConstMeta, - argValues: [sats], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateSetNwcMaxPaymentSatsConstMeta => const TaskConstMeta( - debugName: "set_nwc_max_payment_sats", - argNames: ["sats"], - ); - @override Future crateSetPinCode({required String pin}) { return handler.executeNormal( @@ -11574,7 +10614,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 260, + funcId: 241, port: port_, ); }, @@ -11593,29 +10633,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { const TaskConstMeta(debugName: "set_pin_code", argNames: ["pin"]); @override - Future crateSetRequirePinForSpending({ - required bool require, - String? currentPin, - }) { + Future crateSetRequirePinForSpending({required bool require}) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_bool(require, serializer); - sse_encode_opt_String(currentPin, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 261, + funcId: 242, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeErrorData: null, ), constMeta: kCrateSetRequirePinForSpendingConstMeta, - argValues: [require, currentPin], + argValues: [require], apiImpl: this, ), ); @@ -11624,7 +10660,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kCrateSetRequirePinForSpendingConstMeta => const TaskConstMeta( debugName: "set_require_pin_for_spending", - argNames: ["require", "currentPin"], + argNames: ["require"], ); @override @@ -11637,7 +10673,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 262, + funcId: 243, port: port_, ); }, @@ -11673,7 +10709,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 263, + funcId: 244, port: port_, ); }, @@ -11707,7 +10743,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 264, + funcId: 245, port: port_, ); }, @@ -11750,7 +10786,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 265, + funcId: 246, port: port_, ); }, @@ -11775,7 +10811,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { @override Stream<(int, int)> crateSubscribeRecoveryProgress({ required FederationId federationId, - required RecoveryModule recoveryModule, + required int moduleId, }) { final sink = RustStreamSink<(int, int)>(); unawaited( @@ -11788,11 +10824,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_recovery_module(recoveryModule, serializer); + sse_encode_u_16(moduleId, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 266, + funcId: 247, port: port_, ); }, @@ -11801,7 +10837,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeErrorData: null, ), constMeta: kCrateSubscribeRecoveryProgressConstMeta, - argValues: [sink, federationId, recoveryModule], + argValues: [sink, federationId, moduleId], apiImpl: this, ), ), @@ -11812,7 +10848,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kCrateSubscribeRecoveryProgressConstMeta => const TaskConstMeta( debugName: "subscribe_recovery_progress", - argNames: ["sink", "federationId", "recoveryModule"], + argNames: ["sink", "federationId", "moduleId"], ); @override @@ -11825,7 +10861,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 267, + funcId: 248, port: port_, ); }, @@ -11864,7 +10900,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 268, + funcId: 249, port: port_, ); }, @@ -11894,7 +10930,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 269, + funcId: 250, port: port_, ); }, @@ -11922,7 +10958,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 270, + funcId: 251, port: port_, ); }, @@ -11957,7 +10993,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 271, + funcId: 252, port: port_, ); }, @@ -12003,7 +11039,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 272, + funcId: 253, port: port_, ); }, @@ -12045,7 +11081,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 273, + funcId: 254, port: port_, ); }, @@ -12295,6 +11331,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { get rust_arc_decrement_strong_count_SafeUrl => wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl; + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_TapRecipient => + wire.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_TapRecipient => + wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_WithdrawFees => wire.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees; @@ -12585,6 +11629,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return SafeUrlImpl.frbInternalDcoDecode(raw as List); } + @protected + TapRecipient + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TapRecipientImpl.frbInternalDcoDecode(raw as List); + } + @protected WithdrawFees dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -12815,12 +11868,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - SafeUrl - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + TapRecipient + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( dynamic raw, ) { // Codec=Dco (DartCObject based), see doc to use other codecs - return SafeUrlImpl.frbInternalDcoDecode(raw as List); + return TapRecipientImpl.frbInternalDcoDecode(raw as List); } @protected @@ -13109,6 +12162,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return SafeUrlImpl.frbInternalDcoDecode(raw as List); } + @protected + TapRecipient + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TapRecipientImpl.frbInternalDcoDecode(raw as List); + } + @protected WithdrawFees dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -13169,14 +12231,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { AwaitingConfsEvent dco_decode_awaiting_confs_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 5) - throw Exception('unexpected arr length: expect 5 but see ${arr.length}'); + if (arr.length != 4) + throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); return AwaitingConfsEvent( amount: dco_decode_u_64(arr[0]), outpoint: dco_decode_String(arr[1]), blockHeight: dco_decode_u_64(arr[2]), needed: dco_decode_u_64(arr[3]), - txid: dco_decode_opt_String(arr[4]), ); } @@ -13292,14 +12353,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as double; } - @protected - GuardianBitcoinStatus dco_decode_box_autoadd_guardian_bitcoin_status( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return dco_decode_guardian_bitcoin_status(raw); - } - @protected InvoicePaidEvent dco_decode_box_autoadd_invoice_paid_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -13324,6 +12377,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return dco_decode_nostr_recovery_phase(raw); } + @protected + NostrWalletConnectConfig dco_decode_box_autoadd_nostr_wallet_connect_config( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_nostr_wallet_connect_config(raw); + } + @protected (FederationId, DepositEventKind) dco_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -13382,12 +12443,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ClaimedEvent dco_decode_claimed_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 3) - throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); + if (arr.length != 2) + throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); return ClaimedEvent( amount: dco_decode_u_64(arr[0]), outpoint: dco_decode_String(arr[1]), - txid: dco_decode_opt_String(arr[2]), ); } @@ -13395,12 +12455,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ConfirmedEvent dco_decode_confirmed_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 3) - throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); + if (arr.length != 2) + throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); return ConfirmedEvent( amount: dco_decode_u_64(arr[0]), outpoint: dco_decode_String(arr[1]), - txid: dco_decode_opt_String(arr[2]), ); } @@ -13532,15 +12591,10 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case 10: return EcashAppError_InvalidLightningAddress(dco_decode_String(raw[1])); case 11: - return EcashAppError_LnurlAmountMismatch( - requestedMsats: dco_decode_u_64(raw[1]), - invoiceMsats: dco_decode_u_64(raw[2]), - ); - case 12: return EcashAppError_PaymentRefunded(dco_decode_String(raw[1])); - case 13: + case 12: return EcashAppError_Timeout(); - case 14: + case 13: return EcashAppError_Other(dco_decode_String(raw[1])); default: throw Exception("unreachable"); @@ -13577,162 +12631,46 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ppmRoutingFee: dco_decode_u_64(arr[2]), baseTransactionFee: dco_decode_u_64(arr[3]), ppmTransactionFee: dco_decode_u_64(arr[4]), - lightningAlias: dco_decode_opt_String(arr[5]), - lightningNode: dco_decode_opt_String(arr[6]), - isLnv2: dco_decode_bool(arr[7]), - isVettted: dco_decode_bool(arr[8]), - federationIndex: dco_decode_opt_box_autoadd_u_64(arr[9]), - minBaseRoutingFee: dco_decode_opt_box_autoadd_u_64(arr[10]), - minPpmRoutingFee: dco_decode_opt_box_autoadd_u_64(arr[11]), - ); - } - - @protected - FiatCurrency dco_decode_fiat_currency(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return FiatCurrency.values[raw as int]; - } - - @protected - GatewayPaymentPreview dco_decode_gateway_payment_preview(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 4) - throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); - return GatewayPaymentPreview( - gateway: dco_decode_fedimint_gateway(arr[0]), - amountWithFees: dco_decode_u_64(arr[1]), - gatewayFee: dco_decode_u_64(arr[2]), - federationFee: dco_decode_u_64(arr[3]), - ); - } - - @protected - Guardian dco_decode_guardian(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 3) - throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); - return Guardian( - peerId: dco_decode_u_16(arr[0]), - name: dco_decode_String(arr[1]), - version: dco_decode_opt_String(arr[2]), - ); - } - - @protected - GuardianAuditSummary dco_decode_guardian_audit_summary(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 2) - throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); - return GuardianAuditSummary( - netAssetsMsats: dco_decode_i_64(arr[0]), - moduleSummaries: dco_decode_list_guardian_module_summary(arr[1]), - ); - } - - @protected - GuardianBackupStatistics dco_decode_guardian_backup_statistics(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 6) - throw Exception('unexpected arr length: expect 6 but see ${arr.length}'); - return GuardianBackupStatistics( - numBackups: dco_decode_u_64(arr[0]), - totalSizeBytes: dco_decode_u_64(arr[1]), - refreshed1D: dco_decode_u_64(arr[2]), - refreshed1W: dco_decode_u_64(arr[3]), - refreshed1M: dco_decode_u_64(arr[4]), - refreshed3M: dco_decode_u_64(arr[5]), - ); - } - - @protected - GuardianBitcoinStatus dco_decode_guardian_bitcoin_status(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 5) - throw Exception('unexpected arr length: expect 5 but see ${arr.length}'); - return GuardianBitcoinStatus( - kind: dco_decode_opt_String(arr[0]), - url: dco_decode_opt_String(arr[1]), - consensusBlockCount: dco_decode_u_64(arr[2]), - localBlockCount: dco_decode_opt_box_autoadd_u_64(arr[3]), - consensusFeerateSatsPerKvb: dco_decode_opt_box_autoadd_u_64(arr[4]), + lightningAlias: dco_decode_opt_String(arr[5]), + lightningNode: dco_decode_opt_String(arr[6]), + isLnv2: dco_decode_bool(arr[7]), + isVettted: dco_decode_bool(arr[8]), + federationIndex: dco_decode_opt_box_autoadd_u_64(arr[9]), + minBaseRoutingFee: dco_decode_opt_box_autoadd_u_64(arr[10]), + minPpmRoutingFee: dco_decode_opt_box_autoadd_u_64(arr[11]), ); } @protected - GuardianHealth dco_decode_guardian_health(dynamic raw) { + FiatCurrency dco_decode_fiat_currency(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 7) - throw Exception('unexpected arr length: expect 7 but see ${arr.length}'); - return GuardianHealth( - consensusRunning: dco_decode_bool(arr[0]), - serverStatus: dco_decode_String(arr[1]), - sessionCount: dco_decode_opt_box_autoadd_u_64(arr[2]), - peersOnline: dco_decode_u_64(arr[3]), - peersTotal: dco_decode_u_64(arr[4]), - consensusOrdLatencyMs: dco_decode_opt_box_autoadd_u_64(arr[5]), - scheduledShutdownSession: dco_decode_opt_box_autoadd_u_64(arr[6]), - ); + return FiatCurrency.values[raw as int]; } @protected - GuardianMetaProposal dco_decode_guardian_meta_proposal(dynamic raw) { + GatewayPaymentPreview dco_decode_gateway_payment_preview(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; if (arr.length != 4) throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); - return GuardianMetaProposal( - peerIds: dco_decode_list_prim_u_16_strict(arr[0]), - valueHex: dco_decode_String(arr[1]), - valueJson: dco_decode_opt_String(arr[2]), - isOurs: dco_decode_bool(arr[3]), - ); - } - - @protected - GuardianMetaState dco_decode_guardian_meta_state(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 5) - throw Exception('unexpected arr length: expect 5 but see ${arr.length}'); - return GuardianMetaState( - consensusJson: dco_decode_opt_String(arr[0]), - revision: dco_decode_opt_box_autoadd_u_64(arr[1]), - proposals: dco_decode_list_guardian_meta_proposal(arr[2]), - threshold: dco_decode_u_16(arr[3]), - totalGuardians: dco_decode_u_16(arr[4]), + return GatewayPaymentPreview( + gateway: dco_decode_fedimint_gateway(arr[0]), + amountWithFees: dco_decode_u_64(arr[1]), + gatewayFee: dco_decode_u_64(arr[2]), + federationFee: dco_decode_u_64(arr[3]), ); } @protected - GuardianModuleSummary dco_decode_guardian_module_summary(dynamic raw) { + Guardian dco_decode_guardian(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; if (arr.length != 3) throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); - return GuardianModuleSummary( - moduleInstanceId: dco_decode_u_16(arr[0]), - kind: dco_decode_String(arr[1]), - netAssetsMsats: dco_decode_i_64(arr[2]), - ); - } - - @protected - GuardianStatusSummary dco_decode_guardian_status_summary(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 4) - throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); - return GuardianStatusSummary( - health: dco_decode_guardian_health(arr[0]), - bitcoin: dco_decode_opt_box_autoadd_guardian_bitcoin_status(arr[1]), - hasLnv2: dco_decode_bool(arr[2]), - hasMeta: dco_decode_bool(arr[3]), + return Guardian( + peerId: dco_decode_u_16(arr[0]), + name: dco_decode_String(arr[1]), + version: dco_decode_opt_String(arr[2]), ); } @@ -13742,12 +12680,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as int; } - @protected - PlatformInt64 dco_decode_i_64(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return dcoDecodeI64(raw); - } - @protected InvoicePaidEvent dco_decode_invoice_paid_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -13847,26 +12779,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (raw as List).map(dco_decode_guardian).toList(); } - @protected - List dco_decode_list_guardian_meta_proposal( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return (raw as List) - .map(dco_decode_guardian_meta_proposal) - .toList(); - } - - @protected - List dco_decode_list_guardian_module_summary( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return (raw as List) - .map(dco_decode_guardian_module_summary) - .toList(); - } - @protected List dco_decode_list_nostr_profile(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -13880,9 +12792,9 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - Uint16List dco_decode_list_prim_u_16_strict(dynamic raw) { + List dco_decode_list_prim_u_8_loose(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return raw as Uint16List; + return raw as List; } @protected @@ -14006,12 +12918,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { MempoolEvent dco_decode_mempool_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 3) - throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); + if (arr.length != 2) + throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); return MempoolEvent( amount: dco_decode_u_64(arr[0]), outpoint: dco_decode_String(arr[1]), - txid: dco_decode_opt_String(arr[2]), ); } @@ -14058,7 +12969,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case 4: return MultimintEvent_RecoveryProgress( dco_decode_String(raw[1]), - dco_decode_recovery_module(raw[2]), + dco_decode_u_16(raw[2]), dco_decode_u_32(raw[3]), dco_decode_u_32(raw[4]), ); @@ -14092,8 +13003,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case 10: return MultimintEvent_UpdateAvailable(dco_decode_String(raw[1])); case 11: - return MultimintEvent_MetaUpdated(dco_decode_String(raw[1])); - case 12: return MultimintEvent_PaymentError( dco_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_ecash_app_error( raw[1], @@ -14133,13 +13042,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return NostrRecoveryPhase_DecryptingInvites(); case 3: return NostrRecoveryPhase_RejoiningFederations(dco_decode_u_32(raw[1])); - case 4: - return NostrRecoveryPhase_NoBackupFound(); default: throw Exception("unreachable"); } } + @protected + NostrWalletConnectConfig dco_decode_nostr_wallet_connect_config(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 2) + throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); + return NostrWalletConnectConfig( + secretKey: dco_decode_u_8_array_32(arr[0]), + relay: dco_decode_String(arr[1]), + ); + } + @protected NWCConnectionInfo dco_decode_nwc_connection_info(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -14237,16 +13156,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw == null ? null : dco_decode_box_autoadd_f_64(raw); } - @protected - GuardianBitcoinStatus? dco_decode_opt_box_autoadd_guardian_bitcoin_status( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return raw == null - ? null - : dco_decode_box_autoadd_guardian_bitcoin_status(raw); - } - @protected int? dco_decode_opt_box_autoadd_u_32(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -14548,23 +13457,29 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - (bool, BigInt?) dco_decode_record_bool_opt_box_autoadd_u_64(dynamic raw) { + (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; if (arr.length != 2) { throw Exception('Expected 2 elements, got ${arr.length}'); } - return (dco_decode_bool(arr[0]), dco_decode_opt_box_autoadd_u_64(arr[1])); + return (dco_decode_fiat_currency(arr[0]), dco_decode_u_64(arr[1])); } @protected - (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw) { + (NostrWalletConnectConfig, NWCConnectionInfo) + dco_decode_record_nostr_wallet_connect_config_nwc_connection_info( + dynamic raw, + ) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; if (arr.length != 2) { throw Exception('Expected 2 elements, got ${arr.length}'); } - return (dco_decode_fiat_currency(arr[0]), dco_decode_u_64(arr[1])); + return ( + dco_decode_nostr_wallet_connect_config(arr[0]), + dco_decode_nwc_connection_info(arr[1]), + ); } @protected @@ -14691,12 +13606,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (dco_decode_u_64(arr[0]), dco_decode_usize(arr[1])); } - @protected - RecoveryModule dco_decode_recovery_module(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return RecoveryModule.values[raw as int]; - } - @protected ReissueFees dco_decode_reissue_fees(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -14717,6 +13626,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return RelayStatusKind.values[raw as int]; } + @protected + SendGatewaySelection dco_decode_send_gateway_selection(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 5) + throw Exception('unexpected arr length: expect 5 but see ${arr.length}'); + return SendGatewaySelection( + gatewayUrl: dco_decode_String(arr[0]), + amountWithFees: dco_decode_u_64(arr[1]), + gatewayFee: dco_decode_u_64(arr[2]), + federationFee: dco_decode_u_64(arr[3]), + isLnv2: dco_decode_bool(arr[4]), + ); + } + @protected Transaction dco_decode_transaction(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -14818,6 +13742,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as int; } + @protected + U8Array32 dco_decode_u_8_array_32(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return U8Array32(dco_decode_list_prim_u_8_strict(raw)); + } + @protected void dco_decode_unit(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -15186,6 +14116,18 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + TapRecipient + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return TapRecipientImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected WithdrawFees sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -15487,12 +14429,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - SafeUrl - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + TapRecipient + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return SafeUrlImpl.frbInternalSseDecode( + return TapRecipientImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); @@ -15858,6 +14800,18 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + TapRecipient + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return TapRecipientImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected WithdrawFees sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -15930,13 +14884,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { var var_outpoint = sse_decode_String(deserializer); var var_blockHeight = sse_decode_u_64(deserializer); var var_needed = sse_decode_u_64(deserializer); - var var_txid = sse_decode_opt_String(deserializer); return AwaitingConfsEvent( amount: var_amount, outpoint: var_outpoint, blockHeight: var_blockHeight, needed: var_needed, - txid: var_txid, ); } @@ -16065,14 +15017,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (sse_decode_f_64(deserializer)); } - @protected - GuardianBitcoinStatus sse_decode_box_autoadd_guardian_bitcoin_status( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return (sse_decode_guardian_bitcoin_status(deserializer)); - } - @protected InvoicePaidEvent sse_decode_box_autoadd_invoice_paid_event( SseDeserializer deserializer, @@ -16105,6 +15049,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (sse_decode_nostr_recovery_phase(deserializer)); } + @protected + NostrWalletConnectConfig sse_decode_box_autoadd_nostr_wallet_connect_config( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_nostr_wallet_connect_config(deserializer)); + } + @protected (FederationId, DepositEventKind) sse_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -16174,12 +15126,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs var var_amount = sse_decode_u_64(deserializer); var var_outpoint = sse_decode_String(deserializer); - var var_txid = sse_decode_opt_String(deserializer); - return ClaimedEvent( - amount: var_amount, - outpoint: var_outpoint, - txid: var_txid, - ); + return ClaimedEvent(amount: var_amount, outpoint: var_outpoint); } @protected @@ -16187,12 +15134,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs var var_amount = sse_decode_u_64(deserializer); var var_outpoint = sse_decode_String(deserializer); - var var_txid = sse_decode_opt_String(deserializer); - return ConfirmedEvent( - amount: var_amount, - outpoint: var_outpoint, - txid: var_txid, - ); + return ConfirmedEvent(amount: var_amount, outpoint: var_outpoint); } @protected @@ -16350,18 +15292,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { var var_field0 = sse_decode_String(deserializer); return EcashAppError_InvalidLightningAddress(var_field0); case 11: - var var_requestedMsats = sse_decode_u_64(deserializer); - var var_invoiceMsats = sse_decode_u_64(deserializer); - return EcashAppError_LnurlAmountMismatch( - requestedMsats: var_requestedMsats, - invoiceMsats: var_invoiceMsats, - ); - case 12: var var_field0 = sse_decode_String(deserializer); return EcashAppError_PaymentRefunded(var_field0); - case 13: + case 12: return EcashAppError_Timeout(); - case 14: + case 13: var var_field0 = sse_decode_String(deserializer); return EcashAppError_Other(var_field0); default: @@ -16388,215 +15323,63 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs var var_endpoint = sse_decode_String(deserializer); var var_baseRoutingFee = sse_decode_u_64(deserializer); - var var_ppmRoutingFee = sse_decode_u_64(deserializer); - var var_baseTransactionFee = sse_decode_u_64(deserializer); - var var_ppmTransactionFee = sse_decode_u_64(deserializer); - var var_lightningAlias = sse_decode_opt_String(deserializer); - var var_lightningNode = sse_decode_opt_String(deserializer); - var var_isLnv2 = sse_decode_bool(deserializer); - var var_isVettted = sse_decode_bool(deserializer); - var var_federationIndex = sse_decode_opt_box_autoadd_u_64(deserializer); - var var_minBaseRoutingFee = sse_decode_opt_box_autoadd_u_64(deserializer); - var var_minPpmRoutingFee = sse_decode_opt_box_autoadd_u_64(deserializer); - return FedimintGateway( - endpoint: var_endpoint, - baseRoutingFee: var_baseRoutingFee, - ppmRoutingFee: var_ppmRoutingFee, - baseTransactionFee: var_baseTransactionFee, - ppmTransactionFee: var_ppmTransactionFee, - lightningAlias: var_lightningAlias, - lightningNode: var_lightningNode, - isLnv2: var_isLnv2, - isVettted: var_isVettted, - federationIndex: var_federationIndex, - minBaseRoutingFee: var_minBaseRoutingFee, - minPpmRoutingFee: var_minPpmRoutingFee, - ); - } - - @protected - FiatCurrency sse_decode_fiat_currency(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var inner = sse_decode_i_32(deserializer); - return FiatCurrency.values[inner]; - } - - @protected - GatewayPaymentPreview sse_decode_gateway_payment_preview( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_gateway = sse_decode_fedimint_gateway(deserializer); - var var_amountWithFees = sse_decode_u_64(deserializer); - var var_gatewayFee = sse_decode_u_64(deserializer); - var var_federationFee = sse_decode_u_64(deserializer); - return GatewayPaymentPreview( - gateway: var_gateway, - amountWithFees: var_amountWithFees, - gatewayFee: var_gatewayFee, - federationFee: var_federationFee, - ); - } - - @protected - Guardian sse_decode_guardian(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_peerId = sse_decode_u_16(deserializer); - var var_name = sse_decode_String(deserializer); - var var_version = sse_decode_opt_String(deserializer); - return Guardian(peerId: var_peerId, name: var_name, version: var_version); - } - - @protected - GuardianAuditSummary sse_decode_guardian_audit_summary( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_netAssetsMsats = sse_decode_i_64(deserializer); - var var_moduleSummaries = sse_decode_list_guardian_module_summary( - deserializer, - ); - return GuardianAuditSummary( - netAssetsMsats: var_netAssetsMsats, - moduleSummaries: var_moduleSummaries, - ); - } - - @protected - GuardianBackupStatistics sse_decode_guardian_backup_statistics( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_numBackups = sse_decode_u_64(deserializer); - var var_totalSizeBytes = sse_decode_u_64(deserializer); - var var_refreshed1D = sse_decode_u_64(deserializer); - var var_refreshed1W = sse_decode_u_64(deserializer); - var var_refreshed1M = sse_decode_u_64(deserializer); - var var_refreshed3M = sse_decode_u_64(deserializer); - return GuardianBackupStatistics( - numBackups: var_numBackups, - totalSizeBytes: var_totalSizeBytes, - refreshed1D: var_refreshed1D, - refreshed1W: var_refreshed1W, - refreshed1M: var_refreshed1M, - refreshed3M: var_refreshed3M, - ); - } - - @protected - GuardianBitcoinStatus sse_decode_guardian_bitcoin_status( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_kind = sse_decode_opt_String(deserializer); - var var_url = sse_decode_opt_String(deserializer); - var var_consensusBlockCount = sse_decode_u_64(deserializer); - var var_localBlockCount = sse_decode_opt_box_autoadd_u_64(deserializer); - var var_consensusFeerateSatsPerKvb = sse_decode_opt_box_autoadd_u_64( - deserializer, - ); - return GuardianBitcoinStatus( - kind: var_kind, - url: var_url, - consensusBlockCount: var_consensusBlockCount, - localBlockCount: var_localBlockCount, - consensusFeerateSatsPerKvb: var_consensusFeerateSatsPerKvb, - ); - } - - @protected - GuardianHealth sse_decode_guardian_health(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_consensusRunning = sse_decode_bool(deserializer); - var var_serverStatus = sse_decode_String(deserializer); - var var_sessionCount = sse_decode_opt_box_autoadd_u_64(deserializer); - var var_peersOnline = sse_decode_u_64(deserializer); - var var_peersTotal = sse_decode_u_64(deserializer); - var var_consensusOrdLatencyMs = sse_decode_opt_box_autoadd_u_64( - deserializer, - ); - var var_scheduledShutdownSession = sse_decode_opt_box_autoadd_u_64( - deserializer, - ); - return GuardianHealth( - consensusRunning: var_consensusRunning, - serverStatus: var_serverStatus, - sessionCount: var_sessionCount, - peersOnline: var_peersOnline, - peersTotal: var_peersTotal, - consensusOrdLatencyMs: var_consensusOrdLatencyMs, - scheduledShutdownSession: var_scheduledShutdownSession, - ); - } - - @protected - GuardianMetaProposal sse_decode_guardian_meta_proposal( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_peerIds = sse_decode_list_prim_u_16_strict(deserializer); - var var_valueHex = sse_decode_String(deserializer); - var var_valueJson = sse_decode_opt_String(deserializer); - var var_isOurs = sse_decode_bool(deserializer); - return GuardianMetaProposal( - peerIds: var_peerIds, - valueHex: var_valueHex, - valueJson: var_valueJson, - isOurs: var_isOurs, + var var_ppmRoutingFee = sse_decode_u_64(deserializer); + var var_baseTransactionFee = sse_decode_u_64(deserializer); + var var_ppmTransactionFee = sse_decode_u_64(deserializer); + var var_lightningAlias = sse_decode_opt_String(deserializer); + var var_lightningNode = sse_decode_opt_String(deserializer); + var var_isLnv2 = sse_decode_bool(deserializer); + var var_isVettted = sse_decode_bool(deserializer); + var var_federationIndex = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_minBaseRoutingFee = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_minPpmRoutingFee = sse_decode_opt_box_autoadd_u_64(deserializer); + return FedimintGateway( + endpoint: var_endpoint, + baseRoutingFee: var_baseRoutingFee, + ppmRoutingFee: var_ppmRoutingFee, + baseTransactionFee: var_baseTransactionFee, + ppmTransactionFee: var_ppmTransactionFee, + lightningAlias: var_lightningAlias, + lightningNode: var_lightningNode, + isLnv2: var_isLnv2, + isVettted: var_isVettted, + federationIndex: var_federationIndex, + minBaseRoutingFee: var_minBaseRoutingFee, + minPpmRoutingFee: var_minPpmRoutingFee, ); } @protected - GuardianMetaState sse_decode_guardian_meta_state( - SseDeserializer deserializer, - ) { + FiatCurrency sse_decode_fiat_currency(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_consensusJson = sse_decode_opt_String(deserializer); - var var_revision = sse_decode_opt_box_autoadd_u_64(deserializer); - var var_proposals = sse_decode_list_guardian_meta_proposal(deserializer); - var var_threshold = sse_decode_u_16(deserializer); - var var_totalGuardians = sse_decode_u_16(deserializer); - return GuardianMetaState( - consensusJson: var_consensusJson, - revision: var_revision, - proposals: var_proposals, - threshold: var_threshold, - totalGuardians: var_totalGuardians, - ); + var inner = sse_decode_i_32(deserializer); + return FiatCurrency.values[inner]; } @protected - GuardianModuleSummary sse_decode_guardian_module_summary( + GatewayPaymentPreview sse_decode_gateway_payment_preview( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_moduleInstanceId = sse_decode_u_16(deserializer); - var var_kind = sse_decode_String(deserializer); - var var_netAssetsMsats = sse_decode_i_64(deserializer); - return GuardianModuleSummary( - moduleInstanceId: var_moduleInstanceId, - kind: var_kind, - netAssetsMsats: var_netAssetsMsats, + var var_gateway = sse_decode_fedimint_gateway(deserializer); + var var_amountWithFees = sse_decode_u_64(deserializer); + var var_gatewayFee = sse_decode_u_64(deserializer); + var var_federationFee = sse_decode_u_64(deserializer); + return GatewayPaymentPreview( + gateway: var_gateway, + amountWithFees: var_amountWithFees, + gatewayFee: var_gatewayFee, + federationFee: var_federationFee, ); } @protected - GuardianStatusSummary sse_decode_guardian_status_summary( - SseDeserializer deserializer, - ) { + Guardian sse_decode_guardian(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_health = sse_decode_guardian_health(deserializer); - var var_bitcoin = sse_decode_opt_box_autoadd_guardian_bitcoin_status( - deserializer, - ); - var var_hasLnv2 = sse_decode_bool(deserializer); - var var_hasMeta = sse_decode_bool(deserializer); - return GuardianStatusSummary( - health: var_health, - bitcoin: var_bitcoin, - hasLnv2: var_hasLnv2, - hasMeta: var_hasMeta, - ); + var var_peerId = sse_decode_u_16(deserializer); + var var_name = sse_decode_String(deserializer); + var var_version = sse_decode_opt_String(deserializer); + return Guardian(peerId: var_peerId, name: var_name, version: var_version); } @protected @@ -16605,12 +15388,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return deserializer.buffer.getInt32(); } - @protected - PlatformInt64 sse_decode_i_64(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getPlatformInt64(); - } - @protected InvoicePaidEvent sse_decode_invoice_paid_event(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -16759,34 +15536,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return ans_; } - @protected - List sse_decode_list_guardian_meta_proposal( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - - var len_ = sse_decode_i_32(deserializer); - var ans_ = []; - for (var idx_ = 0; idx_ < len_; ++idx_) { - ans_.add(sse_decode_guardian_meta_proposal(deserializer)); - } - return ans_; - } - - @protected - List sse_decode_list_guardian_module_summary( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - - var len_ = sse_decode_i_32(deserializer); - var ans_ = []; - for (var idx_ = 0; idx_ < len_; ++idx_) { - ans_.add(sse_decode_guardian_module_summary(deserializer)); - } - return ans_; - } - @protected List sse_decode_list_nostr_profile( SseDeserializer deserializer, @@ -16814,10 +15563,10 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - Uint16List sse_decode_list_prim_u_16_strict(SseDeserializer deserializer) { + List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs var len_ = sse_decode_i_32(deserializer); - return deserializer.buffer.getUint16List(len_); + return deserializer.buffer.getUint8List(len_); } @protected @@ -17003,12 +15752,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs var var_amount = sse_decode_u_64(deserializer); var var_outpoint = sse_decode_String(deserializer); - var var_txid = sse_decode_opt_String(deserializer); - return MempoolEvent( - amount: var_amount, - outpoint: var_outpoint, - txid: var_txid, - ); + return MempoolEvent(amount: var_amount, outpoint: var_outpoint); } @protected @@ -17058,7 +15802,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return MultimintEvent_RecoveryDone(var_field0); case 4: var var_field0 = sse_decode_String(deserializer); - var var_field1 = sse_decode_recovery_module(deserializer); + var var_field1 = sse_decode_u_16(deserializer); var var_field2 = sse_decode_u_32(deserializer); var var_field3 = sse_decode_u_32(deserializer); return MultimintEvent_RecoveryProgress( @@ -17099,9 +15843,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { var var_field0 = sse_decode_String(deserializer); return MultimintEvent_UpdateAvailable(var_field0); case 11: - var var_field0 = sse_decode_String(deserializer); - return MultimintEvent_MetaUpdated(var_field0); - case 12: var var_field0 = sse_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_ecash_app_error( deserializer, @@ -17150,13 +15891,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case 3: var var_field0 = sse_decode_u_32(deserializer); return NostrRecoveryPhase_RejoiningFederations(var_field0); - case 4: - return NostrRecoveryPhase_NoBackupFound(); default: throw UnimplementedError(''); } } + @protected + NostrWalletConnectConfig sse_decode_nostr_wallet_connect_config( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_secretKey = sse_decode_u_8_array_32(deserializer); + var var_relay = sse_decode_String(deserializer); + return NostrWalletConnectConfig(secretKey: var_secretKey, relay: var_relay); + } + @protected NWCConnectionInfo sse_decode_nwc_connection_info( SseDeserializer deserializer, @@ -17295,19 +16044,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } - @protected - GuardianBitcoinStatus? sse_decode_opt_box_autoadd_guardian_bitcoin_status( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - - if (sse_decode_bool(deserializer)) { - return (sse_decode_box_autoadd_guardian_bitcoin_status(deserializer)); - } else { - return null; - } - } - @protected int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -17611,22 +16347,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - (bool, BigInt?) sse_decode_record_bool_opt_box_autoadd_u_64( + (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_field0 = sse_decode_bool(deserializer); - var var_field1 = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_field0 = sse_decode_fiat_currency(deserializer); + var var_field1 = sse_decode_u_64(deserializer); return (var_field0, var_field1); } @protected - (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( + (NostrWalletConnectConfig, NWCConnectionInfo) + sse_decode_record_nostr_wallet_connect_config_nwc_connection_info( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_field0 = sse_decode_fiat_currency(deserializer); - var var_field1 = sse_decode_u_64(deserializer); + var var_field0 = sse_decode_nostr_wallet_connect_config(deserializer); + var var_field1 = sse_decode_nwc_connection_info(deserializer); return (var_field0, var_field1); } @@ -17731,13 +16468,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (var_field0, var_field1); } - @protected - RecoveryModule sse_decode_recovery_module(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var inner = sse_decode_i_32(deserializer); - return RecoveryModule.values[inner]; - } - @protected ReissueFees sse_decode_reissue_fees(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -17760,6 +16490,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return RelayStatusKind.values[inner]; } + @protected + SendGatewaySelection sse_decode_send_gateway_selection( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_gatewayUrl = sse_decode_String(deserializer); + var var_amountWithFees = sse_decode_u_64(deserializer); + var var_gatewayFee = sse_decode_u_64(deserializer); + var var_federationFee = sse_decode_u_64(deserializer); + var var_isLnv2 = sse_decode_bool(deserializer); + return SendGatewaySelection( + gatewayUrl: var_gatewayUrl, + amountWithFees: var_amountWithFees, + gatewayFee: var_gatewayFee, + federationFee: var_federationFee, + isLnv2: var_isLnv2, + ); + } + @protected Transaction sse_decode_transaction(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -17905,6 +16654,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return deserializer.buffer.getUint8(); } + @protected + U8Array32 sse_decode_u_8_array_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_list_prim_u_8_strict(deserializer); + return U8Array32(inner); + } + @protected void sse_decode_unit(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -18304,6 +17060,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + TapRecipient self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as TapRecipientImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -18631,13 +17400,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { @protected void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( - SafeUrl self, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + TapRecipient self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_usize( - (self as SafeUrlImpl).frbInternalSseEncode(move: false), + (self as TapRecipientImpl).frbInternalSseEncode(move: false), serializer, ); } @@ -19038,6 +17807,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + TapRecipient self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as TapRecipientImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -19148,7 +17930,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_String(self.outpoint, serializer); sse_encode_u_64(self.blockHeight, serializer); sse_encode_u_64(self.needed, serializer); - sse_encode_opt_String(self.txid, serializer); } @protected @@ -19293,15 +18074,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_f_64(self, serializer); } - @protected - void sse_encode_box_autoadd_guardian_bitcoin_status( - GuardianBitcoinStatus self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_guardian_bitcoin_status(self, serializer); - } - @protected void sse_encode_box_autoadd_invoice_paid_event( InvoicePaidEvent self, @@ -19338,6 +18110,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_nostr_recovery_phase(self, serializer); } + @protected + void sse_encode_box_autoadd_nostr_wallet_connect_config( + NostrWalletConnectConfig self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_nostr_wallet_connect_config(self, serializer); + } + @protected void sse_encode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -19416,7 +18197,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_u_64(self.amount, serializer); sse_encode_String(self.outpoint, serializer); - sse_encode_opt_String(self.txid, serializer); } @protected @@ -19427,7 +18207,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_u_64(self.amount, serializer); sse_encode_String(self.outpoint, serializer); - sse_encode_opt_String(self.txid, serializer); } @protected @@ -19557,20 +18336,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case EcashAppError_InvalidLightningAddress(field0: final field0): sse_encode_i_32(10, serializer); sse_encode_String(field0, serializer); - case EcashAppError_LnurlAmountMismatch( - requestedMsats: final requestedMsats, - invoiceMsats: final invoiceMsats, - ): - sse_encode_i_32(11, serializer); - sse_encode_u_64(requestedMsats, serializer); - sse_encode_u_64(invoiceMsats, serializer); case EcashAppError_PaymentRefunded(field0: final field0): - sse_encode_i_32(12, serializer); + sse_encode_i_32(11, serializer); sse_encode_String(field0, serializer); case EcashAppError_Timeout(): - sse_encode_i_32(13, serializer); + sse_encode_i_32(12, serializer); case EcashAppError_Other(field0: final field0): - sse_encode_i_32(14, serializer); + sse_encode_i_32(13, serializer); sse_encode_String(field0, serializer); } } @@ -19581,178 +18353,66 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_u_64(self.amountMsats, serializer); - sse_encode_u_64(self.feeMsats, serializer); - } - - @protected - void sse_encode_f_64(double self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putFloat64(self); - } - - @protected - void sse_encode_fedimint_gateway( - FedimintGateway self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_String(self.endpoint, serializer); - sse_encode_u_64(self.baseRoutingFee, serializer); - sse_encode_u_64(self.ppmRoutingFee, serializer); - sse_encode_u_64(self.baseTransactionFee, serializer); - sse_encode_u_64(self.ppmTransactionFee, serializer); - sse_encode_opt_String(self.lightningAlias, serializer); - sse_encode_opt_String(self.lightningNode, serializer); - sse_encode_bool(self.isLnv2, serializer); - sse_encode_bool(self.isVettted, serializer); - sse_encode_opt_box_autoadd_u_64(self.federationIndex, serializer); - sse_encode_opt_box_autoadd_u_64(self.minBaseRoutingFee, serializer); - sse_encode_opt_box_autoadd_u_64(self.minPpmRoutingFee, serializer); - } - - @protected - void sse_encode_fiat_currency(FiatCurrency self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_i_32(self.index, serializer); - } - - @protected - void sse_encode_gateway_payment_preview( - GatewayPaymentPreview self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_fedimint_gateway(self.gateway, serializer); - sse_encode_u_64(self.amountWithFees, serializer); - sse_encode_u_64(self.gatewayFee, serializer); - sse_encode_u_64(self.federationFee, serializer); - } - - @protected - void sse_encode_guardian(Guardian self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_u_16(self.peerId, serializer); - sse_encode_String(self.name, serializer); - sse_encode_opt_String(self.version, serializer); - } - - @protected - void sse_encode_guardian_audit_summary( - GuardianAuditSummary self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_i_64(self.netAssetsMsats, serializer); - sse_encode_list_guardian_module_summary(self.moduleSummaries, serializer); - } - - @protected - void sse_encode_guardian_backup_statistics( - GuardianBackupStatistics self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_u_64(self.numBackups, serializer); - sse_encode_u_64(self.totalSizeBytes, serializer); - sse_encode_u_64(self.refreshed1D, serializer); - sse_encode_u_64(self.refreshed1W, serializer); - sse_encode_u_64(self.refreshed1M, serializer); - sse_encode_u_64(self.refreshed3M, serializer); - } - - @protected - void sse_encode_guardian_bitcoin_status( - GuardianBitcoinStatus self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_opt_String(self.kind, serializer); - sse_encode_opt_String(self.url, serializer); - sse_encode_u_64(self.consensusBlockCount, serializer); - sse_encode_opt_box_autoadd_u_64(self.localBlockCount, serializer); - sse_encode_opt_box_autoadd_u_64( - self.consensusFeerateSatsPerKvb, - serializer, - ); - } - - @protected - void sse_encode_guardian_health( - GuardianHealth self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_bool(self.consensusRunning, serializer); - sse_encode_String(self.serverStatus, serializer); - sse_encode_opt_box_autoadd_u_64(self.sessionCount, serializer); - sse_encode_u_64(self.peersOnline, serializer); - sse_encode_u_64(self.peersTotal, serializer); - sse_encode_opt_box_autoadd_u_64(self.consensusOrdLatencyMs, serializer); - sse_encode_opt_box_autoadd_u_64(self.scheduledShutdownSession, serializer); + sse_encode_u_64(self.amountMsats, serializer); + sse_encode_u_64(self.feeMsats, serializer); } @protected - void sse_encode_guardian_meta_proposal( - GuardianMetaProposal self, - SseSerializer serializer, - ) { + void sse_encode_f_64(double self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_list_prim_u_16_strict(self.peerIds, serializer); - sse_encode_String(self.valueHex, serializer); - sse_encode_opt_String(self.valueJson, serializer); - sse_encode_bool(self.isOurs, serializer); + serializer.buffer.putFloat64(self); } @protected - void sse_encode_guardian_meta_state( - GuardianMetaState self, + void sse_encode_fedimint_gateway( + FedimintGateway self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_opt_String(self.consensusJson, serializer); - sse_encode_opt_box_autoadd_u_64(self.revision, serializer); - sse_encode_list_guardian_meta_proposal(self.proposals, serializer); - sse_encode_u_16(self.threshold, serializer); - sse_encode_u_16(self.totalGuardians, serializer); + sse_encode_String(self.endpoint, serializer); + sse_encode_u_64(self.baseRoutingFee, serializer); + sse_encode_u_64(self.ppmRoutingFee, serializer); + sse_encode_u_64(self.baseTransactionFee, serializer); + sse_encode_u_64(self.ppmTransactionFee, serializer); + sse_encode_opt_String(self.lightningAlias, serializer); + sse_encode_opt_String(self.lightningNode, serializer); + sse_encode_bool(self.isLnv2, serializer); + sse_encode_bool(self.isVettted, serializer); + sse_encode_opt_box_autoadd_u_64(self.federationIndex, serializer); + sse_encode_opt_box_autoadd_u_64(self.minBaseRoutingFee, serializer); + sse_encode_opt_box_autoadd_u_64(self.minPpmRoutingFee, serializer); } @protected - void sse_encode_guardian_module_summary( - GuardianModuleSummary self, - SseSerializer serializer, - ) { + void sse_encode_fiat_currency(FiatCurrency self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_u_16(self.moduleInstanceId, serializer); - sse_encode_String(self.kind, serializer); - sse_encode_i_64(self.netAssetsMsats, serializer); + sse_encode_i_32(self.index, serializer); } @protected - void sse_encode_guardian_status_summary( - GuardianStatusSummary self, + void sse_encode_gateway_payment_preview( + GatewayPaymentPreview self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_guardian_health(self.health, serializer); - sse_encode_opt_box_autoadd_guardian_bitcoin_status( - self.bitcoin, - serializer, - ); - sse_encode_bool(self.hasLnv2, serializer); - sse_encode_bool(self.hasMeta, serializer); + sse_encode_fedimint_gateway(self.gateway, serializer); + sse_encode_u_64(self.amountWithFees, serializer); + sse_encode_u_64(self.gatewayFee, serializer); + sse_encode_u_64(self.federationFee, serializer); } @protected - void sse_encode_i_32(int self, SseSerializer serializer) { + void sse_encode_guardian(Guardian self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putInt32(self); + sse_encode_u_16(self.peerId, serializer); + sse_encode_String(self.name, serializer); + sse_encode_opt_String(self.version, serializer); } @protected - void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer) { + void sse_encode_i_32(int self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putPlatformInt64(self); + serializer.buffer.putInt32(self); } @protected @@ -19878,30 +18538,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } - @protected - void sse_encode_list_guardian_meta_proposal( - List self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_i_32(self.length, serializer); - for (final item in self) { - sse_encode_guardian_meta_proposal(item, serializer); - } - } - - @protected - void sse_encode_list_guardian_module_summary( - List self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_i_32(self.length, serializer); - for (final item in self) { - sse_encode_guardian_module_summary(item, serializer); - } - } - @protected void sse_encode_list_nostr_profile( List self, @@ -19927,13 +18563,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_list_prim_u_16_strict( - Uint16List self, + void sse_encode_list_prim_u_8_loose( + List self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_i_32(self.length, serializer); - serializer.buffer.putUint16List(self); + serializer.buffer.putUint8List( + self is Uint8List ? self : Uint8List.fromList(self), + ); } @protected @@ -20095,7 +18733,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_u_64(self.amount, serializer); sse_encode_String(self.outpoint, serializer); - sse_encode_opt_String(self.txid, serializer); } @protected @@ -20149,7 +18786,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ): sse_encode_i_32(4, serializer); sse_encode_String(field0, serializer); - sse_encode_recovery_module(field1, serializer); + sse_encode_u_16(field1, serializer); sse_encode_u_32(field2, serializer); sse_encode_u_32(field3, serializer); case MultimintEvent_Ecash(field0: final field0): @@ -20186,11 +18823,8 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case MultimintEvent_UpdateAvailable(field0: final field0): sse_encode_i_32(10, serializer); sse_encode_String(field0, serializer); - case MultimintEvent_MetaUpdated(field0: final field0): - sse_encode_i_32(11, serializer); - sse_encode_String(field0, serializer); case MultimintEvent_PaymentError(field0: final field0): - sse_encode_i_32(12, serializer); + sse_encode_i_32(11, serializer); sse_encode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_ecash_app_error( field0, serializer, @@ -20226,11 +18860,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case NostrRecoveryPhase_RejoiningFederations(field0: final field0): sse_encode_i_32(3, serializer); sse_encode_u_32(field0, serializer); - case NostrRecoveryPhase_NoBackupFound(): - sse_encode_i_32(4, serializer); } } + @protected + void sse_encode_nostr_wallet_connect_config( + NostrWalletConnectConfig self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_u_8_array_32(self.secretKey, serializer); + sse_encode_String(self.relay, serializer); + } + @protected void sse_encode_nwc_connection_info( NWCConnectionInfo self, @@ -20369,19 +19011,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } - @protected - void sse_encode_opt_box_autoadd_guardian_bitcoin_status( - GuardianBitcoinStatus? self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - - sse_encode_bool(self != null, serializer); - if (self != null) { - sse_encode_box_autoadd_guardian_bitcoin_status(self, serializer); - } - } - @protected void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -20666,23 +19295,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_record_bool_opt_box_autoadd_u_64( - (bool, BigInt?) self, + void sse_encode_record_fiat_currency_u_64( + (FiatCurrency, BigInt) self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_bool(self.$1, serializer); - sse_encode_opt_box_autoadd_u_64(self.$2, serializer); + sse_encode_fiat_currency(self.$1, serializer); + sse_encode_u_64(self.$2, serializer); } @protected - void sse_encode_record_fiat_currency_u_64( - (FiatCurrency, BigInt) self, + void sse_encode_record_nostr_wallet_connect_config_nwc_connection_info( + (NostrWalletConnectConfig, NWCConnectionInfo) self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_fiat_currency(self.$1, serializer); - sse_encode_u_64(self.$2, serializer); + sse_encode_nostr_wallet_connect_config(self.$1, serializer); + sse_encode_nwc_connection_info(self.$2, serializer); } @protected @@ -20788,15 +19417,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_usize(self.$2, serializer); } - @protected - void sse_encode_recovery_module( - RecoveryModule self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_i_32(self.index, serializer); - } - @protected void sse_encode_reissue_fees(ReissueFees self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -20815,6 +19435,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_i_32(self.index, serializer); } + @protected + void sse_encode_send_gateway_selection( + SendGatewaySelection self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.gatewayUrl, serializer); + sse_encode_u_64(self.amountWithFees, serializer); + sse_encode_u_64(self.gatewayFee, serializer); + sse_encode_u_64(self.federationFee, serializer); + sse_encode_bool(self.isLnv2, serializer); + } + @protected void sse_encode_transaction(Transaction self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -20945,6 +19578,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { serializer.buffer.putUint8(self); } + @protected + void sse_encode_u_8_array_32(U8Array32 self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_list_prim_u_8_strict(self.inner, serializer); + } + @protected void sse_encode_unit(void self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -21716,13 +20355,6 @@ class MultimintImpl extends RustOpaque implements Multimint { operationId: operationId, ); - /// Fallible on purpose. The UI polls this, and both failure modes are - /// ordinary rather than exceptional: the federation can be left while a - /// screen still holds its id, and the balance query itself can fail - /// transiently while a module is still coming up during recovery. - /// - /// Returning zero for either would be worse than an error — a wallet - /// showing a confident zero is alarming and wrong. Future balance({required FederationId federationId}) => RustLib .instance .api @@ -21796,6 +20428,9 @@ class MultimintImpl extends RustOpaque implements Multimint { federationId: federationId, ); + Future clearPinHash() => + RustLib.instance.api.crateMultimintMultimintClearPinHash(that: this); + Future> computeAllGatewayPreviews({ required FederationId federationId, required Amount amount, @@ -21920,158 +20555,21 @@ class MultimintImpl extends RustOpaque implements Multimint { Future getRecoveryProgress({ required FederationId federationId, - required RecoveryModule recoveryModule, + required int moduleId, }) => RustLib.instance.api.crateMultimintMultimintGetRecoveryProgress( that: this, federationId: federationId, - recoveryModule: recoveryModule, + moduleId: moduleId, ); + Future getRequirePinForSpending() => RustLib.instance.api + .crateMultimintMultimintGetRequirePinForSpending(that: this); + Future getShowMsats() => RustLib.instance.api.crateMultimintMultimintGetShowMsats(that: this); - /// Returns false when the gateway was already whitelisted. - Future guardianAddGateway({ - required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, - }) => RustLib.instance.api.crateMultimintMultimintGuardianAddGateway( - that: this, - federationId: federationId, - peer: peer, - password: password, - gatewayUrl: gatewayUrl, - ); - - Future guardianAudit({ - required FederationId federationId, - required int peer, - required String password, - }) => RustLib.instance.api.crateMultimintMultimintGuardianAudit( - that: this, - federationId: federationId, - peer: peer, - password: password, - ); - - Future guardianBackupStatistics({ - required FederationId federationId, - required int peer, - required String password, - }) => RustLib.instance.api.crateMultimintMultimintGuardianBackupStatistics( - that: this, - federationId: federationId, - peer: peer, - password: password, - ); - - /// The lnv2 gateway whitelist is per-guardian state, so listing queries - /// the given peer directly instead of the client's default strategy. - Future> guardianListGateways({ - required FederationId federationId, - required int peer, - }) => RustLib.instance.api.crateMultimintMultimintGuardianListGateways( - that: this, - federationId: federationId, - peer: peer, - ); - - /// Verify guardian admin credentials against the `auth` endpoint, which - /// succeeds only with the correct password. Returns `Ok(false)` on a - /// rejected password (also the guardian's response when it has no admin - /// password configured at all) and `Err` when the guardian is unreachable. - Future guardianLogin({ - required FederationId federationId, - required int peer, - required String password, - }) => RustLib.instance.api.crateMultimintMultimintGuardianLogin( - that: this, - federationId: federationId, - peer: peer, - password: password, - ); - - /// Back an existing proposal by resubmitting its exact bytes. - Future guardianMetaAccept({ - required FederationId federationId, - required int peer, - required String password, - required String valueHex, - }) => RustLib.instance.api.crateMultimintMultimintGuardianMetaAccept( - that: this, - federationId: federationId, - peer: peer, - password: password, - valueHex: valueHex, - ); - - /// Propose a single field change. The meta module stores one JSON document - /// per key, so this reads the current consensus document, applies the edit - /// and submits the whole document back. Passing `None` removes the field. - Future guardianMetaProposeField({ - required FederationId federationId, - required int peer, - required String password, - required String field, - String? value, - }) => RustLib.instance.api.crateMultimintMultimintGuardianMetaProposeField( - that: this, - federationId: federationId, - peer: peer, - password: password, - field: field, - value: value, - ); - - Future guardianMetaState({ - required FederationId federationId, - required int peer, - required String password, - }) => RustLib.instance.api.crateMultimintMultimintGuardianMetaState( - that: this, - federationId: federationId, - peer: peer, - password: password, - ); - - /// Withdraw this guardian's vote by submitting the current consensus - /// value, which is how the meta module expresses "no change". - Future guardianMetaWithdraw({ - required FederationId federationId, - required int peer, - required String password, - }) => RustLib.instance.api.crateMultimintMultimintGuardianMetaWithdraw( - that: this, - federationId: federationId, - peer: peer, - password: password, - ); - - /// Returns false when the gateway was not whitelisted to begin with. - Future guardianRemoveGateway({ - required FederationId federationId, - required int peer, - required String password, - required String gatewayUrl, - }) => RustLib.instance.api.crateMultimintMultimintGuardianRemoveGateway( - that: this, - federationId: federationId, - peer: peer, - password: password, - gatewayUrl: gatewayUrl, - ); - - Future guardianStatus({ - required FederationId federationId, - required int peer, - required String password, - }) => RustLib.instance.api.crateMultimintMultimintGuardianStatus( - that: this, - federationId: federationId, - peer: peer, - password: password, - ); + Future hasPinCode() => + RustLib.instance.api.crateMultimintMultimintHasPinCode(that: this); Future hasSeedPhraseAck() => RustLib.instance.api.crateMultimintMultimintHasSeedPhraseAck(that: this); @@ -22091,43 +20589,6 @@ class MultimintImpl extends RustOpaque implements Multimint { federationId: federationId, ); - /// Computes the largest amount (in msats) the user can pay over Lightning - /// out of this federation's balance through `gateway`, accounting for that - /// gateway's routing fee (added on top of the invoice) and the - /// on-federation send fee. This is the amount to request an invoice for in - /// order to spend (close to) the whole balance, and backs the "Max" button - /// when paying a Lightning Address / LNURL where the user chooses the amount - /// and the gateway. - /// - /// `is_lnv2` selects which module to quote against — the same gateway the - /// user picked on the number pad and will pay through — so the result is - /// deterministic instead of relying on auto-selection. Pinning the gateway - /// also avoids the guardian gateway-list lookup: LNv2 makes a single - /// `routing_info` call to that gateway, and LNv1 quotes entirely locally - /// against its cached announcement. The quote is point-in-time (it moves - /// with the balance); the eventual send remains the source of truth and may - /// still fail if the balance or gateway state changes in between. - /// - /// `loopback` picks the fee schedule: `false` charges the gateway's default - /// send fee for a payment routed over Lightning, `true` the cheap - /// no-Lightning-hop fee — `send_fee_minimum` for LNv2, and for LNv1 no - /// routing fee at all, since an internal payment has no gateway in the - /// path. It is a caller's decision because it is a property of the invoice, - /// not of the balance: see [`Self::probe_invoice_is_loopback`], which - /// answers it from a throwaway invoice before the real amount is chosen. - Future maxLightningSend({ - required FederationId federationId, - required SafeUrl gateway, - required bool isLnv2, - required bool loopback, - }) => RustLib.instance.api.crateMultimintMultimintMaxLightningSend( - that: this, - federationId: federationId, - gateway: gateway, - isLnv2: isLnv2, - loopback: loopback, - ); - Future parseEcash({ required FederationId federationId, required OobNotes notes, @@ -22137,26 +20598,6 @@ class MultimintImpl extends RustOpaque implements Multimint { notes: notes, ); - /// Whether an invoice would be paid without a Lightning hop through the - /// single gateway the user picked, without pricing every other gateway the - /// way [`Self::compute_all_gateway_previews`] does. - /// - /// Backs the "Max" button's probe: the amount has to be chosen before the - /// real invoice is requested, so a throwaway invoice is fetched first just - /// to answer this question and pick the right fee schedule. - Future probeInvoiceIsLoopback({ - required FederationId federationId, - required SafeUrl gateway, - required bool isLnv2, - required Bolt11Invoice invoice, - }) => RustLib.instance.api.crateMultimintMultimintProbeInvoiceIsLoopback( - that: this, - federationId: federationId, - gateway: gateway, - isLnv2: isLnv2, - invoice: invoice, - ); - Future<(Bolt11Invoice, OperationId)> receive({ required FederationId federationId, required BigInt amountMsatsWithFees, @@ -22207,17 +20648,6 @@ class MultimintImpl extends RustOpaque implements Multimint { Future refreshConnections() => RustLib.instance.api .crateMultimintMultimintRefreshConnections(that: this); - /// Refetch and re-cache a federation's meta immediately, bypassing both the - /// cached value and the periodic refresh task. Used after a guardian action - /// changes meta consensus, so the app reflects it without waiting out the - /// cache interval. - Future refreshFederationMeta({ - required FederationId federationId, - }) => RustLib.instance.api.crateMultimintMultimintRefreshFederationMeta( - that: this, - federationId: federationId, - ); - /// Register LNURL/LN Address Future registerLnAddress({ required FederationId federationId, @@ -22252,6 +20682,17 @@ class MultimintImpl extends RustOpaque implements Multimint { backupInviteCodes: backupInviteCodes, ); + Future selectSendGateway({ + required FederationId federationId, + required Amount amount, + required Bolt11Invoice bolt11, + }) => RustLib.instance.api.crateMultimintMultimintSelectSendGateway( + that: this, + federationId: federationId, + amount: amount, + bolt11: bolt11, + ); + Future send({ required FederationId federationId, required String invoice, @@ -22302,6 +20743,15 @@ class MultimintImpl extends RustOpaque implements Multimint { fiatCurrency: fiatCurrency, ); + Future setPinHash({required String pin}) => RustLib.instance.api + .crateMultimintMultimintSetPinHash(that: this, pin: pin); + + Future setRequirePinForSpending({required bool require}) => + RustLib.instance.api.crateMultimintMultimintSetRequirePinForSpending( + that: this, + require: require, + ); + Future setShowMsats({required bool showMsats}) => RustLib.instance.api .crateMultimintMultimintSetShowMsats(that: this, showMsats: showMsats); @@ -22318,6 +20768,9 @@ class MultimintImpl extends RustOpaque implements Multimint { modules: modules, ); + Future verifyPin({required String pin}) => RustLib.instance.api + .crateMultimintMultimintVerifyPin(that: this, pin: pin); + Future> walletSummary({ String? invite, FederationId? federationId, @@ -22401,6 +20854,15 @@ class NostrClientImpl extends RustOpaque implements NostrClient { .api .crateNostrNostrClientGetFollowsForPubkey(that: this, npub: npub); + /// Get NWC config for a federation and return it. + /// This is used by the blocking listen function. + Future<(NostrWalletConnectConfig, NWCConnectionInfo)> getNwcConfig({ + required FederationId federationId, + }) => RustLib.instance.api.crateNostrNostrClientGetNwcConfig( + that: this, + federationId: federationId, + ); + Future> getNwcConnectionInfo() => RustLib.instance.api .crateNostrNostrClientGetNwcConnectionInfo(that: this); @@ -22761,6 +21223,35 @@ class SafeUrlImpl extends RustOpaque implements SafeUrl { ); } +@sealed +class TapRecipientImpl extends RustOpaque implements TapRecipient { + // Not to be used by end users + TapRecipientImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + TapRecipientImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_TapRecipient, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_TapRecipient, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_TapRecipientPtr, + ); + + /// Decrypt a blob produced by [`encrypt_ecash`], returning the original + /// ecash string ready to pass to `reissue_ecash`. + String decrypt({required List blob}) => RustLib.instance.api + .crateTapTransferTapRecipientDecrypt(that: this, blob: blob); + + /// The 33-byte compressed public key to hand to the sender over NFC. + Uint8List publicKey() => + RustLib.instance.api.crateTapTransferTapRecipientPublicKey(that: this); +} + @sealed class WithdrawFeesImpl extends RustOpaque implements WithdrawFees { // Not to be used by end users diff --git a/lib/frb_generated.io.dart b/lib/frb_generated.io.dart index 63658f9d..5524d315 100644 --- a/lib/frb_generated.io.dart +++ b/lib/frb_generated.io.dart @@ -12,10 +12,10 @@ import 'event_bus.dart'; import 'fountain.dart'; import 'frb_generated.dart'; import 'lib.dart'; -import 'lnurl_client.dart'; import 'multimint.dart'; import 'nostr.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; +import 'tap_transfer.dart'; abstract class RustLibApiImplPlatform extends BaseApiImpl { RustLibApiImplPlatform({ @@ -136,6 +136,10 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SafeUrlPtr => wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrlPtr; + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_TapRecipientPtr => + wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipientPtr; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_WithdrawFeesPtr => wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesPtr; @@ -315,6 +319,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + TapRecipient + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + dynamic raw, + ); + @protected WithdrawFees dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -466,8 +476,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - SafeUrl - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + TapRecipient + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( dynamic raw, ); @@ -651,6 +661,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + TapRecipient + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + dynamic raw, + ); + @protected WithdrawFees dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -748,11 +764,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double dco_decode_box_autoadd_f_64(dynamic raw); - @protected - GuardianBitcoinStatus dco_decode_box_autoadd_guardian_bitcoin_status( - dynamic raw, - ); - @protected InvoicePaidEvent dco_decode_box_autoadd_invoice_paid_event(dynamic raw); @@ -765,6 +776,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected NostrRecoveryPhase dco_decode_box_autoadd_nostr_recovery_phase(dynamic raw); + @protected + NostrWalletConnectConfig dco_decode_box_autoadd_nostr_wallet_connect_config( + dynamic raw, + ); + @protected (FederationId, DepositEventKind) dco_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -843,36 +859,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected Guardian dco_decode_guardian(dynamic raw); - @protected - GuardianAuditSummary dco_decode_guardian_audit_summary(dynamic raw); - - @protected - GuardianBackupStatistics dco_decode_guardian_backup_statistics(dynamic raw); - - @protected - GuardianBitcoinStatus dco_decode_guardian_bitcoin_status(dynamic raw); - - @protected - GuardianHealth dco_decode_guardian_health(dynamic raw); - - @protected - GuardianMetaProposal dco_decode_guardian_meta_proposal(dynamic raw); - - @protected - GuardianMetaState dco_decode_guardian_meta_state(dynamic raw); - - @protected - GuardianModuleSummary dco_decode_guardian_module_summary(dynamic raw); - - @protected - GuardianStatusSummary dco_decode_guardian_status_summary(dynamic raw); - @protected int dco_decode_i_32(dynamic raw); - @protected - PlatformInt64 dco_decode_i_64(dynamic raw); - @protected InvoicePaidEvent dco_decode_invoice_paid_event(dynamic raw); @@ -911,16 +900,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List dco_decode_list_guardian(dynamic raw); - @protected - List dco_decode_list_guardian_meta_proposal( - dynamic raw, - ); - - @protected - List dco_decode_list_guardian_module_summary( - dynamic raw, - ); - @protected List dco_decode_list_nostr_profile(dynamic raw); @@ -928,7 +907,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { List dco_decode_list_peer_status(dynamic raw); @protected - Uint16List dco_decode_list_prim_u_16_strict(dynamic raw); + List dco_decode_list_prim_u_8_loose(dynamic raw); @protected Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); @@ -992,6 +971,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected NostrRecoveryPhase dco_decode_nostr_recovery_phase(dynamic raw); + @protected + NostrWalletConnectConfig dco_decode_nostr_wallet_connect_config(dynamic raw); + @protected NWCConnectionInfo dco_decode_nwc_connection_info(dynamic raw); @@ -1036,11 +1018,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double? dco_decode_opt_box_autoadd_f_64(dynamic raw); - @protected - GuardianBitcoinStatus? dco_decode_opt_box_autoadd_guardian_bitcoin_status( - dynamic raw, - ); - @protected int? dco_decode_opt_box_autoadd_u_32(dynamic raw); @@ -1136,10 +1113,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - (bool, BigInt?) dco_decode_record_bool_opt_box_autoadd_u_64(dynamic raw); + (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw); @protected - (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw); + (NostrWalletConnectConfig, NWCConnectionInfo) + dco_decode_record_nostr_wallet_connect_config_nwc_connection_info( + dynamic raw, + ); @protected (ParsedText, FederationSelector) @@ -1180,15 +1160,15 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected (BigInt, BigInt) dco_decode_record_u_64_usize(dynamic raw); - @protected - RecoveryModule dco_decode_recovery_module(dynamic raw); - @protected ReissueFees dco_decode_reissue_fees(dynamic raw); @protected RelayStatusKind dco_decode_relay_status_kind(dynamic raw); + @protected + SendGatewaySelection dco_decode_send_gateway_selection(dynamic raw); + @protected Transaction dco_decode_transaction(dynamic raw); @@ -1207,6 +1187,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int dco_decode_u_8(dynamic raw); + @protected + U8Array32 dco_decode_u_8_array_32(dynamic raw); + @protected void dco_decode_unit(dynamic raw); @@ -1387,6 +1370,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + TapRecipient + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + SseDeserializer deserializer, + ); + @protected WithdrawFees sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -1538,8 +1527,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - SafeUrl - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + TapRecipient + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( SseDeserializer deserializer, ); @@ -1723,6 +1712,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + TapRecipient + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + SseDeserializer deserializer, + ); + @protected WithdrawFees sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -1834,11 +1829,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double sse_decode_box_autoadd_f_64(SseDeserializer deserializer); - @protected - GuardianBitcoinStatus sse_decode_box_autoadd_guardian_bitcoin_status( - SseDeserializer deserializer, - ); - @protected InvoicePaidEvent sse_decode_box_autoadd_invoice_paid_event( SseDeserializer deserializer, @@ -1859,6 +1849,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + NostrWalletConnectConfig sse_decode_box_autoadd_nostr_wallet_connect_config( + SseDeserializer deserializer, + ); + @protected (FederationId, DepositEventKind) sse_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -1943,50 +1938,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected Guardian sse_decode_guardian(SseDeserializer deserializer); - @protected - GuardianAuditSummary sse_decode_guardian_audit_summary( - SseDeserializer deserializer, - ); - - @protected - GuardianBackupStatistics sse_decode_guardian_backup_statistics( - SseDeserializer deserializer, - ); - - @protected - GuardianBitcoinStatus sse_decode_guardian_bitcoin_status( - SseDeserializer deserializer, - ); - - @protected - GuardianHealth sse_decode_guardian_health(SseDeserializer deserializer); - - @protected - GuardianMetaProposal sse_decode_guardian_meta_proposal( - SseDeserializer deserializer, - ); - - @protected - GuardianMetaState sse_decode_guardian_meta_state( - SseDeserializer deserializer, - ); - - @protected - GuardianModuleSummary sse_decode_guardian_module_summary( - SseDeserializer deserializer, - ); - - @protected - GuardianStatusSummary sse_decode_guardian_status_summary( - SseDeserializer deserializer, - ); - @protected int sse_decode_i_32(SseDeserializer deserializer); - @protected - PlatformInt64 sse_decode_i_64(SseDeserializer deserializer); - @protected InvoicePaidEvent sse_decode_invoice_paid_event(SseDeserializer deserializer); @@ -2031,16 +1985,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List sse_decode_list_guardian(SseDeserializer deserializer); - @protected - List sse_decode_list_guardian_meta_proposal( - SseDeserializer deserializer, - ); - - @protected - List sse_decode_list_guardian_module_summary( - SseDeserializer deserializer, - ); - @protected List sse_decode_list_nostr_profile( SseDeserializer deserializer, @@ -2050,7 +1994,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { List sse_decode_list_peer_status(SseDeserializer deserializer); @protected - Uint16List sse_decode_list_prim_u_16_strict(SseDeserializer deserializer); + List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); @protected Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); @@ -2122,6 +2066,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + NostrWalletConnectConfig sse_decode_nostr_wallet_connect_config( + SseDeserializer deserializer, + ); + @protected NWCConnectionInfo sse_decode_nwc_connection_info( SseDeserializer deserializer, @@ -2170,11 +2119,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double? sse_decode_opt_box_autoadd_f_64(SseDeserializer deserializer); - @protected - GuardianBitcoinStatus? sse_decode_opt_box_autoadd_guardian_bitcoin_status( - SseDeserializer deserializer, - ); - @protected int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer); @@ -2270,12 +2214,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - (bool, BigInt?) sse_decode_record_bool_opt_box_autoadd_u_64( + (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( SseDeserializer deserializer, ); @protected - (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( + (NostrWalletConnectConfig, NWCConnectionInfo) + sse_decode_record_nostr_wallet_connect_config_nwc_connection_info( SseDeserializer deserializer, ); @@ -2322,15 +2267,17 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected (BigInt, BigInt) sse_decode_record_u_64_usize(SseDeserializer deserializer); - @protected - RecoveryModule sse_decode_recovery_module(SseDeserializer deserializer); - @protected ReissueFees sse_decode_reissue_fees(SseDeserializer deserializer); @protected RelayStatusKind sse_decode_relay_status_kind(SseDeserializer deserializer); + @protected + SendGatewaySelection sse_decode_send_gateway_selection( + SseDeserializer deserializer, + ); + @protected Transaction sse_decode_transaction(SseDeserializer deserializer); @@ -2349,6 +2296,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int sse_decode_u_8(SseDeserializer deserializer); + @protected + U8Array32 sse_decode_u_8_array_32(SseDeserializer deserializer); + @protected void sse_decode_unit(SseDeserializer deserializer); @@ -2560,6 +2510,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + TapRecipient self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -2737,8 +2694,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( - SafeUrl self, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + TapRecipient self, SseSerializer serializer, ); @@ -2952,6 +2909,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + TapRecipient self, + SseSerializer serializer, + ); + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -3084,12 +3048,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_box_autoadd_f_64(double self, SseSerializer serializer); - @protected - void sse_encode_box_autoadd_guardian_bitcoin_status( - GuardianBitcoinStatus self, - SseSerializer serializer, - ); - @protected void sse_encode_box_autoadd_invoice_paid_event( InvoicePaidEvent self, @@ -3114,6 +3072,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_box_autoadd_nostr_wallet_connect_config( + NostrWalletConnectConfig self, + SseSerializer serializer, + ); + @protected void sse_encode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -3217,60 +3181,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_guardian(Guardian self, SseSerializer serializer); - @protected - void sse_encode_guardian_audit_summary( - GuardianAuditSummary self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_backup_statistics( - GuardianBackupStatistics self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_bitcoin_status( - GuardianBitcoinStatus self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_health( - GuardianHealth self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_meta_proposal( - GuardianMetaProposal self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_meta_state( - GuardianMetaState self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_module_summary( - GuardianModuleSummary self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_status_summary( - GuardianStatusSummary self, - SseSerializer serializer, - ); - @protected void sse_encode_i_32(int self, SseSerializer serializer); - @protected - void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer); - @protected void sse_encode_invoice_paid_event( InvoicePaidEvent self, @@ -3324,18 +3237,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_list_guardian(List self, SseSerializer serializer); - @protected - void sse_encode_list_guardian_meta_proposal( - List self, - SseSerializer serializer, - ); - - @protected - void sse_encode_list_guardian_module_summary( - List self, - SseSerializer serializer, - ); - @protected void sse_encode_list_nostr_profile( List self, @@ -3349,10 +3250,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - void sse_encode_list_prim_u_16_strict( - Uint16List self, - SseSerializer serializer, - ); + void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); @protected void sse_encode_list_prim_u_8_strict( @@ -3446,6 +3344,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_nostr_wallet_connect_config( + NostrWalletConnectConfig self, + SseSerializer serializer, + ); + @protected void sse_encode_nwc_connection_info( NWCConnectionInfo self, @@ -3504,12 +3408,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_opt_box_autoadd_f_64(double? self, SseSerializer serializer); - @protected - void sse_encode_opt_box_autoadd_guardian_bitcoin_status( - GuardianBitcoinStatus? self, - SseSerializer serializer, - ); - @protected void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer); @@ -3623,14 +3521,14 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - void sse_encode_record_bool_opt_box_autoadd_u_64( - (bool, BigInt?) self, + void sse_encode_record_fiat_currency_u_64( + (FiatCurrency, BigInt) self, SseSerializer serializer, ); @protected - void sse_encode_record_fiat_currency_u_64( - (FiatCurrency, BigInt) self, + void sse_encode_record_nostr_wallet_connect_config_nwc_connection_info( + (NostrWalletConnectConfig, NWCConnectionInfo) self, SseSerializer serializer, ); @@ -3688,12 +3586,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); - @protected - void sse_encode_recovery_module( - RecoveryModule self, - SseSerializer serializer, - ); - @protected void sse_encode_reissue_fees(ReissueFees self, SseSerializer serializer); @@ -3703,6 +3595,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_send_gateway_selection( + SendGatewaySelection self, + SseSerializer serializer, + ); + @protected void sse_encode_transaction(Transaction self, SseSerializer serializer); @@ -3724,6 +3622,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_u_8(int self, SseSerializer serializer); + @protected + void sse_encode_u_8_array_32(U8Array32 self, SseSerializer serializer); + @protected void sse_encode_unit(void self, SseSerializer serializer); @@ -4734,6 +4635,40 @@ class RustLibWire implements BaseWire { _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrlPtr .asFunction)>(); + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipientPtr = + _lookup)>>( + 'frbgen_ecashapp_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipientPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipientPtr = + _lookup)>>( + 'frbgen_ecashapp_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipientPtr + .asFunction)>(); + void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( ffi.Pointer ptr, diff --git a/lib/frb_generated.web.dart b/lib/frb_generated.web.dart index 11ab9d09..12147f76 100644 --- a/lib/frb_generated.web.dart +++ b/lib/frb_generated.web.dart @@ -14,10 +14,10 @@ import 'event_bus.dart'; import 'fountain.dart'; import 'frb_generated.dart'; import 'lib.dart'; -import 'lnurl_client.dart'; import 'multimint.dart'; import 'nostr.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; +import 'tap_transfer.dart'; abstract class RustLibApiImplPlatform extends BaseApiImpl { RustLibApiImplPlatform({ @@ -138,6 +138,10 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SafeUrlPtr => wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl; + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_TapRecipientPtr => + wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_WithdrawFeesPtr => wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees; @@ -317,6 +321,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + TapRecipient + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + dynamic raw, + ); + @protected WithdrawFees dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -468,8 +478,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - SafeUrl - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + TapRecipient + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( dynamic raw, ); @@ -653,6 +663,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + TapRecipient + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + dynamic raw, + ); + @protected WithdrawFees dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -750,11 +766,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double dco_decode_box_autoadd_f_64(dynamic raw); - @protected - GuardianBitcoinStatus dco_decode_box_autoadd_guardian_bitcoin_status( - dynamic raw, - ); - @protected InvoicePaidEvent dco_decode_box_autoadd_invoice_paid_event(dynamic raw); @@ -767,6 +778,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected NostrRecoveryPhase dco_decode_box_autoadd_nostr_recovery_phase(dynamic raw); + @protected + NostrWalletConnectConfig dco_decode_box_autoadd_nostr_wallet_connect_config( + dynamic raw, + ); + @protected (FederationId, DepositEventKind) dco_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -845,36 +861,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected Guardian dco_decode_guardian(dynamic raw); - @protected - GuardianAuditSummary dco_decode_guardian_audit_summary(dynamic raw); - - @protected - GuardianBackupStatistics dco_decode_guardian_backup_statistics(dynamic raw); - - @protected - GuardianBitcoinStatus dco_decode_guardian_bitcoin_status(dynamic raw); - - @protected - GuardianHealth dco_decode_guardian_health(dynamic raw); - - @protected - GuardianMetaProposal dco_decode_guardian_meta_proposal(dynamic raw); - - @protected - GuardianMetaState dco_decode_guardian_meta_state(dynamic raw); - - @protected - GuardianModuleSummary dco_decode_guardian_module_summary(dynamic raw); - - @protected - GuardianStatusSummary dco_decode_guardian_status_summary(dynamic raw); - @protected int dco_decode_i_32(dynamic raw); - @protected - PlatformInt64 dco_decode_i_64(dynamic raw); - @protected InvoicePaidEvent dco_decode_invoice_paid_event(dynamic raw); @@ -913,16 +902,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List dco_decode_list_guardian(dynamic raw); - @protected - List dco_decode_list_guardian_meta_proposal( - dynamic raw, - ); - - @protected - List dco_decode_list_guardian_module_summary( - dynamic raw, - ); - @protected List dco_decode_list_nostr_profile(dynamic raw); @@ -930,7 +909,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { List dco_decode_list_peer_status(dynamic raw); @protected - Uint16List dco_decode_list_prim_u_16_strict(dynamic raw); + List dco_decode_list_prim_u_8_loose(dynamic raw); @protected Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); @@ -994,6 +973,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected NostrRecoveryPhase dco_decode_nostr_recovery_phase(dynamic raw); + @protected + NostrWalletConnectConfig dco_decode_nostr_wallet_connect_config(dynamic raw); + @protected NWCConnectionInfo dco_decode_nwc_connection_info(dynamic raw); @@ -1038,11 +1020,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double? dco_decode_opt_box_autoadd_f_64(dynamic raw); - @protected - GuardianBitcoinStatus? dco_decode_opt_box_autoadd_guardian_bitcoin_status( - dynamic raw, - ); - @protected int? dco_decode_opt_box_autoadd_u_32(dynamic raw); @@ -1138,10 +1115,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - (bool, BigInt?) dco_decode_record_bool_opt_box_autoadd_u_64(dynamic raw); + (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw); @protected - (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw); + (NostrWalletConnectConfig, NWCConnectionInfo) + dco_decode_record_nostr_wallet_connect_config_nwc_connection_info( + dynamic raw, + ); @protected (ParsedText, FederationSelector) @@ -1182,15 +1162,15 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected (BigInt, BigInt) dco_decode_record_u_64_usize(dynamic raw); - @protected - RecoveryModule dco_decode_recovery_module(dynamic raw); - @protected ReissueFees dco_decode_reissue_fees(dynamic raw); @protected RelayStatusKind dco_decode_relay_status_kind(dynamic raw); + @protected + SendGatewaySelection dco_decode_send_gateway_selection(dynamic raw); + @protected Transaction dco_decode_transaction(dynamic raw); @@ -1209,6 +1189,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int dco_decode_u_8(dynamic raw); + @protected + U8Array32 dco_decode_u_8_array_32(dynamic raw); + @protected void dco_decode_unit(dynamic raw); @@ -1389,6 +1372,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + TapRecipient + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + SseDeserializer deserializer, + ); + @protected WithdrawFees sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -1540,8 +1529,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - SafeUrl - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + TapRecipient + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( SseDeserializer deserializer, ); @@ -1725,6 +1714,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + TapRecipient + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + SseDeserializer deserializer, + ); + @protected WithdrawFees sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -1836,11 +1831,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double sse_decode_box_autoadd_f_64(SseDeserializer deserializer); - @protected - GuardianBitcoinStatus sse_decode_box_autoadd_guardian_bitcoin_status( - SseDeserializer deserializer, - ); - @protected InvoicePaidEvent sse_decode_box_autoadd_invoice_paid_event( SseDeserializer deserializer, @@ -1861,6 +1851,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + NostrWalletConnectConfig sse_decode_box_autoadd_nostr_wallet_connect_config( + SseDeserializer deserializer, + ); + @protected (FederationId, DepositEventKind) sse_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -1945,50 +1940,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected Guardian sse_decode_guardian(SseDeserializer deserializer); - @protected - GuardianAuditSummary sse_decode_guardian_audit_summary( - SseDeserializer deserializer, - ); - - @protected - GuardianBackupStatistics sse_decode_guardian_backup_statistics( - SseDeserializer deserializer, - ); - - @protected - GuardianBitcoinStatus sse_decode_guardian_bitcoin_status( - SseDeserializer deserializer, - ); - - @protected - GuardianHealth sse_decode_guardian_health(SseDeserializer deserializer); - - @protected - GuardianMetaProposal sse_decode_guardian_meta_proposal( - SseDeserializer deserializer, - ); - - @protected - GuardianMetaState sse_decode_guardian_meta_state( - SseDeserializer deserializer, - ); - - @protected - GuardianModuleSummary sse_decode_guardian_module_summary( - SseDeserializer deserializer, - ); - - @protected - GuardianStatusSummary sse_decode_guardian_status_summary( - SseDeserializer deserializer, - ); - @protected int sse_decode_i_32(SseDeserializer deserializer); - @protected - PlatformInt64 sse_decode_i_64(SseDeserializer deserializer); - @protected InvoicePaidEvent sse_decode_invoice_paid_event(SseDeserializer deserializer); @@ -2033,16 +1987,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List sse_decode_list_guardian(SseDeserializer deserializer); - @protected - List sse_decode_list_guardian_meta_proposal( - SseDeserializer deserializer, - ); - - @protected - List sse_decode_list_guardian_module_summary( - SseDeserializer deserializer, - ); - @protected List sse_decode_list_nostr_profile( SseDeserializer deserializer, @@ -2052,7 +1996,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { List sse_decode_list_peer_status(SseDeserializer deserializer); @protected - Uint16List sse_decode_list_prim_u_16_strict(SseDeserializer deserializer); + List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); @protected Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); @@ -2124,6 +2068,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + NostrWalletConnectConfig sse_decode_nostr_wallet_connect_config( + SseDeserializer deserializer, + ); + @protected NWCConnectionInfo sse_decode_nwc_connection_info( SseDeserializer deserializer, @@ -2172,11 +2121,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double? sse_decode_opt_box_autoadd_f_64(SseDeserializer deserializer); - @protected - GuardianBitcoinStatus? sse_decode_opt_box_autoadd_guardian_bitcoin_status( - SseDeserializer deserializer, - ); - @protected int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer); @@ -2272,12 +2216,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - (bool, BigInt?) sse_decode_record_bool_opt_box_autoadd_u_64( + (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( SseDeserializer deserializer, ); @protected - (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( + (NostrWalletConnectConfig, NWCConnectionInfo) + sse_decode_record_nostr_wallet_connect_config_nwc_connection_info( SseDeserializer deserializer, ); @@ -2324,15 +2269,17 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected (BigInt, BigInt) sse_decode_record_u_64_usize(SseDeserializer deserializer); - @protected - RecoveryModule sse_decode_recovery_module(SseDeserializer deserializer); - @protected ReissueFees sse_decode_reissue_fees(SseDeserializer deserializer); @protected RelayStatusKind sse_decode_relay_status_kind(SseDeserializer deserializer); + @protected + SendGatewaySelection sse_decode_send_gateway_selection( + SseDeserializer deserializer, + ); + @protected Transaction sse_decode_transaction(SseDeserializer deserializer); @@ -2351,6 +2298,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int sse_decode_u_8(SseDeserializer deserializer); + @protected + U8Array32 sse_decode_u_8_array_32(SseDeserializer deserializer); + @protected void sse_decode_unit(SseDeserializer deserializer); @@ -2562,6 +2512,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + TapRecipient self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -2739,8 +2696,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( - SafeUrl self, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + TapRecipient self, SseSerializer serializer, ); @@ -2954,6 +2911,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + TapRecipient self, + SseSerializer serializer, + ); + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( @@ -3086,12 +3050,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_box_autoadd_f_64(double self, SseSerializer serializer); - @protected - void sse_encode_box_autoadd_guardian_bitcoin_status( - GuardianBitcoinStatus self, - SseSerializer serializer, - ); - @protected void sse_encode_box_autoadd_invoice_paid_event( InvoicePaidEvent self, @@ -3116,6 +3074,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_box_autoadd_nostr_wallet_connect_config( + NostrWalletConnectConfig self, + SseSerializer serializer, + ); + @protected void sse_encode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -3219,60 +3183,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_guardian(Guardian self, SseSerializer serializer); - @protected - void sse_encode_guardian_audit_summary( - GuardianAuditSummary self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_backup_statistics( - GuardianBackupStatistics self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_bitcoin_status( - GuardianBitcoinStatus self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_health( - GuardianHealth self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_meta_proposal( - GuardianMetaProposal self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_meta_state( - GuardianMetaState self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_module_summary( - GuardianModuleSummary self, - SseSerializer serializer, - ); - - @protected - void sse_encode_guardian_status_summary( - GuardianStatusSummary self, - SseSerializer serializer, - ); - @protected void sse_encode_i_32(int self, SseSerializer serializer); - @protected - void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer); - @protected void sse_encode_invoice_paid_event( InvoicePaidEvent self, @@ -3326,18 +3239,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_list_guardian(List self, SseSerializer serializer); - @protected - void sse_encode_list_guardian_meta_proposal( - List self, - SseSerializer serializer, - ); - - @protected - void sse_encode_list_guardian_module_summary( - List self, - SseSerializer serializer, - ); - @protected void sse_encode_list_nostr_profile( List self, @@ -3351,10 +3252,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - void sse_encode_list_prim_u_16_strict( - Uint16List self, - SseSerializer serializer, - ); + void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); @protected void sse_encode_list_prim_u_8_strict( @@ -3448,6 +3346,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_nostr_wallet_connect_config( + NostrWalletConnectConfig self, + SseSerializer serializer, + ); + @protected void sse_encode_nwc_connection_info( NWCConnectionInfo self, @@ -3506,12 +3410,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_opt_box_autoadd_f_64(double? self, SseSerializer serializer); - @protected - void sse_encode_opt_box_autoadd_guardian_bitcoin_status( - GuardianBitcoinStatus? self, - SseSerializer serializer, - ); - @protected void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer); @@ -3625,14 +3523,14 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - void sse_encode_record_bool_opt_box_autoadd_u_64( - (bool, BigInt?) self, + void sse_encode_record_fiat_currency_u_64( + (FiatCurrency, BigInt) self, SseSerializer serializer, ); @protected - void sse_encode_record_fiat_currency_u_64( - (FiatCurrency, BigInt) self, + void sse_encode_record_nostr_wallet_connect_config_nwc_connection_info( + (NostrWalletConnectConfig, NWCConnectionInfo) self, SseSerializer serializer, ); @@ -3690,12 +3588,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); - @protected - void sse_encode_recovery_module( - RecoveryModule self, - SseSerializer serializer, - ); - @protected void sse_encode_reissue_fees(ReissueFees self, SseSerializer serializer); @@ -3705,6 +3597,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_send_gateway_selection( + SendGatewaySelection self, + SseSerializer serializer, + ); + @protected void sse_encode_transaction(Transaction self, SseSerializer serializer); @@ -3726,6 +3624,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_u_8(int self, SseSerializer serializer); + @protected + void sse_encode_u_8_array_32(U8Array32 self, SseSerializer serializer); + @protected void sse_encode_unit(void self, SseSerializer serializer); @@ -4205,6 +4106,22 @@ class RustLibWire implements BaseWire { ptr, ); + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ptr, + ); + void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( int ptr, @@ -4534,6 +4451,16 @@ extension type RustLibWasmModule._(JSObject _) implements JSObject { int ptr, ); + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + int ptr, + ); + external void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( int ptr, diff --git a/lib/lib.dart b/lib/lib.dart index 83e539be..fc707bff 100644 --- a/lib/lib.dart +++ b/lib/lib.dart @@ -262,6 +262,18 @@ Future sendEcash({ feeMsats: feeMsats, ); +/// Encrypt an ecash string for a tap-transfer recipient (Phase 1 of the NFC + +/// BLE "tap to send" feature). `recipient_pubkey` is the 33-byte compressed key +/// received over NFC; the returned blob is delivered to the receiver over BLE +/// and decrypted with `TapRecipient::decrypt`. See `tap_transfer.rs`. +Uint8List encryptEcashForTap({ + required String ecash, + required List recipientPubkey, +}) => RustLib.instance.api.crateEncryptEcashForTap( + ecash: ecash, + recipientPubkey: recipientPubkey, +); + Future calculateEcashReissueFees({ required FederationId federationId, required String ecash, diff --git a/lib/nostr.dart b/lib/nostr.dart index f1add854..3bd51910 100644 --- a/lib/nostr.dart +++ b/lib/nostr.dart @@ -9,10 +9,9 @@ import 'lib.dart'; import 'multimint.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; -// These functions are ignored because they are not marked as `pub`: `add_relays_from_db`, `broadcast_nwc_info`, `broadcast_response`, `check_nwc_budget`, `check_nwc_payment_limit`, `connection_info`, `fetch_observer_federations`, `get_or_insert_default_relays`, `handle_request`, `method_name`, `now_millis`, `nwc_limits`, `parse_content`, `parse_federation_id`, `parse_federation_name`, `parse_invite_codes`, `parse_modules`, `parse_network`, `parse_picture`, `purge_legacy_nwc_configs`, `record_nwc_spend`, `spawn_listen_for_nwc`, `update_federations_from_nostr`, `window_state` +// These functions are ignored because they are not marked as `pub`: `add_relays_from_db`, `broadcast_nwc_info`, `broadcast_response`, `fetch_observer_federations`, `get_or_insert_default_relays`, `handle_request`, `now_millis`, `parse_content`, `parse_federation_id`, `parse_federation_name`, `parse_invite_codes`, `parse_modules`, `parse_network`, `parse_picture`, `spawn_listen_for_nwc`, `update_federations_from_nostr` // These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `WalletConnectRequest`, `WalletConnectResponse` // These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `clone`, `clone`, `clone`, `clone`, `eq`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `try_from`, `try_from` -// These functions are ignored (category: IgnoreBecauseExplicitAttribute): `get_nwc_config`, `listen_for_nwc` // Rust type: RustOpaqueMoi> abstract class NostrClient implements RustOpaqueInterface { @@ -38,6 +37,12 @@ abstract class NostrClient implements RustOpaqueInterface { /// Fetch follows list for any pubkey (Kind 3 contact list) Future> getFollowsForPubkey({required String npub}); + /// Get NWC config for a federation and return it. + /// This is used by the blocking listen function. + Future<(NostrWalletConnectConfig, NWCConnectionInfo)> getNwcConfig({ + required FederationId federationId, + }); + Future> getNwcConnectionInfo(); Future> getPublicFederations({ @@ -51,6 +56,16 @@ abstract class NostrClient implements RustOpaqueInterface { Future insertRelay({required String relayUri}); + /// Blocking NWC listener - runs until the relay connection is closed or an error occurs. + /// This function is intended to be called directly from the foreground task. + static Future listenForNwc({ + required FederationId federationId, + required NostrWalletConnectConfig nwcConfig, + }) => RustLib.instance.api.crateNostrNostrClientListenForNwc( + federationId: federationId, + nwcConfig: nwcConfig, + ); + // HINT: Make it `#[frb(sync)]` to let it become the default constructor of Dart class. static Future newInstance({ required Database db, diff --git a/lib/tap_transfer.dart b/lib/tap_transfer.dart new file mode 100644 index 00000000..26f66d48 --- /dev/null +++ b/lib/tap_transfer.dart @@ -0,0 +1,23 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.9.0. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import 'app_error.dart'; +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +// These functions are ignored because they are not marked as `pub`: `decrypt`, `derive_key`, `encrypt_ecash`, `encrypt` + +// Rust type: RustOpaqueMoi> +abstract class TapRecipient implements RustOpaqueInterface { + /// Decrypt a blob produced by [`encrypt_ecash`], returning the original + /// ecash string ready to pass to `reissue_ecash`. + String decrypt({required List blob}); + + factory TapRecipient() => + RustLib.instance.api.crateTapTransferTapRecipientNew(); + + /// The 33-byte compressed public key to hand to the sender over NFC. + Uint8List publicKey(); +} diff --git a/rust/ecashapp/Cargo.lock b/rust/ecashapp/Cargo.lock index 2fe1666b..ca5cd8c3 100644 --- a/rust/ecashapp/Cargo.lock +++ b/rust/ecashapp/Cargo.lock @@ -1529,6 +1529,7 @@ dependencies = [ "async-trait", "bitcoin", "bitcoin-payment-instructions", + "chacha20poly1305", "fedimint-api-client", "fedimint-bip39", "fedimint-client", @@ -1555,6 +1556,7 @@ dependencies = [ "futures-timer", "futures-util", "hex", + "hkdf", "jni 0.21.1", "lightning-invoice", "lnurl-rs", @@ -1565,6 +1567,7 @@ dependencies = [ "semver", "serde", "serde_json", + "sha2 0.10.9", "subtle", "thiserror 1.0.69", "tokio", @@ -3231,6 +3234,15 @@ dependencies = [ "tracing", ] +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + [[package]] name = "hmac" version = "0.12.1" diff --git a/rust/ecashapp/Cargo.toml b/rust/ecashapp/Cargo.toml index 9779c3e2..949cd62a 100644 --- a/rust/ecashapp/Cargo.toml +++ b/rust/ecashapp/Cargo.toml @@ -12,6 +12,11 @@ argon2 = "0.5.3" async-stream = "0.3.6" async-trait = "0.1.88" bitcoin = { version = "0.32.5", features = ["serde"] } +# Tap-to-send ecash (NFC + BLE): ECIES key derivation and AEAD. secp256k1 (for +# the ECDH half) comes from the `bitcoin` crate above. See src/tap_transfer.rs. +chacha20poly1305 = "0.10" +hkdf = "0.12" +sha2 = "0.10" bitcoin-payment-instructions = { version = "0.4.0", features = [ "http" ]} fedimint-api-client = { git = "https://github.com/fedimint/fedimint", rev = "3dfb8f5baeb6dcf6cbd268167aae2a2c78b36742" } fedimint-bip39 = { git = "https://github.com/fedimint/fedimint", rev = "3dfb8f5baeb6dcf6cbd268167aae2a2c78b36742" } diff --git a/rust/ecashapp/src/frb_generated.rs b/rust/ecashapp/src/frb_generated.rs index 64e54d6a..bfba734c 100644 --- a/rust/ecashapp/src/frb_generated.rs +++ b/rust/ecashapp/src/frb_generated.rs @@ -30,6 +30,7 @@ use crate::event_bus::*; use crate::fountain::*; use crate::multimint::*; use crate::nostr::*; +use crate::tap_transfer::*; use crate::*; use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt}; use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; @@ -43,7 +44,7 @@ flutter_rust_bridge::frb_generated_boilerplate!( default_rust_auto_opaque = RustAutoOpaqueMoi, ); pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.9.0"; -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 1098215331; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -733282414; // Section: executor @@ -2626,7 +2627,7 @@ fn wire__crate__multimint__Multimint_balance_impl( >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; @@ -2658,11 +2659,13 @@ fn wire__crate__multimint__Multimint_balance_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::balance( - &*api_that_guard, - &*api_federation_id_guard, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::balance( + &*api_that_guard, + &*api_federation_id_guard, + ) + .await, + )?; Ok(output_ok) })() .await, @@ -3066,6 +3069,63 @@ fn wire__crate__multimint__Multimint_check_ln_address_availability_impl( }, ) } +fn wire__crate__multimint__Multimint_clear_pin_hash_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Multimint_clear_pin_hash", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::clear_pin_hash(&*api_that_guard).await; + })?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} fn wire__crate__multimint__Multimint_compute_all_gateway_previews_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -4322,8 +4382,7 @@ fn wire__crate__multimint__Multimint_get_recovery_progress_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_recovery_module = - ::sse_decode(&mut deserializer); + let api_module_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -4362,7 +4421,7 @@ fn wire__crate__multimint__Multimint_get_recovery_progress_impl( crate::multimint::Multimint::get_recovery_progress( &*api_that_guard, &*api_federation_id_guard, - api_recovery_module, + api_module_id, ) .await, )?; @@ -4374,7 +4433,7 @@ fn wire__crate__multimint__Multimint_get_recovery_progress_impl( }, ) } -fn wire__crate__multimint__Multimint_get_show_msats_impl( +fn wire__crate__multimint__Multimint_get_require_pin_for_spending_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4382,7 +4441,7 @@ fn wire__crate__multimint__Multimint_get_show_msats_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_get_show_msats", + debug_name: "Multimint_get_require_pin_for_spending", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4421,7 +4480,10 @@ fn wire__crate__multimint__Multimint_get_show_msats_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::get_show_msats(&*api_that_guard).await, + crate::multimint::Multimint::get_require_pin_for_spending( + &*api_that_guard, + ) + .await, )?; Ok(output_ok) })() @@ -4431,7 +4493,7 @@ fn wire__crate__multimint__Multimint_get_show_msats_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_add_gateway_impl( +fn wire__crate__multimint__Multimint_get_show_msats_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4439,7 +4501,7 @@ fn wire__crate__multimint__Multimint_guardian_add_gateway_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_add_gateway", + debug_name: "Multimint_get_show_msats", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4456,30 +4518,16 @@ fn wire__crate__multimint__Multimint_guardian_add_gateway_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); - let api_gateway_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -4487,23 +4535,13 @@ fn wire__crate__multimint__Multimint_guardian_add_gateway_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_add_gateway( - &*api_that_guard, - &*api_federation_id_guard, - api_peer, - api_password, - api_gateway_url, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::get_show_msats(&*api_that_guard).await, + )?; Ok(output_ok) })() .await, @@ -4512,7 +4550,7 @@ fn wire__crate__multimint__Multimint_guardian_add_gateway_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_audit_impl( +fn wire__crate__multimint__Multimint_has_pin_code_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4520,7 +4558,7 @@ fn wire__crate__multimint__Multimint_guardian_audit_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_audit", + debug_name: "Multimint_has_pin_code", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4537,29 +4575,16 @@ fn wire__crate__multimint__Multimint_guardian_audit_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -4567,22 +4592,13 @@ fn wire__crate__multimint__Multimint_guardian_audit_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_audit( - &*api_that_guard, - &*api_federation_id_guard, - api_peer, - api_password, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::has_pin_code(&*api_that_guard).await, + )?; Ok(output_ok) })() .await, @@ -4591,7 +4607,7 @@ fn wire__crate__multimint__Multimint_guardian_audit_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_backup_statistics_impl( +fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4599,7 +4615,7 @@ fn wire__crate__multimint__Multimint_guardian_backup_statistics_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_backup_statistics", + debug_name: "Multimint_has_seed_phrase_ack", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4616,29 +4632,16 @@ fn wire__crate__multimint__Multimint_guardian_backup_statistics_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -4646,22 +4649,14 @@ fn wire__crate__multimint__Multimint_guardian_backup_statistics_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_backup_statistics( - &*api_that_guard, - &*api_federation_id_guard, - api_peer, - api_password, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::has_seed_phrase_ack(&*api_that_guard) + .await, + )?; Ok(output_ok) })() .await, @@ -4670,7 +4665,7 @@ fn wire__crate__multimint__Multimint_guardian_backup_statistics_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_list_gateways_impl( +fn wire__crate__multimint__Multimint_join_federation_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4678,7 +4673,7 @@ fn wire__crate__multimint__Multimint_guardian_list_gateways_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_list_gateways", + debug_name: "Multimint_join_federation", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4695,48 +4690,33 @@ fn wire__crate__multimint__Multimint_guardian_list_gateways_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); + let api_invite = ::sse_decode(&mut deserializer); + let api_recover = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + )], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) + Some(api_that.lockable_decode_async_ref_mut().await) } _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_list_gateways( - &*api_that_guard, - &*api_federation_id_guard, - api_peer, + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = crate::multimint::Multimint::join_federation( + &mut *api_that_guard, + api_invite, + api_recover, ) .await?; Ok(output_ok) @@ -4747,7 +4727,7 @@ fn wire__crate__multimint__Multimint_guardian_list_gateways_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_login_impl( +fn wire__crate__multimint__Multimint_leave_federation_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4755,7 +4735,7 @@ fn wire__crate__multimint__Multimint_guardian_login_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_login", + debug_name: "Multimint_leave_federation", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4775,11 +4755,9 @@ fn wire__crate__multimint__Multimint_guardian_login_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; @@ -4787,7 +4765,7 @@ fn wire__crate__multimint__Multimint_guardian_login_impl( flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, ), flutter_rust_bridge::for_generated::LockableOrderInfo::new( &api_federation_id, @@ -4800,7 +4778,7 @@ fn wire__crate__multimint__Multimint_guardian_login_impl( match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref().await) + Some(api_that.lockable_decode_async_ref_mut().await) } 1 => { api_federation_id_guard = @@ -4809,15 +4787,15 @@ fn wire__crate__multimint__Multimint_guardian_login_impl( _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); + let mut api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_login( - &*api_that_guard, - &*api_federation_id_guard, - api_peer, - api_password, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::leave_federation( + &mut *api_that_guard, + &*api_federation_id_guard, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -4826,7 +4804,7 @@ fn wire__crate__multimint__Multimint_guardian_login_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_meta_accept_impl( +fn wire__crate__multimint__Multimint_new_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4834,7 +4812,7 @@ fn wire__crate__multimint__Multimint_guardian_meta_accept_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_meta_accept", + debug_name: "Multimint_new", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4848,25 +4826,65 @@ fn wire__crate__multimint__Multimint_guardian_meta_accept_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); - let api_value_hex = ::sse_decode(&mut deserializer); + let api_db = ::sse_decode(&mut deserializer); + let api_creation_type = + ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let mut api_that_guard = None; - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( + let output_ok = + crate::multimint::Multimint::new(api_db, api_creation_type).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__multimint__Multimint_parse_ecash_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Multimint_parse_ecash", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_notes = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let mut api_federation_id_guard = None; + let mut api_notes_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( &api_that, 0, false, ), flutter_rust_bridge::for_generated::LockableOrderInfo::new( @@ -4874,6 +4892,9 @@ fn wire__crate__multimint__Multimint_guardian_meta_accept_impl( 1, false, ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_notes, 2, false, + ), ], ); for i in decode_indices_ { @@ -4886,17 +4907,20 @@ fn wire__crate__multimint__Multimint_guardian_meta_accept_impl( api_federation_id_guard = Some(api_federation_id.lockable_decode_async_ref().await) } + 2 => { + api_notes_guard = + Some(api_notes.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_meta_accept( + let api_notes_guard = api_notes_guard.unwrap(); + let output_ok = crate::multimint::Multimint::parse_ecash( &*api_that_guard, &*api_federation_id_guard, - api_peer, - api_password, - api_value_hex, + &*api_notes_guard, ) .await?; Ok(output_ok) @@ -4907,7 +4931,7 @@ fn wire__crate__multimint__Multimint_guardian_meta_accept_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_meta_propose_field_impl( +fn wire__crate__multimint__Multimint_receive_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4915,7 +4939,7 @@ fn wire__crate__multimint__Multimint_guardian_meta_propose_field_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_meta_propose_field", + debug_name: "Multimint_receive", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4935,10 +4959,12 @@ fn wire__crate__multimint__Multimint_guardian_meta_propose_field_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); - let api_field = ::sse_decode(&mut deserializer); - let api_value = >::sse_decode(&mut deserializer); + let api_amount_msats_with_fees = ::sse_decode(&mut deserializer); + let api_amount_msats_without_fees = ::sse_decode(&mut deserializer); + let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -4973,13 +4999,15 @@ fn wire__crate__multimint__Multimint_guardian_meta_propose_field_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_meta_propose_field( + let output_ok = crate::multimint::Multimint::receive( &*api_that_guard, &*api_federation_id_guard, - api_peer, - api_password, - api_field, - api_value, + api_amount_msats_with_fees, + api_amount_msats_without_fees, + api_federation_fee_msats, + api_gateway_fee_msats, + api_gateway, + api_is_lnv2, ) .await?; Ok(output_ok) @@ -4990,7 +5018,7 @@ fn wire__crate__multimint__Multimint_guardian_meta_propose_field_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_meta_state_impl( +fn wire__crate__multimint__Multimint_recheck_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4998,7 +5026,7 @@ fn wire__crate__multimint__Multimint_guardian_meta_state_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_meta_state", + debug_name: "Multimint_recheck_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5018,8 +5046,7 @@ fn wire__crate__multimint__Multimint_guardian_meta_state_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); + let api_tweak_idx = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -5054,11 +5081,10 @@ fn wire__crate__multimint__Multimint_guardian_meta_state_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_meta_state( + let output_ok = crate::multimint::Multimint::recheck_address( &*api_that_guard, &*api_federation_id_guard, - api_peer, - api_password, + api_tweak_idx, ) .await?; Ok(output_ok) @@ -5069,7 +5095,7 @@ fn wire__crate__multimint__Multimint_guardian_meta_state_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_meta_withdraw_impl( +fn wire__crate__multimint__Multimint_recover_ln_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5077,7 +5103,7 @@ fn wire__crate__multimint__Multimint_guardian_meta_withdraw_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_meta_withdraw", + debug_name: "Multimint_recover_ln_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5097,8 +5123,8 @@ fn wire__crate__multimint__Multimint_guardian_meta_withdraw_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); + let api_ln_address_api = ::sse_decode(&mut deserializer); + let api_recurringd_api = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -5133,11 +5159,11 @@ fn wire__crate__multimint__Multimint_guardian_meta_withdraw_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_meta_withdraw( + let output_ok = crate::multimint::Multimint::recover_ln_address( &*api_that_guard, &*api_federation_id_guard, - api_peer, - api_password, + &api_ln_address_api, + &api_recurringd_api, ) .await?; Ok(output_ok) @@ -5148,7 +5174,7 @@ fn wire__crate__multimint__Multimint_guardian_meta_withdraw_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_remove_gateway_impl( +fn wire__crate__multimint__Multimint_refresh_connections_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5156,7 +5182,7 @@ fn wire__crate__multimint__Multimint_guardian_remove_gateway_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_remove_gateway", + debug_name: "Multimint_refresh_connections", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5173,30 +5199,16 @@ fn wire__crate__multimint__Multimint_guardian_remove_gateway_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); - let api_gateway_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -5204,23 +5216,14 @@ fn wire__crate__multimint__Multimint_guardian_remove_gateway_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_remove_gateway( - &*api_that_guard, - &*api_federation_id_guard, - api_peer, - api_password, - api_gateway_url, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::refresh_connections(&*api_that_guard) + .await; + })?; Ok(output_ok) })() .await, @@ -5229,7 +5232,7 @@ fn wire__crate__multimint__Multimint_guardian_remove_gateway_impl( }, ) } -fn wire__crate__multimint__Multimint_guardian_status_impl( +fn wire__crate__multimint__Multimint_register_ln_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5237,7 +5240,7 @@ fn wire__crate__multimint__Multimint_guardian_status_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_guardian_status", + debug_name: "Multimint_register_ln_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5257,8 +5260,10 @@ fn wire__crate__multimint__Multimint_guardian_status_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); + let api_recurringd_api = ::sse_decode(&mut deserializer); + let api_ln_address_api = ::sse_decode(&mut deserializer); + let api_username = ::sse_decode(&mut deserializer); + let api_domain = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -5293,11 +5298,13 @@ fn wire__crate__multimint__Multimint_guardian_status_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::guardian_status( + let output_ok = crate::multimint::Multimint::register_ln_address( &*api_that_guard, &*api_federation_id_guard, - api_peer, - api_password, + api_recurringd_api, + api_ln_address_api, + api_username, + api_domain, ) .await?; Ok(output_ok) @@ -5308,7 +5315,7 @@ fn wire__crate__multimint__Multimint_guardian_status_impl( }, ) } -fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( +fn wire__crate__multimint__Multimint_reissue_ecash_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5316,7 +5323,7 @@ fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_has_seed_phrase_ack", + debug_name: "Multimint_reissue_ecash", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5333,16 +5340,29 @@ fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_ecash = ::sse_decode(&mut deserializer); + let api_fees = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -5350,13 +5370,23 @@ fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); + let api_federation_id_guard = api_federation_id_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::has_seed_phrase_ack(&*api_that_guard) - .await, + crate::multimint::Multimint::reissue_ecash( + &*api_that_guard, + &*api_federation_id_guard, + api_ecash, + api_fees, + ) + .await, )?; Ok(output_ok) })() @@ -5366,7 +5396,7 @@ fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( }, ) } -fn wire__crate__multimint__Multimint_join_federation_impl( +fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5374,7 +5404,7 @@ fn wire__crate__multimint__Multimint_join_federation_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_join_federation", + debug_name: "Multimint_rejoin_from_backup_invites", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5391,11 +5421,10 @@ fn wire__crate__multimint__Multimint_join_federation_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_invite = ::sse_decode(&mut deserializer); - let api_recover = ::sse_decode(&mut deserializer); + let api_backup_invite_codes = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -5414,12 +5443,13 @@ fn wire__crate__multimint__Multimint_join_federation_impl( } } let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::multimint::Multimint::join_federation( - &mut *api_that_guard, - api_invite, - api_recover, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::rejoin_from_backup_invites( + &mut *api_that_guard, + api_backup_invite_codes, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -5428,7 +5458,7 @@ fn wire__crate__multimint__Multimint_join_federation_impl( }, ) } -fn wire__crate__multimint__Multimint_leave_federation_impl( +fn wire__crate__multimint__Multimint_select_send_gateway_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5436,7 +5466,7 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_leave_federation", + debug_name: "Multimint_select_send_gateway", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5456,9 +5486,11 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); + let api_amount = ::sse_decode(&mut deserializer); + let api_bolt11 = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; @@ -5466,7 +5498,7 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), flutter_rust_bridge::for_generated::LockableOrderInfo::new( &api_federation_id, @@ -5479,7 +5511,7 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref_mut().await) + Some(api_that.lockable_decode_async_ref().await) } 1 => { api_federation_id_guard = @@ -5488,15 +5520,15 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); + let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::leave_federation( - &mut *api_that_guard, - &*api_federation_id_guard, - ) - .await; - })?; + let output_ok = crate::multimint::Multimint::select_send_gateway( + &*api_that_guard, + &*api_federation_id_guard, + api_amount, + api_bolt11, + ) + .await?; Ok(output_ok) })() .await, @@ -5505,7 +5537,7 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( }, ) } -fn wire__crate__multimint__Multimint_max_lightning_send_impl( +fn wire__crate__multimint__Multimint_send_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5513,7 +5545,7 @@ fn wire__crate__multimint__Multimint_max_lightning_send_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_max_lightning_send", + debug_name: "Multimint_send", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5533,12 +5565,16 @@ fn wire__crate__multimint__Multimint_max_lightning_send_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); + let api_invoice = ::sse_decode(&mut deserializer); let api_gateway = ::sse_decode(&mut deserializer); let api_is_lnv2 = ::sse_decode(&mut deserializer); - let api_loopback = ::sse_decode(&mut deserializer); + let api_amount_with_fees = ::sse_decode(&mut deserializer); + let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway_fee_msats = ::sse_decode(&mut deserializer); + let api_ln_address = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; @@ -5570,53 +5606,20 @@ fn wire__crate__multimint__Multimint_max_lightning_send_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::max_lightning_send( - &*api_that_guard, - &*api_federation_id_guard, - api_gateway, - api_is_lnv2, - api_loopback, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__multimint__Multimint_new_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_new", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_db = ::sse_decode(&mut deserializer); - let api_creation_type = - ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = - crate::multimint::Multimint::new(api_db, api_creation_type).await?; + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::send( + &*api_that_guard, + &*api_federation_id_guard, + api_invoice, + api_gateway, + api_is_lnv2, + api_amount_with_fees, + api_federation_fee_msats, + api_gateway_fee_msats, + api_ln_address, + ) + .await, + )?; Ok(output_ok) })() .await, @@ -5625,7 +5628,7 @@ fn wire__crate__multimint__Multimint_new_impl( }, ) } -fn wire__crate__multimint__Multimint_parse_ecash_impl( +fn wire__crate__multimint__Multimint_send_ecash_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5633,7 +5636,7 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_parse_ecash", + debug_name: "Multimint_send_ecash", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5653,16 +5656,14 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_notes = , - >>::sse_decode(&mut deserializer); + let api_amount_msats = ::sse_decode(&mut deserializer); + let api_fee_msats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; - let mut api_notes_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![ @@ -5674,9 +5675,6 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( 1, false, ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_notes, 2, false, - ), ], ); for i in decode_indices_ { @@ -5689,22 +5687,20 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( api_federation_id_guard = Some(api_federation_id.lockable_decode_async_ref().await) } - 2 => { - api_notes_guard = - Some(api_notes.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let api_notes_guard = api_notes_guard.unwrap(); - let output_ok = crate::multimint::Multimint::parse_ecash( - &*api_that_guard, - &*api_federation_id_guard, - &*api_notes_guard, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::send_ecash( + &*api_that_guard, + &*api_federation_id_guard, + api_amount_msats, + api_fee_msats, + ) + .await, + )?; Ok(output_ok) })() .await, @@ -5713,7 +5709,7 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( }, ) } -fn wire__crate__multimint__Multimint_probe_invoice_is_loopback_impl( +fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5721,7 +5717,7 @@ fn wire__crate__multimint__Multimint_probe_invoice_is_loopback_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_probe_invoice_is_loopback", + debug_name: "Multimint_set_bitcoin_display", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5738,46 +5734,17 @@ fn wire__crate__multimint__Multimint_probe_invoice_is_loopback_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_gateway = , - >>::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); - let api_invoice = , - >>::sse_decode(&mut deserializer); + let api_bitcoin_display = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; - let mut api_gateway_guard = None; - let mut api_invoice_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_gateway, - 2, - false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_invoice, - 3, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -5785,33 +5752,17 @@ fn wire__crate__multimint__Multimint_probe_invoice_is_loopback_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - 2 => { - api_gateway_guard = - Some(api_gateway.lockable_decode_async_ref().await) - } - 3 => { - api_invoice_guard = - Some(api_invoice.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let api_gateway_guard = api_gateway_guard.unwrap(); - let api_invoice_guard = api_invoice_guard.unwrap(); - let output_ok = crate::multimint::Multimint::probe_invoice_is_loopback( - &*api_that_guard, - &*api_federation_id_guard, - &*api_gateway_guard, - api_is_lnv2, - &*api_invoice_guard, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::set_bitcoin_display( + &*api_that_guard, + api_bitcoin_display, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -5820,7 +5771,7 @@ fn wire__crate__multimint__Multimint_probe_invoice_is_loopback_impl( }, ) } -fn wire__crate__multimint__Multimint_receive_impl( +fn wire__crate__multimint__Multimint_set_federation_order_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5828,7 +5779,7 @@ fn wire__crate__multimint__Multimint_receive_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_receive", + debug_name: "Multimint_set_federation_order", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5845,33 +5796,17 @@ fn wire__crate__multimint__Multimint_receive_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_amount_msats_with_fees = ::sse_decode(&mut deserializer); - let api_amount_msats_without_fees = ::sse_decode(&mut deserializer); - let api_federation_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); + let api_order = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -5879,26 +5814,17 @@ fn wire__crate__multimint__Multimint_receive_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::receive( - &*api_that_guard, - &*api_federation_id_guard, - api_amount_msats_with_fees, - api_amount_msats_without_fees, - api_federation_fee_msats, - api_gateway_fee_msats, - api_gateway, - api_is_lnv2, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::set_federation_order( + &*api_that_guard, + api_order, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -5907,7 +5833,7 @@ fn wire__crate__multimint__Multimint_receive_impl( }, ) } -fn wire__crate__multimint__Multimint_recheck_address_impl( +fn wire__crate__multimint__Multimint_set_fiat_currency_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5915,7 +5841,7 @@ fn wire__crate__multimint__Multimint_recheck_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_recheck_address", + debug_name: "Multimint_set_fiat_currency", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5932,28 +5858,17 @@ fn wire__crate__multimint__Multimint_recheck_address_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_tweak_idx = ::sse_decode(&mut deserializer); + let api_fiat_currency = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -5961,21 +5876,17 @@ fn wire__crate__multimint__Multimint_recheck_address_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::recheck_address( - &*api_that_guard, - &*api_federation_id_guard, - api_tweak_idx, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::set_fiat_currency( + &*api_that_guard, + api_fiat_currency, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -5984,7 +5895,7 @@ fn wire__crate__multimint__Multimint_recheck_address_impl( }, ) } -fn wire__crate__multimint__Multimint_recover_ln_address_impl( +fn wire__crate__multimint__Multimint_set_pin_hash_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5992,7 +5903,7 @@ fn wire__crate__multimint__Multimint_recover_ln_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_recover_ln_address", + debug_name: "Multimint_set_pin_hash", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6009,29 +5920,17 @@ fn wire__crate__multimint__Multimint_recover_ln_address_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_ln_address_api = ::sse_decode(&mut deserializer); - let api_recurringd_api = ::sse_decode(&mut deserializer); + let api_pin = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -6039,22 +5938,13 @@ fn wire__crate__multimint__Multimint_recover_ln_address_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::recover_ln_address( - &*api_that_guard, - &*api_federation_id_guard, - &api_ln_address_api, - &api_recurringd_api, - ) - .await?; + let output_ok = + crate::multimint::Multimint::set_pin_hash(&*api_that_guard, api_pin) + .await?; Ok(output_ok) })() .await, @@ -6063,7 +5953,7 @@ fn wire__crate__multimint__Multimint_recover_ln_address_impl( }, ) } -fn wire__crate__multimint__Multimint_refresh_connections_impl( +fn wire__crate__multimint__Multimint_set_require_pin_for_spending_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6071,7 +5961,7 @@ fn wire__crate__multimint__Multimint_refresh_connections_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_refresh_connections", + debug_name: "Multimint_set_require_pin_for_spending", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6088,6 +5978,7 @@ fn wire__crate__multimint__Multimint_refresh_connections_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_require = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6110,8 +6001,11 @@ fn wire__crate__multimint__Multimint_refresh_connections_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::refresh_connections(&*api_that_guard) - .await; + crate::multimint::Multimint::set_require_pin_for_spending( + &*api_that_guard, + api_require, + ) + .await; })?; Ok(output_ok) })() @@ -6121,7 +6015,7 @@ fn wire__crate__multimint__Multimint_refresh_connections_impl( }, ) } -fn wire__crate__multimint__Multimint_refresh_federation_meta_impl( +fn wire__crate__multimint__Multimint_set_show_msats_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6129,7 +6023,7 @@ fn wire__crate__multimint__Multimint_refresh_federation_meta_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_refresh_federation_meta", + debug_name: "Multimint_set_show_msats", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6146,27 +6040,17 @@ fn wire__crate__multimint__Multimint_refresh_federation_meta_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); + let api_show_msats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -6174,20 +6058,17 @@ fn wire__crate__multimint__Multimint_refresh_federation_meta_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::refresh_federation_meta( - &*api_that_guard, - &*api_federation_id_guard, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::set_show_msats( + &*api_that_guard, + api_show_msats, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -6196,7 +6077,7 @@ fn wire__crate__multimint__Multimint_refresh_federation_meta_impl( }, ) } -fn wire__crate__multimint__Multimint_register_ln_address_impl( +fn wire__crate__multimint__Multimint_transactions_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6204,7 +6085,7 @@ fn wire__crate__multimint__Multimint_register_ln_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_register_ln_address", + debug_name: "Multimint_transactions", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6224,13 +6105,12 @@ fn wire__crate__multimint__Multimint_register_ln_address_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_recurringd_api = ::sse_decode(&mut deserializer); - let api_ln_address_api = ::sse_decode(&mut deserializer); - let api_username = ::sse_decode(&mut deserializer); - let api_domain = ::sse_decode(&mut deserializer); + let api_timestamp = >::sse_decode(&mut deserializer); + let api_operation_id = >>::sse_decode(&mut deserializer); + let api_modules = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; @@ -6262,15 +6142,16 @@ fn wire__crate__multimint__Multimint_register_ln_address_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::register_ln_address( - &*api_that_guard, - &*api_federation_id_guard, - api_recurringd_api, - api_ln_address_api, - api_username, - api_domain, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::transactions( + &*api_that_guard, + &*api_federation_id_guard, + api_timestamp, + api_operation_id, + api_modules, + ) + .await, + )?; Ok(output_ok) })() .await, @@ -6279,7 +6160,7 @@ fn wire__crate__multimint__Multimint_register_ln_address_impl( }, ) } -fn wire__crate__multimint__Multimint_reissue_ecash_impl( +fn wire__crate__multimint__Multimint_verify_pin_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6287,7 +6168,7 @@ fn wire__crate__multimint__Multimint_reissue_ecash_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_reissue_ecash", + debug_name: "Multimint_verify_pin", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6304,29 +6185,17 @@ fn wire__crate__multimint__Multimint_reissue_ecash_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_ecash = ::sse_decode(&mut deserializer); - let api_fees = ::sse_decode(&mut deserializer); + let api_pin = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -6334,23 +6203,13 @@ fn wire__crate__multimint__Multimint_reissue_ecash_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::reissue_ecash( - &*api_that_guard, - &*api_federation_id_guard, - api_ecash, - api_fees, - ) - .await, + crate::multimint::Multimint::verify_pin(&*api_that_guard, api_pin) + .await, )?; Ok(output_ok) })() @@ -6360,7 +6219,7 @@ fn wire__crate__multimint__Multimint_reissue_ecash_impl( }, ) } -fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( +fn wire__crate__multimint__Multimint_wallet_summary_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6368,7 +6227,7 @@ fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_rejoin_from_backup_invites", + debug_name: "Multimint_wallet_summary", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6385,35 +6244,35 @@ fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_backup_invite_codes = >::sse_decode(&mut deserializer); + let api_invite = >::sse_decode(&mut deserializer); + let api_federation_id = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, )], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref_mut().await) + Some(api_that.lockable_decode_async_ref().await) } _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::rejoin_from_backup_invites( - &mut *api_that_guard, - api_backup_invite_codes, - ) - .await; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = crate::multimint::Multimint::wallet_summary( + &*api_that_guard, + api_invite, + api_federation_id, + ) + .await?; Ok(output_ok) })() .await, @@ -6422,7 +6281,7 @@ fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( }, ) } -fn wire__crate__multimint__Multimint_send_impl( +fn wire__crate__multimint__Multimint_withdraw_to_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6430,7 +6289,7 @@ fn wire__crate__multimint__Multimint_send_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_send", + debug_name: "Multimint_withdraw_to_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6450,13 +6309,10 @@ fn wire__crate__multimint__Multimint_send_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_invoice = ::sse_decode(&mut deserializer); - let api_gateway = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); - let api_amount_with_fees = ::sse_decode(&mut deserializer); + let api_address = ::sse_decode(&mut deserializer); + let api_amount_sats = ::sse_decode(&mut deserializer); + let api_fees = ::sse_decode(&mut deserializer); let api_federation_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway_fee_msats = ::sse_decode(&mut deserializer); - let api_ln_address = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6492,16 +6348,13 @@ fn wire__crate__multimint__Multimint_send_impl( let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::send( + crate::multimint::Multimint::withdraw_to_address( &*api_that_guard, &*api_federation_id_guard, - api_invoice, - api_gateway, - api_is_lnv2, - api_amount_with_fees, + api_address, + api_amount_sats, + api_fees, api_federation_fee_msats, - api_gateway_fee_msats, - api_ln_address, ) .await, )?; @@ -6513,7 +6366,7 @@ fn wire__crate__multimint__Multimint_send_impl( }, ) } -fn wire__crate__multimint__Multimint_send_ecash_impl( +fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6521,7 +6374,7 @@ fn wire__crate__multimint__Multimint_send_ecash_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_send_ecash", + debug_name: "NostrClient_backup_invite_codes", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6536,31 +6389,19 @@ fn wire__crate__multimint__Multimint_send_ecash_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , - >>::sse_decode(&mut deserializer); - let api_federation_id = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_amount_msats = ::sse_decode(&mut deserializer); - let api_fee_msats = ::sse_decode(&mut deserializer); + let api_invite_codes = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -6568,24 +6409,15 @@ fn wire__crate__multimint__Multimint_send_ecash_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::send_ecash( - &*api_that_guard, - &*api_federation_id_guard, - api_amount_msats, - api_fee_msats, - ) - .await, - )?; + let output_ok = crate::nostr::NostrClient::backup_invite_codes( + &*api_that_guard, + api_invite_codes, + ) + .await?; Ok(output_ok) })() .await, @@ -6594,7 +6426,7 @@ fn wire__crate__multimint__Multimint_send_ecash_impl( }, ) } -fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( +fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6602,7 +6434,7 @@ fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_bitcoin_display", + debug_name: "NostrClient_clear_contacts_and_stop_sync", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6617,9 +6449,8 @@ fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_bitcoin_display = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6641,13 +6472,12 @@ fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::set_bitcoin_display( + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::clear_contacts_and_stop_sync( &*api_that_guard, - api_bitcoin_display, ) - .await; - })?; + .await, + )?; Ok(output_ok) })() .await, @@ -6656,7 +6486,7 @@ fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( }, ) } -fn wire__crate__multimint__Multimint_set_federation_order_impl( +fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6664,7 +6494,7 @@ fn wire__crate__multimint__Multimint_set_federation_order_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_federation_order", + debug_name: "NostrClient_fetch_nostr_profiles", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6679,12 +6509,12 @@ fn wire__crate__multimint__Multimint_set_federation_order_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_order = >::sse_decode(&mut deserializer); + let api_npubs = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -6703,13 +6533,11 @@ fn wire__crate__multimint__Multimint_set_federation_order_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::set_federation_order( - &*api_that_guard, - api_order, - ) - .await; - })?; + let output_ok = crate::nostr::NostrClient::fetch_nostr_profiles( + &*api_that_guard, + api_npubs, + ) + .await?; Ok(output_ok) })() .await, @@ -6718,7 +6546,7 @@ fn wire__crate__multimint__Multimint_set_federation_order_impl( }, ) } -fn wire__crate__multimint__Multimint_set_fiat_currency_impl( +fn wire__crate__nostr__NostrClient_get_all_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6726,7 +6554,7 @@ fn wire__crate__multimint__Multimint_set_fiat_currency_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_fiat_currency", + debug_name: "NostrClient_get_all_contacts", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6741,9 +6569,8 @@ fn wire__crate__multimint__Multimint_set_fiat_currency_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_fiat_currency = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6765,13 +6592,9 @@ fn wire__crate__multimint__Multimint_set_fiat_currency_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::set_fiat_currency( - &*api_that_guard, - api_fiat_currency, - ) - .await; - })?; + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::get_all_contacts(&*api_that_guard).await, + )?; Ok(output_ok) })() .await, @@ -6780,7 +6603,7 @@ fn wire__crate__multimint__Multimint_set_fiat_currency_impl( }, ) } -fn wire__crate__multimint__Multimint_set_show_msats_impl( +fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6788,7 +6611,7 @@ fn wire__crate__multimint__Multimint_set_show_msats_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_show_msats", + debug_name: "NostrClient_get_backup_invite_codes", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6803,9 +6626,8 @@ fn wire__crate__multimint__Multimint_set_show_msats_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_show_msats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6827,13 +6649,10 @@ fn wire__crate__multimint__Multimint_set_show_msats_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::set_show_msats( - &*api_that_guard, - api_show_msats, - ) - .await; - })?; + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::get_backup_invite_codes(&*api_that_guard) + .await, + )?; Ok(output_ok) })() .await, @@ -6842,7 +6661,7 @@ fn wire__crate__multimint__Multimint_set_show_msats_impl( }, ) } -fn wire__crate__multimint__Multimint_transactions_impl( +fn wire__crate__nostr__NostrClient_get_contact_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6850,7 +6669,7 @@ fn wire__crate__multimint__Multimint_transactions_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_transactions", + debug_name: "NostrClient_get_contact", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6865,32 +6684,19 @@ fn wire__crate__multimint__Multimint_transactions_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , - >>::sse_decode(&mut deserializer); - let api_federation_id = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_timestamp = >::sse_decode(&mut deserializer); - let api_operation_id = >>::sse_decode(&mut deserializer); - let api_modules = >::sse_decode(&mut deserializer); + let api_npub = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -6898,24 +6704,13 @@ fn wire__crate__multimint__Multimint_transactions_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::transactions( - &*api_that_guard, - &*api_federation_id_guard, - api_timestamp, - api_operation_id, - api_modules, - ) - .await, + crate::nostr::NostrClient::get_contact(&*api_that_guard, &api_npub) + .await, )?; Ok(output_ok) })() @@ -6925,7 +6720,7 @@ fn wire__crate__multimint__Multimint_transactions_impl( }, ) } -fn wire__crate__multimint__Multimint_wallet_summary_impl( +fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6933,7 +6728,7 @@ fn wire__crate__multimint__Multimint_wallet_summary_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_wallet_summary", + debug_name: "NostrClient_get_contact_sync_config", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6948,13 +6743,11 @@ fn wire__crate__multimint__Multimint_wallet_summary_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_invite = >::sse_decode(&mut deserializer); - let api_federation_id = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -6973,12 +6766,10 @@ fn wire__crate__multimint__Multimint_wallet_summary_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::multimint::Multimint::wallet_summary( - &*api_that_guard, - api_invite, - api_federation_id, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::get_contact_sync_config(&*api_that_guard) + .await, + )?; Ok(output_ok) })() .await, @@ -6987,7 +6778,7 @@ fn wire__crate__multimint__Multimint_wallet_summary_impl( }, ) } -fn wire__crate__multimint__Multimint_withdraw_to_address_impl( +fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6995,7 +6786,7 @@ fn wire__crate__multimint__Multimint_withdraw_to_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_withdraw_to_address", + debug_name: "NostrClient_get_follows_for_pubkey", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7010,33 +6801,19 @@ fn wire__crate__multimint__Multimint_withdraw_to_address_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , - >>::sse_decode(&mut deserializer); - let api_federation_id = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_address = ::sse_decode(&mut deserializer); - let api_amount_sats = ::sse_decode(&mut deserializer); - let api_fees = ::sse_decode(&mut deserializer); - let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_npub = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -7044,26 +6821,15 @@ fn wire__crate__multimint__Multimint_withdraw_to_address_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::withdraw_to_address( - &*api_that_guard, - &*api_federation_id_guard, - api_address, - api_amount_sats, - api_fees, - api_federation_fee_msats, - ) - .await, - )?; + let output_ok = crate::nostr::NostrClient::get_follows_for_pubkey( + &*api_that_guard, + api_npub, + ) + .await?; Ok(output_ok) })() .await, @@ -7072,7 +6838,7 @@ fn wire__crate__multimint__Multimint_withdraw_to_address_impl( }, ) } -fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( +fn wire__crate__nostr__NostrClient_get_nwc_config_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7080,7 +6846,7 @@ fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_backup_invite_codes", + debug_name: "NostrClient_get_nwc_config", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7097,7 +6863,7 @@ fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_invite_codes = >::sse_decode(&mut deserializer); + let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -7119,9 +6885,9 @@ fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::backup_invite_codes( + let output_ok = crate::nostr::NostrClient::get_nwc_config( &*api_that_guard, - api_invite_codes, + api_federation_id, ) .await?; Ok(output_ok) @@ -7132,7 +6898,7 @@ fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( }, ) } -fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( +fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7140,7 +6906,7 @@ fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_clear_contacts_and_stop_sync", + debug_name: "NostrClient_get_nwc_connection_info", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7179,10 +6945,8 @@ fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::clear_contacts_and_stop_sync( - &*api_that_guard, - ) - .await, + crate::nostr::NostrClient::get_nwc_connection_info(&*api_that_guard) + .await, )?; Ok(output_ok) })() @@ -7192,7 +6956,7 @@ fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( }, ) } -fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( +fn wire__crate__nostr__NostrClient_get_public_federations_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7200,7 +6964,7 @@ fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_fetch_nostr_profiles", + debug_name: "NostrClient_get_public_federations", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7217,33 +6981,35 @@ fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_npubs = >::sse_decode(&mut deserializer); + let api_force_update = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, )], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref().await) + Some(api_that.lockable_decode_async_ref_mut().await) } _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::fetch_nostr_profiles( - &*api_that_guard, - api_npubs, - ) - .await?; + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::get_public_federations( + &mut *api_that_guard, + api_force_update, + ) + .await, + )?; Ok(output_ok) })() .await, @@ -7252,7 +7018,7 @@ fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_all_contacts_impl( +fn wire__crate__nostr__NostrClient_get_relays_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7260,7 +7026,7 @@ fn wire__crate__nostr__NostrClient_get_all_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_all_contacts", + debug_name: "NostrClient_get_relays", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7299,7 +7065,7 @@ fn wire__crate__nostr__NostrClient_get_all_contacts_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_all_contacts(&*api_that_guard).await, + crate::nostr::NostrClient::get_relays(&*api_that_guard).await, )?; Ok(output_ok) })() @@ -7309,7 +7075,7 @@ fn wire__crate__nostr__NostrClient_get_all_contacts_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( +fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7317,7 +7083,7 @@ fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_backup_invite_codes", + debug_name: "NostrClient_has_imported_contacts", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7356,7 +7122,7 @@ fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_backup_invite_codes(&*api_that_guard) + crate::nostr::NostrClient::has_imported_contacts(&*api_that_guard) .await, )?; Ok(output_ok) @@ -7367,7 +7133,7 @@ fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_contact_impl( +fn wire__crate__nostr__NostrClient_insert_relay_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7375,7 +7141,7 @@ fn wire__crate__nostr__NostrClient_get_contact_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_contact", + debug_name: "NostrClient_insert_relay", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7392,10 +7158,10 @@ fn wire__crate__nostr__NostrClient_get_contact_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_npub = ::sse_decode(&mut deserializer); + let api_relay_uri = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -7414,10 +7180,11 @@ fn wire__crate__nostr__NostrClient_get_contact_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_contact(&*api_that_guard, &api_npub) - .await, - )?; + let output_ok = crate::nostr::NostrClient::insert_relay( + &*api_that_guard, + api_relay_uri, + ) + .await?; Ok(output_ok) })() .await, @@ -7426,7 +7193,7 @@ fn wire__crate__nostr__NostrClient_get_contact_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( +fn wire__crate__nostr__NostrClient_listen_for_nwc_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7434,7 +7201,7 @@ fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_contact_sync_config", + debug_name: "NostrClient_listen_for_nwc", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7448,34 +7215,41 @@ fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , + let api_federation_id = , >>::sse_decode(&mut deserializer); + let api_nwc_config = + ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_federation_id, + 0, + false, )], ); for i in decode_indices_ { match i { 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) } _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_contact_sync_config(&*api_that_guard) - .await, - )?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + crate::nostr::NostrClient::listen_for_nwc( + &*api_federation_id_guard, + api_nwc_config, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -7484,7 +7258,7 @@ fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( +fn wire__crate__nostr__NostrClient_new_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7492,7 +7266,7 @@ fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_follows_for_pubkey", + debug_name: "NostrClient_new", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7506,34 +7280,17 @@ fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_npub = ::sse_decode(&mut deserializer); - deserializer.end(); + let api_db = ::sse_decode(&mut deserializer); + let api_recover_relays = >::sse_decode(&mut deserializer); + let api_is_desktop = ::sse_decode(&mut deserializer); + deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::get_follows_for_pubkey( - &*api_that_guard, - api_npub, + let output_ok = crate::nostr::NostrClient::new( + api_db, + api_recover_relays, + api_is_desktop, ) .await?; Ok(output_ok) @@ -7544,7 +7301,7 @@ fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( +fn wire__crate__nostr__NostrClient_paginate_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7552,7 +7309,7 @@ fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_nwc_connection_info", + debug_name: "NostrClient_paginate_contacts", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7569,6 +7326,8 @@ fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_cursor = >::sse_decode(&mut deserializer); + let api_limit = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -7591,68 +7350,10 @@ fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_nwc_connection_info(&*api_that_guard) - .await, - )?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__nostr__NostrClient_get_public_federations_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_public_federations", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_force_update = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref_mut().await) - } - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_public_federations( - &mut *api_that_guard, - api_force_update, + crate::nostr::NostrClient::paginate_contacts( + &*api_that_guard, + api_cursor, + api_limit, ) .await, )?; @@ -7664,7 +7365,7 @@ fn wire__crate__nostr__NostrClient_get_public_federations_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_relays_impl( +fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7672,7 +7373,7 @@ fn wire__crate__nostr__NostrClient_get_relays_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_relays", + debug_name: "NostrClient_paginate_search_contacts", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7689,6 +7390,9 @@ fn wire__crate__nostr__NostrClient_get_relays_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_query = ::sse_decode(&mut deserializer); + let api_cursor = >::sse_decode(&mut deserializer); + let api_limit = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -7711,7 +7415,13 @@ fn wire__crate__nostr__NostrClient_get_relays_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_relays(&*api_that_guard).await, + crate::nostr::NostrClient::paginate_search_contacts( + &*api_that_guard, + &api_query, + api_cursor, + api_limit, + ) + .await, )?; Ok(output_ok) })() @@ -7721,7 +7431,7 @@ fn wire__crate__nostr__NostrClient_get_relays_impl( }, ) } -fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( +fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7729,7 +7439,7 @@ fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_has_imported_contacts", + debug_name: "NostrClient_remove_nwc_connection_info", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7746,6 +7456,7 @@ fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -7767,10 +7478,13 @@ fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::has_imported_contacts(&*api_that_guard) - .await, - )?; + let output_ok = Result::<_, ()>::Ok({ + crate::nostr::NostrClient::remove_nwc_connection_info( + &*api_that_guard, + api_federation_id, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -7779,7 +7493,7 @@ fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( }, ) } -fn wire__crate__nostr__NostrClient_insert_relay_impl( +fn wire__crate__nostr__NostrClient_remove_relay_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7787,7 +7501,7 @@ fn wire__crate__nostr__NostrClient_insert_relay_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_insert_relay", + debug_name: "NostrClient_remove_relay", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7826,7 +7540,7 @@ fn wire__crate__nostr__NostrClient_insert_relay_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::insert_relay( + let output_ok = crate::nostr::NostrClient::remove_relay( &*api_that_guard, api_relay_uri, ) @@ -7839,50 +7553,7 @@ fn wire__crate__nostr__NostrClient_insert_relay_impl( }, ) } -fn wire__crate__nostr__NostrClient_new_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_new", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_db = ::sse_decode(&mut deserializer); - let api_recover_relays = >::sse_decode(&mut deserializer); - let api_is_desktop = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = crate::nostr::NostrClient::new( - api_db, - api_recover_relays, - api_is_desktop, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__nostr__NostrClient_paginate_contacts_impl( +fn wire__crate__nostr__NostrClient_set_contact_sync_config_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7890,7 +7561,7 @@ fn wire__crate__nostr__NostrClient_paginate_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_paginate_contacts", + debug_name: "NostrClient_set_contact_sync_config", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7907,8 +7578,8 @@ fn wire__crate__nostr__NostrClient_paginate_contacts_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_cursor = >::sse_decode(&mut deserializer); - let api_limit = ::sse_decode(&mut deserializer); + let api_npub = ::sse_decode(&mut deserializer); + let api_enabled = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -7930,14 +7601,14 @@ fn wire__crate__nostr__NostrClient_paginate_contacts_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::paginate_contacts( + let output_ok = Result::<_, ()>::Ok({ + crate::nostr::NostrClient::set_contact_sync_config( &*api_that_guard, - api_cursor, - api_limit, + api_npub, + api_enabled, ) - .await, - )?; + .await; + })?; Ok(output_ok) })() .await, @@ -7946,7 +7617,7 @@ fn wire__crate__nostr__NostrClient_paginate_contacts_impl( }, ) } -fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( +fn wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7954,7 +7625,7 @@ fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_paginate_search_contacts", + debug_name: "NostrClient_set_nwc_connection_info", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7971,9 +7642,9 @@ fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_query = ::sse_decode(&mut deserializer); - let api_cursor = >::sse_decode(&mut deserializer); - let api_limit = ::sse_decode(&mut deserializer); + let api_federation_id = ::sse_decode(&mut deserializer); + let api_relay = ::sse_decode(&mut deserializer); + let api_is_desktop = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -7982,25 +7653,25 @@ fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, )], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref().await) + Some(api_that.lockable_decode_async_ref_mut().await) } _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); + let mut api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::paginate_search_contacts( - &*api_that_guard, - &api_query, - api_cursor, - api_limit, + crate::nostr::NostrClient::set_nwc_connection_info( + &mut *api_that_guard, + api_federation_id, + api_relay, + api_is_desktop, ) .await, )?; @@ -8012,7 +7683,7 @@ fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( }, ) } -fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( +fn wire__crate__nostr__NostrClient_sync_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -8020,7 +7691,7 @@ fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_remove_nwc_connection_info", + debug_name: "NostrClient_sync_contacts", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -8037,7 +7708,6 @@ fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -8060,11 +7730,7 @@ fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok({ - crate::nostr::NostrClient::remove_nwc_connection_info( - &*api_that_guard, - api_federation_id, - ) - .await; + crate::nostr::NostrClient::sync_contacts(&*api_that_guard).await; })?; Ok(output_ok) })() @@ -8074,7 +7740,7 @@ fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( }, ) } -fn wire__crate__nostr__NostrClient_remove_relay_impl( +fn wire__crate__nostr__NostrClient_verify_nip05_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -8082,7 +7748,7 @@ fn wire__crate__nostr__NostrClient_remove_relay_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_remove_relay", + debug_name: "NostrClient_verify_nip05", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -8099,7 +7765,7 @@ fn wire__crate__nostr__NostrClient_remove_relay_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_relay_uri = ::sse_decode(&mut deserializer); + let api_nip05_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -8121,9 +7787,9 @@ fn wire__crate__nostr__NostrClient_remove_relay_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::remove_relay( + let output_ok = crate::nostr::NostrClient::verify_nip05( &*api_that_guard, - api_relay_uri, + &api_nip05_id, ) .await?; Ok(output_ok) @@ -8134,259 +7800,12 @@ fn wire__crate__nostr__NostrClient_remove_relay_impl( }, ) } -fn wire__crate__nostr__NostrClient_set_contact_sync_config_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, +fn wire__crate__fountain__OobNotesDecoder_add_fragment_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_set_contact_sync_config", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_npub = ::sse_decode(&mut deserializer); - let api_enabled = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::nostr::NostrClient::set_contact_sync_config( - &*api_that_guard, - api_npub, - api_enabled, - ) - .await; - })?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_set_nwc_connection_info", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_federation_id = ::sse_decode(&mut deserializer); - let api_relay = ::sse_decode(&mut deserializer); - let api_is_desktop = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref_mut().await) - } - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::set_nwc_connection_info( - &mut *api_that_guard, - api_federation_id, - api_relay, - api_is_desktop, - ) - .await, - )?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__nostr__NostrClient_sync_contacts_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_sync_contacts", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::nostr::NostrClient::sync_contacts(&*api_that_guard).await; - })?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__nostr__NostrClient_verify_nip05_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_verify_nip05", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_nip05_id = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::verify_nip05( - &*api_that_guard, - &api_nip05_id, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__fountain__OobNotesDecoder_add_fragment_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { debug_name: "OobNotesDecoder_add_fragment", port: None, @@ -9334,14 +8753,14 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_set_picture_impl( }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_federation_fee_msats_impl( +fn wire__crate__tap_transfer__TapRecipient_decrypt_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_get_federation_fee_msats", + debug_name: "TapRecipient_decrypt", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -9356,10 +8775,11 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_federation_fee let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_blob = >::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { + transform_result_sse::<_, crate::app_error::EcashAppError>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ @@ -9374,20 +8794,21 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_federation_fee } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.federation_fee_msats.clone())?; + let output_ok = + crate::tap_transfer::TapRecipient::decrypt(&*api_that_guard, api_blob)?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_impl( +fn wire__crate__tap_transfer__TapRecipient_new_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_get_fee_amount", + debug_name: "TapRecipient_new", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -9401,12 +8822,135 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_imp }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; + let output_ok = Result::<_, ()>::Ok(crate::tap_transfer::TapRecipient::new())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__tap_transfer__TapRecipient_public_key_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "TapRecipient_public_key", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::tap_transfer::TapRecipient::public_key(&*api_that_guard), + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_federation_fee_msats_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "WithdrawFeesResponse_auto_accessor_get_federation_fee_msats", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.federation_fee_msats.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "WithdrawFeesResponse_auto_accessor_get_fee_amount", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( @@ -9875,802 +9419,17 @@ fn wire__crate__add_recovery_relay_impl( rust_vec_len_, data_len_, ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_relay = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let output_ok = Result::<_, ()>::Ok({ - crate::add_recovery_relay(api_relay).await; - })?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__allocate_deposit_address_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "allocate_deposit_address", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = crate::allocate_deposit_address(api_federation_id).await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__await_ecash_reissue_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "await_ecash_reissue", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_operation_id = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::await_ecash_reissue(&*api_federation_id_guard, api_operation_id) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__await_receive_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "await_receive", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_operation_id = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::await_receive(&*api_federation_id_guard, api_operation_id) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__await_send_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "await_send", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_operation_id = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::await_send(&*api_federation_id_guard, api_operation_id).await, - )?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__await_withdraw_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "await_withdraw", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_operation_id = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, crate::app_error::EcashAppError>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::await_withdraw(&*api_federation_id_guard, api_operation_id) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__backup_invite_codes_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "backup_invite_codes", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = crate::backup_invite_codes().await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__balance_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "balance", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::balance(&*api_federation_id_guard).await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__calculate_ecash_reissue_fees_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "calculate_ecash_reissue_fees", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_ecash = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::calculate_ecash_reissue_fees( - &*api_federation_id_guard, - api_ecash, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__calculate_ecash_send_fees_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "calculate_ecash_send_fees", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_amount_msats = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::calculate_ecash_send_fees( - &*api_federation_id_guard, - api_amount_msats, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__calculate_withdraw_fees_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "calculate_withdraw_fees", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_address = ::sse_decode(&mut deserializer); - let api_amount_sats = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, crate::app_error::EcashAppError>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::calculate_withdraw_fees( - &*api_federation_id_guard, - api_address, - api_amount_sats, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__change_pin_code_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "change_pin_code", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_current_pin = ::sse_decode(&mut deserializer); - let api_new_pin = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = - crate::change_pin_code(api_current_pin, api_new_pin).await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__check_ecash_spent_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "check_ecash_spent", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_ecash = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::check_ecash_spent(&*api_federation_id_guard, api_ecash).await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__check_ln_address_availability_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "check_ln_address_availability", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_username = ::sse_decode(&mut deserializer); - let api_domain = ::sse_decode(&mut deserializer); - let api_ln_address_api = ::sse_decode(&mut deserializer); - let api_recurringd_api = ::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::check_ln_address_availability( - api_username, - api_domain, - api_ln_address_api, - api_recurringd_api, - &*api_federation_id_guard, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__claim_random_ln_address_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "claim_random_ln_address", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_ln_address_api = ::sse_decode(&mut deserializer); - let api_recurringd_api = ::sse_decode(&mut deserializer); + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_relay = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::claim_random_ln_address( - &*api_federation_id_guard, - api_ln_address_api, - api_recurringd_api, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::add_recovery_relay(api_relay).await; + })?; Ok(output_ok) })() .await, @@ -10679,7 +9438,7 @@ fn wire__crate__claim_random_ln_address_impl( }, ) } -fn wire__crate__clear_contacts_and_stop_sync_impl( +fn wire__crate__allocate_deposit_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10687,7 +9446,7 @@ fn wire__crate__clear_contacts_and_stop_sync_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "clear_contacts_and_stop_sync", + debug_name: "allocate_deposit_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10701,12 +9460,12 @@ fn wire__crate__clear_contacts_and_stop_sync_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = - Result::<_, ()>::Ok(crate::clear_contacts_and_stop_sync().await)?; + let output_ok = crate::allocate_deposit_address(api_federation_id).await?; Ok(output_ok) })() .await, @@ -10715,7 +9474,7 @@ fn wire__crate__clear_contacts_and_stop_sync_impl( }, ) } -fn wire__crate__clear_pin_code_impl( +fn wire__crate__await_ecash_reissue_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10723,7 +9482,7 @@ fn wire__crate__clear_pin_code_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "clear_pin_code", + debug_name: "await_ecash_reissue", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10737,12 +9496,36 @@ fn wire__crate__clear_pin_code_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_pin = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_operation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = crate::clear_pin_code(api_pin).await?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = + crate::await_ecash_reissue(&*api_federation_id_guard, api_operation_id) + .await?; Ok(output_ok) })() .await, @@ -10751,7 +9534,7 @@ fn wire__crate__clear_pin_code_impl( }, ) } -fn wire__crate__compute_receive_amount_with_fees_impl( +fn wire__crate__await_receive_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10759,7 +9542,7 @@ fn wire__crate__compute_receive_amount_with_fees_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "compute_receive_amount_with_fees", + debug_name: "await_receive", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10776,10 +9559,7 @@ fn wire__crate__compute_receive_amount_with_fees_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_gateway_url = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); - let api_amount_msats = ::sse_decode(&mut deserializer); - let api_include_fees = ::sse_decode(&mut deserializer); + let api_operation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -10803,14 +9583,9 @@ fn wire__crate__compute_receive_amount_with_fees_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::compute_receive_amount_with_fees( - &*api_federation_id_guard, - api_gateway_url, - api_is_lnv2, - api_amount_msats, - api_include_fees, - ) - .await?; + let output_ok = + crate::await_receive(&*api_federation_id_guard, api_operation_id) + .await?; Ok(output_ok) })() .await, @@ -10819,15 +9594,15 @@ fn wire__crate__compute_receive_amount_with_fees_impl( }, ) } -fn wire__crate__db__connector_default_impl( +fn wire__crate__await_send_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "connector_default", + debug_name: "await_send", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10841,17 +9616,45 @@ fn wire__crate__db__connector_default_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_operation_id = ::sse_decode(&mut deserializer); deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::db::Connector::default())?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::await_send(&*api_federation_id_guard, api_operation_id).await, + )?; + Ok(output_ok) + })() + .await, + ) } }, ) } -fn wire__crate__create_multimint_from_words_impl( +fn wire__crate__await_withdraw_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10859,7 +9662,7 @@ fn wire__crate__create_multimint_from_words_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "create_multimint_from_words", + debug_name: "await_withdraw", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10873,17 +9676,36 @@ fn wire__crate__create_multimint_from_words_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_path = ::sse_decode(&mut deserializer); - let api_words = >::sse_decode(&mut deserializer); - let api_is_desktop = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_operation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, crate::app_error::EcashAppError>( (move || async move { - let output_ok = Result::<_, ()>::Ok({ - crate::create_multimint_from_words(api_path, api_words, api_is_desktop) - .await; - })?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = + crate::await_withdraw(&*api_federation_id_guard, api_operation_id) + .await?; Ok(output_ok) })() .await, @@ -10892,7 +9714,7 @@ fn wire__crate__create_multimint_from_words_impl( }, ) } -fn wire__crate__create_new_multimint_impl( +fn wire__crate__backup_invite_codes_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10900,7 +9722,7 @@ fn wire__crate__create_new_multimint_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "create_new_multimint", + debug_name: "backup_invite_codes", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10914,15 +9736,11 @@ fn wire__crate__create_new_multimint_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_path = ::sse_decode(&mut deserializer); - let api_is_desktop = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok({ - crate::create_new_multimint(api_path, api_is_desktop).await; - })?; + let output_ok = crate::backup_invite_codes().await?; Ok(output_ok) })() .await, @@ -10931,7 +9749,7 @@ fn wire__crate__create_new_multimint_impl( }, ) } -fn wire__crate__execute_lnurl_withdraw_impl( +fn wire__crate__balance_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10939,7 +9757,7 @@ fn wire__crate__execute_lnurl_withdraw_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "execute_lnurl_withdraw", + debug_name: "balance", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10956,17 +9774,9 @@ fn wire__crate__execute_lnurl_withdraw_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_callback = ::sse_decode(&mut deserializer); - let api_k1 = ::sse_decode(&mut deserializer); - let api_amount_msats_without_fees = ::sse_decode(&mut deserializer); - let api_amount_msats_with_fees = ::sse_decode(&mut deserializer); - let api_federation_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway_url = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -10987,18 +9797,8 @@ fn wire__crate__execute_lnurl_withdraw_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::execute_lnurl_withdraw( - &*api_federation_id_guard, - api_callback, - api_k1, - api_amount_msats_without_fees, - api_amount_msats_with_fees, - api_federation_fee_msats, - api_gateway_fee_msats, - api_gateway_url, - api_is_lnv2, - ) - .await?; + let output_ok = + Result::<_, ()>::Ok(crate::balance(&*api_federation_id_guard).await)?; Ok(output_ok) })() .await, @@ -11007,7 +9807,7 @@ fn wire__crate__execute_lnurl_withdraw_impl( }, ) } -fn wire__crate__federation_id_to_string_impl( +fn wire__crate__calculate_ecash_reissue_fees_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11015,7 +9815,7 @@ fn wire__crate__federation_id_to_string_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "federation_id_to_string", + debug_name: "calculate_ecash_reissue_fees", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11029,14 +9829,38 @@ fn wire__crate__federation_id_to_string_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_ecash = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok( - crate::federation_id_to_string(api_federation_id).await, - )?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::calculate_ecash_reissue_fees( + &*api_federation_id_guard, + api_ecash, + ) + .await?; Ok(output_ok) })() .await, @@ -11045,7 +9869,7 @@ fn wire__crate__federation_id_to_string_impl( }, ) } -fn wire__crate__federations_impl( +fn wire__crate__calculate_ecash_send_fees_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11053,7 +9877,7 @@ fn wire__crate__federations_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "federations", + debug_name: "calculate_ecash_send_fees", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11067,11 +9891,38 @@ fn wire__crate__federations_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_amount_msats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::federations().await)?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::calculate_ecash_send_fees( + &*api_federation_id_guard, + api_amount_msats, + ) + .await?; Ok(output_ok) })() .await, @@ -11080,7 +9931,7 @@ fn wire__crate__federations_impl( }, ) } -fn wire__crate__fetch_lnurl_withdraw_impl( +fn wire__crate__calculate_withdraw_fees_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11088,7 +9939,7 @@ fn wire__crate__fetch_lnurl_withdraw_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "fetch_lnurl_withdraw", + debug_name: "calculate_withdraw_fees", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11102,12 +9953,40 @@ fn wire__crate__fetch_lnurl_withdraw_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_url = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_address = ::sse_decode(&mut deserializer); + let api_amount_sats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, crate::app_error::EcashAppError>( (move || async move { - let output_ok = crate::fetch_lnurl_withdraw(api_url).await?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::calculate_withdraw_fees( + &*api_federation_id_guard, + api_address, + api_amount_sats, + ) + .await?; Ok(output_ok) })() .await, @@ -11116,7 +9995,7 @@ fn wire__crate__fetch_lnurl_withdraw_impl( }, ) } -fn wire__crate__get_addresses_impl( +fn wire__crate__check_ecash_spent_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11124,7 +10003,7 @@ fn wire__crate__get_addresses_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_addresses", + debug_name: "check_ecash_spent", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11141,9 +10020,10 @@ fn wire__crate__get_addresses_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); + let api_ecash = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -11164,9 +10044,8 @@ fn wire__crate__get_addresses_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::get_addresses(&*api_federation_id_guard).await, - )?; + let output_ok = + crate::check_ecash_spent(&*api_federation_id_guard, api_ecash).await?; Ok(output_ok) })() .await, @@ -11175,7 +10054,7 @@ fn wire__crate__get_addresses_impl( }, ) } -fn wire__crate__get_all_btc_prices_impl( +fn wire__crate__check_ln_address_availability_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11183,7 +10062,7 @@ fn wire__crate__get_all_btc_prices_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_all_btc_prices", + debug_name: "check_ln_address_availability", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11197,11 +10076,44 @@ fn wire__crate__get_all_btc_prices_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_username = ::sse_decode(&mut deserializer); + let api_domain = ::sse_decode(&mut deserializer); + let api_ln_address_api = ::sse_decode(&mut deserializer); + let api_recurringd_api = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_all_btc_prices().await)?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::check_ln_address_availability( + api_username, + api_domain, + api_ln_address_api, + api_recurringd_api, + &*api_federation_id_guard, + ) + .await?; Ok(output_ok) })() .await, @@ -11210,7 +10122,7 @@ fn wire__crate__get_all_btc_prices_impl( }, ) } -fn wire__crate__get_all_contacts_impl( +fn wire__crate__claim_random_ln_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11218,7 +10130,7 @@ fn wire__crate__get_all_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_all_contacts", + debug_name: "claim_random_ln_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11232,11 +10144,40 @@ fn wire__crate__get_all_contacts_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_ln_address_api = ::sse_decode(&mut deserializer); + let api_recurringd_api = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_all_contacts().await)?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::claim_random_ln_address( + &*api_federation_id_guard, + api_ln_address_api, + api_recurringd_api, + ) + .await?; Ok(output_ok) })() .await, @@ -11245,7 +10186,7 @@ fn wire__crate__get_all_contacts_impl( }, ) } -fn wire__crate__get_bitcoin_display_impl( +fn wire__crate__clear_contacts_and_stop_sync_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11253,7 +10194,7 @@ fn wire__crate__get_bitcoin_display_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_bitcoin_display", + debug_name: "clear_contacts_and_stop_sync", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11271,7 +10212,8 @@ fn wire__crate__get_bitcoin_display_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_bitcoin_display().await)?; + let output_ok = + Result::<_, ()>::Ok(crate::clear_contacts_and_stop_sync().await)?; Ok(output_ok) })() .await, @@ -11280,7 +10222,7 @@ fn wire__crate__get_bitcoin_display_impl( }, ) } -fn wire__crate__get_btc_price_impl( +fn wire__crate__clear_pin_code_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11288,7 +10230,7 @@ fn wire__crate__get_btc_price_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_btc_price", + debug_name: "clear_pin_code", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11302,11 +10244,12 @@ fn wire__crate__get_btc_price_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_pin = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_btc_price().await)?; + let output_ok = crate::clear_pin_code(api_pin).await?; Ok(output_ok) })() .await, @@ -11315,15 +10258,15 @@ fn wire__crate__get_btc_price_impl( }, ) } -fn wire__crate__get_event_bus_impl( +fn wire__crate__compute_receive_amount_with_fees_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_event_bus", + debug_name: "compute_receive_amount_with_fees", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11337,25 +10280,61 @@ fn wire__crate__get_event_bus_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_gateway_url = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); + let api_amount_msats = ::sse_decode(&mut deserializer); + let api_include_fees = ::sse_decode(&mut deserializer); deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::get_event_bus())?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::compute_receive_amount_with_fees( + &*api_federation_id_guard, + api_gateway_url, + api_is_lnv2, + api_amount_msats, + api_include_fees, + ) + .await?; + Ok(output_ok) + })() + .await, + ) } }, ) } -fn wire__crate__get_federation_meta_impl( +fn wire__crate__db__connector_default_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_federation_meta", + debug_name: "connector_default", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11369,23 +10348,17 @@ fn wire__crate__get_federation_meta_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_invite_code = >::sse_decode(&mut deserializer); - let api_federation_id = >::sse_decode(&mut deserializer); deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = - crate::get_federation_meta(api_invite_code, api_federation_id).await?; - Ok(output_ok) - })() - .await, - ) + move |context| { + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok(crate::db::Connector::default())?; + Ok(output_ok) + })()) } }, ) } -fn wire__crate__get_federation_order_impl( +fn wire__crate__create_multimint_from_words_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11393,7 +10366,7 @@ fn wire__crate__get_federation_order_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_federation_order", + debug_name: "create_multimint_from_words", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11407,11 +10380,17 @@ fn wire__crate__get_federation_order_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_path = ::sse_decode(&mut deserializer); + let api_words = >::sse_decode(&mut deserializer); + let api_is_desktop = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_federation_order().await)?; + let output_ok = Result::<_, ()>::Ok({ + crate::create_multimint_from_words(api_path, api_words, api_is_desktop) + .await; + })?; Ok(output_ok) })() .await, @@ -11420,7 +10399,7 @@ fn wire__crate__get_federation_order_impl( }, ) } -fn wire__crate__get_fiat_currency_impl( +fn wire__crate__create_new_multimint_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11428,7 +10407,7 @@ fn wire__crate__get_fiat_currency_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_fiat_currency", + debug_name: "create_new_multimint", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11442,11 +10421,15 @@ fn wire__crate__get_fiat_currency_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_path = ::sse_decode(&mut deserializer); + let api_is_desktop = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_fiat_currency().await)?; + let output_ok = Result::<_, ()>::Ok({ + crate::create_new_multimint(api_path, api_is_desktop).await; + })?; Ok(output_ok) })() .await, @@ -11455,17 +10438,16 @@ fn wire__crate__get_fiat_currency_impl( }, ) } -fn wire__crate__get_invite_code_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, +fn wire__crate__encrypt_ecash_for_tap_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_invite_code", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + debug_name: "encrypt_ecash_for_tap", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, move || { let message = unsafe { @@ -11477,44 +10459,17 @@ fn wire__crate__get_invite_code_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); + let api_ecash = ::sse_decode(&mut deserializer); + let api_recipient_pubkey = >::sse_decode(&mut deserializer); deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::get_invite_code(&*api_federation_id_guard, api_peer).await?; - Ok(output_ok) - })() - .await, - ) - } + transform_result_sse::<_, crate::app_error::EcashAppError>((move || { + let output_ok = crate::encrypt_ecash_for_tap(api_ecash, api_recipient_pubkey)?; + Ok(output_ok) + })()) }, ) } -fn wire__crate__get_invoice_from_lnaddress_or_lnurl_impl( +fn wire__crate__execute_lnurl_withdraw_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11522,7 +10477,7 @@ fn wire__crate__get_invoice_from_lnaddress_or_lnurl_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_invoice_from_lnaddress_or_lnurl", + debug_name: "execute_lnurl_withdraw", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11539,11 +10494,17 @@ fn wire__crate__get_invoice_from_lnaddress_or_lnurl_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_amount_msats = ::sse_decode(&mut deserializer); - let api_lnaddress_or_lnurl = ::sse_decode(&mut deserializer); + let api_callback = ::sse_decode(&mut deserializer); + let api_k1 = ::sse_decode(&mut deserializer); + let api_amount_msats_without_fees = ::sse_decode(&mut deserializer); + let api_amount_msats_with_fees = ::sse_decode(&mut deserializer); + let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway_url = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, crate::app_error::EcashAppError>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -11564,10 +10525,16 @@ fn wire__crate__get_invoice_from_lnaddress_or_lnurl_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::get_invoice_from_lnaddress_or_lnurl( + let output_ok = crate::execute_lnurl_withdraw( &*api_federation_id_guard, - api_amount_msats, - api_lnaddress_or_lnurl, + api_callback, + api_k1, + api_amount_msats_without_fees, + api_amount_msats_with_fees, + api_federation_fee_msats, + api_gateway_fee_msats, + api_gateway_url, + api_is_lnv2, ) .await?; Ok(output_ok) @@ -11578,7 +10545,7 @@ fn wire__crate__get_invoice_from_lnaddress_or_lnurl_impl( }, ) } -fn wire__crate__get_ln_address_config_impl( +fn wire__crate__federation_id_to_string_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11586,7 +10553,7 @@ fn wire__crate__get_ln_address_config_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_ln_address_config", + debug_name: "federation_id_to_string", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11600,34 +10567,13 @@ fn wire__crate__get_ln_address_config_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); + let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::get_ln_address_config(&*api_federation_id_guard).await, + crate::federation_id_to_string(api_federation_id).await, )?; Ok(output_ok) })() @@ -11637,7 +10583,7 @@ fn wire__crate__get_ln_address_config_impl( }, ) } -fn wire__crate__get_max_withdrawable_amount_impl( +fn wire__crate__federations_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11645,7 +10591,7 @@ fn wire__crate__get_max_withdrawable_amount_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_max_withdrawable_amount", + debug_name: "federations", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11659,38 +10605,11 @@ fn wire__crate__get_max_withdrawable_amount_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_address = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, crate::app_error::EcashAppError>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::get_max_withdrawable_amount( - &*api_federation_id_guard, - api_address, - ) - .await?; + let output_ok = Result::<_, ()>::Ok(crate::federations().await)?; Ok(output_ok) })() .await, @@ -11699,7 +10618,7 @@ fn wire__crate__get_max_withdrawable_amount_impl( }, ) } -fn wire__crate__get_mnemonic_impl( +fn wire__crate__fetch_lnurl_withdraw_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11707,7 +10626,7 @@ fn wire__crate__get_mnemonic_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_mnemonic", + debug_name: "fetch_lnurl_withdraw", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11721,11 +10640,12 @@ fn wire__crate__get_mnemonic_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_mnemonic().await)?; + let output_ok = crate::fetch_lnurl_withdraw(api_url).await?; Ok(output_ok) })() .await, @@ -11734,7 +10654,7 @@ fn wire__crate__get_mnemonic_impl( }, ) } -fn wire__crate__get_module_recovery_progress_impl( +fn wire__crate__get_addresses_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11742,7 +10662,7 @@ fn wire__crate__get_module_recovery_progress_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_module_recovery_progress", + debug_name: "get_addresses", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11759,8 +10679,6 @@ fn wire__crate__get_module_recovery_progress_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_recovery_module = - ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -11785,11 +10703,7 @@ fn wire__crate__get_module_recovery_progress_impl( } let api_federation_id_guard = api_federation_id_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::get_module_recovery_progress( - &*api_federation_id_guard, - api_recovery_module, - ) - .await, + crate::get_addresses(&*api_federation_id_guard).await, )?; Ok(output_ok) })() @@ -11799,7 +10713,7 @@ fn wire__crate__get_module_recovery_progress_impl( }, ) } -fn wire__crate__get_note_summary_impl( +fn wire__crate__get_all_btc_prices_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11807,7 +10721,7 @@ fn wire__crate__get_note_summary_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_note_summary", + debug_name: "get_all_btc_prices", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11821,33 +10735,11 @@ fn wire__crate__get_note_summary_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::get_note_summary(&*api_federation_id_guard).await?; + let output_ok = Result::<_, ()>::Ok(crate::get_all_btc_prices().await)?; Ok(output_ok) })() .await, @@ -11856,7 +10748,7 @@ fn wire__crate__get_note_summary_impl( }, ) } -fn wire__crate__get_nwc_connection_info_impl( +fn wire__crate__get_all_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11864,7 +10756,7 @@ fn wire__crate__get_nwc_connection_info_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_nwc_connection_info", + debug_name: "get_all_contacts", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11882,8 +10774,7 @@ fn wire__crate__get_nwc_connection_info_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = - Result::<_, ()>::Ok(crate::get_nwc_connection_info().await)?; + let output_ok = Result::<_, ()>::Ok(crate::get_all_contacts().await)?; Ok(output_ok) })() .await, @@ -11892,7 +10783,7 @@ fn wire__crate__get_nwc_connection_info_impl( }, ) } -fn wire__crate__get_nwc_daily_budget_sats_impl( +fn wire__crate__get_bitcoin_display_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11900,7 +10791,7 @@ fn wire__crate__get_nwc_daily_budget_sats_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_nwc_daily_budget_sats", + debug_name: "get_bitcoin_display", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11918,8 +10809,7 @@ fn wire__crate__get_nwc_daily_budget_sats_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = - Result::<_, ()>::Ok(crate::get_nwc_daily_budget_sats().await)?; + let output_ok = Result::<_, ()>::Ok(crate::get_bitcoin_display().await)?; Ok(output_ok) })() .await, @@ -11928,7 +10818,7 @@ fn wire__crate__get_nwc_daily_budget_sats_impl( }, ) } -fn wire__crate__get_nwc_max_payment_sats_impl( +fn wire__crate__get_btc_price_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11936,7 +10826,7 @@ fn wire__crate__get_nwc_max_payment_sats_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_nwc_max_payment_sats", + debug_name: "get_btc_price", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11954,8 +10844,7 @@ fn wire__crate__get_nwc_max_payment_sats_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = - Result::<_, ()>::Ok(crate::get_nwc_max_payment_sats().await)?; + let output_ok = Result::<_, ()>::Ok(crate::get_btc_price().await)?; Ok(output_ok) })() .await, @@ -11964,15 +10853,15 @@ fn wire__crate__get_nwc_max_payment_sats_impl( }, ) } -fn wire__crate__get_pegin_fee_quote_impl( +fn wire__crate__get_event_bus_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_pegin_fee_quote", + debug_name: "get_event_bus", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11986,21 +10875,17 @@ fn wire__crate__get_pegin_fee_quote_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = crate::get_pegin_fee_quote(api_federation_id).await?; - Ok(output_ok) - })() - .await, - ) + move |context| { + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok(crate::get_event_bus())?; + Ok(output_ok) + })()) } }, ) } -fn wire__crate__get_relays_impl( +fn wire__crate__get_federation_meta_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12008,7 +10893,7 @@ fn wire__crate__get_relays_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_relays", + debug_name: "get_federation_meta", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12022,11 +10907,14 @@ fn wire__crate__get_relays_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_invite_code = >::sse_decode(&mut deserializer); + let api_federation_id = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_relays().await)?; + let output_ok = + crate::get_federation_meta(api_invite_code, api_federation_id).await?; Ok(output_ok) })() .await, @@ -12035,7 +10923,7 @@ fn wire__crate__get_relays_impl( }, ) } -fn wire__crate__get_require_pin_for_spending_impl( +fn wire__crate__get_federation_order_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12043,7 +10931,7 @@ fn wire__crate__get_require_pin_for_spending_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_require_pin_for_spending", + debug_name: "get_federation_order", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12061,8 +10949,7 @@ fn wire__crate__get_require_pin_for_spending_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = - Result::<_, ()>::Ok(crate::get_require_pin_for_spending().await)?; + let output_ok = Result::<_, ()>::Ok(crate::get_federation_order().await)?; Ok(output_ok) })() .await, @@ -12071,7 +10958,7 @@ fn wire__crate__get_require_pin_for_spending_impl( }, ) } -fn wire__crate__get_show_msats_impl( +fn wire__crate__get_fiat_currency_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12079,7 +10966,7 @@ fn wire__crate__get_show_msats_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_show_msats", + debug_name: "get_fiat_currency", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12097,7 +10984,7 @@ fn wire__crate__get_show_msats_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_show_msats().await)?; + let output_ok = Result::<_, ()>::Ok(crate::get_fiat_currency().await)?; Ok(output_ok) })() .await, @@ -12106,7 +10993,7 @@ fn wire__crate__get_show_msats_impl( }, ) } -fn wire__crate__guardian_add_gateway_impl( +fn wire__crate__get_invite_code_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12114,7 +11001,7 @@ fn wire__crate__guardian_add_gateway_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_add_gateway", + debug_name: "get_invite_code", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12132,8 +11019,6 @@ fn wire__crate__guardian_add_gateway_impl( flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); - let api_gateway_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -12157,13 +11042,8 @@ fn wire__crate__guardian_add_gateway_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_add_gateway( - &*api_federation_id_guard, - api_peer, - api_password, - api_gateway_url, - ) - .await?; + let output_ok = + crate::get_invite_code(&*api_federation_id_guard, api_peer).await?; Ok(output_ok) })() .await, @@ -12172,7 +11052,7 @@ fn wire__crate__guardian_add_gateway_impl( }, ) } -fn wire__crate__guardian_audit_impl( +fn wire__crate__get_invoice_from_lnaddress_or_lnurl_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12180,7 +11060,7 @@ fn wire__crate__guardian_audit_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_audit", + debug_name: "get_invoice_from_lnaddress_or_lnurl", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12194,38 +11074,15 @@ fn wire__crate__guardian_audit_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); + let api_amount_msats = ::sse_decode(&mut deserializer); + let api_lnaddress_or_lnurl = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, crate::app_error::EcashAppError>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_audit( - &*api_federation_id_guard, - api_peer, - api_password, + let output_ok = crate::get_invoice_from_lnaddress_or_lnurl( + api_amount_msats, + api_lnaddress_or_lnurl, ) .await?; Ok(output_ok) @@ -12236,7 +11093,7 @@ fn wire__crate__guardian_audit_impl( }, ) } -fn wire__crate__guardian_backup_statistics_impl( +fn wire__crate__get_ln_address_config_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12244,7 +11101,7 @@ fn wire__crate__guardian_backup_statistics_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_backup_statistics", + debug_name: "get_ln_address_config", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12261,11 +11118,9 @@ fn wire__crate__guardian_backup_statistics_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -12286,12 +11141,9 @@ fn wire__crate__guardian_backup_statistics_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_backup_statistics( - &*api_federation_id_guard, - api_peer, - api_password, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::get_ln_address_config(&*api_federation_id_guard).await, + )?; Ok(output_ok) })() .await, @@ -12300,7 +11152,7 @@ fn wire__crate__guardian_backup_statistics_impl( }, ) } -fn wire__crate__guardian_list_gateways_impl( +fn wire__crate__get_max_withdrawable_amount_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12308,7 +11160,7 @@ fn wire__crate__guardian_list_gateways_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_list_gateways", + debug_name: "get_max_withdrawable_amount", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12325,10 +11177,10 @@ fn wire__crate__guardian_list_gateways_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); + let api_address = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, crate::app_error::EcashAppError>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -12349,9 +11201,11 @@ fn wire__crate__guardian_list_gateways_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::guardian_list_gateways(&*api_federation_id_guard, api_peer) - .await?; + let output_ok = crate::get_max_withdrawable_amount( + &*api_federation_id_guard, + api_address, + ) + .await?; Ok(output_ok) })() .await, @@ -12360,7 +11214,7 @@ fn wire__crate__guardian_list_gateways_impl( }, ) } -fn wire__crate__guardian_login_impl( +fn wire__crate__get_mnemonic_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12368,7 +11222,7 @@ fn wire__crate__guardian_login_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_login", + debug_name: "get_mnemonic", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12382,40 +11236,11 @@ fn wire__crate__guardian_login_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_login( - &*api_federation_id_guard, - api_peer, - api_password, - ) - .await?; + let output_ok = Result::<_, ()>::Ok(crate::get_mnemonic().await)?; Ok(output_ok) })() .await, @@ -12424,7 +11249,7 @@ fn wire__crate__guardian_login_impl( }, ) } -fn wire__crate__guardian_meta_accept_impl( +fn wire__crate__get_module_recovery_progress_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12432,7 +11257,7 @@ fn wire__crate__guardian_meta_accept_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_meta_accept", + debug_name: "get_module_recovery_progress", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12449,12 +11274,10 @@ fn wire__crate__guardian_meta_accept_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); - let api_value_hex = ::sse_decode(&mut deserializer); + let api_module_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -12475,13 +11298,13 @@ fn wire__crate__guardian_meta_accept_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_meta_accept( - &*api_federation_id_guard, - api_peer, - api_password, - api_value_hex, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::get_module_recovery_progress( + &*api_federation_id_guard, + api_module_id, + ) + .await, + )?; Ok(output_ok) })() .await, @@ -12490,7 +11313,7 @@ fn wire__crate__guardian_meta_accept_impl( }, ) } -fn wire__crate__guardian_meta_propose_field_impl( +fn wire__crate__get_note_summary_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12498,7 +11321,7 @@ fn wire__crate__guardian_meta_propose_field_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_meta_propose_field", + debug_name: "get_note_summary", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12515,10 +11338,6 @@ fn wire__crate__guardian_meta_propose_field_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); - let api_field = ::sse_decode(&mut deserializer); - let api_value = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -12542,14 +11361,7 @@ fn wire__crate__guardian_meta_propose_field_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_meta_propose_field( - &*api_federation_id_guard, - api_peer, - api_password, - api_field, - api_value, - ) - .await?; + let output_ok = crate::get_note_summary(&*api_federation_id_guard).await?; Ok(output_ok) })() .await, @@ -12558,7 +11370,7 @@ fn wire__crate__guardian_meta_propose_field_impl( }, ) } -fn wire__crate__guardian_meta_state_impl( +fn wire__crate__get_nwc_connection_info_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12566,7 +11378,7 @@ fn wire__crate__guardian_meta_state_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_meta_state", + debug_name: "get_nwc_connection_info", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12580,40 +11392,12 @@ fn wire__crate__guardian_meta_state_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_meta_state( - &*api_federation_id_guard, - api_peer, - api_password, - ) - .await?; + let output_ok = + Result::<_, ()>::Ok(crate::get_nwc_connection_info().await)?; Ok(output_ok) })() .await, @@ -12622,7 +11406,7 @@ fn wire__crate__guardian_meta_state_impl( }, ) } -fn wire__crate__guardian_meta_withdraw_impl( +fn wire__crate__get_pegin_fee_quote_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12630,7 +11414,7 @@ fn wire__crate__guardian_meta_withdraw_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_meta_withdraw", + debug_name: "get_pegin_fee_quote", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12644,40 +11428,12 @@ fn wire__crate__guardian_meta_withdraw_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); + let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_meta_withdraw( - &*api_federation_id_guard, - api_peer, - api_password, - ) - .await?; + let output_ok = crate::get_pegin_fee_quote(api_federation_id).await?; Ok(output_ok) })() .await, @@ -12686,7 +11442,7 @@ fn wire__crate__guardian_meta_withdraw_impl( }, ) } -fn wire__crate__guardian_remove_gateway_impl( +fn wire__crate__get_relays_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12694,7 +11450,7 @@ fn wire__crate__guardian_remove_gateway_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_remove_gateway", + debug_name: "get_relays", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12708,42 +11464,47 @@ fn wire__crate__guardian_remove_gateway_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); - let api_gateway_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_remove_gateway( - &*api_federation_id_guard, - api_peer, - api_password, - api_gateway_url, - ) - .await?; + let output_ok = Result::<_, ()>::Ok(crate::get_relays().await)?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__get_require_pin_for_spending_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "get_require_pin_for_spending", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = + Result::<_, ()>::Ok(crate::get_require_pin_for_spending().await)?; Ok(output_ok) })() .await, @@ -12752,7 +11513,7 @@ fn wire__crate__guardian_remove_gateway_impl( }, ) } -fn wire__crate__guardian_status_impl( +fn wire__crate__get_show_msats_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12760,7 +11521,7 @@ fn wire__crate__guardian_status_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "guardian_status", + debug_name: "get_show_msats", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12774,40 +11535,11 @@ fn wire__crate__guardian_status_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_peer = ::sse_decode(&mut deserializer); - let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::guardian_status( - &*api_federation_id_guard, - api_peer, - api_password, - ) - .await?; + let output_ok = Result::<_, ()>::Ok(crate::get_show_msats().await)?; Ok(output_ok) })() .await, @@ -13271,72 +12003,6 @@ fn wire__crate__load_multimint_impl( }, ) } -fn wire__crate__max_lightning_send_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "max_lightning_send", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_lnaddress_or_lnurl = ::sse_decode(&mut deserializer); - let api_gateway = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::max_lightning_send( - &*api_federation_id_guard, - api_lnaddress_or_lnurl, - api_gateway, - api_is_lnv2, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} fn wire__crate__paginate_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -13623,41 +12289,6 @@ fn wire__crate__payment_preview_with_gateways_impl( }, ) } -fn wire__crate__pin_lockout_seconds_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "pin_lockout_seconds", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::pin_lockout_seconds().await)?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} fn wire__crate__receive_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -13827,64 +12458,6 @@ fn wire__crate__refresh_connections_impl( }, ) } -fn wire__crate__refresh_federation_meta_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "refresh_federation_meta", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::refresh_federation_meta(&*api_federation_id_guard).await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} fn wire__crate__register_ln_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -14125,7 +12698,81 @@ fn wire__crate__remove_relay_impl( }, ) } -fn wire__crate__send_impl( +fn wire__crate__send_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "send", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_invoice = ::sse_decode(&mut deserializer); + let api_gateway = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); + let api_amount_with_fees = ::sse_decode(&mut deserializer); + let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway_fee_msats = ::sse_decode(&mut deserializer); + let api_ln_address = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::app_error::EcashAppError>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::send( + &*api_federation_id_guard, + api_invoice, + api_gateway, + api_is_lnv2, + api_amount_with_fees, + api_federation_fee_msats, + api_gateway_fee_msats, + api_ln_address, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__send_ecash_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -14133,7 +12780,7 @@ fn wire__crate__send_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "send", + debug_name: "send_ecash", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -14150,13 +12797,8 @@ fn wire__crate__send_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_invoice = ::sse_decode(&mut deserializer); - let api_gateway = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); - let api_amount_with_fees = ::sse_decode(&mut deserializer); - let api_federation_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway_fee_msats = ::sse_decode(&mut deserializer); - let api_ln_address = >::sse_decode(&mut deserializer); + let api_amount_msats = ::sse_decode(&mut deserializer); + let api_fee_msats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, crate::app_error::EcashAppError>( @@ -14180,15 +12822,10 @@ fn wire__crate__send_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::send( + let output_ok = crate::send_ecash( &*api_federation_id_guard, - api_invoice, - api_gateway, - api_is_lnv2, - api_amount_with_fees, - api_federation_fee_msats, - api_gateway_fee_msats, - api_ln_address, + api_amount_msats, + api_fee_msats, ) .await?; Ok(output_ok) @@ -14199,7 +12836,7 @@ fn wire__crate__send_impl( }, ) } -fn wire__crate__send_ecash_impl( +fn wire__crate__send_lnaddress_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -14207,7 +12844,7 @@ fn wire__crate__send_ecash_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "send_ecash", + debug_name: "send_lnaddress", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -14225,7 +12862,7 @@ fn wire__crate__send_ecash_impl( flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); let api_amount_msats = ::sse_decode(&mut deserializer); - let api_fee_msats = ::sse_decode(&mut deserializer); + let api_address = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, crate::app_error::EcashAppError>( @@ -14249,10 +12886,10 @@ fn wire__crate__send_ecash_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::send_ecash( + let output_ok = crate::send_lnaddress( &*api_federation_id_guard, api_amount_msats, - api_fee_msats, + api_address, ) .await?; Ok(output_ok) @@ -14422,78 +13059,6 @@ fn wire__crate__set_nwc_connection_info_impl( }, ) } -fn wire__crate__set_nwc_daily_budget_sats_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "set_nwc_daily_budget_sats", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_sats = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = crate::set_nwc_daily_budget_sats(api_sats).await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__set_nwc_max_payment_sats_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "set_nwc_max_payment_sats", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_sats = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = crate::set_nwc_max_payment_sats(api_sats).await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} fn wire__crate__set_pin_code_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -14553,14 +13118,13 @@ fn wire__crate__set_require_pin_for_spending_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_require = ::sse_decode(&mut deserializer); - let api_current_pin = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let output_ok = - crate::set_require_pin_for_spending(api_require, api_current_pin) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::set_require_pin_for_spending(api_require).await; + })?; Ok(output_ok) })() .await, @@ -14760,8 +13324,7 @@ fn wire__crate__subscribe_recovery_progress_impl( &mut deserializer, ); let api_federation_id = ::sse_decode(&mut deserializer); - let api_recovery_module = - ::sse_decode(&mut deserializer); + let api_module_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -14770,7 +13333,7 @@ fn wire__crate__subscribe_recovery_progress_impl( crate::subscribe_recovery_progress( api_sink, api_federation_id, - api_recovery_module, + api_module_id, ) .await; })?; @@ -15191,6 +13754,9 @@ flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); @@ -15492,6 +14058,16 @@ impl SseDecode for SafeUrl { } } +impl SseDecode for TapRecipient { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = , + >>::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner); + } +} + impl SseDecode for WithdrawFees { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -15818,6 +14394,16 @@ impl SseDecode for RustOpaqueMoi> +{ + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = ::sse_decode(deserializer); + return decode_rust_opaque_moi(inner); + } +} + impl SseDecode for RustOpaqueMoi> { @@ -15891,13 +14477,11 @@ impl SseDecode for crate::multimint::AwaitingConfsEvent { let mut var_outpoint = ::sse_decode(deserializer); let mut var_blockHeight = ::sse_decode(deserializer); let mut var_needed = ::sse_decode(deserializer); - let mut var_txid = >::sse_decode(deserializer); return crate::multimint::AwaitingConfsEvent { amount: var_amount, outpoint: var_outpoint, block_height: var_blockHeight, needed: var_needed, - txid: var_txid, }; } } @@ -15928,11 +14512,9 @@ impl SseDecode for crate::multimint::ClaimedEvent { fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut var_amount = ::sse_decode(deserializer); let mut var_outpoint = ::sse_decode(deserializer); - let mut var_txid = >::sse_decode(deserializer); return crate::multimint::ClaimedEvent { amount: var_amount, outpoint: var_outpoint, - txid: var_txid, }; } } @@ -15942,11 +14524,9 @@ impl SseDecode for crate::multimint::ConfirmedEvent { fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut var_amount = ::sse_decode(deserializer); let mut var_outpoint = ::sse_decode(deserializer); - let mut var_txid = >::sse_decode(deserializer); return crate::multimint::ConfirmedEvent { amount: var_amount, outpoint: var_outpoint, - txid: var_txid, }; } } @@ -16129,21 +14709,13 @@ impl SseDecode for crate::app_error::EcashAppError { return crate::app_error::EcashAppError::InvalidLightningAddress(var_field0); } 11 => { - let mut var_requestedMsats = ::sse_decode(deserializer); - let mut var_invoiceMsats = ::sse_decode(deserializer); - return crate::app_error::EcashAppError::LnurlAmountMismatch { - requested_msats: var_requestedMsats, - invoice_msats: var_invoiceMsats, - }; - } - 12 => { let mut var_field0 = ::sse_decode(deserializer); return crate::app_error::EcashAppError::PaymentRefunded(var_field0); } - 13 => { + 12 => { return crate::app_error::EcashAppError::Timeout; } - 14 => { + 13 => { let mut var_field0 = ::sse_decode(deserializer); return crate::app_error::EcashAppError::Other(var_field0); } @@ -16252,145 +14824,6 @@ impl SseDecode for crate::multimint::Guardian { } } -impl SseDecode for crate::multimint::GuardianAuditSummary { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_netAssetsMsats = ::sse_decode(deserializer); - let mut var_moduleSummaries = - >::sse_decode(deserializer); - return crate::multimint::GuardianAuditSummary { - net_assets_msats: var_netAssetsMsats, - module_summaries: var_moduleSummaries, - }; - } -} - -impl SseDecode for crate::multimint::GuardianBackupStatistics { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_numBackups = ::sse_decode(deserializer); - let mut var_totalSizeBytes = ::sse_decode(deserializer); - let mut var_refreshed1D = ::sse_decode(deserializer); - let mut var_refreshed1W = ::sse_decode(deserializer); - let mut var_refreshed1M = ::sse_decode(deserializer); - let mut var_refreshed3M = ::sse_decode(deserializer); - return crate::multimint::GuardianBackupStatistics { - num_backups: var_numBackups, - total_size_bytes: var_totalSizeBytes, - refreshed_1d: var_refreshed1D, - refreshed_1w: var_refreshed1W, - refreshed_1m: var_refreshed1M, - refreshed_3m: var_refreshed3M, - }; - } -} - -impl SseDecode for crate::multimint::GuardianBitcoinStatus { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_kind = >::sse_decode(deserializer); - let mut var_url = >::sse_decode(deserializer); - let mut var_consensusBlockCount = ::sse_decode(deserializer); - let mut var_localBlockCount = >::sse_decode(deserializer); - let mut var_consensusFeerateSatsPerKvb = >::sse_decode(deserializer); - return crate::multimint::GuardianBitcoinStatus { - kind: var_kind, - url: var_url, - consensus_block_count: var_consensusBlockCount, - local_block_count: var_localBlockCount, - consensus_feerate_sats_per_kvb: var_consensusFeerateSatsPerKvb, - }; - } -} - -impl SseDecode for crate::multimint::GuardianHealth { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_consensusRunning = ::sse_decode(deserializer); - let mut var_serverStatus = ::sse_decode(deserializer); - let mut var_sessionCount = >::sse_decode(deserializer); - let mut var_peersOnline = ::sse_decode(deserializer); - let mut var_peersTotal = ::sse_decode(deserializer); - let mut var_consensusOrdLatencyMs = >::sse_decode(deserializer); - let mut var_scheduledShutdownSession = >::sse_decode(deserializer); - return crate::multimint::GuardianHealth { - consensus_running: var_consensusRunning, - server_status: var_serverStatus, - session_count: var_sessionCount, - peers_online: var_peersOnline, - peers_total: var_peersTotal, - consensus_ord_latency_ms: var_consensusOrdLatencyMs, - scheduled_shutdown_session: var_scheduledShutdownSession, - }; - } -} - -impl SseDecode for crate::multimint::GuardianMetaProposal { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_peerIds = >::sse_decode(deserializer); - let mut var_valueHex = ::sse_decode(deserializer); - let mut var_valueJson = >::sse_decode(deserializer); - let mut var_isOurs = ::sse_decode(deserializer); - return crate::multimint::GuardianMetaProposal { - peer_ids: var_peerIds, - value_hex: var_valueHex, - value_json: var_valueJson, - is_ours: var_isOurs, - }; - } -} - -impl SseDecode for crate::multimint::GuardianMetaState { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_consensusJson = >::sse_decode(deserializer); - let mut var_revision = >::sse_decode(deserializer); - let mut var_proposals = - >::sse_decode(deserializer); - let mut var_threshold = ::sse_decode(deserializer); - let mut var_totalGuardians = ::sse_decode(deserializer); - return crate::multimint::GuardianMetaState { - consensus_json: var_consensusJson, - revision: var_revision, - proposals: var_proposals, - threshold: var_threshold, - total_guardians: var_totalGuardians, - }; - } -} - -impl SseDecode for crate::multimint::GuardianModuleSummary { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_moduleInstanceId = ::sse_decode(deserializer); - let mut var_kind = ::sse_decode(deserializer); - let mut var_netAssetsMsats = ::sse_decode(deserializer); - return crate::multimint::GuardianModuleSummary { - module_instance_id: var_moduleInstanceId, - kind: var_kind, - net_assets_msats: var_netAssetsMsats, - }; - } -} - -impl SseDecode for crate::multimint::GuardianStatusSummary { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_health = ::sse_decode(deserializer); - let mut var_bitcoin = - >::sse_decode(deserializer); - let mut var_hasLnv2 = ::sse_decode(deserializer); - let mut var_hasMeta = ::sse_decode(deserializer); - return crate::multimint::GuardianStatusSummary { - health: var_health, - bitcoin: var_bitcoin, - has_lnv2: var_hasLnv2, - has_meta: var_hasMeta, - }; - } -} - impl SseDecode for i32 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -16398,13 +14831,6 @@ impl SseDecode for i32 { } } -impl SseDecode for i64 { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - deserializer.cursor.read_i64::().unwrap() - } -} - impl SseDecode for crate::multimint::InvoicePaidEvent { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -16542,34 +14968,6 @@ impl SseDecode for Vec { } } -impl SseDecode for Vec { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut len_ = ::sse_decode(deserializer); - let mut ans_ = vec![]; - for idx_ in 0..len_ { - ans_.push(::sse_decode( - deserializer, - )); - } - return ans_; - } -} - -impl SseDecode for Vec { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut len_ = ::sse_decode(deserializer); - let mut ans_ = vec![]; - for idx_ in 0..len_ { - ans_.push(::sse_decode( - deserializer, - )); - } - return ans_; - } -} - impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -16594,18 +14992,6 @@ impl SseDecode for Vec { } } -impl SseDecode for Vec { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut len_ = ::sse_decode(deserializer); - let mut ans_ = vec![]; - for idx_ in 0..len_ { - ans_.push(::sse_decode(deserializer)); - } - return ans_; - } -} - impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -16746,7 +15132,7 @@ impl SseDecode for crate::multimint::LNAddressStatus { } } -impl SseDecode for crate::lnurl_client::LnurlWithdrawParams { +impl SseDecode for crate::LnurlWithdrawParams { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut var_callback = ::sse_decode(deserializer); @@ -16754,7 +15140,7 @@ impl SseDecode for crate::lnurl_client::LnurlWithdrawParams { let mut var_minWithdrawableMsats = ::sse_decode(deserializer); let mut var_maxWithdrawableMsats = ::sse_decode(deserializer); let mut var_defaultDescription = ::sse_decode(deserializer); - return crate::lnurl_client::LnurlWithdrawParams { + return crate::LnurlWithdrawParams { callback: var_callback, k1: var_k1, min_withdrawable_msats: var_minWithdrawableMsats, @@ -16784,11 +15170,9 @@ impl SseDecode for crate::multimint::MempoolEvent { fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut var_amount = ::sse_decode(deserializer); let mut var_outpoint = ::sse_decode(deserializer); - let mut var_txid = >::sse_decode(deserializer); return crate::multimint::MempoolEvent { amount: var_amount, outpoint: var_outpoint, - txid: var_txid, }; } } @@ -16843,7 +15227,7 @@ impl SseDecode for crate::multimint::MultimintEvent { } 4 => { let mut var_field0 = ::sse_decode(deserializer); - let mut var_field1 = ::sse_decode(deserializer); + let mut var_field1 = ::sse_decode(deserializer); let mut var_field2 = ::sse_decode(deserializer); let mut var_field3 = ::sse_decode(deserializer); return crate::multimint::MultimintEvent::RecoveryProgress( @@ -16882,10 +15266,6 @@ impl SseDecode for crate::multimint::MultimintEvent { return crate::multimint::MultimintEvent::UpdateAvailable(var_field0); } 11 => { - let mut var_field0 = ::sse_decode(deserializer); - return crate::multimint::MultimintEvent::MetaUpdated(var_field0); - } - 12 => { let mut var_field0 = <(FederationId, crate::app_error::EcashAppError)>::sse_decode(deserializer); return crate::multimint::MultimintEvent::PaymentError(var_field0); @@ -16937,9 +15317,6 @@ impl SseDecode for crate::multimint::NostrRecoveryPhase { let mut var_field0 = ::sse_decode(deserializer); return crate::multimint::NostrRecoveryPhase::RejoiningFederations(var_field0); } - 4 => { - return crate::multimint::NostrRecoveryPhase::NoBackupFound; - } _ => { unimplemented!(""); } @@ -16947,6 +15324,18 @@ impl SseDecode for crate::multimint::NostrRecoveryPhase { } } +impl SseDecode for crate::db::NostrWalletConnectConfig { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_secretKey = <[u8; 32]>::sse_decode(deserializer); + let mut var_relay = ::sse_decode(deserializer); + return crate::db::NostrWalletConnectConfig { + secret_key: var_secretKey, + relay: var_relay, + }; + } +} + impl SseDecode for crate::nostr::NWCConnectionInfo { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -17038,35 +15427,22 @@ impl SseDecode for Option { } } -impl SseDecode for Option { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - if (::sse_decode(deserializer)) { - return Some(::sse_decode(deserializer)); - } else { - return None; - } - } -} - -impl SseDecode for Option { +impl SseDecode for Option { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { if (::sse_decode(deserializer)) { - return Some(::sse_decode(deserializer)); + return Some(::sse_decode(deserializer)); } else { return None; } } } -impl SseDecode for Option { +impl SseDecode for Option { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { if (::sse_decode(deserializer)) { - return Some(::sse_decode( - deserializer, - )); + return Some(::sse_decode(deserializer)); } else { return None; } @@ -17340,20 +15716,25 @@ impl SseDecode for (ReissueExternalNotesState, Option) { } } -impl SseDecode for (bool, Option) { +impl SseDecode for (crate::db::FiatCurrency, u64) { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_field0 = ::sse_decode(deserializer); - let mut var_field1 = >::sse_decode(deserializer); + let mut var_field0 = ::sse_decode(deserializer); + let mut var_field1 = ::sse_decode(deserializer); return (var_field0, var_field1); } } -impl SseDecode for (crate::db::FiatCurrency, u64) { +impl SseDecode + for ( + crate::db::NostrWalletConnectConfig, + crate::nostr::NWCConnectionInfo, + ) +{ // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_field0 = ::sse_decode(deserializer); - let mut var_field1 = ::sse_decode(deserializer); + let mut var_field0 = ::sse_decode(deserializer); + let mut var_field1 = ::sse_decode(deserializer); return (var_field0, var_field1); } } @@ -17443,19 +15824,6 @@ impl SseDecode for (u64, usize) { } } -impl SseDecode for crate::multimint::RecoveryModule { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = ::sse_decode(deserializer); - return match inner { - 0 => crate::multimint::RecoveryModule::Lightning, - 1 => crate::multimint::RecoveryModule::Ecash, - 2 => crate::multimint::RecoveryModule::Onchain, - _ => unreachable!("Invalid variant for RecoveryModule: {}", inner), - }; - } -} - impl SseDecode for crate::multimint::ReissueFees { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -17485,6 +15853,24 @@ impl SseDecode for crate::multimint::RelayStatusKind { } } +impl SseDecode for crate::multimint::SendGatewaySelection { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_gatewayUrl = ::sse_decode(deserializer); + let mut var_amountWithFees = ::sse_decode(deserializer); + let mut var_gatewayFee = ::sse_decode(deserializer); + let mut var_federationFee = ::sse_decode(deserializer); + let mut var_isLnv2 = ::sse_decode(deserializer); + return crate::multimint::SendGatewaySelection { + gateway_url: var_gatewayUrl, + amount_with_fees: var_amountWithFees, + gateway_fee: var_gatewayFee, + federation_fee: var_federationFee, + is_lnv2: var_isLnv2, + }; + } +} + impl SseDecode for crate::multimint::Transaction { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -17635,6 +16021,14 @@ impl SseDecode for u8 { } } +impl SseDecode for [u8; 32] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = >::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::from_vec_to_array(inner); + } +} + impl SseDecode for () { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {} @@ -17732,493 +16126,431 @@ fn pde_ffi_dispatcher_primary_impl( rust_vec_len, data_len, ), - 56 => wire__crate__multimint__Multimint_compute_all_gateway_previews_impl( + 56 => { + wire__crate__multimint__Multimint_clear_pin_hash_impl(port, ptr, rust_vec_len, data_len) + } + 57 => wire__crate__multimint__Multimint_compute_all_gateway_previews_impl( port, ptr, rust_vec_len, data_len, ), - 57 => wire__crate__multimint__Multimint_compute_receive_amount_with_fees_impl( + 58 => wire__crate__multimint__Multimint_compute_receive_amount_with_fees_impl( port, ptr, rust_vec_len, data_len, ), - 58 => wire__crate__multimint__Multimint_contains_client_impl( + 59 => wire__crate__multimint__Multimint_contains_client_impl( port, ptr, rust_vec_len, data_len, ), - 59 => wire__crate__multimint__Multimint_federations_impl(port, ptr, rust_vec_len, data_len), - 60 => { + 60 => wire__crate__multimint__Multimint_federations_impl(port, ptr, rust_vec_len, data_len), + 61 => { wire__crate__multimint__Multimint_get_addresses_impl(port, ptr, rust_vec_len, data_len) } - 61 => wire__crate__multimint__Multimint_get_all_btc_prices_impl( + 62 => wire__crate__multimint__Multimint_get_all_btc_prices_impl( port, ptr, rust_vec_len, data_len, ), - 62 => wire__crate__multimint__Multimint_get_all_invite_codes_impl( + 63 => wire__crate__multimint__Multimint_get_all_invite_codes_impl( port, ptr, rust_vec_len, data_len, ), - 63 => wire__crate__multimint__Multimint_get_bitcoin_display_impl( + 64 => wire__crate__multimint__Multimint_get_bitcoin_display_impl( port, ptr, rust_vec_len, data_len, ), - 64 => { + 65 => { wire__crate__multimint__Multimint_get_btc_price_impl(port, ptr, rust_vec_len, data_len) } - 65 => wire__crate__multimint__Multimint_get_cached_federation_meta_impl( + 66 => wire__crate__multimint__Multimint_get_cached_federation_meta_impl( port, ptr, rust_vec_len, data_len, ), - 66 => wire__crate__multimint__Multimint_get_federation_order_impl( + 67 => wire__crate__multimint__Multimint_get_federation_order_impl( port, ptr, rust_vec_len, data_len, ), - 67 => wire__crate__multimint__Multimint_get_fiat_currency_impl( + 68 => wire__crate__multimint__Multimint_get_fiat_currency_impl( port, ptr, rust_vec_len, data_len, ), - 68 => wire__crate__multimint__Multimint_get_invite_code_impl( + 69 => wire__crate__multimint__Multimint_get_invite_code_impl( port, ptr, rust_vec_len, data_len, ), - 69 => wire__crate__multimint__Multimint_get_ln_address_config_impl( + 70 => wire__crate__multimint__Multimint_get_ln_address_config_impl( port, ptr, rust_vec_len, data_len, ), - 70 => wire__crate__multimint__Multimint_get_max_withdrawable_amount_impl( + 71 => wire__crate__multimint__Multimint_get_max_withdrawable_amount_impl( port, ptr, rust_vec_len, data_len, ), - 71 => { + 72 => { wire__crate__multimint__Multimint_get_mnemonic_impl(port, ptr, rust_vec_len, data_len) } - 72 => wire__crate__multimint__Multimint_get_note_summary_impl( + 73 => wire__crate__multimint__Multimint_get_note_summary_impl( port, ptr, rust_vec_len, data_len, ), - 73 => wire__crate__multimint__Multimint_get_pegin_fee_quote_impl( + 74 => wire__crate__multimint__Multimint_get_pegin_fee_quote_impl( port, ptr, rust_vec_len, data_len, ), - 74 => wire__crate__multimint__Multimint_get_recovery_progress_impl( + 75 => wire__crate__multimint__Multimint_get_recovery_progress_impl( port, ptr, rust_vec_len, data_len, ), - 75 => { - wire__crate__multimint__Multimint_get_show_msats_impl(port, ptr, rust_vec_len, data_len) - } - 76 => wire__crate__multimint__Multimint_guardian_add_gateway_impl( + 76 => wire__crate__multimint__Multimint_get_require_pin_for_spending_impl( port, ptr, rust_vec_len, data_len, ), 77 => { - wire__crate__multimint__Multimint_guardian_audit_impl(port, ptr, rust_vec_len, data_len) + wire__crate__multimint__Multimint_get_show_msats_impl(port, ptr, rust_vec_len, data_len) } - 78 => wire__crate__multimint__Multimint_guardian_backup_statistics_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 79 => wire__crate__multimint__Multimint_guardian_list_gateways_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 80 => { - wire__crate__multimint__Multimint_guardian_login_impl(port, ptr, rust_vec_len, data_len) + 78 => { + wire__crate__multimint__Multimint_has_pin_code_impl(port, ptr, rust_vec_len, data_len) } - 81 => wire__crate__multimint__Multimint_guardian_meta_accept_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 82 => wire__crate__multimint__Multimint_guardian_meta_propose_field_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 83 => wire__crate__multimint__Multimint_guardian_meta_state_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 84 => wire__crate__multimint__Multimint_guardian_meta_withdraw_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 85 => wire__crate__multimint__Multimint_guardian_remove_gateway_impl( + 79 => wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( port, ptr, rust_vec_len, data_len, ), - 86 => wire__crate__multimint__Multimint_guardian_status_impl( + 80 => wire__crate__multimint__Multimint_join_federation_impl( port, ptr, rust_vec_len, data_len, ), - 87 => wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( + 81 => wire__crate__multimint__Multimint_leave_federation_impl( port, ptr, rust_vec_len, data_len, ), - 88 => wire__crate__multimint__Multimint_join_federation_impl( + 82 => wire__crate__multimint__Multimint_new_impl(port, ptr, rust_vec_len, data_len), + 83 => wire__crate__multimint__Multimint_parse_ecash_impl(port, ptr, rust_vec_len, data_len), + 84 => wire__crate__multimint__Multimint_receive_impl(port, ptr, rust_vec_len, data_len), + 85 => wire__crate__multimint__Multimint_recheck_address_impl( port, ptr, rust_vec_len, data_len, ), - 89 => wire__crate__multimint__Multimint_leave_federation_impl( + 86 => wire__crate__multimint__Multimint_recover_ln_address_impl( port, ptr, rust_vec_len, data_len, ), - 90 => wire__crate__multimint__Multimint_max_lightning_send_impl( + 87 => wire__crate__multimint__Multimint_refresh_connections_impl( port, ptr, rust_vec_len, data_len, ), - 91 => wire__crate__multimint__Multimint_new_impl(port, ptr, rust_vec_len, data_len), - 92 => wire__crate__multimint__Multimint_parse_ecash_impl(port, ptr, rust_vec_len, data_len), - 93 => wire__crate__multimint__Multimint_probe_invoice_is_loopback_impl( + 88 => wire__crate__multimint__Multimint_register_ln_address_impl( port, ptr, rust_vec_len, data_len, ), - 94 => wire__crate__multimint__Multimint_receive_impl(port, ptr, rust_vec_len, data_len), - 95 => wire__crate__multimint__Multimint_recheck_address_impl( + 89 => { + wire__crate__multimint__Multimint_reissue_ecash_impl(port, ptr, rust_vec_len, data_len) + } + 90 => wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( port, ptr, rust_vec_len, data_len, ), - 96 => wire__crate__multimint__Multimint_recover_ln_address_impl( + 91 => wire__crate__multimint__Multimint_select_send_gateway_impl( port, ptr, rust_vec_len, data_len, ), - 97 => wire__crate__multimint__Multimint_refresh_connections_impl( + 92 => wire__crate__multimint__Multimint_send_impl(port, ptr, rust_vec_len, data_len), + 93 => wire__crate__multimint__Multimint_send_ecash_impl(port, ptr, rust_vec_len, data_len), + 94 => wire__crate__multimint__Multimint_set_bitcoin_display_impl( port, ptr, rust_vec_len, data_len, ), - 98 => wire__crate__multimint__Multimint_refresh_federation_meta_impl( + 95 => wire__crate__multimint__Multimint_set_federation_order_impl( port, ptr, rust_vec_len, data_len, ), - 99 => wire__crate__multimint__Multimint_register_ln_address_impl( + 96 => wire__crate__multimint__Multimint_set_fiat_currency_impl( port, ptr, rust_vec_len, data_len, ), - 100 => { - wire__crate__multimint__Multimint_reissue_ecash_impl(port, ptr, rust_vec_len, data_len) + 97 => { + wire__crate__multimint__Multimint_set_pin_hash_impl(port, ptr, rust_vec_len, data_len) } - 101 => wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 102 => wire__crate__multimint__Multimint_send_impl(port, ptr, rust_vec_len, data_len), - 103 => wire__crate__multimint__Multimint_send_ecash_impl(port, ptr, rust_vec_len, data_len), - 104 => wire__crate__multimint__Multimint_set_bitcoin_display_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 105 => wire__crate__multimint__Multimint_set_federation_order_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 106 => wire__crate__multimint__Multimint_set_fiat_currency_impl( + 98 => wire__crate__multimint__Multimint_set_require_pin_for_spending_impl( port, ptr, rust_vec_len, data_len, ), - 107 => { + 99 => { wire__crate__multimint__Multimint_set_show_msats_impl(port, ptr, rust_vec_len, data_len) } - 108 => { + 100 => { wire__crate__multimint__Multimint_transactions_impl(port, ptr, rust_vec_len, data_len) } - 109 => { + 101 => wire__crate__multimint__Multimint_verify_pin_impl(port, ptr, rust_vec_len, data_len), + 102 => { wire__crate__multimint__Multimint_wallet_summary_impl(port, ptr, rust_vec_len, data_len) } - 110 => wire__crate__multimint__Multimint_withdraw_to_address_impl( + 103 => wire__crate__multimint__Multimint_withdraw_to_address_impl( port, ptr, rust_vec_len, data_len, ), - 111 => wire__crate__nostr__NostrClient_backup_invite_codes_impl( + 104 => wire__crate__nostr__NostrClient_backup_invite_codes_impl( port, ptr, rust_vec_len, data_len, ), - 112 => wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( + 105 => wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( port, ptr, rust_vec_len, data_len, ), - 113 => wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( + 106 => wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( port, ptr, rust_vec_len, data_len, ), - 114 => { + 107 => { wire__crate__nostr__NostrClient_get_all_contacts_impl(port, ptr, rust_vec_len, data_len) } - 115 => wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( + 108 => wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( port, ptr, rust_vec_len, data_len, ), - 116 => wire__crate__nostr__NostrClient_get_contact_impl(port, ptr, rust_vec_len, data_len), - 117 => wire__crate__nostr__NostrClient_get_contact_sync_config_impl( + 109 => wire__crate__nostr__NostrClient_get_contact_impl(port, ptr, rust_vec_len, data_len), + 110 => wire__crate__nostr__NostrClient_get_contact_sync_config_impl( port, ptr, rust_vec_len, data_len, ), - 118 => wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( + 111 => wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( port, ptr, rust_vec_len, data_len, ), - 119 => wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( + 112 => { + wire__crate__nostr__NostrClient_get_nwc_config_impl(port, ptr, rust_vec_len, data_len) + } + 113 => wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( port, ptr, rust_vec_len, data_len, ), - 120 => wire__crate__nostr__NostrClient_get_public_federations_impl( + 114 => wire__crate__nostr__NostrClient_get_public_federations_impl( port, ptr, rust_vec_len, data_len, ), - 121 => wire__crate__nostr__NostrClient_get_relays_impl(port, ptr, rust_vec_len, data_len), - 122 => wire__crate__nostr__NostrClient_has_imported_contacts_impl( + 115 => wire__crate__nostr__NostrClient_get_relays_impl(port, ptr, rust_vec_len, data_len), + 116 => wire__crate__nostr__NostrClient_has_imported_contacts_impl( port, ptr, rust_vec_len, data_len, ), - 123 => wire__crate__nostr__NostrClient_insert_relay_impl(port, ptr, rust_vec_len, data_len), - 124 => wire__crate__nostr__NostrClient_new_impl(port, ptr, rust_vec_len, data_len), - 125 => wire__crate__nostr__NostrClient_paginate_contacts_impl( + 117 => wire__crate__nostr__NostrClient_insert_relay_impl(port, ptr, rust_vec_len, data_len), + 118 => { + wire__crate__nostr__NostrClient_listen_for_nwc_impl(port, ptr, rust_vec_len, data_len) + } + 119 => wire__crate__nostr__NostrClient_new_impl(port, ptr, rust_vec_len, data_len), + 120 => wire__crate__nostr__NostrClient_paginate_contacts_impl( port, ptr, rust_vec_len, data_len, ), - 126 => wire__crate__nostr__NostrClient_paginate_search_contacts_impl( + 121 => wire__crate__nostr__NostrClient_paginate_search_contacts_impl( port, ptr, rust_vec_len, data_len, ), - 127 => wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( + 122 => wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( port, ptr, rust_vec_len, data_len, ), - 128 => wire__crate__nostr__NostrClient_remove_relay_impl(port, ptr, rust_vec_len, data_len), - 129 => wire__crate__nostr__NostrClient_set_contact_sync_config_impl( + 123 => wire__crate__nostr__NostrClient_remove_relay_impl(port, ptr, rust_vec_len, data_len), + 124 => wire__crate__nostr__NostrClient_set_contact_sync_config_impl( port, ptr, rust_vec_len, data_len, ), - 130 => wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( + 125 => wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( port, ptr, rust_vec_len, data_len, ), - 131 => { + 126 => { wire__crate__nostr__NostrClient_sync_contacts_impl(port, ptr, rust_vec_len, data_len) } - 132 => wire__crate__nostr__NostrClient_verify_nip05_impl(port, ptr, rust_vec_len, data_len), - 136 => wire__crate__fountain__OobNotesEncoder_next_fragment_impl( + 127 => wire__crate__nostr__NostrClient_verify_nip05_impl(port, ptr, rust_vec_len, data_len), + 131 => wire__crate__fountain__OobNotesEncoder_next_fragment_impl( port, ptr, rust_vec_len, data_len, ), - 163 => wire__crate__ack_seed_phrase_impl(port, ptr, rust_vec_len, data_len), - 164 => wire__crate__add_recovery_relay_impl(port, ptr, rust_vec_len, data_len), - 165 => wire__crate__allocate_deposit_address_impl(port, ptr, rust_vec_len, data_len), - 166 => wire__crate__await_ecash_reissue_impl(port, ptr, rust_vec_len, data_len), - 167 => wire__crate__await_receive_impl(port, ptr, rust_vec_len, data_len), - 168 => wire__crate__await_send_impl(port, ptr, rust_vec_len, data_len), - 169 => wire__crate__await_withdraw_impl(port, ptr, rust_vec_len, data_len), - 170 => wire__crate__backup_invite_codes_impl(port, ptr, rust_vec_len, data_len), - 171 => wire__crate__balance_impl(port, ptr, rust_vec_len, data_len), - 172 => wire__crate__calculate_ecash_reissue_fees_impl(port, ptr, rust_vec_len, data_len), - 173 => wire__crate__calculate_ecash_send_fees_impl(port, ptr, rust_vec_len, data_len), - 174 => wire__crate__calculate_withdraw_fees_impl(port, ptr, rust_vec_len, data_len), - 175 => wire__crate__change_pin_code_impl(port, ptr, rust_vec_len, data_len), - 176 => wire__crate__check_ecash_spent_impl(port, ptr, rust_vec_len, data_len), - 177 => wire__crate__check_ln_address_availability_impl(port, ptr, rust_vec_len, data_len), - 178 => wire__crate__claim_random_ln_address_impl(port, ptr, rust_vec_len, data_len), - 179 => wire__crate__clear_contacts_and_stop_sync_impl(port, ptr, rust_vec_len, data_len), - 180 => wire__crate__clear_pin_code_impl(port, ptr, rust_vec_len, data_len), - 181 => { + 161 => wire__crate__ack_seed_phrase_impl(port, ptr, rust_vec_len, data_len), + 162 => wire__crate__add_recovery_relay_impl(port, ptr, rust_vec_len, data_len), + 163 => wire__crate__allocate_deposit_address_impl(port, ptr, rust_vec_len, data_len), + 164 => wire__crate__await_ecash_reissue_impl(port, ptr, rust_vec_len, data_len), + 165 => wire__crate__await_receive_impl(port, ptr, rust_vec_len, data_len), + 166 => wire__crate__await_send_impl(port, ptr, rust_vec_len, data_len), + 167 => wire__crate__await_withdraw_impl(port, ptr, rust_vec_len, data_len), + 168 => wire__crate__backup_invite_codes_impl(port, ptr, rust_vec_len, data_len), + 169 => wire__crate__balance_impl(port, ptr, rust_vec_len, data_len), + 170 => wire__crate__calculate_ecash_reissue_fees_impl(port, ptr, rust_vec_len, data_len), + 171 => wire__crate__calculate_ecash_send_fees_impl(port, ptr, rust_vec_len, data_len), + 172 => wire__crate__calculate_withdraw_fees_impl(port, ptr, rust_vec_len, data_len), + 173 => wire__crate__check_ecash_spent_impl(port, ptr, rust_vec_len, data_len), + 174 => wire__crate__check_ln_address_availability_impl(port, ptr, rust_vec_len, data_len), + 175 => wire__crate__claim_random_ln_address_impl(port, ptr, rust_vec_len, data_len), + 176 => wire__crate__clear_contacts_and_stop_sync_impl(port, ptr, rust_vec_len, data_len), + 177 => wire__crate__clear_pin_code_impl(port, ptr, rust_vec_len, data_len), + 178 => { wire__crate__compute_receive_amount_with_fees_impl(port, ptr, rust_vec_len, data_len) } - 182 => wire__crate__db__connector_default_impl(port, ptr, rust_vec_len, data_len), - 183 => wire__crate__create_multimint_from_words_impl(port, ptr, rust_vec_len, data_len), - 184 => wire__crate__create_new_multimint_impl(port, ptr, rust_vec_len, data_len), - 185 => wire__crate__execute_lnurl_withdraw_impl(port, ptr, rust_vec_len, data_len), - 186 => wire__crate__federation_id_to_string_impl(port, ptr, rust_vec_len, data_len), - 187 => wire__crate__federations_impl(port, ptr, rust_vec_len, data_len), - 188 => wire__crate__fetch_lnurl_withdraw_impl(port, ptr, rust_vec_len, data_len), - 189 => wire__crate__get_addresses_impl(port, ptr, rust_vec_len, data_len), - 190 => wire__crate__get_all_btc_prices_impl(port, ptr, rust_vec_len, data_len), - 191 => wire__crate__get_all_contacts_impl(port, ptr, rust_vec_len, data_len), - 192 => wire__crate__get_bitcoin_display_impl(port, ptr, rust_vec_len, data_len), - 193 => wire__crate__get_btc_price_impl(port, ptr, rust_vec_len, data_len), - 194 => wire__crate__get_event_bus_impl(port, ptr, rust_vec_len, data_len), - 195 => wire__crate__get_federation_meta_impl(port, ptr, rust_vec_len, data_len), - 196 => wire__crate__get_federation_order_impl(port, ptr, rust_vec_len, data_len), - 197 => wire__crate__get_fiat_currency_impl(port, ptr, rust_vec_len, data_len), - 198 => wire__crate__get_invite_code_impl(port, ptr, rust_vec_len, data_len), - 199 => { + 179 => wire__crate__db__connector_default_impl(port, ptr, rust_vec_len, data_len), + 180 => wire__crate__create_multimint_from_words_impl(port, ptr, rust_vec_len, data_len), + 181 => wire__crate__create_new_multimint_impl(port, ptr, rust_vec_len, data_len), + 183 => wire__crate__execute_lnurl_withdraw_impl(port, ptr, rust_vec_len, data_len), + 184 => wire__crate__federation_id_to_string_impl(port, ptr, rust_vec_len, data_len), + 185 => wire__crate__federations_impl(port, ptr, rust_vec_len, data_len), + 186 => wire__crate__fetch_lnurl_withdraw_impl(port, ptr, rust_vec_len, data_len), + 187 => wire__crate__get_addresses_impl(port, ptr, rust_vec_len, data_len), + 188 => wire__crate__get_all_btc_prices_impl(port, ptr, rust_vec_len, data_len), + 189 => wire__crate__get_all_contacts_impl(port, ptr, rust_vec_len, data_len), + 190 => wire__crate__get_bitcoin_display_impl(port, ptr, rust_vec_len, data_len), + 191 => wire__crate__get_btc_price_impl(port, ptr, rust_vec_len, data_len), + 192 => wire__crate__get_event_bus_impl(port, ptr, rust_vec_len, data_len), + 193 => wire__crate__get_federation_meta_impl(port, ptr, rust_vec_len, data_len), + 194 => wire__crate__get_federation_order_impl(port, ptr, rust_vec_len, data_len), + 195 => wire__crate__get_fiat_currency_impl(port, ptr, rust_vec_len, data_len), + 196 => wire__crate__get_invite_code_impl(port, ptr, rust_vec_len, data_len), + 197 => { wire__crate__get_invoice_from_lnaddress_or_lnurl_impl(port, ptr, rust_vec_len, data_len) } - 200 => wire__crate__get_ln_address_config_impl(port, ptr, rust_vec_len, data_len), - 201 => wire__crate__get_max_withdrawable_amount_impl(port, ptr, rust_vec_len, data_len), - 202 => wire__crate__get_mnemonic_impl(port, ptr, rust_vec_len, data_len), - 203 => wire__crate__get_module_recovery_progress_impl(port, ptr, rust_vec_len, data_len), - 204 => wire__crate__get_note_summary_impl(port, ptr, rust_vec_len, data_len), - 205 => wire__crate__get_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), - 206 => wire__crate__get_nwc_daily_budget_sats_impl(port, ptr, rust_vec_len, data_len), - 207 => wire__crate__get_nwc_max_payment_sats_impl(port, ptr, rust_vec_len, data_len), - 208 => wire__crate__get_pegin_fee_quote_impl(port, ptr, rust_vec_len, data_len), - 209 => wire__crate__get_relays_impl(port, ptr, rust_vec_len, data_len), - 210 => wire__crate__get_require_pin_for_spending_impl(port, ptr, rust_vec_len, data_len), - 211 => wire__crate__get_show_msats_impl(port, ptr, rust_vec_len, data_len), - 212 => wire__crate__guardian_add_gateway_impl(port, ptr, rust_vec_len, data_len), - 213 => wire__crate__guardian_audit_impl(port, ptr, rust_vec_len, data_len), - 214 => wire__crate__guardian_backup_statistics_impl(port, ptr, rust_vec_len, data_len), - 215 => wire__crate__guardian_list_gateways_impl(port, ptr, rust_vec_len, data_len), - 216 => wire__crate__guardian_login_impl(port, ptr, rust_vec_len, data_len), - 217 => wire__crate__guardian_meta_accept_impl(port, ptr, rust_vec_len, data_len), - 218 => wire__crate__guardian_meta_propose_field_impl(port, ptr, rust_vec_len, data_len), - 219 => wire__crate__guardian_meta_state_impl(port, ptr, rust_vec_len, data_len), - 220 => wire__crate__guardian_meta_withdraw_impl(port, ptr, rust_vec_len, data_len), - 221 => wire__crate__guardian_remove_gateway_impl(port, ptr, rust_vec_len, data_len), - 222 => wire__crate__guardian_status_impl(port, ptr, rust_vec_len, data_len), - 223 => wire__crate__has_imported_contacts_impl(port, ptr, rust_vec_len, data_len), - 224 => wire__crate__has_pin_code_impl(port, ptr, rust_vec_len, data_len), - 225 => wire__crate__has_seed_phrase_ack_impl(port, ptr, rust_vec_len, data_len), - 226 => wire__crate__insert_relay_impl(port, ptr, rust_vec_len, data_len), - 228 => wire__crate__join_federation_impl(port, ptr, rust_vec_len, data_len), - 229 => wire__crate__leave_federation_impl(port, ptr, rust_vec_len, data_len), - 230 => wire__crate__list_federations_from_nostr_impl(port, ptr, rust_vec_len, data_len), - 231 => wire__crate__list_gateways_impl(port, ptr, rust_vec_len, data_len), - 232 => wire__crate__list_ln_address_domains_impl(port, ptr, rust_vec_len, data_len), - 233 => wire__crate__listen_for_nwc_blocking_impl(port, ptr, rust_vec_len, data_len), - 234 => wire__crate__load_multimint_impl(port, ptr, rust_vec_len, data_len), - 235 => wire__crate__max_lightning_send_impl(port, ptr, rust_vec_len, data_len), - 236 => wire__crate__paginate_contacts_impl(port, ptr, rust_vec_len, data_len), - 237 => wire__crate__paginate_search_contacts_impl(port, ptr, rust_vec_len, data_len), - 239 => { + 198 => wire__crate__get_ln_address_config_impl(port, ptr, rust_vec_len, data_len), + 199 => wire__crate__get_max_withdrawable_amount_impl(port, ptr, rust_vec_len, data_len), + 200 => wire__crate__get_mnemonic_impl(port, ptr, rust_vec_len, data_len), + 201 => wire__crate__get_module_recovery_progress_impl(port, ptr, rust_vec_len, data_len), + 202 => wire__crate__get_note_summary_impl(port, ptr, rust_vec_len, data_len), + 203 => wire__crate__get_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), + 204 => wire__crate__get_pegin_fee_quote_impl(port, ptr, rust_vec_len, data_len), + 205 => wire__crate__get_relays_impl(port, ptr, rust_vec_len, data_len), + 206 => wire__crate__get_require_pin_for_spending_impl(port, ptr, rust_vec_len, data_len), + 207 => wire__crate__get_show_msats_impl(port, ptr, rust_vec_len, data_len), + 208 => wire__crate__has_imported_contacts_impl(port, ptr, rust_vec_len, data_len), + 209 => wire__crate__has_pin_code_impl(port, ptr, rust_vec_len, data_len), + 210 => wire__crate__has_seed_phrase_ack_impl(port, ptr, rust_vec_len, data_len), + 211 => wire__crate__insert_relay_impl(port, ptr, rust_vec_len, data_len), + 213 => wire__crate__join_federation_impl(port, ptr, rust_vec_len, data_len), + 214 => wire__crate__leave_federation_impl(port, ptr, rust_vec_len, data_len), + 215 => wire__crate__list_federations_from_nostr_impl(port, ptr, rust_vec_len, data_len), + 216 => wire__crate__list_gateways_impl(port, ptr, rust_vec_len, data_len), + 217 => wire__crate__list_ln_address_domains_impl(port, ptr, rust_vec_len, data_len), + 218 => wire__crate__listen_for_nwc_blocking_impl(port, ptr, rust_vec_len, data_len), + 219 => wire__crate__load_multimint_impl(port, ptr, rust_vec_len, data_len), + 220 => wire__crate__paginate_contacts_impl(port, ptr, rust_vec_len, data_len), + 221 => wire__crate__paginate_search_contacts_impl(port, ptr, rust_vec_len, data_len), + 223 => { wire__crate__parse_scanned_text_for_federation_impl(port, ptr, rust_vec_len, data_len) } - 240 => wire__crate__parsed_scanned_text_impl(port, ptr, rust_vec_len, data_len), - 241 => wire__crate__payment_preview_with_gateways_impl(port, ptr, rust_vec_len, data_len), - 242 => wire__crate__pin_lockout_seconds_impl(port, ptr, rust_vec_len, data_len), - 243 => wire__crate__receive_impl(port, ptr, rust_vec_len, data_len), - 244 => wire__crate__recheck_address_impl(port, ptr, rust_vec_len, data_len), - 245 => wire__crate__refresh_connections_impl(port, ptr, rust_vec_len, data_len), - 246 => wire__crate__refresh_federation_meta_impl(port, ptr, rust_vec_len, data_len), - 247 => wire__crate__register_ln_address_impl(port, ptr, rust_vec_len, data_len), - 248 => wire__crate__reissue_ecash_impl(port, ptr, rust_vec_len, data_len), - 249 => wire__crate__rejoin_from_backup_invites_impl(port, ptr, rust_vec_len, data_len), - 250 => wire__crate__remove_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), - 251 => wire__crate__remove_relay_impl(port, ptr, rust_vec_len, data_len), - 252 => wire__crate__send_impl(port, ptr, rust_vec_len, data_len), - 253 => wire__crate__send_ecash_impl(port, ptr, rust_vec_len, data_len), - 254 => wire__crate__set_bitcoin_display_impl(port, ptr, rust_vec_len, data_len), - 255 => wire__crate__set_federation_order_impl(port, ptr, rust_vec_len, data_len), - 256 => wire__crate__set_fiat_currency_impl(port, ptr, rust_vec_len, data_len), - 257 => wire__crate__set_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), - 258 => wire__crate__set_nwc_daily_budget_sats_impl(port, ptr, rust_vec_len, data_len), - 259 => wire__crate__set_nwc_max_payment_sats_impl(port, ptr, rust_vec_len, data_len), - 260 => wire__crate__set_pin_code_impl(port, ptr, rust_vec_len, data_len), - 261 => wire__crate__set_require_pin_for_spending_impl(port, ptr, rust_vec_len, data_len), - 262 => wire__crate__set_show_msats_impl(port, ptr, rust_vec_len, data_len), - 263 => wire__crate__subscribe_deposits_impl(port, ptr, rust_vec_len, data_len), - 264 => wire__crate__subscribe_multimint_events_impl(port, ptr, rust_vec_len, data_len), - 265 => wire__crate__subscribe_peer_status_impl(port, ptr, rust_vec_len, data_len), - 266 => wire__crate__subscribe_recovery_progress_impl(port, ptr, rust_vec_len, data_len), - 267 => wire__crate__sync_contacts_impl(port, ptr, rust_vec_len, data_len), - 268 => wire__crate__transactions_impl(port, ptr, rust_vec_len, data_len), - 269 => wire__crate__verify_nip05_impl(port, ptr, rust_vec_len, data_len), - 270 => wire__crate__verify_pin_impl(port, ptr, rust_vec_len, data_len), - 271 => wire__crate__wallet_summary_impl(port, ptr, rust_vec_len, data_len), - 272 => wire__crate__withdraw_to_address_impl(port, ptr, rust_vec_len, data_len), - 273 => wire__crate__word_list_impl(port, ptr, rust_vec_len, data_len), + 224 => wire__crate__parsed_scanned_text_impl(port, ptr, rust_vec_len, data_len), + 225 => wire__crate__payment_preview_with_gateways_impl(port, ptr, rust_vec_len, data_len), + 226 => wire__crate__receive_impl(port, ptr, rust_vec_len, data_len), + 227 => wire__crate__recheck_address_impl(port, ptr, rust_vec_len, data_len), + 228 => wire__crate__refresh_connections_impl(port, ptr, rust_vec_len, data_len), + 229 => wire__crate__register_ln_address_impl(port, ptr, rust_vec_len, data_len), + 230 => wire__crate__reissue_ecash_impl(port, ptr, rust_vec_len, data_len), + 231 => wire__crate__rejoin_from_backup_invites_impl(port, ptr, rust_vec_len, data_len), + 232 => wire__crate__remove_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), + 233 => wire__crate__remove_relay_impl(port, ptr, rust_vec_len, data_len), + 234 => wire__crate__send_impl(port, ptr, rust_vec_len, data_len), + 235 => wire__crate__send_ecash_impl(port, ptr, rust_vec_len, data_len), + 236 => wire__crate__send_lnaddress_impl(port, ptr, rust_vec_len, data_len), + 237 => wire__crate__set_bitcoin_display_impl(port, ptr, rust_vec_len, data_len), + 238 => wire__crate__set_federation_order_impl(port, ptr, rust_vec_len, data_len), + 239 => wire__crate__set_fiat_currency_impl(port, ptr, rust_vec_len, data_len), + 240 => wire__crate__set_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), + 241 => wire__crate__set_pin_code_impl(port, ptr, rust_vec_len, data_len), + 242 => wire__crate__set_require_pin_for_spending_impl(port, ptr, rust_vec_len, data_len), + 243 => wire__crate__set_show_msats_impl(port, ptr, rust_vec_len, data_len), + 244 => wire__crate__subscribe_deposits_impl(port, ptr, rust_vec_len, data_len), + 245 => wire__crate__subscribe_multimint_events_impl(port, ptr, rust_vec_len, data_len), + 246 => wire__crate__subscribe_peer_status_impl(port, ptr, rust_vec_len, data_len), + 247 => wire__crate__subscribe_recovery_progress_impl(port, ptr, rust_vec_len, data_len), + 248 => wire__crate__sync_contacts_impl(port, ptr, rust_vec_len, data_len), + 249 => wire__crate__transactions_impl(port, ptr, rust_vec_len, data_len), + 250 => wire__crate__verify_nip05_impl(port, ptr, rust_vec_len, data_len), + 251 => wire__crate__verify_pin_impl(port, ptr, rust_vec_len, data_len), + 252 => wire__crate__wallet_summary_impl(port, ptr, rust_vec_len, data_len), + 253 => wire__crate__withdraw_to_address_impl(port, ptr, rust_vec_len, data_len), + 254 => wire__crate__word_list_impl(port, ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -18441,145 +16773,149 @@ fn pde_ffi_dispatcher_sync_impl( rust_vec_len, data_len, ), - 133 => { + 128 => { wire__crate__fountain__OobNotesDecoder_add_fragment_impl(ptr, rust_vec_len, data_len) } - 134 => wire__crate__fountain__OobNotesDecoder_new_impl(ptr, rust_vec_len, data_len), - 135 => wire__crate__fountain__OobNotesEncoder_new_impl(ptr, rust_vec_len, data_len), - 137 => { + 129 => wire__crate__fountain__OobNotesDecoder_new_impl(ptr, rust_vec_len, data_len), + 130 => wire__crate__fountain__OobNotesEncoder_new_impl(ptr, rust_vec_len, data_len), + 132 => { wire__crate__multimint__OobNotesWrapper_amount_msats_impl(ptr, rust_vec_len, data_len) } - 138 => wire__crate__multimint__OobNotesWrapper_to_string_impl(ptr, rust_vec_len, data_len), - 139 => wire__crate__nostr__PublicFederation_auto_accessor_get_about_impl( + 133 => wire__crate__multimint__OobNotesWrapper_to_string_impl(ptr, rust_vec_len, data_len), + 134 => wire__crate__nostr__PublicFederation_auto_accessor_get_about_impl( ptr, rust_vec_len, data_len, ), - 140 => wire__crate__nostr__PublicFederation_auto_accessor_get_federation_id_impl( + 135 => wire__crate__nostr__PublicFederation_auto_accessor_get_federation_id_impl( ptr, rust_vec_len, data_len, ), - 141 => wire__crate__nostr__PublicFederation_auto_accessor_get_federation_name_impl( + 136 => wire__crate__nostr__PublicFederation_auto_accessor_get_federation_name_impl( ptr, rust_vec_len, data_len, ), - 142 => wire__crate__nostr__PublicFederation_auto_accessor_get_invite_codes_impl( + 137 => wire__crate__nostr__PublicFederation_auto_accessor_get_invite_codes_impl( ptr, rust_vec_len, data_len, ), - 143 => wire__crate__nostr__PublicFederation_auto_accessor_get_modules_impl( + 138 => wire__crate__nostr__PublicFederation_auto_accessor_get_modules_impl( ptr, rust_vec_len, data_len, ), - 144 => wire__crate__nostr__PublicFederation_auto_accessor_get_network_impl( + 139 => wire__crate__nostr__PublicFederation_auto_accessor_get_network_impl( ptr, rust_vec_len, data_len, ), - 145 => wire__crate__nostr__PublicFederation_auto_accessor_get_picture_impl( + 140 => wire__crate__nostr__PublicFederation_auto_accessor_get_picture_impl( ptr, rust_vec_len, data_len, ), - 146 => wire__crate__nostr__PublicFederation_auto_accessor_set_about_impl( + 141 => wire__crate__nostr__PublicFederation_auto_accessor_set_about_impl( ptr, rust_vec_len, data_len, ), - 147 => wire__crate__nostr__PublicFederation_auto_accessor_set_federation_id_impl( + 142 => wire__crate__nostr__PublicFederation_auto_accessor_set_federation_id_impl( ptr, rust_vec_len, data_len, ), - 148 => wire__crate__nostr__PublicFederation_auto_accessor_set_federation_name_impl( + 143 => wire__crate__nostr__PublicFederation_auto_accessor_set_federation_name_impl( ptr, rust_vec_len, data_len, ), - 149 => wire__crate__nostr__PublicFederation_auto_accessor_set_invite_codes_impl( + 144 => wire__crate__nostr__PublicFederation_auto_accessor_set_invite_codes_impl( ptr, rust_vec_len, data_len, ), - 150 => wire__crate__nostr__PublicFederation_auto_accessor_set_modules_impl( + 145 => wire__crate__nostr__PublicFederation_auto_accessor_set_modules_impl( ptr, rust_vec_len, data_len, ), - 151 => wire__crate__nostr__PublicFederation_auto_accessor_set_network_impl( + 146 => wire__crate__nostr__PublicFederation_auto_accessor_set_network_impl( ptr, rust_vec_len, data_len, ), - 152 => wire__crate__nostr__PublicFederation_auto_accessor_set_picture_impl( + 147 => wire__crate__nostr__PublicFederation_auto_accessor_set_picture_impl( ptr, rust_vec_len, data_len, ), - 153 => { + 148 => wire__crate__tap_transfer__TapRecipient_decrypt_impl(ptr, rust_vec_len, data_len), + 149 => wire__crate__tap_transfer__TapRecipient_new_impl(ptr, rust_vec_len, data_len), + 150 => wire__crate__tap_transfer__TapRecipient_public_key_impl(ptr, rust_vec_len, data_len), + 151 => { wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_federation_fee_msats_impl( ptr, rust_vec_len, data_len, ) } - 154 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_impl( + 152 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_impl( ptr, rust_vec_len, data_len, ), - 155 => { + 153 => { wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_rate_sats_per_vb_impl( ptr, rust_vec_len, data_len, ) } - 156 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fees_impl( + 154 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fees_impl( ptr, rust_vec_len, data_len, ), - 157 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes_impl( + 155 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes_impl( ptr, rust_vec_len, data_len, ), - 158 => { + 156 => { wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_federation_fee_msats_impl( ptr, rust_vec_len, data_len, ) } - 159 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_amount_impl( + 157 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_amount_impl( ptr, rust_vec_len, data_len, ), - 160 => { + 158 => { wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_rate_sats_per_vb_impl( ptr, rust_vec_len, data_len, ) } - 161 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fees_impl( + 159 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fees_impl( ptr, rust_vec_len, data_len, ), - 162 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes_impl( + 160 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes_impl( ptr, rust_vec_len, data_len, ), - 227 => wire__crate__multimint__is_mintv2_ecash_impl(ptr, rust_vec_len, data_len), - 238 => wire__crate__multimint__parse_oob_notes_impl(ptr, rust_vec_len, data_len), + 182 => wire__crate__encrypt_ecash_for_tap_impl(ptr, rust_vec_len, data_len), + 212 => wire__crate__multimint__is_mintv2_ecash_impl(ptr, rust_vec_len, data_len), + 222 => wire__crate__multimint__parse_oob_notes_impl(ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -19060,6 +17396,21 @@ impl flutter_rust_bridge::IntoIntoDart> for SafeUrl { } } +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for FrbWrapper { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0) + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for FrbWrapper {} + +impl flutter_rust_bridge::IntoIntoDart> for TapRecipient { + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} + // Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for FrbWrapper { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { @@ -19101,7 +17452,6 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::AwaitingConfsEvent { self.outpoint.into_into_dart().into_dart(), self.block_height.into_into_dart().into_dart(), self.needed.into_into_dart().into_dart(), - self.txid.into_into_dart().into_dart(), ] .into_dart() } @@ -19141,7 +17491,6 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::ClaimedEvent { [ self.amount.into_into_dart().into_dart(), self.outpoint.into_into_dart().into_dart(), - self.txid.into_into_dart().into_dart(), ] .into_dart() } @@ -19163,7 +17512,6 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::ConfirmedEvent { [ self.amount.into_into_dart().into_dart(), self.outpoint.into_into_dart().into_dart(), - self.txid.into_into_dart().into_dart(), ] .into_dart() } @@ -19358,21 +17706,12 @@ impl flutter_rust_bridge::IntoDart for crate::app_error::EcashAppError { crate::app_error::EcashAppError::InvalidLightningAddress(field0) => { [10.into_dart(), field0.into_into_dart().into_dart()].into_dart() } - crate::app_error::EcashAppError::LnurlAmountMismatch { - requested_msats, - invoice_msats, - } => [ - 11.into_dart(), - requested_msats.into_into_dart().into_dart(), - invoice_msats.into_into_dart().into_dart(), - ] - .into_dart(), crate::app_error::EcashAppError::PaymentRefunded(field0) => { - [12.into_dart(), field0.into_into_dart().into_dart()].into_dart() + [11.into_dart(), field0.into_into_dart().into_dart()].into_dart() } - crate::app_error::EcashAppError::Timeout => [13.into_dart()].into_dart(), + crate::app_error::EcashAppError::Timeout => [12.into_dart()].into_dart(), crate::app_error::EcashAppError::Other(field0) => { - [14.into_dart(), field0.into_into_dart().into_dart()].into_dart() + [13.into_dart(), field0.into_into_dart().into_dart()].into_dart() } _ => { unimplemented!(""); @@ -19458,239 +17797,49 @@ impl flutter_rust_bridge::IntoDart for crate::db::FiatCurrency { } } } -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::db::FiatCurrency {} -impl flutter_rust_bridge::IntoIntoDart for crate::db::FiatCurrency { - fn into_into_dart(self) -> crate::db::FiatCurrency { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GatewayPaymentPreview { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.gateway.into_into_dart().into_dart(), - self.amount_with_fees.into_into_dart().into_dart(), - self.gateway_fee.into_into_dart().into_dart(), - self.federation_fee.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GatewayPaymentPreview -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GatewayPaymentPreview -{ - fn into_into_dart(self) -> crate::multimint::GatewayPaymentPreview { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::Guardian { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.peer_id.into_into_dart().into_dart(), - self.name.into_into_dart().into_dart(), - self.version.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::multimint::Guardian {} -impl flutter_rust_bridge::IntoIntoDart for crate::multimint::Guardian { - fn into_into_dart(self) -> crate::multimint::Guardian { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianAuditSummary { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.net_assets_msats.into_into_dart().into_dart(), - self.module_summaries.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GuardianAuditSummary -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GuardianAuditSummary -{ - fn into_into_dart(self) -> crate::multimint::GuardianAuditSummary { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianBackupStatistics { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.num_backups.into_into_dart().into_dart(), - self.total_size_bytes.into_into_dart().into_dart(), - self.refreshed_1d.into_into_dart().into_dart(), - self.refreshed_1w.into_into_dart().into_dart(), - self.refreshed_1m.into_into_dart().into_dart(), - self.refreshed_3m.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GuardianBackupStatistics -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GuardianBackupStatistics -{ - fn into_into_dart(self) -> crate::multimint::GuardianBackupStatistics { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianBitcoinStatus { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.kind.into_into_dart().into_dart(), - self.url.into_into_dart().into_dart(), - self.consensus_block_count.into_into_dart().into_dart(), - self.local_block_count.into_into_dart().into_dart(), - self.consensus_feerate_sats_per_kvb - .into_into_dart() - .into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GuardianBitcoinStatus -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GuardianBitcoinStatus -{ - fn into_into_dart(self) -> crate::multimint::GuardianBitcoinStatus { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianHealth { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.consensus_running.into_into_dart().into_dart(), - self.server_status.into_into_dart().into_dart(), - self.session_count.into_into_dart().into_dart(), - self.peers_online.into_into_dart().into_dart(), - self.peers_total.into_into_dart().into_dart(), - self.consensus_ord_latency_ms.into_into_dart().into_dart(), - self.scheduled_shutdown_session.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GuardianHealth -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GuardianHealth -{ - fn into_into_dart(self) -> crate::multimint::GuardianHealth { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianMetaProposal { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.peer_ids.into_into_dart().into_dart(), - self.value_hex.into_into_dart().into_dart(), - self.value_json.into_into_dart().into_dart(), - self.is_ours.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GuardianMetaProposal -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GuardianMetaProposal -{ - fn into_into_dart(self) -> crate::multimint::GuardianMetaProposal { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianMetaState { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.consensus_json.into_into_dart().into_dart(), - self.revision.into_into_dart().into_dart(), - self.proposals.into_into_dart().into_dart(), - self.threshold.into_into_dart().into_dart(), - self.total_guardians.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GuardianMetaState -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GuardianMetaState -{ - fn into_into_dart(self) -> crate::multimint::GuardianMetaState { +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::db::FiatCurrency {} +impl flutter_rust_bridge::IntoIntoDart for crate::db::FiatCurrency { + fn into_into_dart(self) -> crate::db::FiatCurrency { self } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianModuleSummary { +impl flutter_rust_bridge::IntoDart for crate::multimint::GatewayPaymentPreview { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ - self.module_instance_id.into_into_dart().into_dart(), - self.kind.into_into_dart().into_dart(), - self.net_assets_msats.into_into_dart().into_dart(), + self.gateway.into_into_dart().into_dart(), + self.amount_with_fees.into_into_dart().into_dart(), + self.gateway_fee.into_into_dart().into_dart(), + self.federation_fee.into_into_dart().into_dart(), ] .into_dart() } } impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GuardianModuleSummary + for crate::multimint::GatewayPaymentPreview { } -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GuardianModuleSummary +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GatewayPaymentPreview { - fn into_into_dart(self) -> crate::multimint::GuardianModuleSummary { + fn into_into_dart(self) -> crate::multimint::GatewayPaymentPreview { self } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianStatusSummary { +impl flutter_rust_bridge::IntoDart for crate::multimint::Guardian { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ - self.health.into_into_dart().into_dart(), - self.bitcoin.into_into_dart().into_dart(), - self.has_lnv2.into_into_dart().into_dart(), - self.has_meta.into_into_dart().into_dart(), + self.peer_id.into_into_dart().into_dart(), + self.name.into_into_dart().into_dart(), + self.version.into_into_dart().into_dart(), ] .into_dart() } } -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GuardianStatusSummary -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GuardianStatusSummary -{ - fn into_into_dart(self) -> crate::multimint::GuardianStatusSummary { +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::multimint::Guardian {} +impl flutter_rust_bridge::IntoIntoDart for crate::multimint::Guardian { + fn into_into_dart(self) -> crate::multimint::Guardian { self } } @@ -19792,7 +17941,7 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::lnurl_client::LnurlWithdrawParams { +impl flutter_rust_bridge::IntoDart for crate::LnurlWithdrawParams { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ self.callback.into_into_dart().into_dart(), @@ -19804,14 +17953,9 @@ impl flutter_rust_bridge::IntoDart for crate::lnurl_client::LnurlWithdrawParams .into_dart() } } -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::lnurl_client::LnurlWithdrawParams -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::lnurl_client::LnurlWithdrawParams -{ - fn into_into_dart(self) -> crate::lnurl_client::LnurlWithdrawParams { +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::LnurlWithdrawParams {} +impl flutter_rust_bridge::IntoIntoDart for crate::LnurlWithdrawParams { + fn into_into_dart(self) -> crate::LnurlWithdrawParams { self } } @@ -19840,7 +17984,6 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::MempoolEvent { [ self.amount.into_into_dart().into_dart(), self.outpoint.into_into_dart().into_dart(), - self.txid.into_into_dart().into_dart(), ] .into_dart() } @@ -19934,11 +18077,8 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::MultimintEvent { crate::multimint::MultimintEvent::UpdateAvailable(field0) => { [10.into_dart(), field0.into_into_dart().into_dart()].into_dart() } - crate::multimint::MultimintEvent::MetaUpdated(field0) => { - [11.into_dart(), field0.into_into_dart().into_dart()].into_dart() - } crate::multimint::MultimintEvent::PaymentError(field0) => { - [12.into_dart(), field0.into_into_dart().into_dart()].into_dart() + [11.into_dart(), field0.into_into_dart().into_dart()].into_dart() } _ => { unimplemented!(""); @@ -19988,7 +18128,6 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::NostrRecoveryPhase { crate::multimint::NostrRecoveryPhase::RejoiningFederations(field0) => { [3.into_dart(), field0.into_into_dart().into_dart()].into_dart() } - crate::multimint::NostrRecoveryPhase::NoBackupFound => [4.into_dart()].into_dart(), _ => { unimplemented!(""); } @@ -20007,6 +18146,27 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::db::NostrWalletConnectConfig { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.secret_key.into_into_dart().into_dart(), + self.relay.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::db::NostrWalletConnectConfig +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::db::NostrWalletConnectConfig +{ + fn into_into_dart(self) -> crate::db::NostrWalletConnectConfig { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for crate::nostr::NWCConnectionInfo { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ @@ -20188,28 +18348,6 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::RecoveryModule { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - match self { - Self::Lightning => 0.into_dart(), - Self::Ecash => 1.into_dart(), - Self::Onchain => 2.into_dart(), - _ => unreachable!(), - } - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::RecoveryModule -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::RecoveryModule -{ - fn into_into_dart(self) -> crate::multimint::RecoveryModule { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for crate::multimint::ReissueFees { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ @@ -20252,6 +18390,30 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::multimint::SendGatewaySelection { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.gateway_url.into_into_dart().into_dart(), + self.amount_with_fees.into_into_dart().into_dart(), + self.gateway_fee.into_into_dart().into_dart(), + self.federation_fee.into_into_dart().into_dart(), + self.is_lnv2.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::SendGatewaySelection +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::SendGatewaySelection +{ + fn into_into_dart(self) -> crate::multimint::SendGatewaySelection { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for crate::multimint::Transaction { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ @@ -20660,6 +18822,13 @@ impl SseEncode for SafeUrl { } } +impl SseEncode for TapRecipient { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); + } +} + impl SseEncode for WithdrawFees { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -21014,6 +19183,17 @@ impl SseEncode for RustOpaqueMoi> +{ + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + let (ptr, size) = self.sse_encode_raw(); + ::sse_encode(ptr, serializer); + ::sse_encode(size, serializer); + } +} + impl SseEncode for RustOpaqueMoi> { @@ -21084,7 +19264,6 @@ impl SseEncode for crate::multimint::AwaitingConfsEvent { ::sse_encode(self.outpoint, serializer); ::sse_encode(self.block_height, serializer); ::sse_encode(self.needed, serializer); - >::sse_encode(self.txid, serializer); } } @@ -21118,7 +19297,6 @@ impl SseEncode for crate::multimint::ClaimedEvent { fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.amount, serializer); ::sse_encode(self.outpoint, serializer); - >::sse_encode(self.txid, serializer); } } @@ -21127,7 +19305,6 @@ impl SseEncode for crate::multimint::ConfirmedEvent { fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.amount, serializer); ::sse_encode(self.outpoint, serializer); - >::sse_encode(self.txid, serializer); } } @@ -21286,23 +19463,15 @@ impl SseEncode for crate::app_error::EcashAppError { ::sse_encode(10, serializer); ::sse_encode(field0, serializer); } - crate::app_error::EcashAppError::LnurlAmountMismatch { - requested_msats, - invoice_msats, - } => { - ::sse_encode(11, serializer); - ::sse_encode(requested_msats, serializer); - ::sse_encode(invoice_msats, serializer); - } crate::app_error::EcashAppError::PaymentRefunded(field0) => { - ::sse_encode(12, serializer); + ::sse_encode(11, serializer); ::sse_encode(field0, serializer); } crate::app_error::EcashAppError::Timeout => { - ::sse_encode(13, serializer); + ::sse_encode(12, serializer); } crate::app_error::EcashAppError::Other(field0) => { - ::sse_encode(14, serializer); + ::sse_encode(13, serializer); ::sse_encode(field0, serializer); } _ => { @@ -21385,93 +19554,6 @@ impl SseEncode for crate::multimint::Guardian { } } -impl SseEncode for crate::multimint::GuardianAuditSummary { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.net_assets_msats, serializer); - >::sse_encode( - self.module_summaries, - serializer, - ); - } -} - -impl SseEncode for crate::multimint::GuardianBackupStatistics { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.num_backups, serializer); - ::sse_encode(self.total_size_bytes, serializer); - ::sse_encode(self.refreshed_1d, serializer); - ::sse_encode(self.refreshed_1w, serializer); - ::sse_encode(self.refreshed_1m, serializer); - ::sse_encode(self.refreshed_3m, serializer); - } -} - -impl SseEncode for crate::multimint::GuardianBitcoinStatus { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode(self.kind, serializer); - >::sse_encode(self.url, serializer); - ::sse_encode(self.consensus_block_count, serializer); - >::sse_encode(self.local_block_count, serializer); - >::sse_encode(self.consensus_feerate_sats_per_kvb, serializer); - } -} - -impl SseEncode for crate::multimint::GuardianHealth { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.consensus_running, serializer); - ::sse_encode(self.server_status, serializer); - >::sse_encode(self.session_count, serializer); - ::sse_encode(self.peers_online, serializer); - ::sse_encode(self.peers_total, serializer); - >::sse_encode(self.consensus_ord_latency_ms, serializer); - >::sse_encode(self.scheduled_shutdown_session, serializer); - } -} - -impl SseEncode for crate::multimint::GuardianMetaProposal { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode(self.peer_ids, serializer); - ::sse_encode(self.value_hex, serializer); - >::sse_encode(self.value_json, serializer); - ::sse_encode(self.is_ours, serializer); - } -} - -impl SseEncode for crate::multimint::GuardianMetaState { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode(self.consensus_json, serializer); - >::sse_encode(self.revision, serializer); - >::sse_encode(self.proposals, serializer); - ::sse_encode(self.threshold, serializer); - ::sse_encode(self.total_guardians, serializer); - } -} - -impl SseEncode for crate::multimint::GuardianModuleSummary { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.module_instance_id, serializer); - ::sse_encode(self.kind, serializer); - ::sse_encode(self.net_assets_msats, serializer); - } -} - -impl SseEncode for crate::multimint::GuardianStatusSummary { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.health, serializer); - >::sse_encode(self.bitcoin, serializer); - ::sse_encode(self.has_lnv2, serializer); - ::sse_encode(self.has_meta, serializer); - } -} - impl SseEncode for i32 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -21479,13 +19561,6 @@ impl SseEncode for i32 { } } -impl SseEncode for i64 { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - serializer.cursor.write_i64::(self).unwrap(); - } -} - impl SseEncode for crate::multimint::InvoicePaidEvent { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -21600,26 +19675,6 @@ impl SseEncode for Vec { } } -impl SseEncode for Vec { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.len() as _, serializer); - for item in self { - ::sse_encode(item, serializer); - } - } -} - -impl SseEncode for Vec { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.len() as _, serializer); - for item in self { - ::sse_encode(item, serializer); - } - } -} - impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -21640,16 +19695,6 @@ impl SseEncode for Vec { } } -impl SseEncode for Vec { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.len() as _, serializer); - for item in self { - ::sse_encode(item, serializer); - } - } -} - impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -21767,7 +19812,7 @@ impl SseEncode for crate::multimint::LNAddressStatus { } } -impl SseEncode for crate::lnurl_client::LnurlWithdrawParams { +impl SseEncode for crate::LnurlWithdrawParams { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.callback, serializer); @@ -21802,7 +19847,6 @@ impl SseEncode for crate::multimint::MempoolEvent { fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.amount, serializer); ::sse_encode(self.outpoint, serializer); - >::sse_encode(self.txid, serializer); } } @@ -21855,7 +19899,7 @@ impl SseEncode for crate::multimint::MultimintEvent { crate::multimint::MultimintEvent::RecoveryProgress(field0, field1, field2, field3) => { ::sse_encode(4, serializer); ::sse_encode(field0, serializer); - ::sse_encode(field1, serializer); + ::sse_encode(field1, serializer); ::sse_encode(field2, serializer); ::sse_encode(field3, serializer); } @@ -21886,12 +19930,8 @@ impl SseEncode for crate::multimint::MultimintEvent { ::sse_encode(10, serializer); ::sse_encode(field0, serializer); } - crate::multimint::MultimintEvent::MetaUpdated(field0) => { - ::sse_encode(11, serializer); - ::sse_encode(field0, serializer); - } crate::multimint::MultimintEvent::PaymentError(field0) => { - ::sse_encode(12, serializer); + ::sse_encode(11, serializer); <(FederationId, crate::app_error::EcashAppError)>::sse_encode(field0, serializer); } _ => { @@ -21931,9 +19971,6 @@ impl SseEncode for crate::multimint::NostrRecoveryPhase { ::sse_encode(3, serializer); ::sse_encode(field0, serializer); } - crate::multimint::NostrRecoveryPhase::NoBackupFound => { - ::sse_encode(4, serializer); - } _ => { unimplemented!(""); } @@ -21941,6 +19978,14 @@ impl SseEncode for crate::multimint::NostrRecoveryPhase { } } +impl SseEncode for crate::db::NostrWalletConnectConfig { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + <[u8; 32]>::sse_encode(self.secret_key, serializer); + ::sse_encode(self.relay, serializer); + } +} + impl SseEncode for crate::nostr::NWCConnectionInfo { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -22040,16 +20085,6 @@ impl SseEncode for Option { } } -impl SseEncode for Option { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.is_some(), serializer); - if let Some(value) = self { - ::sse_encode(value, serializer); - } - } -} - impl SseEncode for Option { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -22280,19 +20315,24 @@ impl SseEncode for (ReissueExternalNotesState, Option) { } } -impl SseEncode for (bool, Option) { +impl SseEncode for (crate::db::FiatCurrency, u64) { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.0, serializer); - >::sse_encode(self.1, serializer); + ::sse_encode(self.0, serializer); + ::sse_encode(self.1, serializer); } } -impl SseEncode for (crate::db::FiatCurrency, u64) { +impl SseEncode + for ( + crate::db::NostrWalletConnectConfig, + crate::nostr::NWCConnectionInfo, + ) +{ // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.0, serializer); - ::sse_encode(self.1, serializer); + ::sse_encode(self.0, serializer); + ::sse_encode(self.1, serializer); } } @@ -22372,23 +20412,6 @@ impl SseEncode for (u64, usize) { } } -impl SseEncode for crate::multimint::RecoveryModule { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode( - match self { - crate::multimint::RecoveryModule::Lightning => 0, - crate::multimint::RecoveryModule::Ecash => 1, - crate::multimint::RecoveryModule::Onchain => 2, - _ => { - unimplemented!(""); - } - }, - serializer, - ); - } -} - impl SseEncode for crate::multimint::ReissueFees { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -22416,6 +20439,17 @@ impl SseEncode for crate::multimint::RelayStatusKind { } } +impl SseEncode for crate::multimint::SendGatewaySelection { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.gateway_url, serializer); + ::sse_encode(self.amount_with_fees, serializer); + ::sse_encode(self.gateway_fee, serializer); + ::sse_encode(self.federation_fee, serializer); + ::sse_encode(self.is_lnv2, serializer); + } +} + impl SseEncode for crate::multimint::Transaction { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -22556,6 +20590,19 @@ impl SseEncode for u8 { } } +impl SseEncode for [u8; 32] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >::sse_encode( + { + let boxed: Box<[_]> = Box::new(self); + boxed.into_vec() + }, + serializer, + ); + } +} + impl SseEncode for () { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {} @@ -22593,6 +20640,7 @@ mod io { use crate::fountain::*; use crate::multimint::*; use crate::nostr::*; + use crate::tap_transfer::*; use crate::*; use flutter_rust_bridge::for_generated::byteorder::{ NativeEndian, ReadBytesExt, WriteBytesExt, @@ -23034,6 +21082,20 @@ mod io { MoiArc::>::decrement_strong_count(ptr as _); } + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_ecashapp_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_ecashapp_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + #[unsafe(no_mangle)] pub extern "C" fn frbgen_ecashapp_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( ptr: *const std::ffi::c_void, @@ -23079,6 +21141,7 @@ mod web { use crate::fountain::*; use crate::multimint::*; use crate::nostr::*; + use crate::tap_transfer::*; use crate::*; use flutter_rust_bridge::for_generated::byteorder::{ NativeEndian, ReadBytesExt, WriteBytesExt, @@ -23522,6 +21585,20 @@ mod web { MoiArc::>::decrement_strong_count(ptr as _); } + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[wasm_bindgen] + pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + #[wasm_bindgen] pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( ptr: *const std::ffi::c_void, diff --git a/rust/ecashapp/src/lib.rs b/rust/ecashapp/src/lib.rs index 79effc35..1081c795 100644 --- a/rust/ecashapp/src/lib.rs +++ b/rust/ecashapp/src/lib.rs @@ -13,6 +13,7 @@ mod net; mod nostr; mod parse; mod pin; +mod tap_transfer; mod wallet; mod words; use bitcoin::key::rand::rngs::OsRng; @@ -570,6 +571,18 @@ pub async fn send_ecash( .await } +/// Encrypt an ecash string for a tap-transfer recipient (Phase 1 of the NFC + +/// BLE "tap to send" feature). `recipient_pubkey` is the 33-byte compressed key +/// received over NFC; the returned blob is delivered to the receiver over BLE +/// and decrypted with `TapRecipient::decrypt`. See `tap_transfer.rs`. +#[frb(sync)] +pub fn encrypt_ecash_for_tap( + ecash: String, + recipient_pubkey: Vec, +) -> Result, EcashAppError> { + crate::tap_transfer::encrypt_ecash(&ecash, &recipient_pubkey) +} + async fn parse_ecash(federation_id: &FederationId, notes: &OOBNotes) -> anyhow::Result { let multimint = get_multimint(); multimint.parse_ecash(federation_id, notes).await diff --git a/rust/ecashapp/src/tap_transfer.rs b/rust/ecashapp/src/tap_transfer.rs new file mode 100644 index 00000000..d9f00eab --- /dev/null +++ b/rust/ecashapp/src/tap_transfer.rs @@ -0,0 +1,275 @@ +//! Tap-to-send ecash: authenticated ECIES over secp256k1. +//! +//! This is the cryptographic core of the NFC + BLE "tap to send" feature. The +//! receiver generates an *ephemeral* keypair and hands its public key to the +//! sender over NFC (a ~4 cm, proximity-authenticated channel). The sender +//! encrypts the ecash string to that public key and ships the ciphertext over +//! BLE, which is treated as a fully untrusted transport. Only the holder of the +//! receiver's ephemeral private key can decrypt, so an eavesdropper on BLE sees +//! an opaque blob. +//! +//! Scheme (ECIES / ephemeral-static ECDH): +//! - Receiver ephemeral keypair `(r, R = r*G)`. `R` crosses NFC. +//! - Sender generates a fresh ephemeral keypair `(e, E = e*G)` per transfer. +//! - `shared = ECDH(e, R) = ECDH(r, E)` (secp256k1; the shared value is the +//! SHA-256 of the compressed shared point, as returned by `SharedSecret`). +//! - `key = HKDF-SHA256(ikm = shared, salt = R || E, info = HKDF_INFO)`. +//! - `ciphertext = ChaCha20-Poly1305(key, nonce).encrypt(ecash, aad = header)`. +//! +//! Both ephemeral keys make each transfer forward-secret. Binding `R` and `E` +//! into the KDF salt (and the header into the AEAD associated data) prevents an +//! attacker from swapping the sender's ephemeral key without failing decryption. +//! +//! Wire format of the blob handed to BLE: +//! `[ version (1) | E compressed (33) | nonce (12) | ciphertext+tag (N) ]` + +use bitcoin::key::rand::rngs::OsRng; +use bitcoin::key::rand::RngCore; +use bitcoin::secp256k1::{ecdh::SharedSecret, PublicKey, Secp256k1, SecretKey}; +use chacha20poly1305::aead::{Aead, KeyInit, Payload}; +use chacha20poly1305::{ChaCha20Poly1305, Nonce}; +use flutter_rust_bridge::frb; +use hkdf::Hkdf; +use sha2::Sha256; + +use crate::app_error::{EcashAppError, EcashAppResult}; + +use anyhow::{anyhow, bail}; + +/// Blob format version. Bump when the wire layout or crypto changes. +const TAP_VERSION: u8 = 1; +/// Length of a compressed secp256k1 public key. +const PUBKEY_LEN: usize = 33; +/// ChaCha20-Poly1305 nonce length (96 bits). +const NONCE_LEN: usize = 12; +/// Poly1305 authentication tag length. +const TAG_LEN: usize = 16; +/// `version || ephemeral pubkey` — also used verbatim as the AEAD associated data. +const HEADER_LEN: usize = 1 + PUBKEY_LEN; +/// Smallest possible valid blob: header + nonce + an empty ciphertext (tag only). +const MIN_BLOB_LEN: usize = HEADER_LEN + NONCE_LEN + TAG_LEN; +/// Domain-separation string for the HKDF expansion. +const HKDF_INFO: &[u8] = b"ecashapp-tap-transfer-v1"; + +/// Derive the 32-byte AEAD key from the ECDH shared secret, binding both +/// ephemeral public keys into the salt for domain separation. +fn derive_key( + shared: &[u8; 32], + recipient_pub: &[u8; PUBKEY_LEN], + ephemeral_pub: &[u8; PUBKEY_LEN], +) -> [u8; 32] { + let mut salt = Vec::with_capacity(2 * PUBKEY_LEN); + salt.extend_from_slice(recipient_pub); + salt.extend_from_slice(ephemeral_pub); + let hk = Hkdf::::new(Some(&salt), shared); + let mut key = [0u8; 32]; + hk.expand(HKDF_INFO, &mut key) + .expect("32 is a valid HKDF-SHA256 output length"); + key +} + +/// Encrypt `plaintext` to `recipient`'s public key, returning the wire blob. +pub(crate) fn encrypt(plaintext: &[u8], recipient: &PublicKey) -> anyhow::Result> { + let secp = Secp256k1::new(); + let mut rng = OsRng; + + let (ephemeral_sk, ephemeral_pk) = secp.generate_keypair(&mut rng); + let shared = SharedSecret::new(recipient, &ephemeral_sk); + let recipient_bytes = recipient.serialize(); + let ephemeral_bytes = ephemeral_pk.serialize(); + let key = derive_key(&shared.secret_bytes(), &recipient_bytes, &ephemeral_bytes); + + let mut nonce = [0u8; NONCE_LEN]; + rng.fill_bytes(&mut nonce); + + // header = version || ephemeral pubkey; reused as AEAD associated data so + // any tampering with it fails authentication. + let mut blob = Vec::with_capacity(HEADER_LEN + NONCE_LEN + plaintext.len() + TAG_LEN); + blob.push(TAP_VERSION); + blob.extend_from_slice(&ephemeral_bytes); + let aad = blob.clone(); + + blob.extend_from_slice(&nonce); + let cipher = ChaCha20Poly1305::new_from_slice(&key).expect("32-byte key is valid"); + let ciphertext = cipher + .encrypt( + Nonce::from_slice(&nonce), + Payload { + msg: plaintext, + aad: &aad, + }, + ) + .map_err(|_| anyhow!("tap transfer: encryption failed"))?; + blob.extend_from_slice(&ciphertext); + Ok(blob) +} + +/// Decrypt a wire blob using the recipient's ephemeral secret key. +pub(crate) fn decrypt(blob: &[u8], recipient_secret: &SecretKey) -> anyhow::Result> { + if blob.len() < MIN_BLOB_LEN { + bail!("tap transfer: blob too short"); + } + if blob[0] != TAP_VERSION { + bail!("tap transfer: unsupported blob version {}", blob[0]); + } + + let ephemeral_pk = PublicKey::from_slice(&blob[1..HEADER_LEN]) + .map_err(|_| anyhow!("tap transfer: invalid ephemeral public key"))?; + let nonce = &blob[HEADER_LEN..HEADER_LEN + NONCE_LEN]; + let ciphertext = &blob[HEADER_LEN + NONCE_LEN..]; + + let secp = Secp256k1::new(); + let shared = SharedSecret::new(&ephemeral_pk, recipient_secret); + let recipient_bytes = PublicKey::from_secret_key(&secp, recipient_secret).serialize(); + let ephemeral_bytes = ephemeral_pk.serialize(); + let key = derive_key(&shared.secret_bytes(), &recipient_bytes, &ephemeral_bytes); + + let cipher = ChaCha20Poly1305::new_from_slice(&key).expect("32-byte key is valid"); + let plaintext = cipher + .decrypt( + Nonce::from_slice(nonce), + Payload { + msg: ciphertext, + aad: &blob[0..HEADER_LEN], + }, + ) + .map_err(|_| anyhow!("tap transfer: decryption failed"))?; + Ok(plaintext) +} + +/// Encrypt an ecash string for a tap-transfer recipient's public key. +/// +/// `recipient_pubkey` is the 33-byte compressed key received over NFC. The +/// returned blob is delivered to the receiver over BLE. +pub(crate) fn encrypt_ecash(ecash: &str, recipient_pubkey: &[u8]) -> EcashAppResult> { + let recipient = PublicKey::from_slice(recipient_pubkey) + .map_err(|_| EcashAppError::other("tap transfer: invalid recipient public key"))?; + encrypt(ecash.as_bytes(), &recipient).map_err(EcashAppError::from) +} + +/// Receiver-side tap-transfer session. +/// +/// Holds an ephemeral keypair whose private half never crosses the bridge: +/// Dart only ever sees the opaque handle and the 33-byte [`public_key`]. Create +/// one per incoming transfer, hand its public key to the sender over NFC, then +/// feed the BLE blob to [`decrypt`](TapRecipient::decrypt). +#[frb(opaque)] +pub struct TapRecipient { + secret_key: SecretKey, + public_key: PublicKey, +} + +impl TapRecipient { + #[frb(sync)] + pub fn new() -> Self { + let secp = Secp256k1::new(); + let (secret_key, public_key) = secp.generate_keypair(&mut OsRng); + Self { + secret_key, + public_key, + } + } + + /// The 33-byte compressed public key to hand to the sender over NFC. + #[frb(sync)] + pub fn public_key(&self) -> Vec { + self.public_key.serialize().to_vec() + } + + /// Decrypt a blob produced by [`encrypt_ecash`], returning the original + /// ecash string ready to pass to `reissue_ecash`. + #[frb(sync)] + pub fn decrypt(&self, blob: Vec) -> Result { + let plaintext = decrypt(&blob, &self.secret_key).map_err(EcashAppError::from)?; + String::from_utf8(plaintext).map_err(|_| { + EcashAppError::other("tap transfer: decrypted payload was not valid UTF-8") + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + fn keypair() -> (SecretKey, PublicKey) { + Secp256k1::new().generate_keypair(&mut OsRng) + } + + #[test] + fn round_trip() { + let (sk, pk) = keypair(); + let msg = b"fed11qgqrsdtest-ecash-token-string"; + let blob = encrypt(msg, &pk).unwrap(); + assert_eq!(blob[0], TAP_VERSION); + assert!(blob.len() >= MIN_BLOB_LEN); + assert_eq!(decrypt(&blob, &sk).unwrap(), msg); + } + + #[test] + fn empty_plaintext_round_trip() { + let (sk, pk) = keypair(); + let blob = encrypt(b"", &pk).unwrap(); + assert_eq!(blob.len(), MIN_BLOB_LEN); + assert_eq!(decrypt(&blob, &sk).unwrap(), b""); + } + + #[test] + fn wrong_key_fails() { + let (_sk, pk) = keypair(); + let (other_sk, _) = keypair(); + let blob = encrypt(b"secret notes", &pk).unwrap(); + assert!(decrypt(&blob, &other_sk).is_err()); + } + + #[test] + fn tampered_ciphertext_detected() { + let (sk, pk) = keypair(); + let mut blob = encrypt(b"secret notes", &pk).unwrap(); + let last = blob.len() - 1; + blob[last] ^= 0x01; + assert!(decrypt(&blob, &sk).is_err()); + } + + #[test] + fn tampered_header_detected() { + let (sk, pk) = keypair(); + let mut blob = encrypt(b"secret notes", &pk).unwrap(); + blob[1] ^= 0x01; // corrupt the ephemeral pubkey (feeds the KDF and AAD) + assert!(decrypt(&blob, &sk).is_err()); + } + + #[test] + fn short_blob_rejected() { + let (sk, _) = keypair(); + assert!(decrypt(&[TAP_VERSION, 0, 0], &sk).is_err()); + } + + #[test] + fn bad_version_rejected() { + let (sk, pk) = keypair(); + let mut blob = encrypt(b"x", &pk).unwrap(); + blob[0] = 0xFF; + assert!(decrypt(&blob, &sk).is_err()); + } + + #[test] + fn distinct_ephemeral_keys_per_encrypt() { + // Two encryptions of the same message must differ (fresh ephemeral + nonce). + let (_sk, pk) = keypair(); + let a = encrypt(b"same", &pk).unwrap(); + let b = encrypt(b"same", &pk).unwrap(); + assert_ne!(a, b); + } + + #[test] + fn recipient_public_key_is_compressed() { + assert_eq!(TapRecipient::new().public_key().len(), PUBKEY_LEN); + } + + #[test] + fn recipient_decrypts_encrypt_ecash() { + let recipient = TapRecipient::new(); + let blob = encrypt_ecash("fed1testtoken", &recipient.public_key()).unwrap(); + assert_eq!(recipient.decrypt(blob).unwrap(), "fed1testtoken"); + } +} From 194da7611b927caa3641f3787deea359f6aea387 Mon Sep 17 00:00:00 2001 From: m1sterc001guy Date: Wed, 26 Aug 2026 16:34:43 -0500 Subject: [PATCH 2/3] feat: NFC tap initiates BLE transfer --- android/app/src/main/AndroidManifest.xml | 12 + .../main/kotlin/app/ecash/BleTapController.kt | 679 ++ .../main/kotlin/app/ecash/EcashHceService.kt | 11 + .../src/main/kotlin/app/ecash/MainActivity.kt | 179 +- lib/app.dart | 32 +- lib/db.dart | 4 +- lib/ecash_send.dart | 172 + lib/frb_generated.dart | 6461 ++++++++++------ lib/frb_generated.io.dart | 300 +- lib/frb_generated.web.dart | 300 +- lib/l10n/app_en.arb | 21 + lib/l10n/app_es.arb | 7 + lib/lib.dart | 6 + lib/multimint.dart | 4 + lib/nostr.dart | 19 +- lib/providers/preferences_provider.dart | 13 + lib/request.dart | 5 + lib/screens/display_settings.dart | 28 + lib/setttings.dart | 45 + lib/tap_transfer/ble_tap.dart | 72 + lib/tap_transfer/tap_nfc.dart | 128 + lib/tap_transfer/tap_receive.dart | 255 + lib/tap_transfer/tap_transfer_dev_screen.dart | 291 + rust/ecashapp/src/db.rs | 10 + rust/ecashapp/src/frb_generated.rs | 6856 +++++++++++------ rust/ecashapp/src/lib.rs | 12 + rust/ecashapp/src/multimint.rs | 18 + 27 files changed, 11304 insertions(+), 4636 deletions(-) create mode 100644 android/app/src/main/kotlin/app/ecash/BleTapController.kt create mode 100644 lib/tap_transfer/ble_tap.dart create mode 100644 lib/tap_transfer/tap_nfc.dart create mode 100644 lib/tap_transfer/tap_receive.dart create mode 100644 lib/tap_transfer/tap_transfer_dev_screen.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 7dfc65e5..e330c7a4 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -12,6 +12,18 @@ + + + + + + + + + + + ) -> Unit, +) { + companion object { + private const val TAG = "BleTap" + + /** Overall budget for one transfer, either role. */ + private const val TRANSFER_TIMEOUT_MS = 20_000L + + // Fixed characteristic UUIDs living inside the per-session rendezvous service. + private val CHAR_PAYLOAD_UUID: UUID = UUID.fromString("e3c0f2a1-0b7d-4c6e-9a2f-1d5b0e7a0005") + private val CCCD_UUID: UUID = UUID.fromString("00002902-0000-1000-8000-00805f9b34fb") + + private const val HEADER_VERSION: Byte = 1 + private const val DEFAULT_MTU = 23 + private const val ATT_NOTIFY_OVERHEAD = 3 + /** Keep notifications comfortably inside one ATT PDU. */ + private const val MAX_SAFE_CHUNK = 180 + + /** Sanity bound on the advertised payload length in the header. */ + private const val MAX_PAYLOAD_BYTES = 64 * 1024 + + // Every notification is framed so the receiver can join mid-stream and + // resynchronise on the next header, which is what makes retransmission work. + private const val FRAME_HEADER: Byte = 0x01 + private const val FRAME_DATA: Byte = 0x02 + + /** + * Last-resort trigger for a central that never negotiates an MTU at all. + * It must stay well clear of a real MTU exchange, which takes ~3s when an + * Android 17 phone is the central - at 2.5s this fired first and chunked + * the whole payload at the 23-byte default (211 frames instead of 24). + * The real triggers are the readiness read and [POST_MTU_PUSH_MS]. + */ + private const val PUSH_SETTLE_MS = 8_000L + + /** + * Once the MTU is known, how long to give the central to finish discovery + * and register for notifications before pushing. Measured at ~40ms on a + * Pixel 8, so this is generous. Scheduling from the MTU exchange rather + * than blindly from connect is what keeps the first attempt from chunking + * at the 23-byte default. + */ + private const val POST_MTU_PUSH_MS = 500L + + /** Release the client regardless if the disconnect callback never lands. */ + private const val CLOSE_FALLBACK_MS = 2_000L + + /** + * If the receiver hasn't disconnected (its only way of confirming) this + * long after a full push, send the whole payload again. An Android 17 + * central cannot signal readiness at all - every app-initiated GATT + * operation it makes is silently dropped - so the sender cannot wait to be + * told, and simply repeats until the receiver confirms or we time out. + * + * Must exceed the ~5s link supervision timeout: the receiver's disconnect + * is its only way to confirm, and the peer does not observe it for about + * four seconds, so a shorter retry retransmits a payload that already + * arrived. + */ + private const val PUSH_RETRY_MS = 6_000L + } + + private val main = Handler(Looper.getMainLooper()) + private val manager: BluetoothManager? = + context.getSystemService(Context.BLUETOOTH_SERVICE) as? BluetoothManager + private val adapter: BluetoothAdapter? get() = manager?.adapter + + private var mtu = DEFAULT_MTU + private var serviceUuid: UUID? = null + + private val transferTimeout = Runnable { onTransferTimeout() } + private val pushSettle = Runnable { beginPush() } + private val closeFallback = Runnable { stopInternal() } + private val pushRetry = Runnable { beginPush() } + private var attempt = 0 + + // --- sender (peripheral) state --- + private var gattServer: BluetoothGattServer? = null + private var advertiser: BluetoothLeAdvertiser? = null + private var advertiseCallback: AdvertiseCallback? = null + private var payloadChar: BluetoothGattCharacteristic? = null + private var connectedCentral: BluetoothDevice? = null + private var pendingBlob: ByteArray? = null + private val sendQueue = ArrayDeque() + private var pushing = false + private var allSent = false + + // --- receiver (central) state --- + private var scanner: BluetoothLeScanner? = null + private var scanCallback: ScanCallback? = null + private var gatt: BluetoothGatt? = null + private var expectingHeader = true + private var expectedLen = 0 + private val inbox = ByteArrayOutputStream() + private var assembled = false + + fun isAvailable(): Boolean { + return try { + val a = adapter ?: return false + if (!context.packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) return false + a.isEnabled + } catch (e: SecurityException) { + false + } + } + + // ------------------------------------------------------------------ sender + + /** Advertise [uuidString] and push [blob] to the first central that connects. */ + fun startSending(uuidString: String, blob: ByteArray) { + stopInternal() + val a = adapter ?: return sendError("bluetooth unavailable") + val adv = a.bluetoothLeAdvertiser + ?: return sendError("BLE advertising is not supported on this device") + val uuid = parseUuid(uuidString) ?: return sendError("invalid rendezvous uuid") + logd("startSending uuid=$uuid blob=${blob.size}B") + serviceUuid = uuid + advertiser = adv + pendingBlob = blob + + val server = manager?.openGattServer(context, serverCallback) + ?: return sendError("could not open GATT server") + gattServer = server + + val service = BluetoothGattService(uuid, BluetoothGattService.SERVICE_TYPE_PRIMARY) + val payload = BluetoothGattCharacteristic( + CHAR_PAYLOAD_UUID, + // READ as well as NOTIFY: the receiver reads this characteristic once + // it has registered for notifications, and that read is what tells us + // it is safe to start pushing. A read is used rather than a write + // because client writes are the operation broken on Android 17. + BluetoothGattCharacteristic.PROPERTY_READ or + BluetoothGattCharacteristic.PROPERTY_NOTIFY, + BluetoothGattCharacteristic.PERMISSION_READ, + ) + // Declared for correctness. The receiver never writes it - Android's GATT + // server does not gate notifyCharacteristicChanged on the CCCD, and a + // client write is precisely the operation this design avoids. + payload.addDescriptor( + BluetoothGattDescriptor( + CCCD_UUID, + BluetoothGattDescriptor.PERMISSION_READ or BluetoothGattDescriptor.PERMISSION_WRITE, + ) + ) + service.addCharacteristic(payload) + payloadChar = payload + + main.postDelayed(transferTimeout, TRANSFER_TIMEOUT_MS) + // Advertising starts in onServiceAdded, so a central can never connect + // and find an empty GATT server. + server.addService(service) + } + + private fun startAdvertisingInternal() { + val adv = advertiser ?: return + val uuid = serviceUuid ?: return + val settings = AdvertiseSettings.Builder() + .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY) + .setConnectable(true) + .setTimeout(0) + .setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH) + .build() + val data = AdvertiseData.Builder() + .setIncludeDeviceName(false) + .addServiceUuid(ParcelUuid(uuid)) + .build() + val cb = object : AdvertiseCallback() { + override fun onStartSuccess(settingsInEffect: AdvertiseSettings?) { + logd("advertising started") + } + + override fun onStartFailure(errorCode: Int) { + sendError("advertise failed: $errorCode") + } + } + advertiseCallback = cb + adv.startAdvertising(settings, data, cb) + sendStatus("advertising") + } + + private val serverCallback = object : BluetoothGattServerCallback() { + override fun onServiceAdded(status: Int, service: BluetoothGattService) { + if (service.uuid != serviceUuid) return + if (status == BluetoothGatt.GATT_SUCCESS) { + startAdvertisingInternal() + } else { + sendError("failed to register GATT service: $status") + } + } + + override fun onConnectionStateChange(device: BluetoothDevice, status: Int, newState: Int) { + logd("server conn newState=$newState status=$status allSent=$allSent") + when (newState) { + BluetoothProfile.STATE_CONNECTED -> { + connectedCentral = device + // Some stacks corrupt an active connection while still + // advertising, and we only ever serve one central. + stopAdvertising() + sendStatus("connected") + main.postDelayed(pushSettle, PUSH_SETTLE_MS) + } + BluetoothProfile.STATE_DISCONNECTED -> { + if (device != connectedCentral) return + connectedCentral = null + // The receiver disconnects once it has the whole payload - + // that is the delivery signal, since acknowledging it in-band + // would require a client write. + if (allSent) { + logd("central disconnected after full payload, delivered") + main.removeCallbacks(transferTimeout) + main.removeCallbacks(pushRetry) + sendStatus("confirmed") + stopInternal() + } else if (pushing) { + sendError("receiver disconnected mid-transfer (status=$status)") + stopInternal() + } + } + } + } + + override fun onMtuChanged(device: BluetoothDevice, mtu: Int) { + logd("server mtu=$mtu") + this@BleTapController.mtu = mtu + // Do not push from here: the central negotiates the MTU *before* it + // discovers services and registers for notifications, so anything sent + // now lands on the floor. But this is the right moment to time from - + // re-arm the settle so the first attempt chunks at the real MTU rather + // than the 23-byte default. + if (!pushing && !allSent) { + main.removeCallbacks(pushSettle) + main.postDelayed(pushSettle, POST_MTU_PUSH_MS) + } + } + + override fun onCharacteristicReadRequest( + device: BluetoothDevice, + requestId: Int, + offset: Int, + characteristic: BluetoothGattCharacteristic, + ) { + gattServer?.sendResponse(device, requestId, BluetoothGatt.GATT_SUCCESS, offset, ByteArray(0)) + if (characteristic.uuid != CHAR_PAYLOAD_UUID) return + // Fast path: a central that can still issue reads is telling us it is + // ready, so skip the settle. Android 17 centrals never get here. + logd("receiver read the payload characteristic: ready, starting push") + if (!pushing) { + main.removeCallbacks(pushSettle) + beginPush() + } + } + + override fun onNotificationSent(device: BluetoothDevice, status: Int) { + if (status != BluetoothGatt.GATT_SUCCESS) { + sendError("notification failed: $status") + stopInternal() + return + } + pushNext() + } + } + + /** Chunk the blob for the negotiated MTU and start streaming it. */ + private fun beginPush() { + if (pushing) return + val blob = pendingBlob ?: return sendError("no payload to send") + if (connectedCentral == null) return sendError("no central connected") + pushing = true + allSent = false + attempt++ + sendQueue.clear() + + val header = ByteArray(6) + header[0] = FRAME_HEADER + header[1] = HEADER_VERSION + header[2] = ((blob.size ushr 24) and 0xFF).toByte() + header[3] = ((blob.size ushr 16) and 0xFF).toByte() + header[4] = ((blob.size ushr 8) and 0xFF).toByte() + header[5] = (blob.size and 0xFF).toByte() + sendQueue.addLast(header) + + // One byte of every notification is the frame tag. + val frameSize = (mtu - ATT_NOTIFY_OVERHEAD).coerceAtMost(MAX_SAFE_CHUNK).coerceAtLeast(20) + val dataSize = frameSize - 1 + var i = 0 + while (i < blob.size) { + val end = minOf(i + dataSize, blob.size) + val frame = ByteArray(end - i + 1) + frame[0] = FRAME_DATA + blob.copyInto(frame, 1, i, end) + sendQueue.addLast(frame) + i = end + } + logd("beginPush attempt=$attempt blob=${blob.size}B mtu=$mtu dataSize=$dataSize frames=${sendQueue.size}") + sendStatus("writing") + pushNext() + } + + /** Send the next queued chunk; each is paced by onNotificationSent. */ + private fun pushNext() { + val server = gattServer ?: return + val device = connectedCentral ?: return + val ch = payloadChar ?: return + val chunk = sendQueue.pollFirst() + if (chunk == null) { + allSent = true + pushing = false + logd("attempt $attempt fully pushed, awaiting receiver disconnect") + sendStatus("sent") + // The receiver confirms by disconnecting. If it doesn't, it wasn't + // listening yet - send the whole thing again rather than waiting for a + // readiness signal it may be incapable of sending. + main.postDelayed(pushRetry, PUSH_RETRY_MS) + return + } + val ok = notifyChunk(server, device, ch, chunk) + if (!ok) { + sendError("could not queue notification") + stopInternal() + } + } + + @Suppress("DEPRECATION") + private fun notifyChunk( + server: BluetoothGattServer, + device: BluetoothDevice, + ch: BluetoothGattCharacteristic, + value: ByteArray, + ): Boolean { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val res = server.notifyCharacteristicChanged(device, ch, false, value) + if (res != BluetoothStatusCodes.SUCCESS) logd("notifyCharacteristicChanged code=$res") + res == BluetoothStatusCodes.SUCCESS + } else { + ch.value = value + server.notifyCharacteristicChanged(device, ch, false) + } + } + + // ---------------------------------------------------------------- receiver + + /** Scan for [uuidString], connect, and receive the pushed payload. */ + fun startReceiving(uuidString: String) { + stopInternal() + val a = adapter ?: return sendError("bluetooth unavailable") + val s = a.bluetoothLeScanner ?: return sendError("BLE scanning not supported") + val uuid = parseUuid(uuidString) ?: return sendError("invalid rendezvous uuid") + logd("startReceiving uuid=$uuid") + serviceUuid = uuid + resetInbox() + + val filters = listOf(ScanFilter.Builder().setServiceUuid(ParcelUuid(uuid)).build()) + val settings = ScanSettings.Builder() + .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY) + .build() + val cb = object : ScanCallback() { + override fun onScanResult(callbackType: Int, result: ScanResult) { + scanner?.stopScan(this) + scanCallback = null + connectTo(result.device) + } + + override fun onScanFailed(errorCode: Int) { + sendError("scan failed: $errorCode") + } + } + scanner = s + scanCallback = cb + s.startScan(filters, settings, cb) + main.postDelayed(transferTimeout, TRANSFER_TIMEOUT_MS) + sendStatus("scanning") + } + + private fun connectTo(device: BluetoothDevice) { + sendStatus("connecting") + gatt = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + device.connectGatt(context, false, gattCallback, BluetoothDevice.TRANSPORT_LE) + } else { + device.connectGatt(context, false, gattCallback) + } + } + + private val gattCallback = object : BluetoothGattCallback() { + override fun onConnectionStateChange(g: BluetoothGatt, status: Int, newState: Int) { + logd("client conn newState=$newState status=$status assembled=$assembled") + when (newState) { + BluetoothProfile.STATE_CONNECTED -> { + sendStatus("connected") + // Issue GATT operations from the main thread rather than the + // binder callback thread they arrived on. + main.post { gatt?.requestMtu(517) } + } + BluetoothProfile.STATE_DISCONNECTED -> { + if (assembled) { + // Our own terminate completing; safe to release now. + main.removeCallbacks(closeFallback) + main.post { stopInternal() } + } else { + sendError("sender disconnected before the payload arrived") + } + } + } + } + + override fun onMtuChanged(g: BluetoothGatt, mtu: Int, status: Int) { + this@BleTapController.mtu = if (status == BluetoothGatt.GATT_SUCCESS) mtu else DEFAULT_MTU + logd("client mtu=$mtu status=$status using=${this@BleTapController.mtu}") + main.post { gatt?.discoverServices() } + } + + override fun onServicesDiscovered(g: BluetoothGatt, status: Int) { + val uuid = serviceUuid ?: return sendError("no rendezvous uuid") + val service = g.getService(uuid) ?: return sendError("rendezvous service not found") + val ch = service.getCharacteristic(CHAR_PAYLOAD_UUID) + ?: return sendError("payload characteristic not found") + // Local registration only - this generates no ATT traffic. We + // deliberately do NOT write the CCCD: that is a client write, the one + // operation that is broken on Android 17, and the sender notifies + // unconditionally so no subscription is needed. + val ok = g.setCharacteristicNotification(ch, true) + logd("services discovered status=$status setNotification=$ok") + if (!ok) return sendError("could not register for notifications") + sendStatus("receiving") + // Announce readiness. Only once this read lands does the sender start + // pushing, so no chunk can arrive before we are listening. + main.post { + val gg = gatt ?: return@post + val issued = gg.readCharacteristic(ch) + logd("readiness read issued=$issued") + if (!issued) sendError("could not signal readiness to the sender") + } + } + + override fun onCharacteristicChanged( + g: BluetoothGatt, + characteristic: BluetoothGattCharacteristic, + value: ByteArray, + ) { + if (characteristic.uuid != CHAR_PAYLOAD_UUID) return + handleInbound(value) + } + + // Pre-33 notification callback; the 3-arg overload above supersedes it. + @Suppress("DEPRECATION") + override fun onCharacteristicChanged( + g: BluetoothGatt, + characteristic: BluetoothGattCharacteristic, + ) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) return + if (characteristic.uuid != CHAR_PAYLOAD_UUID) return + handleInbound(characteristic.value ?: return) + } + } + + /** + * Every notification is framed, so joining part-way through a push is + * survivable: data frames received before a header are discarded, and the + * next header resets collection. The sender retransmits until we confirm by + * disconnecting, so a missed first attempt costs a retry, not the transfer. + */ + private fun handleInbound(value: ByteArray) { + if (assembled || value.isEmpty()) return + when (value[0]) { + FRAME_HEADER -> { + if (value.size < 6 || value[1] != HEADER_VERSION) { + logd("malformed header frame size=${value.size}, ignoring") + return + } + val len = ((value[2].toInt() and 0xFF) shl 24) or + ((value[3].toInt() and 0xFF) shl 16) or + ((value[4].toInt() and 0xFF) shl 8) or + (value[5].toInt() and 0xFF) + if (len <= 0 || len > MAX_PAYLOAD_BYTES) { + logd("implausible header length=$len, ignoring") + return + } + expectedLen = len + expectingHeader = false + inbox.reset() + logd("header ok expectedLen=$expectedLen") + } + FRAME_DATA -> { + // No header yet: we joined mid-push. Wait for the retransmission. + if (expectingHeader) return + inbox.write(value, 1, value.size - 1) + logd("inbound ${value.size - 1}B total=${inbox.size()}/$expectedLen") + if (inbox.size() >= expectedLen) { + val full = inbox.toByteArray() + val blob = if (full.size > expectedLen) full.copyOfRange(0, expectedLen) else full + assembled = true + main.removeCallbacks(transferTimeout) + logd("assembled ${blob.size}B, disconnecting to confirm") + sendReceived(blob) + // Disconnecting is the delivery signal the sender waits for, so + // it needs to be a clean terminate: disconnect and let the + // callback close us. Calling close() straight after disconnect() + // suppresses the terminate and the sender only notices ~4s later + // on supervision timeout, by which point it has retransmitted. + main.post { + gatt?.disconnect() + main.postDelayed(closeFallback, CLOSE_FALLBACK_MS) + } + } + } + else -> logd("unknown frame tag=${value[0]}, ignoring") + } + } + + // ------------------------------------------------------------------ common + + fun stop() { + stopInternal() + sendStatus("stopped") + } + + private fun stopAdvertising() { + try { + advertiseCallback?.let { advertiser?.stopAdvertising(it) } + } catch (e: Exception) { + Log.w(TAG, "stopAdvertising: ${e.message}") + } + advertiseCallback = null + } + + private fun stopInternal() { + main.removeCallbacks(transferTimeout) + main.removeCallbacks(pushSettle) + main.removeCallbacks(pushRetry) + main.removeCallbacks(closeFallback) + attempt = 0 + + try { + scanCallback?.let { scanner?.stopScan(it) } + } catch (e: Exception) { + Log.w(TAG, "stopScan: ${e.message}") + } + scanCallback = null + scanner = null + + try { + gatt?.disconnect() + gatt?.close() + } catch (e: Exception) { + Log.w(TAG, "gatt close: ${e.message}") + } + gatt = null + + stopAdvertising() + advertiser = null + + try { + gattServer?.close() + } catch (e: Exception) { + Log.w(TAG, "gattServer close: ${e.message}") + } + gattServer = null + payloadChar = null + connectedCentral = null + + sendQueue.clear() + pendingBlob = null + pushing = false + allSent = false + serviceUuid = null + assembled = false + resetInbox() + mtu = DEFAULT_MTU + } + + private fun onTransferTimeout() { + logd("transfer timed out pushing=$pushing allSent=$allSent queued=${sendQueue.size} assembled=$assembled") + sendError("tap transfer timed out") + stopInternal() + } + + private fun resetInbox() { + expectingHeader = true + expectedLen = 0 + inbox.reset() + } + + private fun parseUuid(value: String): UUID? = try { + UUID.fromString(value) + } catch (e: IllegalArgumentException) { + null + } + + private fun send(map: Map) = main.post { emit(map) } + private fun sendStatus(state: String) = send(mapOf("event" to "status", "state" to state)) + + /** Log to logcat only (adb logcat -s BleTap). The native BLE trace stays out + * of the in-app log so it doesn't flood it during a multi-chunk transfer. */ + private fun logd(message: String) { + Log.i(TAG, message) + } + private fun sendReceived(blob: ByteArray) = send(mapOf("event" to "received", "data" to blob)) + private fun sendError(message: String) { + Log.w(TAG, message) + main.removeCallbacks(transferTimeout) + main.removeCallbacks(pushSettle) + main.removeCallbacks(pushRetry) + send(mapOf("event" to "error", "message" to message)) + } +} diff --git a/android/app/src/main/kotlin/app/ecash/EcashHceService.kt b/android/app/src/main/kotlin/app/ecash/EcashHceService.kt index f8917d13..9667d4d5 100644 --- a/android/app/src/main/kotlin/app/ecash/EcashHceService.kt +++ b/android/app/src/main/kotlin/app/ecash/EcashHceService.kt @@ -27,6 +27,15 @@ class EcashHceService : HostApduService() { @Volatile var ndefMessage: ByteArray? = null + /** + * Invoked when a reader has actually read the NDEF payload, i.e. a tap + * just happened. MainActivity forwards it to Dart so the receiver can + * start scanning for the sender's advertisement. Fires once per read, so + * the Dart side must be idempotent. + */ + @Volatile + var onTagRead: (() -> Unit)? = null + private val SW_OK = byteArrayOf(0x90.toByte(), 0x00.toByte()) private val SW_NOT_FOUND = byteArrayOf(0x6A.toByte(), 0x82.toByte()) @@ -124,6 +133,8 @@ class EcashHceService : HostApduService() { Selected.CC -> CC_CONTENT Selected.NDEF -> { val msg = ndefMessage ?: return reply("READ no NDEF message", SW_NOT_FOUND) + // A reader is pulling the rendezvous: the tap is happening now. + if (offset >= 2) onTagRead?.invoke() // The NDEF file is NLEN (2 bytes, big-endian) followed by the message. val nlen = msg.size byteArrayOf(((nlen ushr 8) and 0xFF).toByte(), (nlen and 0xFF).toByte()) + msg diff --git a/android/app/src/main/kotlin/app/ecash/MainActivity.kt b/android/app/src/main/kotlin/app/ecash/MainActivity.kt index ade2333c..846a0506 100644 --- a/android/app/src/main/kotlin/app/ecash/MainActivity.kt +++ b/android/app/src/main/kotlin/app/ecash/MainActivity.kt @@ -6,11 +6,14 @@ import android.content.Intent import android.content.IntentFilter import android.content.pm.PackageManager import android.nfc.NfcAdapter +import android.nfc.Tag import android.nfc.cardemulation.CardEmulation +import android.nfc.tech.Ndef import android.util.Log import android.view.WindowManager import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine +import io.flutter.plugin.common.EventChannel import io.flutter.plugin.common.MethodChannel class MainActivity : FlutterActivity() { @@ -36,6 +39,13 @@ class MainActivity : FlutterActivity() { private var nfcPendingIntent: PendingIntent? = null private var nfcIntentFilters: Array? = null + private var bleController: BleTapController? = null + private var bleEventSink: EventChannel.EventSink? = null + + private var nfcTapEventSink: EventChannel.EventSink? = null + private var hceEventSink: EventChannel.EventSink? = null + private var readerModeActive = false + override fun configureFlutterEngine(flutterEngine: FlutterEngine) { super.configureFlutterEngine(flutterEngine) @@ -65,6 +75,23 @@ class MainActivity : FlutterActivity() { }, ) + // The receiver has to know the moment its rendezvous was read over NFC: + // under the sender-is-peripheral design it must start scanning then, and + // scanning continuously would be a battery problem. + EventChannel(flutterEngine.dartExecutor.binaryMessenger, "ecashapp/nfc_hce/events") + .setStreamHandler(object : EventChannel.StreamHandler { + override fun onListen(arguments: Any?, events: EventChannel.EventSink?) { + hceEventSink = events + } + + override fun onCancel(arguments: Any?) { + hceEventSink = null + } + }) + EcashHceService.onTagRead = { + runOnUiThread { hceEventSink?.success(mapOf("event" to "tagRead")) } + } + MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "ecashapp/nfc_hce") .setMethodCallHandler { call, result -> when (call.method) { @@ -101,6 +128,98 @@ class MainActivity : FlutterActivity() { else -> result.notImplemented() } } + + // BLE "tap to send" transport (Phase 2). Events stream to Dart over an + // EventChannel; the controller posts them on the main thread already. + EventChannel(flutterEngine.dartExecutor.binaryMessenger, "ecashapp/ble_tap/events") + .setStreamHandler(object : EventChannel.StreamHandler { + override fun onListen(arguments: Any?, events: EventChannel.EventSink?) { + bleEventSink = events + } + + override fun onCancel(arguments: Any?) { + bleEventSink = null + } + }) + + val ble = BleTapController(applicationContext) { event -> bleEventSink?.success(event) } + bleController = ble + MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "ecashapp/ble_tap") + .setMethodCallHandler { call, result -> + when (call.method) { + "isAvailable" -> result.success(ble.isAvailable()) + "startReceiving" -> { + val uuid = call.argument("uuid") + if (uuid == null) { + result.error("missing_uuid", "uuid required", null) + } else { + ble.startReceiving(uuid) + result.success(null) + } + } + "startSending" -> { + val uuid = call.argument("uuid") + val blob = call.argument("blob") + if (uuid == null || blob == null) { + result.error("missing_args", "uuid and blob required", null) + } else { + ble.startSending(uuid, blob) + result.success(null) + } + } + "stop" -> { + ble.stop() + result.success(null) + } + else -> result.notImplemented() + } + } + + // NFC reader mode for the "tap to send" handshake (Phase 3). The sender + // reads the receiver's rendezvous (ephemeral pubkey + BLE service UUID) + // off an emulated NDEF tag. Reader mode and foreground dispatch are + // mutually exclusive, so `readerModeActive` gates onResume/onPause. + EventChannel(flutterEngine.dartExecutor.binaryMessenger, "ecashapp/nfc_tap/events") + .setStreamHandler(object : EventChannel.StreamHandler { + override fun onListen(arguments: Any?, events: EventChannel.EventSink?) { + nfcTapEventSink = events + } + + override fun onCancel(arguments: Any?) { + nfcTapEventSink = null + } + }) + + MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "ecashapp/nfc_tap") + .setMethodCallHandler { call, result -> + when (call.method) { + "startReader" -> { + val adapter = nfcAdapter + if (adapter == null) { + result.error("no_nfc", "NFC unavailable", null) + } else { + readerModeActive = true + adapter.disableForegroundDispatch(this) + enableReaderModeInternal(adapter) + result.success(null) + } + } + "stopReader" -> { + readerModeActive = false + nfcAdapter?.disableReaderMode(this) + nfcAdapter?.enableForegroundDispatch( + this, nfcPendingIntent, nfcIntentFilters, null, + ) + result.success(null) + } + else -> result.notImplemented() + } + } + } + + override fun onDestroy() { + bleController?.stop() + super.onDestroy() } /** @@ -137,17 +256,63 @@ class MainActivity : FlutterActivity() { override fun onResume() { super.onResume() - nfcAdapter?.enableForegroundDispatch( - this, - nfcPendingIntent, - nfcIntentFilters, - null, - ) + val adapter = nfcAdapter ?: return + if (readerModeActive) { + enableReaderModeInternal(adapter) + } else { + adapter.enableForegroundDispatch(this, nfcPendingIntent, nfcIntentFilters, null) + } } override fun onPause() { super.onPause() - nfcAdapter?.disableForegroundDispatch(this) + val adapter = nfcAdapter ?: return + if (readerModeActive) { + adapter.disableReaderMode(this) + } else { + adapter.disableForegroundDispatch(this) + } + } + + private fun enableReaderModeInternal(adapter: NfcAdapter) { + val flags = NfcAdapter.FLAG_READER_NFC_A or + NfcAdapter.FLAG_READER_NFC_B or + NfcAdapter.FLAG_READER_NFC_F or + NfcAdapter.FLAG_READER_NFC_V + adapter.enableReaderMode(this, { tag -> if (tag != null) onTagRead(tag) }, flags, null) + } + + /** + * Read the receiver's rendezvous URI (`ecashtap:`) off an emulated + * NDEF tag and forward it to Dart, which decodes the pubkey + BLE UUID. + */ + private fun onTagRead(tag: Tag) { + val ndef = Ndef.get(tag) + if (ndef == null) { + emitNfcTap(mapOf("event" to "error", "message" to "tag is not NDEF")) + return + } + try { + ndef.connect() + val uri = ndef.ndefMessage?.records?.firstOrNull()?.toUri()?.toString() + if (uri != null) { + emitNfcTap(mapOf("event" to "read", "uri" to uri)) + } else { + emitNfcTap(mapOf("event" to "error", "message" to "no URI record on tag")) + } + } catch (e: Exception) { + emitNfcTap(mapOf("event" to "error", "message" to (e.message ?: "NFC read failed"))) + } finally { + try { + ndef.close() + } catch (e: Exception) { + Log.w("NfcTap", "ndef close: ${e.message}") + } + } + } + + private fun emitNfcTap(event: Map) { + runOnUiThread { nfcTapEventSink?.success(event) } } /** diff --git a/lib/app.dart b/lib/app.dart index c4ff5309..6a7a5919 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -19,6 +19,7 @@ import 'package:ecashapp/providers/preferences_provider.dart'; import 'package:ecashapp/scan.dart'; import 'package:ecashapp/setttings.dart'; import 'package:ecashapp/sidebar.dart'; +import 'package:ecashapp/tap_transfer/tap_receive.dart'; import 'package:ecashapp/theme.dart'; import 'package:ecashapp/toast.dart'; import 'package:ecashapp/utils.dart'; @@ -43,7 +44,7 @@ class MyApp extends StatefulWidget { State createState() => _MyAppState(); } -class _MyAppState extends State { +class _MyAppState extends State with WidgetsBindingObserver { late List<(FederationSelector, bool)> _feds; int _refreshTrigger = 0; FederationSelector? _selectedFederation; @@ -74,6 +75,12 @@ class _MyAppState extends State { super.initState(); _feds = widget.initialFederations; + // Passive "tap to receive" — armed while the app is foregrounded and BLE + // permissions are already granted (never prompts). See tap_receive.dart. + WidgetsBinding.instance.addObserver(this); + TapReceive.instance.onEcash = _handleReceivedTapEcash; + TapReceive.instance.arm(); + if (_feds.isNotEmpty) { _selectedFederation = _feds.first.$1; _isRecovering = _feds.first.$2; @@ -341,6 +348,9 @@ class _MyAppState extends State { @override void dispose() { + WidgetsBinding.instance.removeObserver(this); + TapReceive.instance.onEcash = null; + TapReceive.instance.disarm(); _subscription.cancel(); _deepLinkSubscription?.cancel(); _peerStatusSubscription?.cancel(); @@ -349,6 +359,26 @@ class _MyAppState extends State { super.dispose(); } + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + if (state == AppLifecycleState.resumed) { + TapReceive.instance.arm(); + } else { + TapReceive.instance.disarm(); + } + } + + /// Passive receiver got a tapped ecash token: present the same redeem UI the + /// QR scanner uses (no silent auto-reissue). Suppress the funds-received toast + /// while the redeem sheet is up, matching the scan flow. + Future _handleReceivedTapEcash(String ecash) async { + final ctx = _navigatorKey.currentContext; + if (ctx == null) return; + invoicePaidToastVisible.value = false; + await presentReceivedEcash(ctx, ecash); + invoicePaidToastVisible.value = true; + } + void _checkPendingDeepLink() { final pendingDeepLink = DeepLinkHandler().pendingDeepLink; if (pendingDeepLink != null) { diff --git a/lib/db.dart b/lib/db.dart index 0dade80a..8c22f1ae 100644 --- a/lib/db.dart +++ b/lib/db.dart @@ -7,8 +7,8 @@ import 'frb_generated.dart'; import 'lib.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; -// These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `BitcoinDisplayKey`, `BtcPriceKey`, `BtcPrice`, `BtcPricesKey`, `BtcPrices`, `ContactKeyPrefix`, `ContactKey`, `ContactSyncConfigKey`, `DbKeyPrefix`, `FederationBackupKey`, `FederationConfigKeyPrefix`, `FederationConfigKey`, `FederationMetaKeyPrefix`, `FederationMetaKey`, `FederationOrderKey`, `FederationOrder`, `FiatCurrencyKey`, `LightningAddressKeyPrefix`, `NostrRelaysKeyPrefix`, `NostrRelaysKey`, `NostrWalletConnectConfig`, `NostrWalletConnectKeyPrefix`, `NostrWalletConnectKey`, `NostrWalletConnectV2Config`, `NostrWalletConnectV2KeyPrefix`, `NostrWalletConnectV2Key`, `NwcLimitsKey`, `NwcLimits`, `NwcSpendWindowKey`, `NwcSpendWindow`, `PinAttemptsKey`, `PinAttempts`, `PinCodeHashKey`, `PinCredentialKey`, `RequirePinForSpendingKey`, `SchemaVersionKey`, `SeedPhraseAckKey`, `ShowMsatsKey`, `Timestamp`, `WalletV2PendingDepositFederationPrefix`, `WalletV2PendingDepositKey` -// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `cmp`, `cmp`, `cmp`, `cmp`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `eq`, `eq`, `eq`, `eq`, `eq`, `eq`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `from`, `hash`, `hash`, `hash`, `partial_cmp`, `partial_cmp`, `partial_cmp`, `partial_cmp` +// These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `BitcoinDisplayKey`, `BtcPriceKey`, `BtcPrice`, `BtcPricesKey`, `BtcPrices`, `ContactKeyPrefix`, `ContactKey`, `ContactSyncConfigKey`, `DbKeyPrefix`, `FederationBackupKey`, `FederationConfigKeyPrefix`, `FederationConfigKey`, `FederationMetaKeyPrefix`, `FederationMetaKey`, `FederationOrderKey`, `FederationOrder`, `FiatCurrencyKey`, `LightningAddressKeyPrefix`, `NostrRelaysKeyPrefix`, `NostrRelaysKey`, `NostrWalletConnectConfig`, `NostrWalletConnectKeyPrefix`, `NostrWalletConnectKey`, `NostrWalletConnectV2Config`, `NostrWalletConnectV2KeyPrefix`, `NostrWalletConnectV2Key`, `NwcLimitsKey`, `NwcLimits`, `NwcSpendWindowKey`, `NwcSpendWindow`, `PinAttemptsKey`, `PinAttempts`, `PinCodeHashKey`, `PinCredentialKey`, `RequirePinForSpendingKey`, `SchemaVersionKey`, `SeedPhraseAckKey`, `ShowMsatsKey`, `TapReceiveEnabledKey`, `Timestamp`, `WalletV2PendingDepositFederationPrefix`, `WalletV2PendingDepositKey` +// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `assert_receiver_is_total_eq`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `clone`, `cmp`, `cmp`, `cmp`, `cmp`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_decode_partial_from_finite_reader`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `consensus_encode`, `eq`, `eq`, `eq`, `eq`, `eq`, `eq`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `from`, `hash`, `hash`, `hash`, `partial_cmp`, `partial_cmp`, `partial_cmp`, `partial_cmp` // Rust type: RustOpaqueMoi> abstract class FederationConfig implements RustOpaqueInterface { diff --git a/lib/ecash_send.dart b/lib/ecash_send.dart index df0ca37e..d5ce0112 100644 --- a/lib/ecash_send.dart +++ b/lib/ecash_send.dart @@ -9,6 +9,9 @@ import 'package:ecashapp/fountain.dart'; import 'package:ecashapp/qr_export.dart'; import 'package:ecashapp/lib.dart'; import 'package:ecashapp/multimint.dart'; +import 'package:ecashapp/tap_transfer/ble_tap.dart'; +import 'package:ecashapp/tap_transfer/tap_nfc.dart'; +import 'package:ecashapp/tap_transfer/tap_receive.dart'; import 'package:ecashapp/toast.dart'; import 'package:ecashapp/utils.dart'; import 'package:ecashapp/utils/pin_guard.dart'; @@ -16,6 +19,7 @@ import 'package:ecashapp/extensions/build_context_l10n.dart'; import 'package:ecashapp/widgets/secure_screen.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; import 'package:qr_flutter/qr_flutter.dart'; @@ -51,9 +55,20 @@ class _EcashSendState extends State { bool _copied = false; _QrMode _mode = _QrMode.legacy; + // Tap-to-send (NFC handshake + BLE). Additive: the QR is untouched and stays + // the fallback. Armed once the notes are generated, if BLE is available. + StreamSubscription? _tapBleSub; + StreamSubscription? _tapNfcSub; + bool _tapAvailable = false; + bool _tapSending = false; + String? _tapStatus; + @override void initState() { super.initState(); + // The send screen needs exclusive NFC/BLE (reader mode + outgoing GATT), so + // pause the passive receiver while it's open. + TapReceive.instance.pause(); _loadQuote(); } @@ -118,6 +133,7 @@ class _EcashSendState extends State { _fragmentStream = _createFrameStream(encoder, legacyFrames); _generating = false; }); + unawaited(_armTap()); } catch (e) { AppLogger.instance.error("Could not send Ecash: $e"); if (mounted) showErrorToast(context, e); @@ -158,6 +174,158 @@ class _EcashSendState extends State { }); } + @override + void dispose() { + _tapBleSub?.cancel(); + _tapNfcSub?.cancel(); + TapNfc.stopReader(); + BleTap.stop(); + TapReceive.instance.resume(); + super.dispose(); + } + + /// Arm NFC reader mode on the QR screen so a receiver can tap to pull the + /// ecash over BLE. Additive: the QR remains the primary/fallback path. Only + /// enabled when BLE is present and enabled. + Future _armTap() async { + if (!await BleTap.isAvailable()) return; + if (!mounted) return; + _tapBleSub = BleTap.events().listen(_onTapBleEvent); + _tapNfcSub = TapNfc.reads().listen(_onTapRendezvous); + setState(() => _tapAvailable = true); + try { + await TapNfc.startReader(); + } catch (e) { + AppLogger.instance.warn("Tap send: could not start NFC reader: $e"); + } + } + + /// A receiver tapped: encrypt the already-generated notes for its NFC-delivered + /// pubkey and stream them over BLE. BLE permission is requested here — only + /// once a real tap happens — rather than up front. + Future _onTapRendezvous(TapRendezvous r) async { + if (_tapSending || _notes == null) return; + _tapSending = true; + AppLogger.instance.info( + "tap: read rendezvous uuid=${r.uuid} pubkey=${r.pubkey.length}B", + ); + await TapNfc.stopReader(); + if (!await _ensureBlePermissions()) { + _tapSending = false; + if (mounted) await TapNfc.startReader(); + return; + } + try { + final blob = encryptEcashForTap( + ecash: _notes!.toString(), + recipientPubkey: r.pubkey, + ); + AppLogger.instance.info("tap: encrypted ${blob.length}B, advertising"); + if (mounted) setState(() => _tapStatus = context.l10n.tapConnecting); + await BleTap.startSending(r.uuid, blob); + } catch (e) { + AppLogger.instance.error("Tap send failed: $e"); + _tapSending = false; + if (mounted) { + setState(() => _tapStatus = null); + showErrorToast(context, e); + await TapNfc.startReader(); + } + } + } + + void _onTapBleEvent(BleTapEvent e) { + if (!mounted) return; + switch (e.event) { + case 'status': + switch (e.state) { + case 'confirmed': + _onTapSuccess(); + break; + case 'writing': + case 'sent': + setState(() => _tapStatus = context.l10n.tapSending); + break; + case 'advertising': + case 'scanning': + case 'connecting': + case 'connected': + setState(() => _tapStatus = context.l10n.tapConnecting); + break; + } + break; + case 'error': + _tapSending = false; + AppLogger.instance.warn("tap send failed: ${e.message}"); + setState(() => _tapStatus = null); + ToastService().show( + message: context.l10n.tapSendFailed, + duration: const Duration(seconds: 3), + onTap: () {}, + icon: Icon(Icons.error), + ); + TapNfc.startReader(); + break; + } + } + + void _onTapSuccess() { + if (!mounted) return; + final prefs = context.read(); + final message = context.l10n.amountSpent( + formatBalance( + _notes!.amountMsats(), + prefs.showMsats, + prefs.bitcoinDisplay, + ), + ); + Navigator.of(context).popUntil((route) => route.isFirst); + ToastService().show( + message: message, + duration: const Duration(seconds: 5), + onTap: () {}, + icon: Icon(Icons.currency_bitcoin), + ); + } + + Future _ensureBlePermissions() async { + final statuses = + await [ + Permission.bluetoothScan, + Permission.bluetoothConnect, + // The sender advertises the rendezvous now: it is the GATT peripheral. + Permission.bluetoothAdvertise, + ].request(); + return statuses.values.every((s) => s.isGranted); + } + + Widget _buildTapStatus(ThemeData theme) { + final sending = _tapStatus != null; + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (sending) + const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator(strokeWidth: 2), + ) + else + Icon(Icons.contactless, size: 20, color: theme.colorScheme.primary), + const SizedBox(width: 8), + Flexible( + child: Text( + sending ? _tapStatus! : context.l10n.tapToSendHint, + style: theme.textTheme.bodyMedium?.copyWith( + color: theme.colorScheme.onSurfaceVariant, + ), + textAlign: TextAlign.center, + ), + ), + ], + ); + } + Widget _buildLoading(String message) { return Center( child: Column( @@ -343,6 +511,10 @@ class _EcashSendState extends State { setState(() => _mode = selection.first); }, ), + if (_tapAvailable) ...[ + const SizedBox(height: 16), + _buildTapStatus(theme), + ], const SizedBox(height: 24), Container( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 14), diff --git a/lib/frb_generated.dart b/lib/frb_generated.dart index 0b6a21ca..3c0a5324 100644 --- a/lib/frb_generated.dart +++ b/lib/frb_generated.dart @@ -13,6 +13,7 @@ import 'frb_generated.dart'; import 'frb_generated.io.dart' if (dart.library.js_interop) 'frb_generated.web.dart'; import 'lib.dart'; +import 'lnurl_client.dart'; import 'multimint.dart'; import 'nostr.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; @@ -69,7 +70,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.9.0'; @override - int get rustContentHash => -733282414; + int get rustContentHash => 586808380; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -348,8 +349,6 @@ abstract class RustLibApi extends BaseApi { required FederationId federationId, }); - Future crateMultimintMultimintClearPinHash({required Multimint that}); - Future> crateMultimintMultimintComputeAllGatewayPreviews({ required Multimint that, @@ -443,16 +442,96 @@ abstract class RustLibApi extends BaseApi { Future crateMultimintMultimintGetRecoveryProgress({ required Multimint that, required FederationId federationId, - required int moduleId, + required RecoveryModule recoveryModule, }); - Future crateMultimintMultimintGetRequirePinForSpending({ + Future crateMultimintMultimintGetShowMsats({required Multimint that}); + + Future crateMultimintMultimintGetTapReceiveEnabled({ required Multimint that, }); - Future crateMultimintMultimintGetShowMsats({required Multimint that}); + Future crateMultimintMultimintGuardianAddGateway({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + required String gatewayUrl, + }); + + Future crateMultimintMultimintGuardianAudit({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + }); + + Future + crateMultimintMultimintGuardianBackupStatistics({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + }); + + Future> crateMultimintMultimintGuardianListGateways({ + required Multimint that, + required FederationId federationId, + required int peer, + }); + + Future crateMultimintMultimintGuardianLogin({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + }); + + Future crateMultimintMultimintGuardianMetaAccept({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + required String valueHex, + }); + + Future crateMultimintMultimintGuardianMetaProposeField({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + required String field, + String? value, + }); + + Future crateMultimintMultimintGuardianMetaState({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + }); + + Future crateMultimintMultimintGuardianMetaWithdraw({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + }); + + Future crateMultimintMultimintGuardianRemoveGateway({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + required String gatewayUrl, + }); - Future crateMultimintMultimintHasPinCode({required Multimint that}); + Future crateMultimintMultimintGuardianStatus({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + }); Future crateMultimintMultimintHasSeedPhraseAck({ required Multimint that, @@ -469,6 +548,14 @@ abstract class RustLibApi extends BaseApi { required FederationId federationId, }); + Future crateMultimintMultimintMaxLightningSend({ + required Multimint that, + required FederationId federationId, + required SafeUrl gateway, + required bool isLnv2, + required bool loopback, + }); + Future crateMultimintMultimintNew({ required Database db, required MultimintCreation creationType, @@ -480,6 +567,14 @@ abstract class RustLibApi extends BaseApi { required OobNotes notes, }); + Future crateMultimintMultimintProbeInvoiceIsLoopback({ + required Multimint that, + required FederationId federationId, + required SafeUrl gateway, + required bool isLnv2, + required Bolt11Invoice invoice, + }); + Future<(Bolt11Invoice, OperationId)> crateMultimintMultimintReceive({ required Multimint that, required FederationId federationId, @@ -508,6 +603,11 @@ abstract class RustLibApi extends BaseApi { required Multimint that, }); + Future crateMultimintMultimintRefreshFederationMeta({ + required Multimint that, + required FederationId federationId, + }); + Future crateMultimintMultimintRegisterLnAddress({ required Multimint that, required FederationId federationId, @@ -529,13 +629,6 @@ abstract class RustLibApi extends BaseApi { required List backupInviteCodes, }); - Future crateMultimintMultimintSelectSendGateway({ - required Multimint that, - required FederationId federationId, - required Amount amount, - required Bolt11Invoice bolt11, - }); - Future crateMultimintMultimintSend({ required Multimint that, required FederationId federationId, @@ -570,19 +663,14 @@ abstract class RustLibApi extends BaseApi { required FiatCurrency fiatCurrency, }); - Future crateMultimintMultimintSetPinHash({ - required Multimint that, - required String pin, - }); - - Future crateMultimintMultimintSetRequirePinForSpending({ + Future crateMultimintMultimintSetShowMsats({ required Multimint that, - required bool require, + required bool showMsats, }); - Future crateMultimintMultimintSetShowMsats({ + Future crateMultimintMultimintSetTapReceiveEnabled({ required Multimint that, - required bool showMsats, + required bool enabled, }); Future> crateMultimintMultimintTransactions({ @@ -593,11 +681,6 @@ abstract class RustLibApi extends BaseApi { required List modules, }); - Future crateMultimintMultimintVerifyPin({ - required Multimint that, - required String pin, - }); - Future> crateMultimintMultimintWalletSummary({ required Multimint that, String? invite, @@ -649,12 +732,6 @@ abstract class RustLibApi extends BaseApi { required String npub, }); - Future<(NostrWalletConnectConfig, NWCConnectionInfo)> - crateNostrNostrClientGetNwcConfig({ - required NostrClient that, - required FederationId federationId, - }); - Future> crateNostrNostrClientGetNwcConnectionInfo({required NostrClient that}); @@ -676,11 +753,6 @@ abstract class RustLibApi extends BaseApi { required String relayUri, }); - Future crateNostrNostrClientListenForNwc({ - required FederationId federationId, - required NostrWalletConnectConfig nwcConfig, - }); - Future crateNostrNostrClientNew({ required Database db, required List recoverRelays, @@ -876,7 +948,7 @@ abstract class RustLibApi extends BaseApi { required FederationId federationId, }); - Future<(ReissueExternalNotesState, BigInt?)> crateAwaitEcashReissue({ + Future<(bool, BigInt?)> crateAwaitEcashReissue({ required FederationId federationId, required OperationId operationId, }); @@ -916,6 +988,11 @@ abstract class RustLibApi extends BaseApi { required BigInt amountSats, }); + Future crateChangePinCode({ + required String currentPin, + required String newPin, + }); + Future crateCheckEcashSpent({ required FederationId federationId, required String ecash, @@ -1014,6 +1091,7 @@ abstract class RustLibApi extends BaseApi { }); Future crateGetInvoiceFromLnaddressOrLnurl({ + required FederationId federationId, required BigInt amountMsats, required String lnaddressOrLnurl, }); @@ -1031,7 +1109,7 @@ abstract class RustLibApi extends BaseApi { Future<(int, int)> crateGetModuleRecoveryProgress({ required FederationId federationId, - required int moduleId, + required RecoveryModule recoveryModule, }); Future> crateGetNoteSummary({ @@ -1041,6 +1119,10 @@ abstract class RustLibApi extends BaseApi { Future> crateGetNwcConnectionInfo(); + Future crateGetNwcDailyBudgetSats(); + + Future crateGetNwcMaxPaymentSats(); + Future crateGetPeginFeeQuote({ required FederationId federationId, }); @@ -1051,6 +1133,78 @@ abstract class RustLibApi extends BaseApi { Future crateGetShowMsats(); + Future crateGetTapReceiveEnabled(); + + Future crateGuardianAddGateway({ + required FederationId federationId, + required int peer, + required String password, + required String gatewayUrl, + }); + + Future crateGuardianAudit({ + required FederationId federationId, + required int peer, + required String password, + }); + + Future crateGuardianBackupStatistics({ + required FederationId federationId, + required int peer, + required String password, + }); + + Future> crateGuardianListGateways({ + required FederationId federationId, + required int peer, + }); + + Future crateGuardianLogin({ + required FederationId federationId, + required int peer, + required String password, + }); + + Future crateGuardianMetaAccept({ + required FederationId federationId, + required int peer, + required String password, + required String valueHex, + }); + + Future crateGuardianMetaProposeField({ + required FederationId federationId, + required int peer, + required String password, + required String field, + String? value, + }); + + Future crateGuardianMetaState({ + required FederationId federationId, + required int peer, + required String password, + }); + + Future crateGuardianMetaWithdraw({ + required FederationId federationId, + required int peer, + required String password, + }); + + Future crateGuardianRemoveGateway({ + required FederationId federationId, + required int peer, + required String password, + required String gatewayUrl, + }); + + Future crateGuardianStatus({ + required FederationId federationId, + required int peer, + required String password, + }); + Future crateHasImportedContacts(); Future crateHasPinCode(); @@ -1088,6 +1242,13 @@ abstract class RustLibApi extends BaseApi { required bool isDesktop, }); + Future crateMaxLightningSend({ + required FederationId federationId, + required String lnaddressOrLnurl, + required String gateway, + required bool isLnv2, + }); + Future> cratePaginateContacts({ BigInt? cursorLastPaidAt, BigInt? cursorCreatedAt, @@ -1119,6 +1280,8 @@ abstract class RustLibApi extends BaseApi { required String bolt11, }); + Future cratePinLockoutSeconds(); + Future<(String, OperationId, String, String, BigInt)> crateReceive({ required FederationId federationId, required BigInt amountMsatsWithFees, @@ -1136,6 +1299,10 @@ abstract class RustLibApi extends BaseApi { Future crateRefreshConnections(); + Future crateRefreshFederationMeta({ + required FederationId federationId, + }); + Future crateRegisterLnAddress({ required FederationId federationId, required String recurringdApi, @@ -1175,12 +1342,6 @@ abstract class RustLibApi extends BaseApi { required BigInt feeMsats, }); - Future crateSendLnaddress({ - required FederationId federationId, - required BigInt amountMsats, - required String address, - }); - Future crateSetBitcoinDisplay({required BitcoinDisplay bitcoinDisplay}); Future crateSetFederationOrder({required List order}); @@ -1193,12 +1354,21 @@ abstract class RustLibApi extends BaseApi { required bool isDesktop, }); + Future crateSetNwcDailyBudgetSats({required BigInt sats}); + + Future crateSetNwcMaxPaymentSats({required BigInt sats}); + Future crateSetPinCode({required String pin}); - Future crateSetRequirePinForSpending({required bool require}); + Future crateSetRequirePinForSpending({ + required bool require, + String? currentPin, + }); Future crateSetShowMsats({required bool showMsats}); + Future crateSetTapReceiveEnabled({required bool enabled}); + Stream crateSubscribeDeposits({ required FederationId federationId, }); @@ -1212,7 +1382,7 @@ abstract class RustLibApi extends BaseApi { Stream<(int, int)> crateSubscribeRecoveryProgress({ required FederationId federationId, - required int moduleId, + required RecoveryModule recoveryModule, }); Future crateSyncContacts({required String npub}); @@ -3298,7 +3468,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { }, codec: SseCodec( decodeSuccessData: sse_decode_u_64, - decodeErrorData: null, + decodeErrorData: sse_decode_AnyhowException, ), constMeta: kCrateMultimintMultimintBalanceConstMeta, argValues: [that, federationId], @@ -3554,40 +3724,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ], ); - @override - Future crateMultimintMultimintClearPinHash({required Multimint that}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( - that, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 56, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kCrateMultimintMultimintClearPinHashConstMeta, - argValues: [that], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateMultimintMultimintClearPinHashConstMeta => - const TaskConstMeta( - debugName: "Multimint_clear_pin_hash", - argNames: ["that"], - ); - @override Future> crateMultimintMultimintComputeAllGatewayPreviews({ @@ -3619,7 +3755,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 57, + funcId: 56, port: port_, ); }, @@ -3675,7 +3811,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 58, + funcId: 57, port: port_, ); }, @@ -3732,7 +3868,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 59, + funcId: 58, port: port_, ); }, @@ -3768,7 +3904,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 60, + funcId: 59, port: port_, ); }, @@ -3810,7 +3946,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 61, + funcId: 60, port: port_, ); }, @@ -3847,7 +3983,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 62, + funcId: 61, port: port_, ); }, @@ -3883,7 +4019,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 63, + funcId: 62, port: port_, ); }, @@ -3919,7 +4055,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 64, + funcId: 63, port: port_, ); }, @@ -3955,7 +4091,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 65, + funcId: 64, port: port_, ); }, @@ -3998,7 +4134,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 66, + funcId: 65, port: port_, ); }, @@ -4035,7 +4171,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 67, + funcId: 66, port: port_, ); }, @@ -4072,7 +4208,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 68, + funcId: 67, port: port_, ); }, @@ -4115,7 +4251,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 69, + funcId: 68, port: port_, ); }, @@ -4156,7 +4292,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 70, + funcId: 69, port: port_, ); }, @@ -4200,7 +4336,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 71, + funcId: 70, port: port_, ); }, @@ -4237,7 +4373,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 72, + funcId: 71, port: port_, ); }, @@ -4278,7 +4414,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 73, + funcId: 72, port: port_, ); }, @@ -4319,7 +4455,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 74, + funcId: 73, port: port_, ); }, @@ -4344,7 +4480,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { Future crateMultimintMultimintGetRecoveryProgress({ required Multimint that, required FederationId federationId, - required int moduleId, + required RecoveryModule recoveryModule, }) { return handler.executeNormal( NormalTask( @@ -4358,11 +4494,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(moduleId, serializer); + sse_encode_recovery_module(recoveryModule, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 75, + funcId: 74, port: port_, ); }, @@ -4372,7 +4508,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeErrorData: null, ), constMeta: kCrateMultimintMultimintGetRecoveryProgressConstMeta, - argValues: [that, federationId, moduleId], + argValues: [that, federationId, recoveryModule], apiImpl: this, ), ); @@ -4381,13 +4517,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kCrateMultimintMultimintGetRecoveryProgressConstMeta => const TaskConstMeta( debugName: "Multimint_get_recovery_progress", - argNames: ["that", "federationId", "moduleId"], + argNames: ["that", "federationId", "recoveryModule"], ); @override - Future crateMultimintMultimintGetRequirePinForSpending({ - required Multimint that, - }) { + Future crateMultimintMultimintGetShowMsats({required Multimint that}) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -4399,7 +4533,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 76, + funcId: 75, port: port_, ); }, @@ -4407,21 +4541,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_bool, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintGetRequirePinForSpendingConstMeta, + constMeta: kCrateMultimintMultimintGetShowMsatsConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGetRequirePinForSpendingConstMeta => + TaskConstMeta get kCrateMultimintMultimintGetShowMsatsConstMeta => const TaskConstMeta( - debugName: "Multimint_get_require_pin_for_spending", + debugName: "Multimint_get_show_msats", argNames: ["that"], ); @override - Future crateMultimintMultimintGetShowMsats({required Multimint that}) { + Future crateMultimintMultimintGetTapReceiveEnabled({ + required Multimint that, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -4433,7 +4569,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 77, + funcId: 76, port: port_, ); }, @@ -4441,21 +4577,27 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_bool, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintGetShowMsatsConstMeta, + constMeta: kCrateMultimintMultimintGetTapReceiveEnabledConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintGetShowMsatsConstMeta => + TaskConstMeta get kCrateMultimintMultimintGetTapReceiveEnabledConstMeta => const TaskConstMeta( - debugName: "Multimint_get_show_msats", + debugName: "Multimint_get_tap_receive_enabled", argNames: ["that"], ); @override - Future crateMultimintMultimintHasPinCode({required Multimint that}) { + Future crateMultimintMultimintGuardianAddGateway({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, + required String gatewayUrl, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -4464,33 +4606,43 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); + sse_encode_String(gatewayUrl, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 78, + funcId: 77, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_bool, - decodeErrorData: null, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintHasPinCodeConstMeta, - argValues: [that], + constMeta: kCrateMultimintMultimintGuardianAddGatewayConstMeta, + argValues: [that, federationId, peer, password, gatewayUrl], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintHasPinCodeConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianAddGatewayConstMeta => const TaskConstMeta( - debugName: "Multimint_has_pin_code", - argNames: ["that"], + debugName: "Multimint_guardian_add_gateway", + argNames: ["that", "federationId", "peer", "password", "gatewayUrl"], ); @override - Future crateMultimintMultimintHasSeedPhraseAck({ + Future crateMultimintMultimintGuardianAudit({ required Multimint that, + required FederationId federationId, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( @@ -4500,81 +4652,93 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 79, + funcId: 78, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: null, + decodeSuccessData: sse_decode_guardian_audit_summary, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintHasSeedPhraseAckConstMeta, - argValues: [that], + constMeta: kCrateMultimintMultimintGuardianAuditConstMeta, + argValues: [that, federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintHasSeedPhraseAckConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianAuditConstMeta => const TaskConstMeta( - debugName: "Multimint_has_seed_phrase_ack", - argNames: ["that"], + debugName: "Multimint_guardian_audit", + argNames: ["that", "federationId", "peer", "password"], ); @override - Future crateMultimintMultimintJoinFederation({ + Future + crateMultimintMultimintGuardianBackupStatistics({ required Multimint that, - required String invite, - required bool recover, + required FederationId federationId, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_String(invite, serializer); - sse_encode_bool(recover, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 80, + funcId: 79, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationSelector, + decodeSuccessData: sse_decode_guardian_backup_statistics, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintJoinFederationConstMeta, - argValues: [that, invite, recover], + constMeta: kCrateMultimintMultimintGuardianBackupStatisticsConstMeta, + argValues: [that, federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintJoinFederationConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianBackupStatisticsConstMeta => const TaskConstMeta( - debugName: "Multimint_join_federation", - argNames: ["that", "invite", "recover"], + debugName: "Multimint_guardian_backup_statistics", + argNames: ["that", "federationId", "peer", "password"], ); @override - Future crateMultimintMultimintLeaveFederation({ + Future> crateMultimintMultimintGuardianListGateways({ required Multimint that, required FederationId federationId, + required int peer, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); @@ -4582,73 +4746,83 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); + sse_encode_u_16(peer, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 81, + funcId: 80, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: sse_decode_list_String, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintLeaveFederationConstMeta, - argValues: [that, federationId], + constMeta: kCrateMultimintMultimintGuardianListGatewaysConstMeta, + argValues: [that, federationId, peer], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintLeaveFederationConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianListGatewaysConstMeta => const TaskConstMeta( - debugName: "Multimint_leave_federation", - argNames: ["that", "federationId"], + debugName: "Multimint_guardian_list_gateways", + argNames: ["that", "federationId", "peer"], ); @override - Future crateMultimintMultimintNew({ - required Database db, - required MultimintCreation creationType, + Future crateMultimintMultimintGuardianLogin({ + required Multimint that, + required FederationId federationId, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDatabase( - db, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + that, serializer, ); - sse_encode_box_autoadd_multimint_creation(creationType, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 82, + funcId: 81, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint, + decodeSuccessData: sse_decode_bool, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintNewConstMeta, - argValues: [db, creationType], + constMeta: kCrateMultimintMultimintGuardianLoginConstMeta, + argValues: [that, federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintNewConstMeta => const TaskConstMeta( - debugName: "Multimint_new", - argNames: ["db", "creationType"], - ); + TaskConstMeta get kCrateMultimintMultimintGuardianLoginConstMeta => + const TaskConstMeta( + debugName: "Multimint_guardian_login", + argNames: ["that", "federationId", "peer", "password"], + ); @override - Future crateMultimintMultimintParseEcash({ + Future crateMultimintMultimintGuardianMetaAccept({ required Multimint that, required FederationId federationId, - required OobNotes notes, + required int peer, + required String password, + required String valueHex, }) { return handler.executeNormal( NormalTask( @@ -4662,44 +4836,41 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotes( - notes, - serializer, - ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); + sse_encode_String(valueHex, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 83, + funcId: 82, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, + decodeSuccessData: sse_decode_unit, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintParseEcashConstMeta, - argValues: [that, federationId, notes], + constMeta: kCrateMultimintMultimintGuardianMetaAcceptConstMeta, + argValues: [that, federationId, peer, password, valueHex], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintParseEcashConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianMetaAcceptConstMeta => const TaskConstMeta( - debugName: "Multimint_parse_ecash", - argNames: ["that", "federationId", "notes"], + debugName: "Multimint_guardian_meta_accept", + argNames: ["that", "federationId", "peer", "password", "valueHex"], ); @override - Future<(Bolt11Invoice, OperationId)> crateMultimintMultimintReceive({ + Future crateMultimintMultimintGuardianMetaProposeField({ required Multimint that, required FederationId federationId, - required BigInt amountMsatsWithFees, - required BigInt amountMsatsWithoutFees, - required BigInt federationFeeMsats, - required BigInt gatewayFeeMsats, - required SafeUrl gateway, - required bool isLnv2, + required int peer, + required String password, + required String field, + String? value, }) { return handler.executeNormal( NormalTask( @@ -4713,63 +4884,47 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_64(amountMsatsWithFees, serializer); - sse_encode_u_64(amountMsatsWithoutFees, serializer); - sse_encode_u_64(federationFeeMsats, serializer); - sse_encode_u_64(gatewayFeeMsats, serializer); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( - gateway, - serializer, - ); - sse_encode_bool(isLnv2, serializer); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); + sse_encode_String(field, serializer); + sse_encode_opt_String(value, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 84, + funcId: 83, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_bolt_11_invoice_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_operation_id, + decodeSuccessData: sse_decode_unit, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintReceiveConstMeta, - argValues: [ - that, - federationId, - amountMsatsWithFees, - amountMsatsWithoutFees, - federationFeeMsats, - gatewayFeeMsats, - gateway, - isLnv2, - ], + constMeta: kCrateMultimintMultimintGuardianMetaProposeFieldConstMeta, + argValues: [that, federationId, peer, password, field, value], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintReceiveConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianMetaProposeFieldConstMeta => const TaskConstMeta( - debugName: "Multimint_receive", + debugName: "Multimint_guardian_meta_propose_field", argNames: [ "that", "federationId", - "amountMsatsWithFees", - "amountMsatsWithoutFees", - "federationFeeMsats", - "gatewayFeeMsats", - "gateway", - "isLnv2", + "peer", + "password", + "field", + "value", ], ); @override - Future crateMultimintMultimintRecheckAddress({ + Future crateMultimintMultimintGuardianMetaState({ required Multimint that, required FederationId federationId, - required BigInt tweakIdx, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( @@ -4783,37 +4938,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_64(tweakIdx, serializer); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 85, + funcId: 84, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_guardian_meta_state, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintRecheckAddressConstMeta, - argValues: [that, federationId, tweakIdx], + constMeta: kCrateMultimintMultimintGuardianMetaStateConstMeta, + argValues: [that, federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRecheckAddressConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianMetaStateConstMeta => const TaskConstMeta( - debugName: "Multimint_recheck_address", - argNames: ["that", "federationId", "tweakIdx"], + debugName: "Multimint_guardian_meta_state", + argNames: ["that", "federationId", "peer", "password"], ); @override - Future crateMultimintMultimintRecoverLnAddress({ + Future crateMultimintMultimintGuardianMetaWithdraw({ required Multimint that, required FederationId federationId, - required String lnAddressApi, - required String recurringdApi, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( @@ -4827,12 +4983,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_String(lnAddressApi, serializer); - sse_encode_String(recurringdApi, serializer); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 86, + funcId: 85, port: port_, ); }, @@ -4840,22 +4996,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintRecoverLnAddressConstMeta, - argValues: [that, federationId, lnAddressApi, recurringdApi], + constMeta: kCrateMultimintMultimintGuardianMetaWithdrawConstMeta, + argValues: [that, federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRecoverLnAddressConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianMetaWithdrawConstMeta => const TaskConstMeta( - debugName: "Multimint_recover_ln_address", - argNames: ["that", "federationId", "lnAddressApi", "recurringdApi"], + debugName: "Multimint_guardian_meta_withdraw", + argNames: ["that", "federationId", "peer", "password"], ); @override - Future crateMultimintMultimintRefreshConnections({ + Future crateMultimintMultimintGuardianRemoveGateway({ required Multimint that, + required FederationId federationId, + required int peer, + required String password, + required String gatewayUrl, }) { return handler.executeNormal( NormalTask( @@ -4865,38 +5025,43 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); + sse_encode_String(gatewayUrl, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 87, + funcId: 86, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: sse_decode_bool, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintRefreshConnectionsConstMeta, - argValues: [that], + constMeta: kCrateMultimintMultimintGuardianRemoveGatewayConstMeta, + argValues: [that, federationId, peer, password, gatewayUrl], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRefreshConnectionsConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianRemoveGatewayConstMeta => const TaskConstMeta( - debugName: "Multimint_refresh_connections", - argNames: ["that"], + debugName: "Multimint_guardian_remove_gateway", + argNames: ["that", "federationId", "peer", "password", "gatewayUrl"], ); @override - Future crateMultimintMultimintRegisterLnAddress({ + Future crateMultimintMultimintGuardianStatus({ required Multimint that, required FederationId federationId, - required String recurringdApi, - required String lnAddressApi, - required String username, - required String domain, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( @@ -4910,54 +5075,35 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_String(recurringdApi, serializer); - sse_encode_String(lnAddressApi, serializer); - sse_encode_String(username, serializer); - sse_encode_String(domain, serializer); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 88, + funcId: 87, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_guardian_status_summary, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintRegisterLnAddressConstMeta, - argValues: [ - that, - federationId, - recurringdApi, - lnAddressApi, - username, - domain, - ], + constMeta: kCrateMultimintMultimintGuardianStatusConstMeta, + argValues: [that, federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRegisterLnAddressConstMeta => + TaskConstMeta get kCrateMultimintMultimintGuardianStatusConstMeta => const TaskConstMeta( - debugName: "Multimint_register_ln_address", - argNames: [ - "that", - "federationId", - "recurringdApi", - "lnAddressApi", - "username", - "domain", - ], + debugName: "Multimint_guardian_status", + argNames: ["that", "federationId", "peer", "password"], ); @override - Future crateMultimintMultimintReissueEcash({ + Future crateMultimintMultimintHasSeedPhraseAck({ required Multimint that, - required FederationId federationId, - required String ecash, - required ReissueFees fees, }) { return handler.executeNormal( NormalTask( @@ -4967,41 +5113,35 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, + pdeCallFfi( + generalizedFrbRustBinding, serializer, - ); - sse_encode_String(ecash, serializer); - sse_encode_box_autoadd_reissue_fees(fees, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 89, + funcId: 88, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, + decodeSuccessData: sse_decode_bool, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintReissueEcashConstMeta, - argValues: [that, federationId, ecash, fees], + constMeta: kCrateMultimintMultimintHasSeedPhraseAckConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintReissueEcashConstMeta => + TaskConstMeta get kCrateMultimintMultimintHasSeedPhraseAckConstMeta => const TaskConstMeta( - debugName: "Multimint_reissue_ecash", - argNames: ["that", "federationId", "ecash", "fees"], + debugName: "Multimint_has_seed_phrase_ack", + argNames: ["that"], ); @override - Future crateMultimintMultimintRejoinFromBackupInvites({ + Future crateMultimintMultimintJoinFederation({ required Multimint that, - required List backupInviteCodes, + required String invite, + required bool recover, }) { return handler.executeNormal( NormalTask( @@ -5011,43 +5151,43 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_list_String(backupInviteCodes, serializer); + sse_encode_String(invite, serializer); + sse_encode_bool(recover, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 90, + funcId: 89, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationSelector, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintRejoinFromBackupInvitesConstMeta, - argValues: [that, backupInviteCodes], + constMeta: kCrateMultimintMultimintJoinFederationConstMeta, + argValues: [that, invite, recover], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintRejoinFromBackupInvitesConstMeta => + TaskConstMeta get kCrateMultimintMultimintJoinFederationConstMeta => const TaskConstMeta( - debugName: "Multimint_rejoin_from_backup_invites", - argNames: ["that", "backupInviteCodes"], + debugName: "Multimint_join_federation", + argNames: ["that", "invite", "recover"], ); @override - Future crateMultimintMultimintSelectSendGateway({ + Future crateMultimintMultimintLeaveFederation({ required Multimint that, required FederationId federationId, - required Amount amount, - required Bolt11Invoice bolt11, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); @@ -5055,49 +5195,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAmount( - amount, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBolt11Invoice( - bolt11, - serializer, - ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 91, + funcId: 90, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_send_gateway_selection, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintSelectSendGatewayConstMeta, - argValues: [that, federationId, amount, bolt11], + constMeta: kCrateMultimintMultimintLeaveFederationConstMeta, + argValues: [that, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSelectSendGatewayConstMeta => + TaskConstMeta get kCrateMultimintMultimintLeaveFederationConstMeta => const TaskConstMeta( - debugName: "Multimint_select_send_gateway", - argNames: ["that", "federationId", "amount", "bolt11"], + debugName: "Multimint_leave_federation", + argNames: ["that", "federationId"], ); @override - Future crateMultimintMultimintSend({ + Future crateMultimintMultimintMaxLightningSend({ required Multimint that, required FederationId federationId, - required String invoice, required SafeUrl gateway, required bool isLnv2, - required BigInt amountWithFees, - required BigInt federationFeeMsats, - required BigInt gatewayFeeMsats, - String? lnAddress, + required bool loopback, }) { return handler.executeNormal( NormalTask( @@ -5111,111 +5239,79 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_String(invoice, serializer); sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( gateway, serializer, ); sse_encode_bool(isLnv2, serializer); - sse_encode_u_64(amountWithFees, serializer); - sse_encode_u_64(federationFeeMsats, serializer); - sse_encode_u_64(gatewayFeeMsats, serializer); - sse_encode_opt_String(lnAddress, serializer); + sse_encode_bool(loopback, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 92, + funcId: 91, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, - decodeErrorData: null, + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintSendConstMeta, - argValues: [ - that, - federationId, - invoice, - gateway, - isLnv2, - amountWithFees, - federationFeeMsats, - gatewayFeeMsats, - lnAddress, - ], + constMeta: kCrateMultimintMultimintMaxLightningSendConstMeta, + argValues: [that, federationId, gateway, isLnv2, loopback], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSendConstMeta => + TaskConstMeta get kCrateMultimintMultimintMaxLightningSendConstMeta => const TaskConstMeta( - debugName: "Multimint_send", - argNames: [ - "that", - "federationId", - "invoice", - "gateway", - "isLnv2", - "amountWithFees", - "federationFeeMsats", - "gatewayFeeMsats", - "lnAddress", - ], + debugName: "Multimint_max_lightning_send", + argNames: ["that", "federationId", "gateway", "isLnv2", "loopback"], ); @override - Future crateMultimintMultimintSendEcash({ - required Multimint that, - required FederationId federationId, - required BigInt amountMsats, - required BigInt feeMsats, + Future crateMultimintMultimintNew({ + required Database db, + required MultimintCreation creationType, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( - that, - serializer, - ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDatabase( + db, serializer, ); - sse_encode_u_64(amountMsats, serializer); - sse_encode_u_64(feeMsats, serializer); + sse_encode_box_autoadd_multimint_creation(creationType, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 93, + funcId: 92, port: port_, ); }, codec: SseCodec( decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOOBNotesWrapper, - decodeErrorData: null, + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintSendEcashConstMeta, - argValues: [that, federationId, amountMsats, feeMsats], + constMeta: kCrateMultimintMultimintNewConstMeta, + argValues: [db, creationType], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSendEcashConstMeta => - const TaskConstMeta( - debugName: "Multimint_send_ecash", - argNames: ["that", "federationId", "amountMsats", "feeMsats"], - ); + TaskConstMeta get kCrateMultimintMultimintNewConstMeta => const TaskConstMeta( + debugName: "Multimint_new", + argNames: ["db", "creationType"], + ); @override - Future crateMultimintMultimintSetBitcoinDisplay({ + Future crateMultimintMultimintParseEcash({ required Multimint that, - required BitcoinDisplay bitcoinDisplay, + required FederationId federationId, + required OobNotes notes, }) { return handler.executeNormal( NormalTask( @@ -5225,35 +5321,45 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_bitcoin_display(bitcoinDisplay, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotes( + notes, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 94, + funcId: 93, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintSetBitcoinDisplayConstMeta, - argValues: [that, bitcoinDisplay], + constMeta: kCrateMultimintMultimintParseEcashConstMeta, + argValues: [that, federationId, notes], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetBitcoinDisplayConstMeta => + TaskConstMeta get kCrateMultimintMultimintParseEcashConstMeta => const TaskConstMeta( - debugName: "Multimint_set_bitcoin_display", - argNames: ["that", "bitcoinDisplay"], + debugName: "Multimint_parse_ecash", + argNames: ["that", "federationId", "notes"], ); @override - Future crateMultimintMultimintSetFederationOrder({ + Future crateMultimintMultimintProbeInvoiceIsLoopback({ required Multimint that, - required List order, + required FederationId federationId, + required SafeUrl gateway, + required bool isLnv2, + required Bolt11Invoice invoice, }) { return handler.executeNormal( NormalTask( @@ -5263,38 +5369,53 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - order, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + gateway, + serializer, + ); + sse_encode_bool(isLnv2, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBolt11Invoice( + invoice, serializer, ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 95, + funcId: 94, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: sse_decode_bool, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintSetFederationOrderConstMeta, - argValues: [that, order], + constMeta: kCrateMultimintMultimintProbeInvoiceIsLoopbackConstMeta, + argValues: [that, federationId, gateway, isLnv2, invoice], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetFederationOrderConstMeta => + TaskConstMeta get kCrateMultimintMultimintProbeInvoiceIsLoopbackConstMeta => const TaskConstMeta( - debugName: "Multimint_set_federation_order", - argNames: ["that", "order"], + debugName: "Multimint_probe_invoice_is_loopback", + argNames: ["that", "federationId", "gateway", "isLnv2", "invoice"], ); @override - Future crateMultimintMultimintSetFiatCurrency({ + Future<(Bolt11Invoice, OperationId)> crateMultimintMultimintReceive({ required Multimint that, - required FiatCurrency fiatCurrency, + required FederationId federationId, + required BigInt amountMsatsWithFees, + required BigInt amountMsatsWithoutFees, + required BigInt federationFeeMsats, + required BigInt gatewayFeeMsats, + required SafeUrl gateway, + required bool isLnv2, }) { return handler.executeNormal( NormalTask( @@ -5304,35 +5425,67 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_fiat_currency(fiatCurrency, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_64(amountMsatsWithFees, serializer); + sse_encode_u_64(amountMsatsWithoutFees, serializer); + sse_encode_u_64(federationFeeMsats, serializer); + sse_encode_u_64(gatewayFeeMsats, serializer); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + gateway, + serializer, + ); + sse_encode_bool(isLnv2, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 96, + funcId: 95, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: + sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_bolt_11_invoice_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_operation_id, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintSetFiatCurrencyConstMeta, - argValues: [that, fiatCurrency], + constMeta: kCrateMultimintMultimintReceiveConstMeta, + argValues: [ + that, + federationId, + amountMsatsWithFees, + amountMsatsWithoutFees, + federationFeeMsats, + gatewayFeeMsats, + gateway, + isLnv2, + ], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetFiatCurrencyConstMeta => + TaskConstMeta get kCrateMultimintMultimintReceiveConstMeta => const TaskConstMeta( - debugName: "Multimint_set_fiat_currency", - argNames: ["that", "fiatCurrency"], + debugName: "Multimint_receive", + argNames: [ + "that", + "federationId", + "amountMsatsWithFees", + "amountMsatsWithoutFees", + "federationFeeMsats", + "gatewayFeeMsats", + "gateway", + "isLnv2", + ], ); @override - Future crateMultimintMultimintSetPinHash({ + Future crateMultimintMultimintRecheckAddress({ required Multimint that, - required String pin, + required FederationId federationId, + required BigInt tweakIdx, }) { return handler.executeNormal( NormalTask( @@ -5342,7 +5495,56 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_String(pin, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_64(tweakIdx, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 96, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateMultimintMultimintRecheckAddressConstMeta, + argValues: [that, federationId, tweakIdx], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateMultimintMultimintRecheckAddressConstMeta => + const TaskConstMeta( + debugName: "Multimint_recheck_address", + argNames: ["that", "federationId", "tweakIdx"], + ); + + @override + Future crateMultimintMultimintRecoverLnAddress({ + required Multimint that, + required FederationId federationId, + required String lnAddressApi, + required String recurringdApi, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + that, + serializer, + ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(lnAddressApi, serializer); + sse_encode_String(recurringdApi, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5354,23 +5556,22 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintSetPinHashConstMeta, - argValues: [that, pin], + constMeta: kCrateMultimintMultimintRecoverLnAddressConstMeta, + argValues: [that, federationId, lnAddressApi, recurringdApi], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetPinHashConstMeta => + TaskConstMeta get kCrateMultimintMultimintRecoverLnAddressConstMeta => const TaskConstMeta( - debugName: "Multimint_set_pin_hash", - argNames: ["that", "pin"], + debugName: "Multimint_recover_ln_address", + argNames: ["that", "federationId", "lnAddressApi", "recurringdApi"], ); @override - Future crateMultimintMultimintSetRequirePinForSpending({ + Future crateMultimintMultimintRefreshConnections({ required Multimint that, - required bool require, }) { return handler.executeNormal( NormalTask( @@ -5380,7 +5581,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_bool(require, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5392,23 +5592,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintSetRequirePinForSpendingConstMeta, - argValues: [that, require], + constMeta: kCrateMultimintMultimintRefreshConnectionsConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetRequirePinForSpendingConstMeta => + TaskConstMeta get kCrateMultimintMultimintRefreshConnectionsConstMeta => const TaskConstMeta( - debugName: "Multimint_set_require_pin_for_spending", - argNames: ["that", "require"], + debugName: "Multimint_refresh_connections", + argNames: ["that"], ); @override - Future crateMultimintMultimintSetShowMsats({ + Future crateMultimintMultimintRefreshFederationMeta({ required Multimint that, - required bool showMsats, + required FederationId federationId, }) { return handler.executeNormal( NormalTask( @@ -5418,7 +5618,10 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_bool(showMsats, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5427,29 +5630,31 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationMeta, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintSetShowMsatsConstMeta, - argValues: [that, showMsats], + constMeta: kCrateMultimintMultimintRefreshFederationMetaConstMeta, + argValues: [that, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintSetShowMsatsConstMeta => + TaskConstMeta get kCrateMultimintMultimintRefreshFederationMetaConstMeta => const TaskConstMeta( - debugName: "Multimint_set_show_msats", - argNames: ["that", "showMsats"], + debugName: "Multimint_refresh_federation_meta", + argNames: ["that", "federationId"], ); @override - Future> crateMultimintMultimintTransactions({ + Future crateMultimintMultimintRegisterLnAddress({ required Multimint that, required FederationId federationId, - BigInt? timestamp, - Uint8List? operationId, - required List modules, + required String recurringdApi, + required String lnAddressApi, + required String username, + required String domain, }) { return handler.executeNormal( NormalTask( @@ -5463,9 +5668,10 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_opt_box_autoadd_u_64(timestamp, serializer); - sse_encode_opt_list_prim_u_8_strict(operationId, serializer); - sse_encode_list_String(modules, serializer); + sse_encode_String(recurringdApi, serializer); + sse_encode_String(lnAddressApi, serializer); + sse_encode_String(username, serializer); + sse_encode_String(domain, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5474,32 +5680,42 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_transaction, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateMultimintMultimintTransactionsConstMeta, - argValues: [that, federationId, timestamp, operationId, modules], + constMeta: kCrateMultimintMultimintRegisterLnAddressConstMeta, + argValues: [ + that, + federationId, + recurringdApi, + lnAddressApi, + username, + domain, + ], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintTransactionsConstMeta => + TaskConstMeta get kCrateMultimintMultimintRegisterLnAddressConstMeta => const TaskConstMeta( - debugName: "Multimint_transactions", + debugName: "Multimint_register_ln_address", argNames: [ "that", "federationId", - "timestamp", - "operationId", - "modules", + "recurringdApi", + "lnAddressApi", + "username", + "domain", ], ); @override - Future crateMultimintMultimintVerifyPin({ + Future crateMultimintMultimintReissueEcash({ required Multimint that, - required String pin, + required FederationId federationId, + required String ecash, + required ReissueFees fees, }) { return handler.executeNormal( NormalTask( @@ -5509,7 +5725,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_String(pin, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(ecash, serializer); + sse_encode_box_autoadd_reissue_fees(fees, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5518,41 +5739,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintVerifyPinConstMeta, - argValues: [that, pin], + constMeta: kCrateMultimintMultimintReissueEcashConstMeta, + argValues: [that, federationId, ecash, fees], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintVerifyPinConstMeta => + TaskConstMeta get kCrateMultimintMultimintReissueEcashConstMeta => const TaskConstMeta( - debugName: "Multimint_verify_pin", - argNames: ["that", "pin"], + debugName: "Multimint_reissue_ecash", + argNames: ["that", "federationId", "ecash", "fees"], ); @override - Future> crateMultimintMultimintWalletSummary({ + Future crateMultimintMultimintRejoinFromBackupInvites({ required Multimint that, - String? invite, - FederationId? federationId, + required List backupInviteCodes, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_opt_String(invite, serializer); - sse_encode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); + sse_encode_list_String(backupInviteCodes, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5561,30 +5778,33 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_utxo, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintWalletSummaryConstMeta, - argValues: [that, invite, federationId], + constMeta: kCrateMultimintMultimintRejoinFromBackupInvitesConstMeta, + argValues: [that, backupInviteCodes], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintWalletSummaryConstMeta => + TaskConstMeta get kCrateMultimintMultimintRejoinFromBackupInvitesConstMeta => const TaskConstMeta( - debugName: "Multimint_wallet_summary", - argNames: ["that", "invite", "federationId"], + debugName: "Multimint_rejoin_from_backup_invites", + argNames: ["that", "backupInviteCodes"], ); @override - Future crateMultimintMultimintWithdrawToAddress({ + Future crateMultimintMultimintSend({ required Multimint that, required FederationId federationId, - required String address, - required BigInt amountSats, - required WithdrawFees fees, + required String invoice, + required SafeUrl gateway, + required bool isLnv2, + required BigInt amountWithFees, required BigInt federationFeeMsats, + required BigInt gatewayFeeMsats, + String? lnAddress, }) { return handler.executeNormal( NormalTask( @@ -5598,13 +5818,16 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_String(address, serializer); - sse_encode_u_64(amountSats, serializer); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( - fees, + sse_encode_String(invoice, serializer); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + gateway, serializer, ); + sse_encode_bool(isLnv2, serializer); + sse_encode_u_64(amountWithFees, serializer); sse_encode_u_64(federationFeeMsats, serializer); + sse_encode_u_64(gatewayFeeMsats, serializer); + sse_encode_opt_String(lnAddress, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5617,47 +5840,60 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, decodeErrorData: null, ), - constMeta: kCrateMultimintMultimintWithdrawToAddressConstMeta, + constMeta: kCrateMultimintMultimintSendConstMeta, argValues: [ that, federationId, - address, - amountSats, - fees, + invoice, + gateway, + isLnv2, + amountWithFees, federationFeeMsats, + gatewayFeeMsats, + lnAddress, ], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintMultimintWithdrawToAddressConstMeta => + TaskConstMeta get kCrateMultimintMultimintSendConstMeta => const TaskConstMeta( - debugName: "Multimint_withdraw_to_address", + debugName: "Multimint_send", argNames: [ "that", "federationId", - "address", - "amountSats", - "fees", + "invoice", + "gateway", + "isLnv2", + "amountWithFees", "federationFeeMsats", + "gatewayFeeMsats", + "lnAddress", ], ); @override - Future crateNostrNostrClientBackupInviteCodes({ - required NostrClient that, - required List inviteCodes, + Future crateMultimintMultimintSendEcash({ + required Multimint that, + required FederationId federationId, + required BigInt amountMsats, + required BigInt feeMsats, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_list_String(inviteCodes, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_64(amountMsats, serializer); + sse_encode_u_64(feeMsats, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5666,34 +5902,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOOBNotesWrapper, + decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientBackupInviteCodesConstMeta, - argValues: [that, inviteCodes], + constMeta: kCrateMultimintMultimintSendEcashConstMeta, + argValues: [that, federationId, amountMsats, feeMsats], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientBackupInviteCodesConstMeta => + TaskConstMeta get kCrateMultimintMultimintSendEcashConstMeta => const TaskConstMeta( - debugName: "NostrClient_backup_invite_codes", - argNames: ["that", "inviteCodes"], + debugName: "Multimint_send_ecash", + argNames: ["that", "federationId", "amountMsats", "feeMsats"], ); @override - Future crateNostrNostrClientClearContactsAndStopSync({ - required NostrClient that, + Future crateMultimintMultimintSetBitcoinDisplay({ + required Multimint that, + required BitcoinDisplay bitcoinDisplay, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); + sse_encode_bitcoin_display(bitcoinDisplay, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5702,36 +5941,39 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_usize, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientClearContactsAndStopSyncConstMeta, - argValues: [that], + constMeta: kCrateMultimintMultimintSetBitcoinDisplayConstMeta, + argValues: [that, bitcoinDisplay], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientClearContactsAndStopSyncConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetBitcoinDisplayConstMeta => const TaskConstMeta( - debugName: "NostrClient_clear_contacts_and_stop_sync", - argNames: ["that"], + debugName: "Multimint_set_bitcoin_display", + argNames: ["that", "bitcoinDisplay"], ); @override - Future> crateNostrNostrClientFetchNostrProfiles({ - required NostrClient that, - required List npubs, + Future crateMultimintMultimintSetFederationOrder({ + required Multimint that, + required List order, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_list_String(npubs, serializer); + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + order, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5740,34 +5982,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_nostr_profile, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientFetchNostrProfilesConstMeta, - argValues: [that, npubs], + constMeta: kCrateMultimintMultimintSetFederationOrderConstMeta, + argValues: [that, order], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientFetchNostrProfilesConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetFederationOrderConstMeta => const TaskConstMeta( - debugName: "NostrClient_fetch_nostr_profiles", - argNames: ["that", "npubs"], + debugName: "Multimint_set_federation_order", + argNames: ["that", "order"], ); @override - Future> crateNostrNostrClientGetAllContacts({ - required NostrClient that, + Future crateMultimintMultimintSetFiatCurrency({ + required Multimint that, + required FiatCurrency fiatCurrency, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); + sse_encode_fiat_currency(fiatCurrency, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5776,34 +6020,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_contact, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetAllContactsConstMeta, - argValues: [that], + constMeta: kCrateMultimintMultimintSetFiatCurrencyConstMeta, + argValues: [that, fiatCurrency], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetAllContactsConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetFiatCurrencyConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_all_contacts", - argNames: ["that"], + debugName: "Multimint_set_fiat_currency", + argNames: ["that", "fiatCurrency"], ); @override - Future> crateNostrNostrClientGetBackupInviteCodes({ - required NostrClient that, + Future crateMultimintMultimintSetShowMsats({ + required Multimint that, + required bool showMsats, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); + sse_encode_bool(showMsats, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5812,36 +6058,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_String, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetBackupInviteCodesConstMeta, - argValues: [that], + constMeta: kCrateMultimintMultimintSetShowMsatsConstMeta, + argValues: [that, showMsats], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetBackupInviteCodesConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetShowMsatsConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_backup_invite_codes", - argNames: ["that"], + debugName: "Multimint_set_show_msats", + argNames: ["that", "showMsats"], ); @override - Future crateNostrNostrClientGetContact({ - required NostrClient that, - required String npub, + Future crateMultimintMultimintSetTapReceiveEnabled({ + required Multimint that, + required bool enabled, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_String(npub, serializer); + sse_encode_bool(enabled, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5850,34 +6096,45 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_opt_box_autoadd_contact, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetContactConstMeta, - argValues: [that, npub], + constMeta: kCrateMultimintMultimintSetTapReceiveEnabledConstMeta, + argValues: [that, enabled], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetContactConstMeta => + TaskConstMeta get kCrateMultimintMultimintSetTapReceiveEnabledConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_contact", - argNames: ["that", "npub"], + debugName: "Multimint_set_tap_receive_enabled", + argNames: ["that", "enabled"], ); @override - Future crateNostrNostrClientGetContactSyncConfig({ - required NostrClient that, + Future> crateMultimintMultimintTransactions({ + required Multimint that, + required FederationId federationId, + BigInt? timestamp, + Uint8List? operationId, + required List modules, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_opt_box_autoadd_u_64(timestamp, serializer); + sse_encode_opt_list_prim_u_8_strict(operationId, serializer); + sse_encode_list_String(modules, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5886,36 +6143,47 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_opt_box_autoadd_contact_sync_config, + decodeSuccessData: sse_decode_list_transaction, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetContactSyncConfigConstMeta, - argValues: [that], + constMeta: kCrateMultimintMultimintTransactionsConstMeta, + argValues: [that, federationId, timestamp, operationId, modules], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetContactSyncConfigConstMeta => + TaskConstMeta get kCrateMultimintMultimintTransactionsConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_contact_sync_config", - argNames: ["that"], + debugName: "Multimint_transactions", + argNames: [ + "that", + "federationId", + "timestamp", + "operationId", + "modules", + ], ); @override - Future> crateNostrNostrClientGetFollowsForPubkey({ - required NostrClient that, - required String npub, + Future> crateMultimintMultimintWalletSummary({ + required Multimint that, + String? invite, + FederationId? federationId, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_String(npub, serializer); + sse_encode_opt_String(invite, serializer); + sse_encode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5924,40 +6192,50 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_String, + decodeSuccessData: sse_decode_list_utxo, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientGetFollowsForPubkeyConstMeta, - argValues: [that, npub], + constMeta: kCrateMultimintMultimintWalletSummaryConstMeta, + argValues: [that, invite, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetFollowsForPubkeyConstMeta => + TaskConstMeta get kCrateMultimintMultimintWalletSummaryConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_follows_for_pubkey", - argNames: ["that", "npub"], + debugName: "Multimint_wallet_summary", + argNames: ["that", "invite", "federationId"], ); @override - Future<(NostrWalletConnectConfig, NWCConnectionInfo)> - crateNostrNostrClientGetNwcConfig({ - required NostrClient that, + Future crateMultimintMultimintWithdrawToAddress({ + required Multimint that, required FederationId federationId, + required String address, + required BigInt amountSats, + required WithdrawFees fees, + required BigInt federationFeeMsats, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMultimint( that, serializer, ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( federationId, serializer, ); + sse_encode_String(address, serializer); + sse_encode_u_64(amountSats, serializer); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( + fees, + serializer, + ); + sse_encode_u_64(federationFeeMsats, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -5967,25 +6245,41 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { }, codec: SseCodec( decodeSuccessData: - sse_decode_record_nostr_wallet_connect_config_nwc_connection_info, - decodeErrorData: sse_decode_AnyhowException, + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEcashAppResultOperationId, + decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetNwcConfigConstMeta, - argValues: [that, federationId], + constMeta: kCrateMultimintMultimintWithdrawToAddressConstMeta, + argValues: [ + that, + federationId, + address, + amountSats, + fees, + federationFeeMsats, + ], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetNwcConfigConstMeta => + TaskConstMeta get kCrateMultimintMultimintWithdrawToAddressConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_nwc_config", - argNames: ["that", "federationId"], + debugName: "Multimint_withdraw_to_address", + argNames: [ + "that", + "federationId", + "address", + "amountSats", + "fees", + "federationFeeMsats", + ], ); @override - Future> - crateNostrNostrClientGetNwcConnectionInfo({required NostrClient that}) { + Future crateNostrNostrClientBackupInviteCodes({ + required NostrClient that, + required List inviteCodes, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -5994,6 +6288,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_list_String(inviteCodes, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6002,37 +6297,34 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_nwc_connection_info, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientGetNwcConnectionInfoConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientBackupInviteCodesConstMeta, + argValues: [that, inviteCodes], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetNwcConnectionInfoConstMeta => + TaskConstMeta get kCrateNostrNostrClientBackupInviteCodesConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_nwc_connection_info", - argNames: ["that"], + debugName: "NostrClient_backup_invite_codes", + argNames: ["that", "inviteCodes"], ); @override - Future> crateNostrNostrClientGetPublicFederations({ + Future crateNostrNostrClientClearContactsAndStopSync({ required NostrClient that, - required bool forceUpdate, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_bool(forceUpdate, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6041,26 +6333,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation, + decodeSuccessData: sse_decode_usize, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientGetPublicFederationsConstMeta, - argValues: [that, forceUpdate], + constMeta: kCrateNostrNostrClientClearContactsAndStopSyncConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetPublicFederationsConstMeta => + TaskConstMeta get kCrateNostrNostrClientClearContactsAndStopSyncConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_public_federations", - argNames: ["that", "forceUpdate"], + debugName: "NostrClient_clear_contacts_and_stop_sync", + argNames: ["that"], ); @override - Future> crateNostrNostrClientGetRelays({ + Future> crateNostrNostrClientFetchNostrProfiles({ required NostrClient that, + required List npubs, }) { return handler.executeNormal( NormalTask( @@ -6070,6 +6362,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_list_String(npubs, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6078,24 +6371,24 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_record_string_bool, - decodeErrorData: null, + decodeSuccessData: sse_decode_list_nostr_profile, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientGetRelaysConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientFetchNostrProfilesConstMeta, + argValues: [that, npubs], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientGetRelaysConstMeta => + TaskConstMeta get kCrateNostrNostrClientFetchNostrProfilesConstMeta => const TaskConstMeta( - debugName: "NostrClient_get_relays", - argNames: ["that"], + debugName: "NostrClient_fetch_nostr_profiles", + argNames: ["that", "npubs"], ); @override - Future crateNostrNostrClientHasImportedContacts({ + Future> crateNostrNostrClientGetAllContacts({ required NostrClient that, }) { return handler.executeNormal( @@ -6114,26 +6407,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, + decodeSuccessData: sse_decode_list_contact, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientHasImportedContactsConstMeta, + constMeta: kCrateNostrNostrClientGetAllContactsConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientHasImportedContactsConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetAllContactsConstMeta => const TaskConstMeta( - debugName: "NostrClient_has_imported_contacts", + debugName: "NostrClient_get_all_contacts", argNames: ["that"], ); @override - Future crateNostrNostrClientInsertRelay({ + Future> crateNostrNostrClientGetBackupInviteCodes({ required NostrClient that, - required String relayUri, }) { return handler.executeNormal( NormalTask( @@ -6143,7 +6435,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_String(relayUri, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6152,39 +6443,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_list_String, + decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientInsertRelayConstMeta, - argValues: [that, relayUri], + constMeta: kCrateNostrNostrClientGetBackupInviteCodesConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientInsertRelayConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetBackupInviteCodesConstMeta => const TaskConstMeta( - debugName: "NostrClient_insert_relay", - argNames: ["that", "relayUri"], + debugName: "NostrClient_get_backup_invite_codes", + argNames: ["that"], ); @override - Future crateNostrNostrClientListenForNwc({ - required FederationId federationId, - required NostrWalletConnectConfig nwcConfig, + Future crateNostrNostrClientGetContact({ + required NostrClient that, + required String npub, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_box_autoadd_nostr_wallet_connect_config( - nwcConfig, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + that, serializer, ); + sse_encode_String(npub, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6193,38 +6481,34 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_opt_box_autoadd_contact, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientListenForNwcConstMeta, - argValues: [federationId, nwcConfig], + constMeta: kCrateNostrNostrClientGetContactConstMeta, + argValues: [that, npub], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientListenForNwcConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetContactConstMeta => const TaskConstMeta( - debugName: "NostrClient_listen_for_nwc", - argNames: ["federationId", "nwcConfig"], + debugName: "NostrClient_get_contact", + argNames: ["that", "npub"], ); @override - Future crateNostrNostrClientNew({ - required Database db, - required List recoverRelays, - required bool isDesktop, + Future crateNostrNostrClientGetContactSyncConfig({ + required NostrClient that, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDatabase( - db, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + that, serializer, ); - sse_encode_list_String(recoverRelays, serializer); - sse_encode_bool(isDesktop, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6233,27 +6517,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_opt_box_autoadd_contact_sync_config, + decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientNewConstMeta, - argValues: [db, recoverRelays, isDesktop], + constMeta: kCrateNostrNostrClientGetContactSyncConfigConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientNewConstMeta => const TaskConstMeta( - debugName: "NostrClient_new", - argNames: ["db", "recoverRelays", "isDesktop"], - ); + TaskConstMeta get kCrateNostrNostrClientGetContactSyncConfigConstMeta => + const TaskConstMeta( + debugName: "NostrClient_get_contact_sync_config", + argNames: ["that"], + ); @override - Future> crateNostrNostrClientPaginateContacts({ + Future> crateNostrNostrClientGetFollowsForPubkey({ required NostrClient that, - ContactCursor? cursor, - required BigInt limit, + required String npub, }) { return handler.executeNormal( NormalTask( @@ -6263,8 +6546,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_opt_box_autoadd_contact_cursor(cursor, serializer); - sse_encode_usize(limit, serializer); + sse_encode_String(npub, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6273,29 +6555,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_contact, - decodeErrorData: null, + decodeSuccessData: sse_decode_list_String, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientPaginateContactsConstMeta, - argValues: [that, cursor, limit], + constMeta: kCrateNostrNostrClientGetFollowsForPubkeyConstMeta, + argValues: [that, npub], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientPaginateContactsConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetFollowsForPubkeyConstMeta => const TaskConstMeta( - debugName: "NostrClient_paginate_contacts", - argNames: ["that", "cursor", "limit"], + debugName: "NostrClient_get_follows_for_pubkey", + argNames: ["that", "npub"], ); @override - Future> crateNostrNostrClientPaginateSearchContacts({ - required NostrClient that, - required String query, - ContactCursor? cursor, - required BigInt limit, - }) { + Future> + crateNostrNostrClientGetNwcConnectionInfo({required NostrClient that}) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -6304,9 +6582,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_String(query, serializer); - sse_encode_opt_box_autoadd_contact_cursor(cursor, serializer); - sse_encode_usize(limit, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6315,39 +6590,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_contact, + decodeSuccessData: + sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_nwc_connection_info, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientPaginateSearchContactsConstMeta, - argValues: [that, query, cursor, limit], + constMeta: kCrateNostrNostrClientGetNwcConnectionInfoConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientPaginateSearchContactsConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetNwcConnectionInfoConstMeta => const TaskConstMeta( - debugName: "NostrClient_paginate_search_contacts", - argNames: ["that", "query", "cursor", "limit"], + debugName: "NostrClient_get_nwc_connection_info", + argNames: ["that"], ); @override - Future crateNostrNostrClientRemoveNwcConnectionInfo({ + Future> crateNostrNostrClientGetPublicFederations({ required NostrClient that, - required FederationId federationId, + required bool forceUpdate, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); + sse_encode_bool(forceUpdate, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6356,26 +6629,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientRemoveNwcConnectionInfoConstMeta, - argValues: [that, federationId], + constMeta: kCrateNostrNostrClientGetPublicFederationsConstMeta, + argValues: [that, forceUpdate], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientRemoveNwcConnectionInfoConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetPublicFederationsConstMeta => const TaskConstMeta( - debugName: "NostrClient_remove_nwc_connection_info", - argNames: ["that", "federationId"], + debugName: "NostrClient_get_public_federations", + argNames: ["that", "forceUpdate"], ); @override - Future crateNostrNostrClientRemoveRelay({ + Future> crateNostrNostrClientGetRelays({ required NostrClient that, - required String relayUri, }) { return handler.executeNormal( NormalTask( @@ -6385,7 +6658,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_String(relayUri, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6394,27 +6666,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_list_record_string_bool, + decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientRemoveRelayConstMeta, - argValues: [that, relayUri], + constMeta: kCrateNostrNostrClientGetRelaysConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientRemoveRelayConstMeta => + TaskConstMeta get kCrateNostrNostrClientGetRelaysConstMeta => const TaskConstMeta( - debugName: "NostrClient_remove_relay", - argNames: ["that", "relayUri"], + debugName: "NostrClient_get_relays", + argNames: ["that"], ); @override - Future crateNostrNostrClientSetContactSyncConfig({ + Future crateNostrNostrClientHasImportedContacts({ required NostrClient that, - required String npub, - required bool enabled, }) { return handler.executeNormal( NormalTask( @@ -6424,8 +6694,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_String(npub, serializer); - sse_encode_bool(enabled, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6434,43 +6702,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_bool, decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientSetContactSyncConfigConstMeta, - argValues: [that, npub, enabled], + constMeta: kCrateNostrNostrClientHasImportedContactsConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientSetContactSyncConfigConstMeta => + TaskConstMeta get kCrateNostrNostrClientHasImportedContactsConstMeta => const TaskConstMeta( - debugName: "NostrClient_set_contact_sync_config", - argNames: ["that", "npub", "enabled"], + debugName: "NostrClient_has_imported_contacts", + argNames: ["that"], ); @override - Future crateNostrNostrClientSetNwcConnectionInfo({ + Future crateNostrNostrClientInsertRelay({ required NostrClient that, - required FederationId federationId, - required String relay, - required bool isDesktop, + required String relayUri, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_String(relay, serializer); - sse_encode_bool(isDesktop, serializer); + sse_encode_String(relayUri, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6479,32 +6740,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_nwc_connection_info, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientSetNwcConnectionInfoConstMeta, - argValues: [that, federationId, relay, isDesktop], + constMeta: kCrateNostrNostrClientInsertRelayConstMeta, + argValues: [that, relayUri], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientSetNwcConnectionInfoConstMeta => + TaskConstMeta get kCrateNostrNostrClientInsertRelayConstMeta => const TaskConstMeta( - debugName: "NostrClient_set_nwc_connection_info", - argNames: ["that", "federationId", "relay", "isDesktop"], + debugName: "NostrClient_insert_relay", + argNames: ["that", "relayUri"], ); @override - Future crateNostrNostrClientSyncContacts({required NostrClient that}) { + Future crateNostrNostrClientNew({ + required Database db, + required List recoverRelays, + required bool isDesktop, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( - that, + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDatabase( + db, serializer, ); + sse_encode_list_String(recoverRelays, serializer); + sse_encode_bool(isDesktop, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6513,26 +6780,27 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrNostrClientSyncContactsConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientNewConstMeta, + argValues: [db, recoverRelays, isDesktop], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientSyncContactsConstMeta => - const TaskConstMeta( - debugName: "NostrClient_sync_contacts", - argNames: ["that"], - ); - + TaskConstMeta get kCrateNostrNostrClientNewConstMeta => const TaskConstMeta( + debugName: "NostrClient_new", + argNames: ["db", "recoverRelays", "isDesktop"], + ); + @override - Future crateNostrNostrClientVerifyNip05({ + Future> crateNostrNostrClientPaginateContacts({ required NostrClient that, - required String nip05Id, + ContactCursor? cursor, + required BigInt limit, }) { return handler.executeNormal( NormalTask( @@ -6542,7 +6810,8 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_String(nip05Id, serializer); + sse_encode_opt_box_autoadd_contact_cursor(cursor, serializer); + sse_encode_usize(limit, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6551,135 +6820,159 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_list_contact, + decodeErrorData: null, ), - constMeta: kCrateNostrNostrClientVerifyNip05ConstMeta, - argValues: [that, nip05Id], + constMeta: kCrateNostrNostrClientPaginateContactsConstMeta, + argValues: [that, cursor, limit], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrNostrClientVerifyNip05ConstMeta => + TaskConstMeta get kCrateNostrNostrClientPaginateContactsConstMeta => const TaskConstMeta( - debugName: "NostrClient_verify_nip05", - argNames: ["that", "nip05Id"], + debugName: "NostrClient_paginate_contacts", + argNames: ["that", "cursor", "limit"], ); @override - OobNotesWrapper? crateFountainOobNotesDecoderAddFragment({ - required OobNotesDecoder that, - required String fragment, + Future> crateNostrNostrClientPaginateSearchContacts({ + required NostrClient that, + required String query, + ContactCursor? cursor, + required BigInt limit, }) { - return handler.executeSync( - SyncTask( - callFfi: () { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesDecoder( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - sse_encode_String(fragment, serializer); - return pdeCallFfi( + sse_encode_String(query, serializer); + sse_encode_opt_box_autoadd_contact_cursor(cursor, serializer); + sse_encode_usize(limit, serializer); + pdeCallFfi( generalizedFrbRustBinding, serializer, funcId: 128, - )!; + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesWrapper, + decodeSuccessData: sse_decode_list_contact, decodeErrorData: null, ), - constMeta: kCrateFountainOobNotesDecoderAddFragmentConstMeta, - argValues: [that, fragment], + constMeta: kCrateNostrNostrClientPaginateSearchContactsConstMeta, + argValues: [that, query, cursor, limit], apiImpl: this, ), ); } - TaskConstMeta get kCrateFountainOobNotesDecoderAddFragmentConstMeta => + TaskConstMeta get kCrateNostrNostrClientPaginateSearchContactsConstMeta => const TaskConstMeta( - debugName: "OobNotesDecoder_add_fragment", - argNames: ["that", "fragment"], + debugName: "NostrClient_paginate_search_contacts", + argNames: ["that", "query", "cursor", "limit"], ); @override - OobNotesDecoder crateFountainOobNotesDecoderNew() { - return handler.executeSync( - SyncTask( - callFfi: () { + Future crateNostrNostrClientRemoveNwcConnectionInfo({ + required NostrClient that, + required FederationId federationId, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - return pdeCallFfi( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + pdeCallFfi( generalizedFrbRustBinding, serializer, funcId: 129, - )!; + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesDecoder, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateFountainOobNotesDecoderNewConstMeta, - argValues: [], + constMeta: kCrateNostrNostrClientRemoveNwcConnectionInfoConstMeta, + argValues: [that, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateFountainOobNotesDecoderNewConstMeta => - const TaskConstMeta(debugName: "OobNotesDecoder_new", argNames: []); + TaskConstMeta get kCrateNostrNostrClientRemoveNwcConnectionInfoConstMeta => + const TaskConstMeta( + debugName: "NostrClient_remove_nwc_connection_info", + argNames: ["that", "federationId"], + ); @override - OobNotesEncoder crateFountainOobNotesEncoderNew({ - required OobNotesWrapper notes, + Future crateNostrNostrClientRemoveRelay({ + required NostrClient that, + required String relayUri, }) { - return handler.executeSync( - SyncTask( - callFfi: () { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesWrapper( - notes, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( + that, serializer, ); - return pdeCallFfi( + sse_encode_String(relayUri, serializer); + pdeCallFfi( generalizedFrbRustBinding, serializer, funcId: 130, - )!; + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesEncoder, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateFountainOobNotesEncoderNewConstMeta, - argValues: [notes], + constMeta: kCrateNostrNostrClientRemoveRelayConstMeta, + argValues: [that, relayUri], apiImpl: this, ), ); } - TaskConstMeta get kCrateFountainOobNotesEncoderNewConstMeta => + TaskConstMeta get kCrateNostrNostrClientRemoveRelayConstMeta => const TaskConstMeta( - debugName: "OobNotesEncoder_new", - argNames: ["notes"], + debugName: "NostrClient_remove_relay", + argNames: ["that", "relayUri"], ); @override - Future crateFountainOobNotesEncoderNextFragment({ - required OobNotesEncoder that, + Future crateNostrNostrClientSetContactSyncConfig({ + required NostrClient that, + required String npub, + required bool enabled, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesEncoder( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); + sse_encode_String(npub, serializer); + sse_encode_bool(enabled, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6688,139 +6981,153 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); }, codec: SseCodec( - decodeSuccessData: sse_decode_String, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateFountainOobNotesEncoderNextFragmentConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientSetContactSyncConfigConstMeta, + argValues: [that, npub, enabled], apiImpl: this, ), ); } - TaskConstMeta get kCrateFountainOobNotesEncoderNextFragmentConstMeta => + TaskConstMeta get kCrateNostrNostrClientSetContactSyncConfigConstMeta => const TaskConstMeta( - debugName: "OobNotesEncoder_next_fragment", - argNames: ["that"], + debugName: "NostrClient_set_contact_sync_config", + argNames: ["that", "npub", "enabled"], ); @override - BigInt crateMultimintOobNotesWrapperAmountMsats({ - required OobNotesWrapper that, + Future crateNostrNostrClientSetNwcConnectionInfo({ + required NostrClient that, + required FederationId federationId, + required String relay, + required bool isDesktop, }) { - return handler.executeSync( - SyncTask( - callFfi: () { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesWrapper( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - return pdeCallFfi( + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(relay, serializer); + sse_encode_bool(isDesktop, serializer); + pdeCallFfi( generalizedFrbRustBinding, serializer, funcId: 132, - )!; + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, + decodeSuccessData: sse_decode_nwc_connection_info, decodeErrorData: null, ), - constMeta: kCrateMultimintOobNotesWrapperAmountMsatsConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientSetNwcConnectionInfoConstMeta, + argValues: [that, federationId, relay, isDesktop], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintOobNotesWrapperAmountMsatsConstMeta => + TaskConstMeta get kCrateNostrNostrClientSetNwcConnectionInfoConstMeta => const TaskConstMeta( - debugName: "OobNotesWrapper_amount_msats", - argNames: ["that"], + debugName: "NostrClient_set_nwc_connection_info", + argNames: ["that", "federationId", "relay", "isDesktop"], ); @override - String crateMultimintOobNotesWrapperToString({ - required OobNotesWrapper that, - }) { - return handler.executeSync( - SyncTask( - callFfi: () { + Future crateNostrNostrClientSyncContacts({required NostrClient that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesWrapper( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - return pdeCallFfi( + pdeCallFfi( generalizedFrbRustBinding, serializer, funcId: 133, - )!; + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: sse_decode_String, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateMultimintOobNotesWrapperToStringConstMeta, + constMeta: kCrateNostrNostrClientSyncContactsConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateMultimintOobNotesWrapperToStringConstMeta => + TaskConstMeta get kCrateNostrNostrClientSyncContactsConstMeta => const TaskConstMeta( - debugName: "OobNotesWrapper_to_string", + debugName: "NostrClient_sync_contacts", argNames: ["that"], ); @override - String? crateNostrPublicFederationAutoAccessorGetAbout({ - required PublicFederation that, + Future crateNostrNostrClientVerifyNip05({ + required NostrClient that, + required String nip05Id, }) { - return handler.executeSync( - SyncTask( - callFfi: () { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerNostrClient( that, serializer, ); - return pdeCallFfi( + sse_encode_String(nip05Id, serializer); + pdeCallFfi( generalizedFrbRustBinding, serializer, funcId: 134, - )!; + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: sse_decode_opt_String, - decodeErrorData: null, + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateNostrPublicFederationAutoAccessorGetAboutConstMeta, - argValues: [that], + constMeta: kCrateNostrNostrClientVerifyNip05ConstMeta, + argValues: [that, nip05Id], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrPublicFederationAutoAccessorGetAboutConstMeta => + TaskConstMeta get kCrateNostrNostrClientVerifyNip05ConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_get_about", - argNames: ["that"], - ); + debugName: "NostrClient_verify_nip05", + argNames: ["that", "nip05Id"], + ); @override - FederationId crateNostrPublicFederationAutoAccessorGetFederationId({ - required PublicFederation that, + OobNotesWrapper? crateFountainOobNotesDecoderAddFragment({ + required OobNotesDecoder that, + required String fragment, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesDecoder( that, serializer, ); + sse_encode_String(fragment, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6829,36 +7136,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { }, codec: SseCodec( decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId, + sse_decode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesWrapper, decodeErrorData: null, ), - constMeta: - kCrateNostrPublicFederationAutoAccessorGetFederationIdConstMeta, - argValues: [that], + constMeta: kCrateFountainOobNotesDecoderAddFragmentConstMeta, + argValues: [that, fragment], apiImpl: this, ), ); } - TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorGetFederationIdConstMeta => + TaskConstMeta get kCrateFountainOobNotesDecoderAddFragmentConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_get_federation_id", - argNames: ["that"], + debugName: "OobNotesDecoder_add_fragment", + argNames: ["that", "fragment"], ); @override - String crateNostrPublicFederationAutoAccessorGetFederationName({ - required PublicFederation that, - }) { + OobNotesDecoder crateFountainOobNotesDecoderNew() { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( - that, - serializer, - ); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -6866,34 +7165,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_String, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesDecoder, decodeErrorData: null, ), - constMeta: - kCrateNostrPublicFederationAutoAccessorGetFederationNameConstMeta, - argValues: [that], + constMeta: kCrateFountainOobNotesDecoderNewConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorGetFederationNameConstMeta => - const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_get_federation_name", - argNames: ["that"], - ); + TaskConstMeta get kCrateFountainOobNotesDecoderNewConstMeta => + const TaskConstMeta(debugName: "OobNotesDecoder_new", argNames: []); @override - List crateNostrPublicFederationAutoAccessorGetInviteCodes({ - required PublicFederation that, + OobNotesEncoder crateFountainOobNotesEncoderNew({ + required OobNotesWrapper notes, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( - that, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesWrapper( + notes, serializer, ); return pdeCallFfi( @@ -6903,69 +7198,68 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_list_String, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesEncoder, decodeErrorData: null, ), - constMeta: - kCrateNostrPublicFederationAutoAccessorGetInviteCodesConstMeta, - argValues: [that], + constMeta: kCrateFountainOobNotesEncoderNewConstMeta, + argValues: [notes], apiImpl: this, ), ); } - TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorGetInviteCodesConstMeta => + TaskConstMeta get kCrateFountainOobNotesEncoderNewConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_get_invite_codes", - argNames: ["that"], + debugName: "OobNotesEncoder_new", + argNames: ["notes"], ); @override - List crateNostrPublicFederationAutoAccessorGetModules({ - required PublicFederation that, + Future crateFountainOobNotesEncoderNextFragment({ + required OobNotesEncoder that, }) { - return handler.executeSync( - SyncTask( - callFfi: () { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesEncoder( that, serializer, ); - return pdeCallFfi( + pdeCallFfi( generalizedFrbRustBinding, serializer, funcId: 138, - )!; + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_String, + decodeSuccessData: sse_decode_String, decodeErrorData: null, ), - constMeta: kCrateNostrPublicFederationAutoAccessorGetModulesConstMeta, + constMeta: kCrateFountainOobNotesEncoderNextFragmentConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorGetModulesConstMeta => + TaskConstMeta get kCrateFountainOobNotesEncoderNextFragmentConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_get_modules", + debugName: "OobNotesEncoder_next_fragment", argNames: ["that"], ); @override - String crateNostrPublicFederationAutoAccessorGetNetwork({ - required PublicFederation that, + BigInt crateMultimintOobNotesWrapperAmountMsats({ + required OobNotesWrapper that, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesWrapper( that, serializer, ); @@ -6976,32 +7270,31 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_String, + decodeSuccessData: sse_decode_u_64, decodeErrorData: null, ), - constMeta: kCrateNostrPublicFederationAutoAccessorGetNetworkConstMeta, + constMeta: kCrateMultimintOobNotesWrapperAmountMsatsConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorGetNetworkConstMeta => + TaskConstMeta get kCrateMultimintOobNotesWrapperAmountMsatsConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_get_network", + debugName: "OobNotesWrapper_amount_msats", argNames: ["that"], ); @override - String? crateNostrPublicFederationAutoAccessorGetPicture({ - required PublicFederation that, + String crateMultimintOobNotesWrapperToString({ + required OobNotesWrapper that, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOOBNotesWrapper( that, serializer, ); @@ -7012,37 +7305,34 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_opt_String, + decodeSuccessData: sse_decode_String, decodeErrorData: null, ), - constMeta: kCrateNostrPublicFederationAutoAccessorGetPictureConstMeta, + constMeta: kCrateMultimintOobNotesWrapperToStringConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorGetPictureConstMeta => + TaskConstMeta get kCrateMultimintOobNotesWrapperToStringConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_get_picture", + debugName: "OobNotesWrapper_to_string", argNames: ["that"], ); @override - void crateNostrPublicFederationAutoAccessorSetAbout({ + String? crateNostrPublicFederationAutoAccessorGetAbout({ required PublicFederation that, - String? about, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); - sse_encode_opt_String(about, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7050,39 +7340,34 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_opt_String, decodeErrorData: null, ), - constMeta: kCrateNostrPublicFederationAutoAccessorSetAboutConstMeta, - argValues: [that, about], + constMeta: kCrateNostrPublicFederationAutoAccessorGetAboutConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateNostrPublicFederationAutoAccessorSetAboutConstMeta => + TaskConstMeta get kCrateNostrPublicFederationAutoAccessorGetAboutConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_set_about", - argNames: ["that", "about"], + debugName: "PublicFederation_auto_accessor_get_about", + argNames: ["that"], ); @override - void crateNostrPublicFederationAutoAccessorSetFederationId({ + FederationId crateNostrPublicFederationAutoAccessorGetFederationId({ required PublicFederation that, - required FederationId federationId, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7090,38 +7375,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId, decodeErrorData: null, ), constMeta: - kCrateNostrPublicFederationAutoAccessorSetFederationIdConstMeta, - argValues: [that, federationId], + kCrateNostrPublicFederationAutoAccessorGetFederationIdConstMeta, + argValues: [that], apiImpl: this, ), ); } TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorSetFederationIdConstMeta => + get kCrateNostrPublicFederationAutoAccessorGetFederationIdConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_set_federation_id", - argNames: ["that", "federationId"], + debugName: "PublicFederation_auto_accessor_get_federation_id", + argNames: ["that"], ); @override - void crateNostrPublicFederationAutoAccessorSetFederationName({ + String crateNostrPublicFederationAutoAccessorGetFederationName({ required PublicFederation that, - required String federationName, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); - sse_encode_String(federationName, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7129,38 +7413,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_String, decodeErrorData: null, ), constMeta: - kCrateNostrPublicFederationAutoAccessorSetFederationNameConstMeta, - argValues: [that, federationName], + kCrateNostrPublicFederationAutoAccessorGetFederationNameConstMeta, + argValues: [that], apiImpl: this, ), ); } TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorSetFederationNameConstMeta => + get kCrateNostrPublicFederationAutoAccessorGetFederationNameConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_set_federation_name", - argNames: ["that", "federationName"], + debugName: "PublicFederation_auto_accessor_get_federation_name", + argNames: ["that"], ); @override - void crateNostrPublicFederationAutoAccessorSetInviteCodes({ + List crateNostrPublicFederationAutoAccessorGetInviteCodes({ required PublicFederation that, - required List inviteCodes, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); - sse_encode_list_String(inviteCodes, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7168,38 +7450,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_list_String, decodeErrorData: null, ), constMeta: - kCrateNostrPublicFederationAutoAccessorSetInviteCodesConstMeta, - argValues: [that, inviteCodes], + kCrateNostrPublicFederationAutoAccessorGetInviteCodesConstMeta, + argValues: [that], apiImpl: this, ), ); } TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorSetInviteCodesConstMeta => + get kCrateNostrPublicFederationAutoAccessorGetInviteCodesConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_set_invite_codes", - argNames: ["that", "inviteCodes"], + debugName: "PublicFederation_auto_accessor_get_invite_codes", + argNames: ["that"], ); @override - void crateNostrPublicFederationAutoAccessorSetModules({ + List crateNostrPublicFederationAutoAccessorGetModules({ required PublicFederation that, - required List modules, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); - sse_encode_list_String(modules, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7207,37 +7487,35 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_list_String, decodeErrorData: null, ), - constMeta: kCrateNostrPublicFederationAutoAccessorSetModulesConstMeta, - argValues: [that, modules], + constMeta: kCrateNostrPublicFederationAutoAccessorGetModulesConstMeta, + argValues: [that], apiImpl: this, ), ); } TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorSetModulesConstMeta => + get kCrateNostrPublicFederationAutoAccessorGetModulesConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_set_modules", - argNames: ["that", "modules"], + debugName: "PublicFederation_auto_accessor_get_modules", + argNames: ["that"], ); @override - void crateNostrPublicFederationAutoAccessorSetNetwork({ + String crateNostrPublicFederationAutoAccessorGetNetwork({ required PublicFederation that, - required String network, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); - sse_encode_String(network, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7245,37 +7523,35 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_String, decodeErrorData: null, ), - constMeta: kCrateNostrPublicFederationAutoAccessorSetNetworkConstMeta, - argValues: [that, network], + constMeta: kCrateNostrPublicFederationAutoAccessorGetNetworkConstMeta, + argValues: [that], apiImpl: this, ), ); } TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorSetNetworkConstMeta => + get kCrateNostrPublicFederationAutoAccessorGetNetworkConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_set_network", - argNames: ["that", "network"], + debugName: "PublicFederation_auto_accessor_get_network", + argNames: ["that"], ); @override - void crateNostrPublicFederationAutoAccessorSetPicture({ + String? crateNostrPublicFederationAutoAccessorGetPicture({ required PublicFederation that, - String? picture, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); - sse_encode_opt_String(picture, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7283,37 +7559,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_opt_String, decodeErrorData: null, ), - constMeta: kCrateNostrPublicFederationAutoAccessorSetPictureConstMeta, - argValues: [that, picture], + constMeta: kCrateNostrPublicFederationAutoAccessorGetPictureConstMeta, + argValues: [that], apiImpl: this, ), ); } TaskConstMeta - get kCrateNostrPublicFederationAutoAccessorSetPictureConstMeta => + get kCrateNostrPublicFederationAutoAccessorGetPictureConstMeta => const TaskConstMeta( - debugName: "PublicFederation_auto_accessor_set_picture", - argNames: ["that", "picture"], + debugName: "PublicFederation_auto_accessor_get_picture", + argNames: ["that"], ); @override - String crateTapTransferTapRecipientDecrypt({ - required TapRecipient that, - required List blob, + void crateNostrPublicFederationAutoAccessorSetAbout({ + required PublicFederation that, + String? about, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); - sse_encode_list_prim_u_8_loose(blob, serializer); + sse_encode_opt_String(about, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7321,28 +7597,39 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_ecash_app_error, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateTapTransferTapRecipientDecryptConstMeta, - argValues: [that, blob], + constMeta: kCrateNostrPublicFederationAutoAccessorSetAboutConstMeta, + argValues: [that, about], apiImpl: this, ), ); } - TaskConstMeta get kCrateTapTransferTapRecipientDecryptConstMeta => + TaskConstMeta get kCrateNostrPublicFederationAutoAccessorSetAboutConstMeta => const TaskConstMeta( - debugName: "TapRecipient_decrypt", - argNames: ["that", "blob"], + debugName: "PublicFederation_auto_accessor_set_about", + argNames: ["that", "about"], ); @override - TapRecipient crateTapTransferTapRecipientNew() { + void crateNostrPublicFederationAutoAccessorSetFederationId({ + required PublicFederation that, + required FederationId federationId, + }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7350,32 +7637,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateTapTransferTapRecipientNewConstMeta, - argValues: [], + constMeta: + kCrateNostrPublicFederationAutoAccessorSetFederationIdConstMeta, + argValues: [that, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateTapTransferTapRecipientNewConstMeta => - const TaskConstMeta(debugName: "TapRecipient_new", argNames: []); + TaskConstMeta + get kCrateNostrPublicFederationAutoAccessorSetFederationIdConstMeta => + const TaskConstMeta( + debugName: "PublicFederation_auto_accessor_set_federation_id", + argNames: ["that", "federationId"], + ); @override - Uint8List crateTapTransferTapRecipientPublicKey({ - required TapRecipient that, + void crateNostrPublicFederationAutoAccessorSetFederationName({ + required PublicFederation that, + required String federationName, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); + sse_encode_String(federationName, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7383,34 +7676,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateTapTransferTapRecipientPublicKeyConstMeta, - argValues: [that], + constMeta: + kCrateNostrPublicFederationAutoAccessorSetFederationNameConstMeta, + argValues: [that, federationName], apiImpl: this, ), ); } - TaskConstMeta get kCrateTapTransferTapRecipientPublicKeyConstMeta => + TaskConstMeta + get kCrateNostrPublicFederationAutoAccessorSetFederationNameConstMeta => const TaskConstMeta( - debugName: "TapRecipient_public_key", - argNames: ["that"], + debugName: "PublicFederation_auto_accessor_set_federation_name", + argNames: ["that", "federationName"], ); @override - BigInt crateMultimintWithdrawFeesResponseAutoAccessorGetFederationFeeMsats({ - required WithdrawFeesResponse that, + void crateNostrPublicFederationAutoAccessorSetInviteCodes({ + required PublicFederation that, + required List inviteCodes, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); + sse_encode_list_String(inviteCodes, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7418,37 +7715,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorGetFederationFeeMsatsConstMeta, - argValues: [that], + kCrateNostrPublicFederationAutoAccessorSetInviteCodesConstMeta, + argValues: [that, inviteCodes], apiImpl: this, ), ); } TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorGetFederationFeeMsatsConstMeta => + get kCrateNostrPublicFederationAutoAccessorSetInviteCodesConstMeta => const TaskConstMeta( - debugName: - "WithdrawFeesResponse_auto_accessor_get_federation_fee_msats", - argNames: ["that"], + debugName: "PublicFederation_auto_accessor_set_invite_codes", + argNames: ["that", "inviteCodes"], ); @override - BigInt crateMultimintWithdrawFeesResponseAutoAccessorGetFeeAmount({ - required WithdrawFeesResponse that, + void crateNostrPublicFederationAutoAccessorSetModules({ + required PublicFederation that, + required List modules, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); + sse_encode_list_String(modules, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7456,36 +7754,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeeAmountConstMeta, - argValues: [that], + constMeta: kCrateNostrPublicFederationAutoAccessorSetModulesConstMeta, + argValues: [that, modules], apiImpl: this, ), ); } TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeeAmountConstMeta => + get kCrateNostrPublicFederationAutoAccessorSetModulesConstMeta => const TaskConstMeta( - debugName: "WithdrawFeesResponse_auto_accessor_get_fee_amount", - argNames: ["that"], + debugName: "PublicFederation_auto_accessor_set_modules", + argNames: ["that", "modules"], ); @override - double crateMultimintWithdrawFeesResponseAutoAccessorGetFeeRateSatsPerVb({ - required WithdrawFeesResponse that, + void crateNostrPublicFederationAutoAccessorSetNetwork({ + required PublicFederation that, + required String network, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); + sse_encode_String(network, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7493,37 +7792,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_f_64, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeeRateSatsPerVbConstMeta, - argValues: [that], + constMeta: kCrateNostrPublicFederationAutoAccessorSetNetworkConstMeta, + argValues: [that, network], apiImpl: this, ), ); } TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeeRateSatsPerVbConstMeta => + get kCrateNostrPublicFederationAutoAccessorSetNetworkConstMeta => const TaskConstMeta( - debugName: - "WithdrawFeesResponse_auto_accessor_get_fee_rate_sats_per_vb", - argNames: ["that"], + debugName: "PublicFederation_auto_accessor_set_network", + argNames: ["that", "network"], ); @override - WithdrawFees crateMultimintWithdrawFeesResponseAutoAccessorGetFees({ - required WithdrawFeesResponse that, + void crateNostrPublicFederationAutoAccessorSetPicture({ + required PublicFederation that, + String? picture, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPublicFederation( that, serializer, ); + sse_encode_opt_String(picture, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7531,37 +7830,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeesConstMeta, - argValues: [that], + constMeta: kCrateNostrPublicFederationAutoAccessorSetPictureConstMeta, + argValues: [that, picture], apiImpl: this, ), ); } TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeesConstMeta => + get kCrateNostrPublicFederationAutoAccessorSetPictureConstMeta => const TaskConstMeta( - debugName: "WithdrawFeesResponse_auto_accessor_get_fees", - argNames: ["that"], + debugName: "PublicFederation_auto_accessor_set_picture", + argNames: ["that", "picture"], ); @override - int crateMultimintWithdrawFeesResponseAutoAccessorGetTxSizeVbytes({ - required WithdrawFeesResponse that, + String crateTapTransferTapRecipientDecrypt({ + required TapRecipient that, + required List blob, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( that, serializer, ); + sse_encode_list_prim_u_8_loose(blob, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7569,38 +7868,28 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_u_32, - decodeErrorData: null, + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_ecash_app_error, ), - constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorGetTxSizeVbytesConstMeta, - argValues: [that], + constMeta: kCrateTapTransferTapRecipientDecryptConstMeta, + argValues: [that, blob], apiImpl: this, ), ); } - TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorGetTxSizeVbytesConstMeta => + TaskConstMeta get kCrateTapTransferTapRecipientDecryptConstMeta => const TaskConstMeta( - debugName: "WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes", - argNames: ["that"], + debugName: "TapRecipient_decrypt", + argNames: ["that", "blob"], ); @override - void crateMultimintWithdrawFeesResponseAutoAccessorSetFederationFeeMsats({ - required WithdrawFeesResponse that, - required BigInt federationFeeMsats, - }) { + TapRecipient crateTapTransferTapRecipientNew() { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( - that, - serializer, - ); - sse_encode_u_64(federationFeeMsats, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7608,39 +7897,32 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient, decodeErrorData: null, ), - constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorSetFederationFeeMsatsConstMeta, - argValues: [that, federationFeeMsats], + constMeta: kCrateTapTransferTapRecipientNewConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorSetFederationFeeMsatsConstMeta => - const TaskConstMeta( - debugName: - "WithdrawFeesResponse_auto_accessor_set_federation_fee_msats", - argNames: ["that", "federationFeeMsats"], - ); + TaskConstMeta get kCrateTapTransferTapRecipientNewConstMeta => + const TaskConstMeta(debugName: "TapRecipient_new", argNames: []); @override - void crateMultimintWithdrawFeesResponseAutoAccessorSetFeeAmount({ - required WithdrawFeesResponse that, - required BigInt feeAmount, + Uint8List crateTapTransferTapRecipientPublicKey({ + required TapRecipient that, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( that, serializer, ); - sse_encode_u_64(feeAmount, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7648,38 +7930,34 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_list_prim_u_8_strict, decodeErrorData: null, ), - constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeeAmountConstMeta, - argValues: [that, feeAmount], + constMeta: kCrateTapTransferTapRecipientPublicKeyConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeeAmountConstMeta => + TaskConstMeta get kCrateTapTransferTapRecipientPublicKeyConstMeta => const TaskConstMeta( - debugName: "WithdrawFeesResponse_auto_accessor_set_fee_amount", - argNames: ["that", "feeAmount"], + debugName: "TapRecipient_public_key", + argNames: ["that"], ); @override - void crateMultimintWithdrawFeesResponseAutoAccessorSetFeeRateSatsPerVb({ + BigInt crateMultimintWithdrawFeesResponseAutoAccessorGetFederationFeeMsats({ required WithdrawFeesResponse that, - required double feeRateSatsPerVb, }) { return handler.executeSync( SyncTask( callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( that, serializer, ); - sse_encode_f_64(feeRateSatsPerVb, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -7687,29 +7965,179 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_u_64, decodeErrorData: null, ), constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeeRateSatsPerVbConstMeta, - argValues: [that, feeRateSatsPerVb], + kCrateMultimintWithdrawFeesResponseAutoAccessorGetFederationFeeMsatsConstMeta, + argValues: [that], apiImpl: this, ), ); } TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeeRateSatsPerVbConstMeta => + get kCrateMultimintWithdrawFeesResponseAutoAccessorGetFederationFeeMsatsConstMeta => const TaskConstMeta( debugName: - "WithdrawFeesResponse_auto_accessor_set_fee_rate_sats_per_vb", - argNames: ["that", "feeRateSatsPerVb"], + "WithdrawFeesResponse_auto_accessor_get_federation_fee_msats", + argNames: ["that"], ); @override - void crateMultimintWithdrawFeesResponseAutoAccessorSetFees({ + BigInt crateMultimintWithdrawFeesResponseAutoAccessorGetFeeAmount({ required WithdrawFeesResponse that, - required WithdrawFees fees, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + that, + serializer, + ); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 159, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: null, + ), + constMeta: + kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeeAmountConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeeAmountConstMeta => + const TaskConstMeta( + debugName: "WithdrawFeesResponse_auto_accessor_get_fee_amount", + argNames: ["that"], + ); + + @override + double crateMultimintWithdrawFeesResponseAutoAccessorGetFeeRateSatsPerVb({ + required WithdrawFeesResponse that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + that, + serializer, + ); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 160, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_f_64, + decodeErrorData: null, + ), + constMeta: + kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeeRateSatsPerVbConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeeRateSatsPerVbConstMeta => + const TaskConstMeta( + debugName: + "WithdrawFeesResponse_auto_accessor_get_fee_rate_sats_per_vb", + argNames: ["that"], + ); + + @override + WithdrawFees crateMultimintWithdrawFeesResponseAutoAccessorGetFees({ + required WithdrawFeesResponse that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + that, + serializer, + ); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 161, + )!; + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees, + decodeErrorData: null, + ), + constMeta: + kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeesConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateMultimintWithdrawFeesResponseAutoAccessorGetFeesConstMeta => + const TaskConstMeta( + debugName: "WithdrawFeesResponse_auto_accessor_get_fees", + argNames: ["that"], + ); + + @override + int crateMultimintWithdrawFeesResponseAutoAccessorGetTxSizeVbytes({ + required WithdrawFeesResponse that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + that, + serializer, + ); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 162, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_32, + decodeErrorData: null, + ), + constMeta: + kCrateMultimintWithdrawFeesResponseAutoAccessorGetTxSizeVbytesConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateMultimintWithdrawFeesResponseAutoAccessorGetTxSizeVbytesConstMeta => + const TaskConstMeta( + debugName: "WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes", + argNames: ["that"], + ); + + @override + void crateMultimintWithdrawFeesResponseAutoAccessorSetFederationFeeMsats({ + required WithdrawFeesResponse that, + required BigInt federationFeeMsats, }) { return handler.executeSync( SyncTask( @@ -7719,14 +8147,51 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( - fees, + sse_encode_u_64(federationFeeMsats, serializer); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 163, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: + kCrateMultimintWithdrawFeesResponseAutoAccessorSetFederationFeeMsatsConstMeta, + argValues: [that, federationFeeMsats], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateMultimintWithdrawFeesResponseAutoAccessorSetFederationFeeMsatsConstMeta => + const TaskConstMeta( + debugName: + "WithdrawFeesResponse_auto_accessor_set_federation_fee_msats", + argNames: ["that", "federationFeeMsats"], + ); + + @override + void crateMultimintWithdrawFeesResponseAutoAccessorSetFeeAmount({ + required WithdrawFeesResponse that, + required BigInt feeAmount, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + that, serializer, ); + sse_encode_u_64(feeAmount, serializer); return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 159, + funcId: 164, )!; }, codec: SseCodec( @@ -7734,61 +8199,735 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeErrorData: null, ), constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeesConstMeta, - argValues: [that, fees], + kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeeAmountConstMeta, + argValues: [that, feeAmount], apiImpl: this, ), ); } TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeesConstMeta => + get kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeeAmountConstMeta => const TaskConstMeta( - debugName: "WithdrawFeesResponse_auto_accessor_set_fees", - argNames: ["that", "fees"], + debugName: "WithdrawFeesResponse_auto_accessor_set_fee_amount", + argNames: ["that", "feeAmount"], ); @override - void crateMultimintWithdrawFeesResponseAutoAccessorSetTxSizeVbytes({ + void crateMultimintWithdrawFeesResponseAutoAccessorSetFeeRateSatsPerVb({ required WithdrawFeesResponse that, - required int txSizeVbytes, + required double feeRateSatsPerVb, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + that, + serializer, + ); + sse_encode_f_64(feeRateSatsPerVb, serializer); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 165, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: + kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeeRateSatsPerVbConstMeta, + argValues: [that, feeRateSatsPerVb], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeeRateSatsPerVbConstMeta => + const TaskConstMeta( + debugName: + "WithdrawFeesResponse_auto_accessor_set_fee_rate_sats_per_vb", + argNames: ["that", "feeRateSatsPerVb"], + ); + + @override + void crateMultimintWithdrawFeesResponseAutoAccessorSetFees({ + required WithdrawFeesResponse that, + required WithdrawFees fees, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFees( + fees, + serializer, + ); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 166, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: + kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeesConstMeta, + argValues: [that, fees], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateMultimintWithdrawFeesResponseAutoAccessorSetFeesConstMeta => + const TaskConstMeta( + debugName: "WithdrawFeesResponse_auto_accessor_set_fees", + argNames: ["that", "fees"], + ); + + @override + void crateMultimintWithdrawFeesResponseAutoAccessorSetTxSizeVbytes({ + required WithdrawFeesResponse that, + required int txSizeVbytes, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( + that, + serializer, + ); + sse_encode_u_32(txSizeVbytes, serializer); + return pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 167, + )!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: + kCrateMultimintWithdrawFeesResponseAutoAccessorSetTxSizeVbytesConstMeta, + argValues: [that, txSizeVbytes], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateMultimintWithdrawFeesResponseAutoAccessorSetTxSizeVbytesConstMeta => + const TaskConstMeta( + debugName: "WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes", + argNames: ["that", "txSizeVbytes"], + ); + + @override + Future crateAckSeedPhrase() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 168, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateAckSeedPhraseConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateAckSeedPhraseConstMeta => + const TaskConstMeta(debugName: "ack_seed_phrase", argNames: []); + + @override + Future crateAddRecoveryRelay({required String relay}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(relay, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 169, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateAddRecoveryRelayConstMeta, + argValues: [relay], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateAddRecoveryRelayConstMeta => + const TaskConstMeta(debugName: "add_recovery_relay", argNames: ["relay"]); + + @override + Future<(String, BigInt?)> crateAllocateDepositAddress({ + required FederationId federationId, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 170, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_record_string_opt_box_autoadd_u_64, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateAllocateDepositAddressConstMeta, + argValues: [federationId], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateAllocateDepositAddressConstMeta => + const TaskConstMeta( + debugName: "allocate_deposit_address", + argNames: ["federationId"], + ); + + @override + Future<(bool, BigInt?)> crateAwaitEcashReissue({ + required FederationId federationId, + required OperationId operationId, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId( + operationId, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 171, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_record_bool_opt_box_autoadd_u_64, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateAwaitEcashReissueConstMeta, + argValues: [federationId, operationId], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateAwaitEcashReissueConstMeta => const TaskConstMeta( + debugName: "await_ecash_reissue", + argNames: ["federationId", "operationId"], + ); + + @override + Future<(FinalReceiveOperationState, BigInt)> crateAwaitReceive({ + required FederationId federationId, + required OperationId operationId, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId( + operationId, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 172, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_final_receive_operation_state_u_64, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateAwaitReceiveConstMeta, + argValues: [federationId, operationId], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateAwaitReceiveConstMeta => const TaskConstMeta( + debugName: "await_receive", + argNames: ["federationId", "operationId"], + ); + + @override + Future crateAwaitSend({ + required FederationId federationId, + required OperationId operationId, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId( + operationId, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 173, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_lightning_send_outcome, + decodeErrorData: null, + ), + constMeta: kCrateAwaitSendConstMeta, + argValues: [federationId, operationId], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateAwaitSendConstMeta => const TaskConstMeta( + debugName: "await_send", + argNames: ["federationId", "operationId"], + ); + + @override + Future crateAwaitWithdraw({ + required FederationId federationId, + required OperationId operationId, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId( + operationId, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 174, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_ecash_app_error, + ), + constMeta: kCrateAwaitWithdrawConstMeta, + argValues: [federationId, operationId], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateAwaitWithdrawConstMeta => const TaskConstMeta( + debugName: "await_withdraw", + argNames: ["federationId", "operationId"], + ); + + @override + Future crateBackupInviteCodes() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 175, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateBackupInviteCodesConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateBackupInviteCodesConstMeta => + const TaskConstMeta(debugName: "backup_invite_codes", argNames: []); + + @override + Future crateBalance({required FederationId federationId}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 176, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateBalanceConstMeta, + argValues: [federationId], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateBalanceConstMeta => + const TaskConstMeta(debugName: "balance", argNames: ["federationId"]); + + @override + Future crateCalculateEcashReissueFees({ + required FederationId federationId, + required String ecash, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(ecash, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 177, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_reissue_fees, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateCalculateEcashReissueFeesConstMeta, + argValues: [federationId, ecash], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateCalculateEcashReissueFeesConstMeta => + const TaskConstMeta( + debugName: "calculate_ecash_reissue_fees", + argNames: ["federationId", "ecash"], + ); + + @override + Future crateCalculateEcashSendFees({ + required FederationId federationId, + required BigInt amountMsats, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_64(amountMsats, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 178, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_ecash_send_fees, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateCalculateEcashSendFeesConstMeta, + argValues: [federationId, amountMsats], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateCalculateEcashSendFeesConstMeta => + const TaskConstMeta( + debugName: "calculate_ecash_send_fees", + argNames: ["federationId", "amountMsats"], + ); + + @override + Future crateCalculateWithdrawFees({ + required FederationId federationId, + required String address, + required BigInt amountSats, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(address, serializer); + sse_encode_u_64(amountSats, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 179, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse, + decodeErrorData: sse_decode_ecash_app_error, + ), + constMeta: kCrateCalculateWithdrawFeesConstMeta, + argValues: [federationId, address, amountSats], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateCalculateWithdrawFeesConstMeta => const TaskConstMeta( + debugName: "calculate_withdraw_fees", + argNames: ["federationId", "address", "amountSats"], + ); + + @override + Future crateChangePinCode({ + required String currentPin, + required String newPin, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(currentPin, serializer); + sse_encode_String(newPin, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 180, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateChangePinCodeConstMeta, + argValues: [currentPin, newPin], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateChangePinCodeConstMeta => const TaskConstMeta( + debugName: "change_pin_code", + argNames: ["currentPin", "newPin"], + ); + + @override + Future crateCheckEcashSpent({ + required FederationId federationId, + required String ecash, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(ecash, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 181, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_bool, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateCheckEcashSpentConstMeta, + argValues: [federationId, ecash], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateCheckEcashSpentConstMeta => const TaskConstMeta( + debugName: "check_ecash_spent", + argNames: ["federationId", "ecash"], + ); + + @override + Future crateCheckLnAddressAvailability({ + required String username, + required String domain, + required String lnAddressApi, + required String recurringdApi, + required FederationId federationId, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(username, serializer); + sse_encode_String(domain, serializer); + sse_encode_String(lnAddressApi, serializer); + sse_encode_String(recurringdApi, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 182, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_ln_address_status, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateCheckLnAddressAvailabilityConstMeta, + argValues: [ + username, + domain, + lnAddressApi, + recurringdApi, + federationId, + ], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateCheckLnAddressAvailabilityConstMeta => + const TaskConstMeta( + debugName: "check_ln_address_availability", + argNames: [ + "username", + "domain", + "lnAddressApi", + "recurringdApi", + "federationId", + ], + ); + + @override + Future<(String, String)> crateClaimRandomLnAddress({ + required FederationId federationId, + required String lnAddressApi, + required String recurringdApi, }) { - return handler.executeSync( - SyncTask( - callFfi: () { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse( - that, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, serializer, ); - sse_encode_u_32(txSizeVbytes, serializer); - return pdeCallFfi( + sse_encode_String(lnAddressApi, serializer); + sse_encode_String(recurringdApi, serializer); + pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 160, - )!; + funcId: 183, + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: sse_decode_record_string_string, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: - kCrateMultimintWithdrawFeesResponseAutoAccessorSetTxSizeVbytesConstMeta, - argValues: [that, txSizeVbytes], + constMeta: kCrateClaimRandomLnAddressConstMeta, + argValues: [federationId, lnAddressApi, recurringdApi], apiImpl: this, ), ); } - TaskConstMeta - get kCrateMultimintWithdrawFeesResponseAutoAccessorSetTxSizeVbytesConstMeta => - const TaskConstMeta( - debugName: "WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes", - argNames: ["that", "txSizeVbytes"], - ); + TaskConstMeta get kCrateClaimRandomLnAddressConstMeta => const TaskConstMeta( + debugName: "claim_random_ln_address", + argNames: ["federationId", "lnAddressApi", "recurringdApi"], + ); @override - Future crateAckSeedPhrase() { + Future crateClearContactsAndStopSync() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -7796,389 +8935,402 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 161, + funcId: 184, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_usize, decodeErrorData: null, ), - constMeta: kCrateAckSeedPhraseConstMeta, + constMeta: kCrateClearContactsAndStopSyncConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateAckSeedPhraseConstMeta => - const TaskConstMeta(debugName: "ack_seed_phrase", argNames: []); + TaskConstMeta get kCrateClearContactsAndStopSyncConstMeta => + const TaskConstMeta( + debugName: "clear_contacts_and_stop_sync", + argNames: [], + ); @override - Future crateAddRecoveryRelay({required String relay}) { + Future crateClearPinCode({required String pin}) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(relay, serializer); + sse_encode_String(pin, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 162, + funcId: 185, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateAddRecoveryRelayConstMeta, - argValues: [relay], + constMeta: kCrateClearPinCodeConstMeta, + argValues: [pin], apiImpl: this, ), ); } - TaskConstMeta get kCrateAddRecoveryRelayConstMeta => - const TaskConstMeta(debugName: "add_recovery_relay", argNames: ["relay"]); + TaskConstMeta get kCrateClearPinCodeConstMeta => + const TaskConstMeta(debugName: "clear_pin_code", argNames: ["pin"]); @override - Future<(String, BigInt?)> crateAllocateDepositAddress({ + Future crateComputeReceiveAmountWithFees({ required FederationId federationId, + required String gatewayUrl, + required bool isLnv2, + required BigInt amountMsats, + required bool includeFees, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( federationId, serializer, ); + sse_encode_String(gatewayUrl, serializer); + sse_encode_bool(isLnv2, serializer); + sse_encode_u_64(amountMsats, serializer); + sse_encode_bool(includeFees, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 163, + funcId: 186, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_record_string_opt_box_autoadd_u_64, + decodeSuccessData: sse_decode_receive_amount, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateAllocateDepositAddressConstMeta, - argValues: [federationId], + constMeta: kCrateComputeReceiveAmountWithFeesConstMeta, + argValues: [federationId, gatewayUrl, isLnv2, amountMsats, includeFees], apiImpl: this, ), ); } - TaskConstMeta get kCrateAllocateDepositAddressConstMeta => + TaskConstMeta get kCrateComputeReceiveAmountWithFeesConstMeta => const TaskConstMeta( - debugName: "allocate_deposit_address", - argNames: ["federationId"], + debugName: "compute_receive_amount_with_fees", + argNames: [ + "federationId", + "gatewayUrl", + "isLnv2", + "amountMsats", + "includeFees", + ], ); @override - Future<(ReissueExternalNotesState, BigInt?)> crateAwaitEcashReissue({ - required FederationId federationId, - required OperationId operationId, - }) { + Future crateDbConnectorDefault() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId( - operationId, - serializer, - ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 164, + funcId: 187, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_reissue_external_notes_state_opt_box_autoadd_u_64, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_connector, + decodeErrorData: null, ), - constMeta: kCrateAwaitEcashReissueConstMeta, - argValues: [federationId, operationId], + constMeta: kCrateDbConnectorDefaultConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateAwaitEcashReissueConstMeta => const TaskConstMeta( - debugName: "await_ecash_reissue", - argNames: ["federationId", "operationId"], - ); + TaskConstMeta get kCrateDbConnectorDefaultConstMeta => + const TaskConstMeta(debugName: "connector_default", argNames: []); @override - Future<(FinalReceiveOperationState, BigInt)> crateAwaitReceive({ - required FederationId federationId, - required OperationId operationId, + Future crateCreateMultimintFromWords({ + required String path, + required List words, + required bool isDesktop, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId( - operationId, - serializer, - ); + sse_encode_String(path, serializer); + sse_encode_list_String(words, serializer); + sse_encode_bool(isDesktop, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 165, + funcId: 188, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_final_receive_operation_state_u_64, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kCrateAwaitReceiveConstMeta, - argValues: [federationId, operationId], + constMeta: kCrateCreateMultimintFromWordsConstMeta, + argValues: [path, words, isDesktop], apiImpl: this, ), ); } - TaskConstMeta get kCrateAwaitReceiveConstMeta => const TaskConstMeta( - debugName: "await_receive", - argNames: ["federationId", "operationId"], - ); + TaskConstMeta get kCrateCreateMultimintFromWordsConstMeta => + const TaskConstMeta( + debugName: "create_multimint_from_words", + argNames: ["path", "words", "isDesktop"], + ); @override - Future crateAwaitSend({ - required FederationId federationId, - required OperationId operationId, + Future crateCreateNewMultimint({ + required String path, + required bool isDesktop, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId( - operationId, - serializer, - ); + sse_encode_String(path, serializer); + sse_encode_bool(isDesktop, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 166, + funcId: 189, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_lightning_send_outcome, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateAwaitSendConstMeta, - argValues: [federationId, operationId], + constMeta: kCrateCreateNewMultimintConstMeta, + argValues: [path, isDesktop], apiImpl: this, ), ); } - TaskConstMeta get kCrateAwaitSendConstMeta => const TaskConstMeta( - debugName: "await_send", - argNames: ["federationId", "operationId"], + TaskConstMeta get kCrateCreateNewMultimintConstMeta => const TaskConstMeta( + debugName: "create_new_multimint", + argNames: ["path", "isDesktop"], ); @override - Future crateAwaitWithdraw({ - required FederationId federationId, - required OperationId operationId, + Uint8List crateEncryptEcashForTap({ + required String ecash, + required List recipientPubkey, }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { + return handler.executeSync( + SyncTask( + callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId( - operationId, - serializer, - ); - pdeCallFfi( + sse_encode_String(ecash, serializer); + sse_encode_list_prim_u_8_loose(recipientPubkey, serializer); + return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 167, - port: port_, - ); + funcId: 190, + )!; }, codec: SseCodec( - decodeSuccessData: sse_decode_String, + decodeSuccessData: sse_decode_list_prim_u_8_strict, decodeErrorData: sse_decode_ecash_app_error, ), - constMeta: kCrateAwaitWithdrawConstMeta, - argValues: [federationId, operationId], + constMeta: kCrateEncryptEcashForTapConstMeta, + argValues: [ecash, recipientPubkey], apiImpl: this, ), ); } - TaskConstMeta get kCrateAwaitWithdrawConstMeta => const TaskConstMeta( - debugName: "await_withdraw", - argNames: ["federationId", "operationId"], + TaskConstMeta get kCrateEncryptEcashForTapConstMeta => const TaskConstMeta( + debugName: "encrypt_ecash_for_tap", + argNames: ["ecash", "recipientPubkey"], ); @override - Future crateBackupInviteCodes() { + Future crateExecuteLnurlWithdraw({ + required FederationId federationId, + required String callback, + required String k1, + required BigInt amountMsatsWithoutFees, + required BigInt amountMsatsWithFees, + required BigInt federationFeeMsats, + required BigInt gatewayFeeMsats, + required String gatewayUrl, + required bool isLnv2, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(callback, serializer); + sse_encode_String(k1, serializer); + sse_encode_u_64(amountMsatsWithoutFees, serializer); + sse_encode_u_64(amountMsatsWithFees, serializer); + sse_encode_u_64(federationFeeMsats, serializer); + sse_encode_u_64(gatewayFeeMsats, serializer); + sse_encode_String(gatewayUrl, serializer); + sse_encode_bool(isLnv2, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 168, + funcId: 191, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateBackupInviteCodesConstMeta, - argValues: [], + constMeta: kCrateExecuteLnurlWithdrawConstMeta, + argValues: [ + federationId, + callback, + k1, + amountMsatsWithoutFees, + amountMsatsWithFees, + federationFeeMsats, + gatewayFeeMsats, + gatewayUrl, + isLnv2, + ], apiImpl: this, ), ); } - TaskConstMeta get kCrateBackupInviteCodesConstMeta => - const TaskConstMeta(debugName: "backup_invite_codes", argNames: []); + TaskConstMeta get kCrateExecuteLnurlWithdrawConstMeta => const TaskConstMeta( + debugName: "execute_lnurl_withdraw", + argNames: [ + "federationId", + "callback", + "k1", + "amountMsatsWithoutFees", + "amountMsatsWithFees", + "federationFeeMsats", + "gatewayFeeMsats", + "gatewayUrl", + "isLnv2", + ], + ); @override - Future crateBalance({required FederationId federationId}) { + Future crateFederationIdToString({ + required FederationId federationId, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( federationId, serializer, ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 169, + funcId: 192, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, + decodeSuccessData: sse_decode_String, decodeErrorData: null, ), - constMeta: kCrateBalanceConstMeta, + constMeta: kCrateFederationIdToStringConstMeta, argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateBalanceConstMeta => - const TaskConstMeta(debugName: "balance", argNames: ["federationId"]); + TaskConstMeta get kCrateFederationIdToStringConstMeta => const TaskConstMeta( + debugName: "federation_id_to_string", + argNames: ["federationId"], + ); @override - Future crateCalculateEcashReissueFees({ - required FederationId federationId, - required String ecash, - }) { + Future> crateFederations() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_String(ecash, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 170, + funcId: 193, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_reissue_fees, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: + sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_bool, + decodeErrorData: null, ), - constMeta: kCrateCalculateEcashReissueFeesConstMeta, - argValues: [federationId, ecash], + constMeta: kCrateFederationsConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateCalculateEcashReissueFeesConstMeta => - const TaskConstMeta( - debugName: "calculate_ecash_reissue_fees", - argNames: ["federationId", "ecash"], - ); + TaskConstMeta get kCrateFederationsConstMeta => + const TaskConstMeta(debugName: "federations", argNames: []); @override - Future crateCalculateEcashSendFees({ - required FederationId federationId, - required BigInt amountMsats, - }) { + Future crateFetchLnurlWithdraw({required String url}) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_64(amountMsats, serializer); + sse_encode_String(url, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 171, + funcId: 194, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_ecash_send_fees, + decodeSuccessData: sse_decode_lnurl_withdraw_params, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateCalculateEcashSendFeesConstMeta, - argValues: [federationId, amountMsats], + constMeta: kCrateFetchLnurlWithdrawConstMeta, + argValues: [url], apiImpl: this, ), ); } - TaskConstMeta get kCrateCalculateEcashSendFeesConstMeta => - const TaskConstMeta( - debugName: "calculate_ecash_send_fees", - argNames: ["federationId", "amountMsats"], - ); + TaskConstMeta get kCrateFetchLnurlWithdrawConstMeta => + const TaskConstMeta(debugName: "fetch_lnurl_withdraw", argNames: ["url"]); @override - Future crateCalculateWithdrawFees({ + Future> crateGetAddresses({ required FederationId federationId, - required String address, - required BigInt amountSats, }) { return handler.executeNormal( NormalTask( @@ -8188,166 +9340,113 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_String(address, serializer); - sse_encode_u_64(amountSats, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 172, + funcId: 195, port: port_, ); }, codec: SseCodec( decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWithdrawFeesResponse, - decodeErrorData: sse_decode_ecash_app_error, + sse_decode_list_record_string_opt_box_autoadd_u_64_opt_box_autoadd_u_64, + decodeErrorData: null, ), - constMeta: kCrateCalculateWithdrawFeesConstMeta, - argValues: [federationId, address, amountSats], + constMeta: kCrateGetAddressesConstMeta, + argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateCalculateWithdrawFeesConstMeta => const TaskConstMeta( - debugName: "calculate_withdraw_fees", - argNames: ["federationId", "address", "amountSats"], + TaskConstMeta get kCrateGetAddressesConstMeta => const TaskConstMeta( + debugName: "get_addresses", + argNames: ["federationId"], ); @override - Future crateCheckEcashSpent({ - required FederationId federationId, - required String ecash, - }) { + Future?> crateGetAllBtcPrices() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_String(ecash, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 173, + funcId: 196, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_opt_list_record_fiat_currency_u_64, + decodeErrorData: null, ), - constMeta: kCrateCheckEcashSpentConstMeta, - argValues: [federationId, ecash], + constMeta: kCrateGetAllBtcPricesConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateCheckEcashSpentConstMeta => const TaskConstMeta( - debugName: "check_ecash_spent", - argNames: ["federationId", "ecash"], - ); + TaskConstMeta get kCrateGetAllBtcPricesConstMeta => + const TaskConstMeta(debugName: "get_all_btc_prices", argNames: []); @override - Future crateCheckLnAddressAvailability({ - required String username, - required String domain, - required String lnAddressApi, - required String recurringdApi, - required FederationId federationId, - }) { + Future> crateGetAllContacts() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(username, serializer); - sse_encode_String(domain, serializer); - sse_encode_String(lnAddressApi, serializer); - sse_encode_String(recurringdApi, serializer); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 174, + funcId: 197, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_ln_address_status, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_list_contact, + decodeErrorData: null, ), - constMeta: kCrateCheckLnAddressAvailabilityConstMeta, - argValues: [ - username, - domain, - lnAddressApi, - recurringdApi, - federationId, - ], + constMeta: kCrateGetAllContactsConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateCheckLnAddressAvailabilityConstMeta => - const TaskConstMeta( - debugName: "check_ln_address_availability", - argNames: [ - "username", - "domain", - "lnAddressApi", - "recurringdApi", - "federationId", - ], - ); + TaskConstMeta get kCrateGetAllContactsConstMeta => + const TaskConstMeta(debugName: "get_all_contacts", argNames: []); @override - Future<(String, String)> crateClaimRandomLnAddress({ - required FederationId federationId, - required String lnAddressApi, - required String recurringdApi, - }) { + Future crateGetBitcoinDisplay() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_String(lnAddressApi, serializer); - sse_encode_String(recurringdApi, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 175, + funcId: 198, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_record_string_string, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_bitcoin_display, + decodeErrorData: null, ), - constMeta: kCrateClaimRandomLnAddressConstMeta, - argValues: [federationId, lnAddressApi, recurringdApi], + constMeta: kCrateGetBitcoinDisplayConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateClaimRandomLnAddressConstMeta => const TaskConstMeta( - debugName: "claim_random_ln_address", - argNames: ["federationId", "lnAddressApi", "recurringdApi"], - ); + TaskConstMeta get kCrateGetBitcoinDisplayConstMeta => + const TaskConstMeta(debugName: "get_bitcoin_display", argNames: []); @override - Future crateClearContactsAndStopSync() { + Future crateGetBtcPrice() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -8355,107 +9454,92 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 176, + funcId: 199, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_usize, + decodeSuccessData: sse_decode_opt_box_autoadd_u_64, decodeErrorData: null, ), - constMeta: kCrateClearContactsAndStopSyncConstMeta, + constMeta: kCrateGetBtcPriceConstMeta, argValues: [], apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateClearContactsAndStopSyncConstMeta => - const TaskConstMeta( - debugName: "clear_contacts_and_stop_sync", - argNames: [], - ); + ), + ); + } + + TaskConstMeta get kCrateGetBtcPriceConstMeta => + const TaskConstMeta(debugName: "get_btc_price", argNames: []); @override - Future crateClearPinCode({required String pin}) { + Future crateGetEventBus() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(pin, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 177, + funcId: 200, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEventBusMultimintEvent, + decodeErrorData: null, ), - constMeta: kCrateClearPinCodeConstMeta, - argValues: [pin], + constMeta: kCrateGetEventBusConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateClearPinCodeConstMeta => - const TaskConstMeta(debugName: "clear_pin_code", argNames: ["pin"]); + TaskConstMeta get kCrateGetEventBusConstMeta => + const TaskConstMeta(debugName: "get_event_bus", argNames: []); @override - Future crateComputeReceiveAmountWithFees({ - required FederationId federationId, - required String gatewayUrl, - required bool isLnv2, - required BigInt amountMsats, - required bool includeFees, + Future crateGetFederationMeta({ + String? inviteCode, + FederationId? federationId, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + sse_encode_opt_String(inviteCode, serializer); + sse_encode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( federationId, serializer, ); - sse_encode_String(gatewayUrl, serializer); - sse_encode_bool(isLnv2, serializer); - sse_encode_u_64(amountMsats, serializer); - sse_encode_bool(includeFees, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 178, + funcId: 201, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_receive_amount, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationMeta, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateComputeReceiveAmountWithFeesConstMeta, - argValues: [federationId, gatewayUrl, isLnv2, amountMsats, includeFees], + constMeta: kCrateGetFederationMetaConstMeta, + argValues: [inviteCode, federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateComputeReceiveAmountWithFeesConstMeta => - const TaskConstMeta( - debugName: "compute_receive_amount_with_fees", - argNames: [ - "federationId", - "gatewayUrl", - "isLnv2", - "amountMsats", - "includeFees", - ], - ); + TaskConstMeta get kCrateGetFederationMetaConstMeta => const TaskConstMeta( + debugName: "get_federation_meta", + argNames: ["inviteCode", "federationId"], + ); @override - Future crateDbConnectorDefault() { + Future?> crateGetFederationOrder() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -8463,139 +9547,132 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 179, + funcId: 202, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_connector, + decodeSuccessData: + sse_decode_opt_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId, decodeErrorData: null, ), - constMeta: kCrateDbConnectorDefaultConstMeta, + constMeta: kCrateGetFederationOrderConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateDbConnectorDefaultConstMeta => - const TaskConstMeta(debugName: "connector_default", argNames: []); + TaskConstMeta get kCrateGetFederationOrderConstMeta => + const TaskConstMeta(debugName: "get_federation_order", argNames: []); @override - Future crateCreateMultimintFromWords({ - required String path, - required List words, - required bool isDesktop, - }) { + Future crateGetFiatCurrency() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(path, serializer); - sse_encode_list_String(words, serializer); - sse_encode_bool(isDesktop, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 180, + funcId: 203, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: sse_decode_fiat_currency, decodeErrorData: null, ), - constMeta: kCrateCreateMultimintFromWordsConstMeta, - argValues: [path, words, isDesktop], + constMeta: kCrateGetFiatCurrencyConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateCreateMultimintFromWordsConstMeta => - const TaskConstMeta( - debugName: "create_multimint_from_words", - argNames: ["path", "words", "isDesktop"], - ); + TaskConstMeta get kCrateGetFiatCurrencyConstMeta => + const TaskConstMeta(debugName: "get_fiat_currency", argNames: []); @override - Future crateCreateNewMultimint({ - required String path, - required bool isDesktop, + Future crateGetInviteCode({ + required FederationId federationId, + required int peer, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(path, serializer); - sse_encode_bool(isDesktop, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 181, + funcId: 204, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateCreateNewMultimintConstMeta, - argValues: [path, isDesktop], + constMeta: kCrateGetInviteCodeConstMeta, + argValues: [federationId, peer], apiImpl: this, ), ); } - TaskConstMeta get kCrateCreateNewMultimintConstMeta => const TaskConstMeta( - debugName: "create_new_multimint", - argNames: ["path", "isDesktop"], + TaskConstMeta get kCrateGetInviteCodeConstMeta => const TaskConstMeta( + debugName: "get_invite_code", + argNames: ["federationId", "peer"], ); @override - Uint8List crateEncryptEcashForTap({ - required String ecash, - required List recipientPubkey, + Future crateGetInvoiceFromLnaddressOrLnurl({ + required FederationId federationId, + required BigInt amountMsats, + required String lnaddressOrLnurl, }) { - return handler.executeSync( - SyncTask( - callFfi: () { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(ecash, serializer); - sse_encode_list_prim_u_8_loose(recipientPubkey, serializer); - return pdeCallFfi( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_64(amountMsats, serializer); + sse_encode_String(lnaddressOrLnurl, serializer); + pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 182, - )!; + funcId: 205, + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeSuccessData: sse_decode_String, decodeErrorData: sse_decode_ecash_app_error, ), - constMeta: kCrateEncryptEcashForTapConstMeta, - argValues: [ecash, recipientPubkey], + constMeta: kCrateGetInvoiceFromLnaddressOrLnurlConstMeta, + argValues: [federationId, amountMsats, lnaddressOrLnurl], apiImpl: this, ), ); } - TaskConstMeta get kCrateEncryptEcashForTapConstMeta => const TaskConstMeta( - debugName: "encrypt_ecash_for_tap", - argNames: ["ecash", "recipientPubkey"], - ); + TaskConstMeta get kCrateGetInvoiceFromLnaddressOrLnurlConstMeta => + const TaskConstMeta( + debugName: "get_invoice_from_lnaddress_or_lnurl", + argNames: ["federationId", "amountMsats", "lnaddressOrLnurl"], + ); @override - Future crateExecuteLnurlWithdraw({ + Future crateGetLnAddressConfig({ required FederationId federationId, - required String callback, - required String k1, - required BigInt amountMsatsWithoutFees, - required BigInt amountMsatsWithFees, - required BigInt federationFeeMsats, - required BigInt gatewayFeeMsats, - required String gatewayUrl, - required bool isLnv2, }) { return handler.executeNormal( NormalTask( @@ -8605,95 +9682,70 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_String(callback, serializer); - sse_encode_String(k1, serializer); - sse_encode_u_64(amountMsatsWithoutFees, serializer); - sse_encode_u_64(amountMsatsWithFees, serializer); - sse_encode_u_64(federationFeeMsats, serializer); - sse_encode_u_64(gatewayFeeMsats, serializer); - sse_encode_String(gatewayUrl, serializer); - sse_encode_bool(isLnv2, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 183, + funcId: 206, port: port_, ); }, codec: SseCodec( decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId, - decodeErrorData: sse_decode_AnyhowException, + sse_decode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerLightningAddressConfig, + decodeErrorData: null, ), - constMeta: kCrateExecuteLnurlWithdrawConstMeta, - argValues: [ - federationId, - callback, - k1, - amountMsatsWithoutFees, - amountMsatsWithFees, - federationFeeMsats, - gatewayFeeMsats, - gatewayUrl, - isLnv2, - ], + constMeta: kCrateGetLnAddressConfigConstMeta, + argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateExecuteLnurlWithdrawConstMeta => const TaskConstMeta( - debugName: "execute_lnurl_withdraw", - argNames: [ - "federationId", - "callback", - "k1", - "amountMsatsWithoutFees", - "amountMsatsWithFees", - "federationFeeMsats", - "gatewayFeeMsats", - "gatewayUrl", - "isLnv2", - ], + TaskConstMeta get kCrateGetLnAddressConfigConstMeta => const TaskConstMeta( + debugName: "get_ln_address_config", + argNames: ["federationId"], ); @override - Future crateFederationIdToString({ + Future crateGetMaxWithdrawableAmount({ required FederationId federationId, + required String address, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( federationId, serializer, ); + sse_encode_String(address, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 184, + funcId: 207, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: null, + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_ecash_app_error, ), - constMeta: kCrateFederationIdToStringConstMeta, - argValues: [federationId], + constMeta: kCrateGetMaxWithdrawableAmountConstMeta, + argValues: [federationId, address], apiImpl: this, ), ); } - TaskConstMeta get kCrateFederationIdToStringConstMeta => const TaskConstMeta( - debugName: "federation_id_to_string", - argNames: ["federationId"], - ); + TaskConstMeta get kCrateGetMaxWithdrawableAmountConstMeta => + const TaskConstMeta( + debugName: "get_max_withdrawable_amount", + argNames: ["federationId", "address"], + ); @override - Future> crateFederations() { + Future> crateGetMnemonic() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -8701,55 +9753,64 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 185, + funcId: 208, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_bool, + decodeSuccessData: sse_decode_list_String, decodeErrorData: null, ), - constMeta: kCrateFederationsConstMeta, + constMeta: kCrateGetMnemonicConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateFederationsConstMeta => - const TaskConstMeta(debugName: "federations", argNames: []); + TaskConstMeta get kCrateGetMnemonicConstMeta => + const TaskConstMeta(debugName: "get_mnemonic", argNames: []); @override - Future crateFetchLnurlWithdraw({required String url}) { + Future<(int, int)> crateGetModuleRecoveryProgress({ + required FederationId federationId, + required RecoveryModule recoveryModule, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(url, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_recovery_module(recoveryModule, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 186, + funcId: 209, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_lnurl_withdraw_params, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_record_u_32_u_32, + decodeErrorData: null, ), - constMeta: kCrateFetchLnurlWithdrawConstMeta, - argValues: [url], + constMeta: kCrateGetModuleRecoveryProgressConstMeta, + argValues: [federationId, recoveryModule], apiImpl: this, ), ); } - TaskConstMeta get kCrateFetchLnurlWithdrawConstMeta => - const TaskConstMeta(debugName: "fetch_lnurl_withdraw", argNames: ["url"]); + TaskConstMeta get kCrateGetModuleRecoveryProgressConstMeta => + const TaskConstMeta( + debugName: "get_module_recovery_progress", + argNames: ["federationId", "recoveryModule"], + ); @override - Future> crateGetAddresses({ + Future> crateGetNoteSummary({ required FederationId federationId, }) { return handler.executeNormal( @@ -8763,29 +9824,29 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 187, + funcId: 210, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_list_record_string_opt_box_autoadd_u_64_opt_box_autoadd_u_64, - decodeErrorData: null, + decodeSuccessData: sse_decode_list_record_u_64_usize, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetAddressesConstMeta, + constMeta: kCrateGetNoteSummaryConstMeta, argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetAddressesConstMeta => const TaskConstMeta( - debugName: "get_addresses", + TaskConstMeta get kCrateGetNoteSummaryConstMeta => const TaskConstMeta( + debugName: "get_note_summary", argNames: ["federationId"], ); @override - Future?> crateGetAllBtcPrices() { + Future> + crateGetNwcConnectionInfo() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -8793,26 +9854,27 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 188, + funcId: 211, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_opt_list_record_fiat_currency_u_64, + decodeSuccessData: + sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_nwc_connection_info, decodeErrorData: null, ), - constMeta: kCrateGetAllBtcPricesConstMeta, + constMeta: kCrateGetNwcConnectionInfoConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetAllBtcPricesConstMeta => - const TaskConstMeta(debugName: "get_all_btc_prices", argNames: []); + TaskConstMeta get kCrateGetNwcConnectionInfoConstMeta => + const TaskConstMeta(debugName: "get_nwc_connection_info", argNames: []); @override - Future> crateGetAllContacts() { + Future crateGetNwcDailyBudgetSats() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -8820,26 +9882,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 189, + funcId: 212, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_contact, + decodeSuccessData: sse_decode_u_64, decodeErrorData: null, ), - constMeta: kCrateGetAllContactsConstMeta, + constMeta: kCrateGetNwcDailyBudgetSatsConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetAllContactsConstMeta => - const TaskConstMeta(debugName: "get_all_contacts", argNames: []); + TaskConstMeta get kCrateGetNwcDailyBudgetSatsConstMeta => + const TaskConstMeta(debugName: "get_nwc_daily_budget_sats", argNames: []); @override - Future crateGetBitcoinDisplay() { + Future crateGetNwcMaxPaymentSats() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -8847,53 +9909,61 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 190, + funcId: 213, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bitcoin_display, + decodeSuccessData: sse_decode_u_64, decodeErrorData: null, ), - constMeta: kCrateGetBitcoinDisplayConstMeta, + constMeta: kCrateGetNwcMaxPaymentSatsConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetBitcoinDisplayConstMeta => - const TaskConstMeta(debugName: "get_bitcoin_display", argNames: []); + TaskConstMeta get kCrateGetNwcMaxPaymentSatsConstMeta => + const TaskConstMeta(debugName: "get_nwc_max_payment_sats", argNames: []); @override - Future crateGetBtcPrice() { + Future crateGetPeginFeeQuote({ + required FederationId federationId, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 191, + funcId: 214, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_opt_box_autoadd_u_64, - decodeErrorData: null, + decodeSuccessData: sse_decode_pegin_fee_quote, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetBtcPriceConstMeta, - argValues: [], + constMeta: kCrateGetPeginFeeQuoteConstMeta, + argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetBtcPriceConstMeta => - const TaskConstMeta(debugName: "get_btc_price", argNames: []); + TaskConstMeta get kCrateGetPeginFeeQuoteConstMeta => const TaskConstMeta( + debugName: "get_pegin_fee_quote", + argNames: ["federationId"], + ); @override - Future crateGetEventBus() { + Future> crateGetRelays() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -8901,65 +9971,56 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 192, + funcId: 215, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEventBusMultimintEvent, + decodeSuccessData: sse_decode_list_record_string_bool, decodeErrorData: null, ), - constMeta: kCrateGetEventBusConstMeta, + constMeta: kCrateGetRelaysConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetEventBusConstMeta => - const TaskConstMeta(debugName: "get_event_bus", argNames: []); + TaskConstMeta get kCrateGetRelaysConstMeta => + const TaskConstMeta(debugName: "get_relays", argNames: []); @override - Future crateGetFederationMeta({ - String? inviteCode, - FederationId? federationId, - }) { + Future crateGetRequirePinForSpending() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_opt_String(inviteCode, serializer); - sse_encode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 193, + funcId: 216, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationMeta, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, ), - constMeta: kCrateGetFederationMetaConstMeta, - argValues: [inviteCode, federationId], + constMeta: kCrateGetRequirePinForSpendingConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetFederationMetaConstMeta => const TaskConstMeta( - debugName: "get_federation_meta", - argNames: ["inviteCode", "federationId"], - ); + TaskConstMeta get kCrateGetRequirePinForSpendingConstMeta => + const TaskConstMeta( + debugName: "get_require_pin_for_spending", + argNames: [], + ); @override - Future?> crateGetFederationOrder() { + Future crateGetShowMsats() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -8967,27 +10028,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 194, + funcId: 217, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_opt_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId, + decodeSuccessData: sse_decode_bool, decodeErrorData: null, ), - constMeta: kCrateGetFederationOrderConstMeta, + constMeta: kCrateGetShowMsatsConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetFederationOrderConstMeta => - const TaskConstMeta(debugName: "get_federation_order", argNames: []); + TaskConstMeta get kCrateGetShowMsatsConstMeta => + const TaskConstMeta(debugName: "get_show_msats", argNames: []); @override - Future crateGetFiatCurrency() { + Future crateGetTapReceiveEnabled() { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -8995,28 +10055,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 195, + funcId: 218, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_fiat_currency, + decodeSuccessData: sse_decode_bool, decodeErrorData: null, ), - constMeta: kCrateGetFiatCurrencyConstMeta, + constMeta: kCrateGetTapReceiveEnabledConstMeta, argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetFiatCurrencyConstMeta => - const TaskConstMeta(debugName: "get_fiat_currency", argNames: []); + TaskConstMeta get kCrateGetTapReceiveEnabledConstMeta => + const TaskConstMeta(debugName: "get_tap_receive_enabled", argNames: []); @override - Future crateGetInviteCode({ + Future crateGuardianAddGateway({ required FederationId federationId, required int peer, + required String password, + required String gatewayUrl, }) { return handler.executeNormal( NormalTask( @@ -9027,67 +10089,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { serializer, ); sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); + sse_encode_String(gatewayUrl, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 196, + funcId: 219, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_String, + decodeSuccessData: sse_decode_bool, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetInviteCodeConstMeta, - argValues: [federationId, peer], + constMeta: kCrateGuardianAddGatewayConstMeta, + argValues: [federationId, peer, password, gatewayUrl], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetInviteCodeConstMeta => const TaskConstMeta( - debugName: "get_invite_code", - argNames: ["federationId", "peer"], + TaskConstMeta get kCrateGuardianAddGatewayConstMeta => const TaskConstMeta( + debugName: "guardian_add_gateway", + argNames: ["federationId", "peer", "password", "gatewayUrl"], ); @override - Future crateGetInvoiceFromLnaddressOrLnurl({ - required BigInt amountMsats, - required String lnaddressOrLnurl, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_u_64(amountMsats, serializer); - sse_encode_String(lnaddressOrLnurl, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 197, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_ecash_app_error, - ), - constMeta: kCrateGetInvoiceFromLnaddressOrLnurlConstMeta, - argValues: [amountMsats, lnaddressOrLnurl], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateGetInvoiceFromLnaddressOrLnurlConstMeta => - const TaskConstMeta( - debugName: "get_invoice_from_lnaddress_or_lnurl", - argNames: ["amountMsats", "lnaddressOrLnurl"], - ); - - @override - Future crateGetLnAddressConfig({ + Future crateGuardianAudit({ required FederationId federationId, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( @@ -9097,34 +10128,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 198, + funcId: 220, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_opt_box_autoadd_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerLightningAddressConfig, - decodeErrorData: null, + decodeSuccessData: sse_decode_guardian_audit_summary, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetLnAddressConfigConstMeta, - argValues: [federationId], + constMeta: kCrateGuardianAuditConstMeta, + argValues: [federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetLnAddressConfigConstMeta => const TaskConstMeta( - debugName: "get_ln_address_config", - argNames: ["federationId"], + TaskConstMeta get kCrateGuardianAuditConstMeta => const TaskConstMeta( + debugName: "guardian_audit", + argNames: ["federationId", "peer", "password"], ); @override - Future crateGetMaxWithdrawableAmount({ + Future crateGuardianBackupStatistics({ required FederationId federationId, - required String address, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( @@ -9134,62 +10167,74 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_String(address, serializer); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 199, + funcId: 221, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_u_64, - decodeErrorData: sse_decode_ecash_app_error, + decodeSuccessData: sse_decode_guardian_backup_statistics, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetMaxWithdrawableAmountConstMeta, - argValues: [federationId, address], + constMeta: kCrateGuardianBackupStatisticsConstMeta, + argValues: [federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetMaxWithdrawableAmountConstMeta => + TaskConstMeta get kCrateGuardianBackupStatisticsConstMeta => const TaskConstMeta( - debugName: "get_max_withdrawable_amount", - argNames: ["federationId", "address"], + debugName: "guardian_backup_statistics", + argNames: ["federationId", "peer", "password"], ); @override - Future> crateGetMnemonic() { + Future> crateGuardianListGateways({ + required FederationId federationId, + required int peer, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 200, + funcId: 222, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_list_String, - decodeErrorData: null, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetMnemonicConstMeta, - argValues: [], + constMeta: kCrateGuardianListGatewaysConstMeta, + argValues: [federationId, peer], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetMnemonicConstMeta => - const TaskConstMeta(debugName: "get_mnemonic", argNames: []); + TaskConstMeta get kCrateGuardianListGatewaysConstMeta => const TaskConstMeta( + debugName: "guardian_list_gateways", + argNames: ["federationId", "peer"], + ); @override - Future<(int, int)> crateGetModuleRecoveryProgress({ + Future crateGuardianLogin({ required FederationId federationId, - required int moduleId, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( @@ -9199,34 +10244,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(moduleId, serializer); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 201, + funcId: 223, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_record_u_32_u_32, - decodeErrorData: null, + decodeSuccessData: sse_decode_bool, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetModuleRecoveryProgressConstMeta, - argValues: [federationId, moduleId], + constMeta: kCrateGuardianLoginConstMeta, + argValues: [federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetModuleRecoveryProgressConstMeta => - const TaskConstMeta( - debugName: "get_module_recovery_progress", - argNames: ["federationId", "moduleId"], - ); + TaskConstMeta get kCrateGuardianLoginConstMeta => const TaskConstMeta( + debugName: "guardian_login", + argNames: ["federationId", "peer", "password"], + ); @override - Future> crateGetNoteSummary({ + Future crateGuardianMetaAccept({ required FederationId federationId, + required int peer, + required String password, + required String valueHex, }) { return handler.executeNormal( NormalTask( @@ -9236,176 +10284,233 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); + sse_encode_String(valueHex, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 202, + funcId: 224, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_record_u_64_usize, + decodeSuccessData: sse_decode_unit, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetNoteSummaryConstMeta, - argValues: [federationId], + constMeta: kCrateGuardianMetaAcceptConstMeta, + argValues: [federationId, peer, password, valueHex], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetNoteSummaryConstMeta => const TaskConstMeta( - debugName: "get_note_summary", - argNames: ["federationId"], + TaskConstMeta get kCrateGuardianMetaAcceptConstMeta => const TaskConstMeta( + debugName: "guardian_meta_accept", + argNames: ["federationId", "peer", "password", "valueHex"], ); @override - Future> - crateGetNwcConnectionInfo() { + Future crateGuardianMetaProposeField({ + required FederationId federationId, + required int peer, + required String password, + required String field, + String? value, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); + sse_encode_String(field, serializer); + sse_encode_opt_String(value, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 203, + funcId: 225, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_list_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_selector_nwc_connection_info, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetNwcConnectionInfoConstMeta, - argValues: [], + constMeta: kCrateGuardianMetaProposeFieldConstMeta, + argValues: [federationId, peer, password, field, value], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetNwcConnectionInfoConstMeta => - const TaskConstMeta(debugName: "get_nwc_connection_info", argNames: []); + TaskConstMeta get kCrateGuardianMetaProposeFieldConstMeta => + const TaskConstMeta( + debugName: "guardian_meta_propose_field", + argNames: ["federationId", "peer", "password", "field", "value"], + ); @override - Future crateGetPeginFeeQuote({ + Future crateGuardianMetaState({ required FederationId federationId, + required int peer, + required String password, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( federationId, serializer, ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 204, + funcId: 226, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_pegin_fee_quote, + decodeSuccessData: sse_decode_guardian_meta_state, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetPeginFeeQuoteConstMeta, - argValues: [federationId], + constMeta: kCrateGuardianMetaStateConstMeta, + argValues: [federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetPeginFeeQuoteConstMeta => const TaskConstMeta( - debugName: "get_pegin_fee_quote", - argNames: ["federationId"], + TaskConstMeta get kCrateGuardianMetaStateConstMeta => const TaskConstMeta( + debugName: "guardian_meta_state", + argNames: ["federationId", "peer", "password"], ); @override - Future> crateGetRelays() { + Future crateGuardianMetaWithdraw({ + required FederationId federationId, + required int peer, + required String password, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 205, + funcId: 227, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_record_string_bool, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetRelaysConstMeta, - argValues: [], + constMeta: kCrateGuardianMetaWithdrawConstMeta, + argValues: [federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetRelaysConstMeta => - const TaskConstMeta(debugName: "get_relays", argNames: []); + TaskConstMeta get kCrateGuardianMetaWithdrawConstMeta => const TaskConstMeta( + debugName: "guardian_meta_withdraw", + argNames: ["federationId", "peer", "password"], + ); @override - Future crateGetRequirePinForSpending() { + Future crateGuardianRemoveGateway({ + required FederationId federationId, + required int peer, + required String password, + required String gatewayUrl, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); + sse_encode_String(gatewayUrl, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 206, + funcId: 228, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_bool, - decodeErrorData: null, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetRequirePinForSpendingConstMeta, - argValues: [], + constMeta: kCrateGuardianRemoveGatewayConstMeta, + argValues: [federationId, peer, password, gatewayUrl], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetRequirePinForSpendingConstMeta => - const TaskConstMeta( - debugName: "get_require_pin_for_spending", - argNames: [], - ); + TaskConstMeta get kCrateGuardianRemoveGatewayConstMeta => const TaskConstMeta( + debugName: "guardian_remove_gateway", + argNames: ["federationId", "peer", "password", "gatewayUrl"], + ); @override - Future crateGetShowMsats() { + Future crateGuardianStatus({ + required FederationId federationId, + required int peer, + required String password, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_u_16(peer, serializer); + sse_encode_String(password, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 207, + funcId: 229, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: null, + decodeSuccessData: sse_decode_guardian_status_summary, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateGetShowMsatsConstMeta, - argValues: [], + constMeta: kCrateGuardianStatusConstMeta, + argValues: [federationId, peer, password], apiImpl: this, ), ); } - TaskConstMeta get kCrateGetShowMsatsConstMeta => - const TaskConstMeta(debugName: "get_show_msats", argNames: []); + TaskConstMeta get kCrateGuardianStatusConstMeta => const TaskConstMeta( + debugName: "guardian_status", + argNames: ["federationId", "peer", "password"], + ); @override Future crateHasImportedContacts() { @@ -9416,7 +10521,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 208, + funcId: 230, port: port_, ); }, @@ -9443,7 +10548,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 209, + funcId: 231, port: port_, ); }, @@ -9470,7 +10575,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 210, + funcId: 232, port: port_, ); }, @@ -9498,7 +10603,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 211, + funcId: 233, port: port_, ); }, @@ -9526,7 +10631,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 212, + funcId: 234, )!; }, codec: SseCodec( @@ -9557,7 +10662,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 213, + funcId: 235, port: port_, ); }, @@ -9591,7 +10696,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 214, + funcId: 236, port: port_, ); }, @@ -9623,7 +10728,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 215, + funcId: 237, port: port_, ); }, @@ -9662,7 +10767,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 216, + funcId: 238, port: port_, ); }, @@ -9694,7 +10799,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 217, + funcId: 239, port: port_, ); }, @@ -9724,7 +10829,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 218, + funcId: 240, port: port_, ); }, @@ -9758,7 +10863,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 219, + funcId: 241, port: port_, ); }, @@ -9778,6 +10883,47 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["path", "isDesktop"], ); + @override + Future crateMaxLightningSend({ + required FederationId federationId, + required String lnaddressOrLnurl, + required String gateway, + required bool isLnv2, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + sse_encode_String(lnaddressOrLnurl, serializer); + sse_encode_String(gateway, serializer); + sse_encode_bool(isLnv2, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 242, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateMaxLightningSendConstMeta, + argValues: [federationId, lnaddressOrLnurl, gateway, isLnv2], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateMaxLightningSendConstMeta => const TaskConstMeta( + debugName: "max_lightning_send", + argNames: ["federationId", "lnaddressOrLnurl", "gateway", "isLnv2"], + ); + @override Future> cratePaginateContacts({ BigInt? cursorLastPaidAt, @@ -9796,7 +10942,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 220, + funcId: 243, port: port_, ); }, @@ -9836,7 +10982,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 221, + funcId: 244, port: port_, ); }, @@ -9879,7 +11025,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 222, + funcId: 245, )!; }, codec: SseCodec( @@ -9914,7 +11060,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 223, + funcId: 246, port: port_, ); }, @@ -9948,7 +11094,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 224, + funcId: 247, port: port_, ); }, @@ -9984,7 +11130,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 225, + funcId: 248, port: port_, ); }, @@ -10005,6 +11151,33 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["federationId", "bolt11"], ); + @override + Future cratePinLockoutSeconds() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 249, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: null, + ), + constMeta: kCratePinLockoutSecondsConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCratePinLockoutSecondsConstMeta => + const TaskConstMeta(debugName: "pin_lockout_seconds", argNames: []); + @override Future<(String, OperationId, String, String, BigInt)> crateReceive({ required FederationId federationId, @@ -10032,7 +11205,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 226, + funcId: 250, port: port_, ); }, @@ -10086,7 +11259,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 227, + funcId: 251, port: port_, ); }, @@ -10115,7 +11288,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 228, + funcId: 252, port: port_, ); }, @@ -10123,15 +11296,51 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateRefreshConnectionsConstMeta, - argValues: [], + constMeta: kCrateRefreshConnectionsConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateRefreshConnectionsConstMeta => + const TaskConstMeta(debugName: "refresh_connections", argNames: []); + + @override + Future crateRefreshFederationMeta({ + required FederationId federationId, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( + federationId, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 253, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationMeta, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateRefreshFederationMetaConstMeta, + argValues: [federationId], apiImpl: this, ), ); } - TaskConstMeta get kCrateRefreshConnectionsConstMeta => - const TaskConstMeta(debugName: "refresh_connections", argNames: []); + TaskConstMeta get kCrateRefreshFederationMetaConstMeta => const TaskConstMeta( + debugName: "refresh_federation_meta", + argNames: ["federationId"], + ); @override Future crateRegisterLnAddress({ @@ -10156,7 +11365,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 229, + funcId: 254, port: port_, ); }, @@ -10207,7 +11416,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 230, + funcId: 255, port: port_, ); }, @@ -10237,7 +11446,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 231, + funcId: 256, port: port_, ); }, @@ -10273,7 +11482,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 232, + funcId: 257, port: port_, ); }, @@ -10304,7 +11513,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 233, + funcId: 258, port: port_, ); }, @@ -10351,7 +11560,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 234, + funcId: 259, port: port_, ); }, @@ -10409,7 +11618,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 235, + funcId: 260, port: port_, ); }, @@ -10430,46 +11639,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["federationId", "amountMsats", "feeMsats"], ); - @override - Future crateSendLnaddress({ - required FederationId federationId, - required BigInt amountMsats, - required String address, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFederationId( - federationId, - serializer, - ); - sse_encode_u_64(amountMsats, serializer); - sse_encode_String(address, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 236, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperationId, - decodeErrorData: sse_decode_ecash_app_error, - ), - constMeta: kCrateSendLnaddressConstMeta, - argValues: [federationId, amountMsats, address], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateSendLnaddressConstMeta => const TaskConstMeta( - debugName: "send_lnaddress", - argNames: ["federationId", "amountMsats", "address"], - ); - @override Future crateSetBitcoinDisplay({ required BitcoinDisplay bitcoinDisplay, @@ -10482,7 +11651,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 237, + funcId: 261, port: port_, ); }, @@ -10515,7 +11684,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 238, + funcId: 262, port: port_, ); }, @@ -10545,7 +11714,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 239, + funcId: 263, port: port_, ); }, @@ -10584,7 +11753,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 240, + funcId: 264, port: port_, ); }, @@ -10604,6 +11773,66 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["federationId", "relay", "isDesktop"], ); + @override + Future crateSetNwcDailyBudgetSats({required BigInt sats}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_u_64(sats, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 265, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateSetNwcDailyBudgetSatsConstMeta, + argValues: [sats], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateSetNwcDailyBudgetSatsConstMeta => const TaskConstMeta( + debugName: "set_nwc_daily_budget_sats", + argNames: ["sats"], + ); + + @override + Future crateSetNwcMaxPaymentSats({required BigInt sats}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_u_64(sats, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 266, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateSetNwcMaxPaymentSatsConstMeta, + argValues: [sats], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateSetNwcMaxPaymentSatsConstMeta => const TaskConstMeta( + debugName: "set_nwc_max_payment_sats", + argNames: ["sats"], + ); + @override Future crateSetPinCode({required String pin}) { return handler.executeNormal( @@ -10614,7 +11843,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 241, + funcId: 267, port: port_, ); }, @@ -10633,25 +11862,29 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { const TaskConstMeta(debugName: "set_pin_code", argNames: ["pin"]); @override - Future crateSetRequirePinForSpending({required bool require}) { + Future crateSetRequirePinForSpending({ + required bool require, + String? currentPin, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_bool(require, serializer); + sse_encode_opt_String(currentPin, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 242, + funcId: 268, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_unit, - decodeErrorData: null, + decodeErrorData: sse_decode_AnyhowException, ), constMeta: kCrateSetRequirePinForSpendingConstMeta, - argValues: [require], + argValues: [require, currentPin], apiImpl: this, ), ); @@ -10660,7 +11893,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kCrateSetRequirePinForSpendingConstMeta => const TaskConstMeta( debugName: "set_require_pin_for_spending", - argNames: ["require"], + argNames: ["require", "currentPin"], ); @override @@ -10673,7 +11906,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 243, + funcId: 269, port: port_, ); }, @@ -10691,6 +11924,36 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kCrateSetShowMsatsConstMeta => const TaskConstMeta(debugName: "set_show_msats", argNames: ["showMsats"]); + @override + Future crateSetTapReceiveEnabled({required bool enabled}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_bool(enabled, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 270, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateSetTapReceiveEnabledConstMeta, + argValues: [enabled], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateSetTapReceiveEnabledConstMeta => const TaskConstMeta( + debugName: "set_tap_receive_enabled", + argNames: ["enabled"], + ); + @override Stream crateSubscribeDeposits({ required FederationId federationId, @@ -10709,7 +11972,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 244, + funcId: 271, port: port_, ); }, @@ -10743,7 +12006,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 245, + funcId: 272, port: port_, ); }, @@ -10786,7 +12049,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 246, + funcId: 273, port: port_, ); }, @@ -10811,7 +12074,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { @override Stream<(int, int)> crateSubscribeRecoveryProgress({ required FederationId federationId, - required int moduleId, + required RecoveryModule recoveryModule, }) { final sink = RustStreamSink<(int, int)>(); unawaited( @@ -10824,11 +12087,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { federationId, serializer, ); - sse_encode_u_16(moduleId, serializer); + sse_encode_recovery_module(recoveryModule, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 247, + funcId: 274, port: port_, ); }, @@ -10837,7 +12100,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeErrorData: null, ), constMeta: kCrateSubscribeRecoveryProgressConstMeta, - argValues: [sink, federationId, moduleId], + argValues: [sink, federationId, recoveryModule], apiImpl: this, ), ), @@ -10848,7 +12111,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kCrateSubscribeRecoveryProgressConstMeta => const TaskConstMeta( debugName: "subscribe_recovery_progress", - argNames: ["sink", "federationId", "moduleId"], + argNames: ["sink", "federationId", "recoveryModule"], ); @override @@ -10861,7 +12124,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 248, + funcId: 275, port: port_, ); }, @@ -10900,7 +12163,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 249, + funcId: 276, port: port_, ); }, @@ -10930,7 +12193,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 250, + funcId: 277, port: port_, ); }, @@ -10958,7 +12221,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 251, + funcId: 278, port: port_, ); }, @@ -10993,7 +12256,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 252, + funcId: 279, port: port_, ); }, @@ -11039,7 +12302,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 253, + funcId: 280, port: port_, ); }, @@ -11081,7 +12344,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 254, + funcId: 281, port: port_, ); }, @@ -11867,6 +13130,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return PublicFederationImpl.frbInternalDcoDecode(raw as List); } + @protected + SafeUrl + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SafeUrlImpl.frbInternalDcoDecode(raw as List); + } + @protected TapRecipient dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( @@ -12231,13 +13503,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { AwaitingConfsEvent dco_decode_awaiting_confs_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 4) - throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); + if (arr.length != 5) + throw Exception('unexpected arr length: expect 5 but see ${arr.length}'); return AwaitingConfsEvent( amount: dco_decode_u_64(arr[0]), outpoint: dco_decode_String(arr[1]), blockHeight: dco_decode_u_64(arr[2]), needed: dco_decode_u_64(arr[3]), + txid: dco_decode_opt_String(arr[4]), ); } @@ -12353,6 +13626,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as double; } + @protected + GuardianBitcoinStatus dco_decode_box_autoadd_guardian_bitcoin_status( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_guardian_bitcoin_status(raw); + } + @protected InvoicePaidEvent dco_decode_box_autoadd_invoice_paid_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -12377,14 +13658,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return dco_decode_nostr_recovery_phase(raw); } - @protected - NostrWalletConnectConfig dco_decode_box_autoadd_nostr_wallet_connect_config( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return dco_decode_nostr_wallet_connect_config(raw); - } - @protected (FederationId, DepositEventKind) dco_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -12443,11 +13716,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ClaimedEvent dco_decode_claimed_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 2) - throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); + if (arr.length != 3) + throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); return ClaimedEvent( amount: dco_decode_u_64(arr[0]), outpoint: dco_decode_String(arr[1]), + txid: dco_decode_opt_String(arr[2]), ); } @@ -12455,11 +13729,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ConfirmedEvent dco_decode_confirmed_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 2) - throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); + if (arr.length != 3) + throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); return ConfirmedEvent( amount: dco_decode_u_64(arr[0]), outpoint: dco_decode_String(arr[1]), + txid: dco_decode_opt_String(arr[2]), ); } @@ -12591,10 +13866,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case 10: return EcashAppError_InvalidLightningAddress(dco_decode_String(raw[1])); case 11: - return EcashAppError_PaymentRefunded(dco_decode_String(raw[1])); + return EcashAppError_LnurlAmountMismatch( + requestedMsats: dco_decode_u_64(raw[1]), + invoiceMsats: dco_decode_u_64(raw[2]), + ); case 12: - return EcashAppError_Timeout(); + return EcashAppError_PaymentRefunded(dco_decode_String(raw[1])); case 13: + return EcashAppError_Timeout(); + case 14: return EcashAppError_Other(dco_decode_String(raw[1])); default: throw Exception("unreachable"); @@ -12614,63 +13894,179 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - double dco_decode_f_64(dynamic raw) { + double dco_decode_f_64(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as double; + } + + @protected + FedimintGateway dco_decode_fedimint_gateway(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 12) + throw Exception('unexpected arr length: expect 12 but see ${arr.length}'); + return FedimintGateway( + endpoint: dco_decode_String(arr[0]), + baseRoutingFee: dco_decode_u_64(arr[1]), + ppmRoutingFee: dco_decode_u_64(arr[2]), + baseTransactionFee: dco_decode_u_64(arr[3]), + ppmTransactionFee: dco_decode_u_64(arr[4]), + lightningAlias: dco_decode_opt_String(arr[5]), + lightningNode: dco_decode_opt_String(arr[6]), + isLnv2: dco_decode_bool(arr[7]), + isVettted: dco_decode_bool(arr[8]), + federationIndex: dco_decode_opt_box_autoadd_u_64(arr[9]), + minBaseRoutingFee: dco_decode_opt_box_autoadd_u_64(arr[10]), + minPpmRoutingFee: dco_decode_opt_box_autoadd_u_64(arr[11]), + ); + } + + @protected + FiatCurrency dco_decode_fiat_currency(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return FiatCurrency.values[raw as int]; + } + + @protected + GatewayPaymentPreview dco_decode_gateway_payment_preview(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 4) + throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); + return GatewayPaymentPreview( + gateway: dco_decode_fedimint_gateway(arr[0]), + amountWithFees: dco_decode_u_64(arr[1]), + gatewayFee: dco_decode_u_64(arr[2]), + federationFee: dco_decode_u_64(arr[3]), + ); + } + + @protected + Guardian dco_decode_guardian(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 3) + throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); + return Guardian( + peerId: dco_decode_u_16(arr[0]), + name: dco_decode_String(arr[1]), + version: dco_decode_opt_String(arr[2]), + ); + } + + @protected + GuardianAuditSummary dco_decode_guardian_audit_summary(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 2) + throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); + return GuardianAuditSummary( + netAssetsMsats: dco_decode_i_64(arr[0]), + moduleSummaries: dco_decode_list_guardian_module_summary(arr[1]), + ); + } + + @protected + GuardianBackupStatistics dco_decode_guardian_backup_statistics(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 6) + throw Exception('unexpected arr length: expect 6 but see ${arr.length}'); + return GuardianBackupStatistics( + numBackups: dco_decode_u_64(arr[0]), + totalSizeBytes: dco_decode_u_64(arr[1]), + refreshed1D: dco_decode_u_64(arr[2]), + refreshed1W: dco_decode_u_64(arr[3]), + refreshed1M: dco_decode_u_64(arr[4]), + refreshed3M: dco_decode_u_64(arr[5]), + ); + } + + @protected + GuardianBitcoinStatus dco_decode_guardian_bitcoin_status(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 5) + throw Exception('unexpected arr length: expect 5 but see ${arr.length}'); + return GuardianBitcoinStatus( + kind: dco_decode_opt_String(arr[0]), + url: dco_decode_opt_String(arr[1]), + consensusBlockCount: dco_decode_u_64(arr[2]), + localBlockCount: dco_decode_opt_box_autoadd_u_64(arr[3]), + consensusFeerateSatsPerKvb: dco_decode_opt_box_autoadd_u_64(arr[4]), + ); + } + + @protected + GuardianHealth dco_decode_guardian_health(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return raw as double; + final arr = raw as List; + if (arr.length != 7) + throw Exception('unexpected arr length: expect 7 but see ${arr.length}'); + return GuardianHealth( + consensusRunning: dco_decode_bool(arr[0]), + serverStatus: dco_decode_String(arr[1]), + sessionCount: dco_decode_opt_box_autoadd_u_64(arr[2]), + peersOnline: dco_decode_u_64(arr[3]), + peersTotal: dco_decode_u_64(arr[4]), + consensusOrdLatencyMs: dco_decode_opt_box_autoadd_u_64(arr[5]), + scheduledShutdownSession: dco_decode_opt_box_autoadd_u_64(arr[6]), + ); } @protected - FedimintGateway dco_decode_fedimint_gateway(dynamic raw) { + GuardianMetaProposal dco_decode_guardian_meta_proposal(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 12) - throw Exception('unexpected arr length: expect 12 but see ${arr.length}'); - return FedimintGateway( - endpoint: dco_decode_String(arr[0]), - baseRoutingFee: dco_decode_u_64(arr[1]), - ppmRoutingFee: dco_decode_u_64(arr[2]), - baseTransactionFee: dco_decode_u_64(arr[3]), - ppmTransactionFee: dco_decode_u_64(arr[4]), - lightningAlias: dco_decode_opt_String(arr[5]), - lightningNode: dco_decode_opt_String(arr[6]), - isLnv2: dco_decode_bool(arr[7]), - isVettted: dco_decode_bool(arr[8]), - federationIndex: dco_decode_opt_box_autoadd_u_64(arr[9]), - minBaseRoutingFee: dco_decode_opt_box_autoadd_u_64(arr[10]), - minPpmRoutingFee: dco_decode_opt_box_autoadd_u_64(arr[11]), + if (arr.length != 4) + throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); + return GuardianMetaProposal( + peerIds: dco_decode_list_prim_u_16_strict(arr[0]), + valueHex: dco_decode_String(arr[1]), + valueJson: dco_decode_opt_String(arr[2]), + isOurs: dco_decode_bool(arr[3]), ); } @protected - FiatCurrency dco_decode_fiat_currency(dynamic raw) { + GuardianMetaState dco_decode_guardian_meta_state(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return FiatCurrency.values[raw as int]; + final arr = raw as List; + if (arr.length != 5) + throw Exception('unexpected arr length: expect 5 but see ${arr.length}'); + return GuardianMetaState( + consensusJson: dco_decode_opt_String(arr[0]), + revision: dco_decode_opt_box_autoadd_u_64(arr[1]), + proposals: dco_decode_list_guardian_meta_proposal(arr[2]), + threshold: dco_decode_u_16(arr[3]), + totalGuardians: dco_decode_u_16(arr[4]), + ); } @protected - GatewayPaymentPreview dco_decode_gateway_payment_preview(dynamic raw) { + GuardianModuleSummary dco_decode_guardian_module_summary(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 4) - throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); - return GatewayPaymentPreview( - gateway: dco_decode_fedimint_gateway(arr[0]), - amountWithFees: dco_decode_u_64(arr[1]), - gatewayFee: dco_decode_u_64(arr[2]), - federationFee: dco_decode_u_64(arr[3]), + if (arr.length != 3) + throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); + return GuardianModuleSummary( + moduleInstanceId: dco_decode_u_16(arr[0]), + kind: dco_decode_String(arr[1]), + netAssetsMsats: dco_decode_i_64(arr[2]), ); } @protected - Guardian dco_decode_guardian(dynamic raw) { + GuardianStatusSummary dco_decode_guardian_status_summary(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 3) - throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); - return Guardian( - peerId: dco_decode_u_16(arr[0]), - name: dco_decode_String(arr[1]), - version: dco_decode_opt_String(arr[2]), + if (arr.length != 4) + throw Exception('unexpected arr length: expect 4 but see ${arr.length}'); + return GuardianStatusSummary( + health: dco_decode_guardian_health(arr[0]), + bitcoin: dco_decode_opt_box_autoadd_guardian_bitcoin_status(arr[1]), + hasLnv2: dco_decode_bool(arr[2]), + hasMeta: dco_decode_bool(arr[3]), ); } @@ -12680,6 +14076,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as int; } + @protected + PlatformInt64 dco_decode_i_64(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dcoDecodeI64(raw); + } + @protected InvoicePaidEvent dco_decode_invoice_paid_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -12779,6 +14181,26 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (raw as List).map(dco_decode_guardian).toList(); } + @protected + List dco_decode_list_guardian_meta_proposal( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List) + .map(dco_decode_guardian_meta_proposal) + .toList(); + } + + @protected + List dco_decode_list_guardian_module_summary( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List) + .map(dco_decode_guardian_module_summary) + .toList(); + } + @protected List dco_decode_list_nostr_profile(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -12791,6 +14213,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (raw as List).map(dco_decode_peer_status).toList(); } + @protected + Uint16List dco_decode_list_prim_u_16_strict(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as Uint16List; + } + @protected List dco_decode_list_prim_u_8_loose(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -12918,11 +14346,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { MempoolEvent dco_decode_mempool_event(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; - if (arr.length != 2) - throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); + if (arr.length != 3) + throw Exception('unexpected arr length: expect 3 but see ${arr.length}'); return MempoolEvent( amount: dco_decode_u_64(arr[0]), outpoint: dco_decode_String(arr[1]), + txid: dco_decode_opt_String(arr[2]), ); } @@ -12969,7 +14398,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case 4: return MultimintEvent_RecoveryProgress( dco_decode_String(raw[1]), - dco_decode_u_16(raw[2]), + dco_decode_recovery_module(raw[2]), dco_decode_u_32(raw[3]), dco_decode_u_32(raw[4]), ); @@ -13003,6 +14432,8 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case 10: return MultimintEvent_UpdateAvailable(dco_decode_String(raw[1])); case 11: + return MultimintEvent_MetaUpdated(dco_decode_String(raw[1])); + case 12: return MultimintEvent_PaymentError( dco_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_ecash_app_error( raw[1], @@ -13042,23 +14473,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return NostrRecoveryPhase_DecryptingInvites(); case 3: return NostrRecoveryPhase_RejoiningFederations(dco_decode_u_32(raw[1])); + case 4: + return NostrRecoveryPhase_NoBackupFound(); default: throw Exception("unreachable"); } } - @protected - NostrWalletConnectConfig dco_decode_nostr_wallet_connect_config(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 2) - throw Exception('unexpected arr length: expect 2 but see ${arr.length}'); - return NostrWalletConnectConfig( - secretKey: dco_decode_u_8_array_32(arr[0]), - relay: dco_decode_String(arr[1]), - ); - } - @protected NWCConnectionInfo dco_decode_nwc_connection_info(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -13156,6 +14577,16 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw == null ? null : dco_decode_box_autoadd_f_64(raw); } + @protected + GuardianBitcoinStatus? dco_decode_opt_box_autoadd_guardian_bitcoin_status( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null + ? null + : dco_decode_box_autoadd_guardian_bitcoin_status(raw); + } + @protected int? dco_decode_opt_box_autoadd_u_32(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -13457,29 +14888,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw) { + (bool, BigInt?) dco_decode_record_bool_opt_box_autoadd_u_64(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; if (arr.length != 2) { throw Exception('Expected 2 elements, got ${arr.length}'); } - return (dco_decode_fiat_currency(arr[0]), dco_decode_u_64(arr[1])); + return (dco_decode_bool(arr[0]), dco_decode_opt_box_autoadd_u_64(arr[1])); } @protected - (NostrWalletConnectConfig, NWCConnectionInfo) - dco_decode_record_nostr_wallet_connect_config_nwc_connection_info( - dynamic raw, - ) { + (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs final arr = raw as List; if (arr.length != 2) { throw Exception('Expected 2 elements, got ${arr.length}'); } - return ( - dco_decode_nostr_wallet_connect_config(arr[0]), - dco_decode_nwc_connection_info(arr[1]), - ); + return (dco_decode_fiat_currency(arr[0]), dco_decode_u_64(arr[1])); } @protected @@ -13606,6 +15031,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (dco_decode_u_64(arr[0]), dco_decode_usize(arr[1])); } + @protected + RecoveryModule dco_decode_recovery_module(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RecoveryModule.values[raw as int]; + } + @protected ReissueFees dco_decode_reissue_fees(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -13626,21 +15057,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return RelayStatusKind.values[raw as int]; } - @protected - SendGatewaySelection dco_decode_send_gateway_selection(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - final arr = raw as List; - if (arr.length != 5) - throw Exception('unexpected arr length: expect 5 but see ${arr.length}'); - return SendGatewaySelection( - gatewayUrl: dco_decode_String(arr[0]), - amountWithFees: dco_decode_u_64(arr[1]), - gatewayFee: dco_decode_u_64(arr[2]), - federationFee: dco_decode_u_64(arr[3]), - isLnv2: dco_decode_bool(arr[4]), - ); - } - @protected Transaction dco_decode_transaction(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -13742,12 +15158,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as int; } - @protected - U8Array32 dco_decode_u_8_array_32(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return U8Array32(dco_decode_list_prim_u_8_strict(raw)); - } - @protected void dco_decode_unit(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -14428,6 +15838,18 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + SafeUrl + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SafeUrlImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected TapRecipient sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( @@ -14884,11 +16306,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { var var_outpoint = sse_decode_String(deserializer); var var_blockHeight = sse_decode_u_64(deserializer); var var_needed = sse_decode_u_64(deserializer); + var var_txid = sse_decode_opt_String(deserializer); return AwaitingConfsEvent( amount: var_amount, outpoint: var_outpoint, blockHeight: var_blockHeight, needed: var_needed, + txid: var_txid, ); } @@ -15017,6 +16441,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (sse_decode_f_64(deserializer)); } + @protected + GuardianBitcoinStatus sse_decode_box_autoadd_guardian_bitcoin_status( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_guardian_bitcoin_status(deserializer)); + } + @protected InvoicePaidEvent sse_decode_box_autoadd_invoice_paid_event( SseDeserializer deserializer, @@ -15049,14 +16481,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (sse_decode_nostr_recovery_phase(deserializer)); } - @protected - NostrWalletConnectConfig sse_decode_box_autoadd_nostr_wallet_connect_config( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return (sse_decode_nostr_wallet_connect_config(deserializer)); - } - @protected (FederationId, DepositEventKind) sse_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -15126,7 +16550,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs var var_amount = sse_decode_u_64(deserializer); var var_outpoint = sse_decode_String(deserializer); - return ClaimedEvent(amount: var_amount, outpoint: var_outpoint); + var var_txid = sse_decode_opt_String(deserializer); + return ClaimedEvent( + amount: var_amount, + outpoint: var_outpoint, + txid: var_txid, + ); } @protected @@ -15134,7 +16563,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs var var_amount = sse_decode_u_64(deserializer); var var_outpoint = sse_decode_String(deserializer); - return ConfirmedEvent(amount: var_amount, outpoint: var_outpoint); + var var_txid = sse_decode_opt_String(deserializer); + return ConfirmedEvent( + amount: var_amount, + outpoint: var_outpoint, + txid: var_txid, + ); } @protected @@ -15292,11 +16726,18 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { var var_field0 = sse_decode_String(deserializer); return EcashAppError_InvalidLightningAddress(var_field0); case 11: + var var_requestedMsats = sse_decode_u_64(deserializer); + var var_invoiceMsats = sse_decode_u_64(deserializer); + return EcashAppError_LnurlAmountMismatch( + requestedMsats: var_requestedMsats, + invoiceMsats: var_invoiceMsats, + ); + case 12: var var_field0 = sse_decode_String(deserializer); return EcashAppError_PaymentRefunded(var_field0); - case 12: - return EcashAppError_Timeout(); case 13: + return EcashAppError_Timeout(); + case 14: var var_field0 = sse_decode_String(deserializer); return EcashAppError_Other(var_field0); default: @@ -15313,73 +16754,225 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - double sse_decode_f_64(SseDeserializer deserializer) { + double sse_decode_f_64(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getFloat64(); + } + + @protected + FedimintGateway sse_decode_fedimint_gateway(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_endpoint = sse_decode_String(deserializer); + var var_baseRoutingFee = sse_decode_u_64(deserializer); + var var_ppmRoutingFee = sse_decode_u_64(deserializer); + var var_baseTransactionFee = sse_decode_u_64(deserializer); + var var_ppmTransactionFee = sse_decode_u_64(deserializer); + var var_lightningAlias = sse_decode_opt_String(deserializer); + var var_lightningNode = sse_decode_opt_String(deserializer); + var var_isLnv2 = sse_decode_bool(deserializer); + var var_isVettted = sse_decode_bool(deserializer); + var var_federationIndex = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_minBaseRoutingFee = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_minPpmRoutingFee = sse_decode_opt_box_autoadd_u_64(deserializer); + return FedimintGateway( + endpoint: var_endpoint, + baseRoutingFee: var_baseRoutingFee, + ppmRoutingFee: var_ppmRoutingFee, + baseTransactionFee: var_baseTransactionFee, + ppmTransactionFee: var_ppmTransactionFee, + lightningAlias: var_lightningAlias, + lightningNode: var_lightningNode, + isLnv2: var_isLnv2, + isVettted: var_isVettted, + federationIndex: var_federationIndex, + minBaseRoutingFee: var_minBaseRoutingFee, + minPpmRoutingFee: var_minPpmRoutingFee, + ); + } + + @protected + FiatCurrency sse_decode_fiat_currency(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_i_32(deserializer); + return FiatCurrency.values[inner]; + } + + @protected + GatewayPaymentPreview sse_decode_gateway_payment_preview( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_gateway = sse_decode_fedimint_gateway(deserializer); + var var_amountWithFees = sse_decode_u_64(deserializer); + var var_gatewayFee = sse_decode_u_64(deserializer); + var var_federationFee = sse_decode_u_64(deserializer); + return GatewayPaymentPreview( + gateway: var_gateway, + amountWithFees: var_amountWithFees, + gatewayFee: var_gatewayFee, + federationFee: var_federationFee, + ); + } + + @protected + Guardian sse_decode_guardian(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_peerId = sse_decode_u_16(deserializer); + var var_name = sse_decode_String(deserializer); + var var_version = sse_decode_opt_String(deserializer); + return Guardian(peerId: var_peerId, name: var_name, version: var_version); + } + + @protected + GuardianAuditSummary sse_decode_guardian_audit_summary( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_netAssetsMsats = sse_decode_i_64(deserializer); + var var_moduleSummaries = sse_decode_list_guardian_module_summary( + deserializer, + ); + return GuardianAuditSummary( + netAssetsMsats: var_netAssetsMsats, + moduleSummaries: var_moduleSummaries, + ); + } + + @protected + GuardianBackupStatistics sse_decode_guardian_backup_statistics( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_numBackups = sse_decode_u_64(deserializer); + var var_totalSizeBytes = sse_decode_u_64(deserializer); + var var_refreshed1D = sse_decode_u_64(deserializer); + var var_refreshed1W = sse_decode_u_64(deserializer); + var var_refreshed1M = sse_decode_u_64(deserializer); + var var_refreshed3M = sse_decode_u_64(deserializer); + return GuardianBackupStatistics( + numBackups: var_numBackups, + totalSizeBytes: var_totalSizeBytes, + refreshed1D: var_refreshed1D, + refreshed1W: var_refreshed1W, + refreshed1M: var_refreshed1M, + refreshed3M: var_refreshed3M, + ); + } + + @protected + GuardianBitcoinStatus sse_decode_guardian_bitcoin_status( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_kind = sse_decode_opt_String(deserializer); + var var_url = sse_decode_opt_String(deserializer); + var var_consensusBlockCount = sse_decode_u_64(deserializer); + var var_localBlockCount = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_consensusFeerateSatsPerKvb = sse_decode_opt_box_autoadd_u_64( + deserializer, + ); + return GuardianBitcoinStatus( + kind: var_kind, + url: var_url, + consensusBlockCount: var_consensusBlockCount, + localBlockCount: var_localBlockCount, + consensusFeerateSatsPerKvb: var_consensusFeerateSatsPerKvb, + ); + } + + @protected + GuardianHealth sse_decode_guardian_health(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getFloat64(); + var var_consensusRunning = sse_decode_bool(deserializer); + var var_serverStatus = sse_decode_String(deserializer); + var var_sessionCount = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_peersOnline = sse_decode_u_64(deserializer); + var var_peersTotal = sse_decode_u_64(deserializer); + var var_consensusOrdLatencyMs = sse_decode_opt_box_autoadd_u_64( + deserializer, + ); + var var_scheduledShutdownSession = sse_decode_opt_box_autoadd_u_64( + deserializer, + ); + return GuardianHealth( + consensusRunning: var_consensusRunning, + serverStatus: var_serverStatus, + sessionCount: var_sessionCount, + peersOnline: var_peersOnline, + peersTotal: var_peersTotal, + consensusOrdLatencyMs: var_consensusOrdLatencyMs, + scheduledShutdownSession: var_scheduledShutdownSession, + ); } @protected - FedimintGateway sse_decode_fedimint_gateway(SseDeserializer deserializer) { + GuardianMetaProposal sse_decode_guardian_meta_proposal( + SseDeserializer deserializer, + ) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_endpoint = sse_decode_String(deserializer); - var var_baseRoutingFee = sse_decode_u_64(deserializer); - var var_ppmRoutingFee = sse_decode_u_64(deserializer); - var var_baseTransactionFee = sse_decode_u_64(deserializer); - var var_ppmTransactionFee = sse_decode_u_64(deserializer); - var var_lightningAlias = sse_decode_opt_String(deserializer); - var var_lightningNode = sse_decode_opt_String(deserializer); - var var_isLnv2 = sse_decode_bool(deserializer); - var var_isVettted = sse_decode_bool(deserializer); - var var_federationIndex = sse_decode_opt_box_autoadd_u_64(deserializer); - var var_minBaseRoutingFee = sse_decode_opt_box_autoadd_u_64(deserializer); - var var_minPpmRoutingFee = sse_decode_opt_box_autoadd_u_64(deserializer); - return FedimintGateway( - endpoint: var_endpoint, - baseRoutingFee: var_baseRoutingFee, - ppmRoutingFee: var_ppmRoutingFee, - baseTransactionFee: var_baseTransactionFee, - ppmTransactionFee: var_ppmTransactionFee, - lightningAlias: var_lightningAlias, - lightningNode: var_lightningNode, - isLnv2: var_isLnv2, - isVettted: var_isVettted, - federationIndex: var_federationIndex, - minBaseRoutingFee: var_minBaseRoutingFee, - minPpmRoutingFee: var_minPpmRoutingFee, + var var_peerIds = sse_decode_list_prim_u_16_strict(deserializer); + var var_valueHex = sse_decode_String(deserializer); + var var_valueJson = sse_decode_opt_String(deserializer); + var var_isOurs = sse_decode_bool(deserializer); + return GuardianMetaProposal( + peerIds: var_peerIds, + valueHex: var_valueHex, + valueJson: var_valueJson, + isOurs: var_isOurs, ); } @protected - FiatCurrency sse_decode_fiat_currency(SseDeserializer deserializer) { + GuardianMetaState sse_decode_guardian_meta_state( + SseDeserializer deserializer, + ) { // Codec=Sse (Serialization based), see doc to use other codecs - var inner = sse_decode_i_32(deserializer); - return FiatCurrency.values[inner]; + var var_consensusJson = sse_decode_opt_String(deserializer); + var var_revision = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_proposals = sse_decode_list_guardian_meta_proposal(deserializer); + var var_threshold = sse_decode_u_16(deserializer); + var var_totalGuardians = sse_decode_u_16(deserializer); + return GuardianMetaState( + consensusJson: var_consensusJson, + revision: var_revision, + proposals: var_proposals, + threshold: var_threshold, + totalGuardians: var_totalGuardians, + ); } @protected - GatewayPaymentPreview sse_decode_gateway_payment_preview( + GuardianModuleSummary sse_decode_guardian_module_summary( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_gateway = sse_decode_fedimint_gateway(deserializer); - var var_amountWithFees = sse_decode_u_64(deserializer); - var var_gatewayFee = sse_decode_u_64(deserializer); - var var_federationFee = sse_decode_u_64(deserializer); - return GatewayPaymentPreview( - gateway: var_gateway, - amountWithFees: var_amountWithFees, - gatewayFee: var_gatewayFee, - federationFee: var_federationFee, + var var_moduleInstanceId = sse_decode_u_16(deserializer); + var var_kind = sse_decode_String(deserializer); + var var_netAssetsMsats = sse_decode_i_64(deserializer); + return GuardianModuleSummary( + moduleInstanceId: var_moduleInstanceId, + kind: var_kind, + netAssetsMsats: var_netAssetsMsats, ); } @protected - Guardian sse_decode_guardian(SseDeserializer deserializer) { + GuardianStatusSummary sse_decode_guardian_status_summary( + SseDeserializer deserializer, + ) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_peerId = sse_decode_u_16(deserializer); - var var_name = sse_decode_String(deserializer); - var var_version = sse_decode_opt_String(deserializer); - return Guardian(peerId: var_peerId, name: var_name, version: var_version); + var var_health = sse_decode_guardian_health(deserializer); + var var_bitcoin = sse_decode_opt_box_autoadd_guardian_bitcoin_status( + deserializer, + ); + var var_hasLnv2 = sse_decode_bool(deserializer); + var var_hasMeta = sse_decode_bool(deserializer); + return GuardianStatusSummary( + health: var_health, + bitcoin: var_bitcoin, + hasLnv2: var_hasLnv2, + hasMeta: var_hasMeta, + ); } @protected @@ -15388,6 +16981,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return deserializer.buffer.getInt32(); } + @protected + PlatformInt64 sse_decode_i_64(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getPlatformInt64(); + } + @protected InvoicePaidEvent sse_decode_invoice_paid_event(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -15536,6 +17135,34 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return ans_; } + @protected + List sse_decode_list_guardian_meta_proposal( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_guardian_meta_proposal(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_guardian_module_summary( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = []; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_guardian_module_summary(deserializer)); + } + return ans_; + } + @protected List sse_decode_list_nostr_profile( SseDeserializer deserializer, @@ -15562,6 +17189,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return ans_; } + @protected + Uint16List sse_decode_list_prim_u_16_strict(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var len_ = sse_decode_i_32(deserializer); + return deserializer.buffer.getUint16List(len_); + } + @protected List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -15752,7 +17386,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs var var_amount = sse_decode_u_64(deserializer); var var_outpoint = sse_decode_String(deserializer); - return MempoolEvent(amount: var_amount, outpoint: var_outpoint); + var var_txid = sse_decode_opt_String(deserializer); + return MempoolEvent( + amount: var_amount, + outpoint: var_outpoint, + txid: var_txid, + ); } @protected @@ -15802,7 +17441,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return MultimintEvent_RecoveryDone(var_field0); case 4: var var_field0 = sse_decode_String(deserializer); - var var_field1 = sse_decode_u_16(deserializer); + var var_field1 = sse_decode_recovery_module(deserializer); var var_field2 = sse_decode_u_32(deserializer); var var_field3 = sse_decode_u_32(deserializer); return MultimintEvent_RecoveryProgress( @@ -15843,6 +17482,9 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { var var_field0 = sse_decode_String(deserializer); return MultimintEvent_UpdateAvailable(var_field0); case 11: + var var_field0 = sse_decode_String(deserializer); + return MultimintEvent_MetaUpdated(var_field0); + case 12: var var_field0 = sse_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_ecash_app_error( deserializer, @@ -15891,21 +17533,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case 3: var var_field0 = sse_decode_u_32(deserializer); return NostrRecoveryPhase_RejoiningFederations(var_field0); + case 4: + return NostrRecoveryPhase_NoBackupFound(); default: throw UnimplementedError(''); } } - @protected - NostrWalletConnectConfig sse_decode_nostr_wallet_connect_config( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_secretKey = sse_decode_u_8_array_32(deserializer); - var var_relay = sse_decode_String(deserializer); - return NostrWalletConnectConfig(secretKey: var_secretKey, relay: var_relay); - } - @protected NWCConnectionInfo sse_decode_nwc_connection_info( SseDeserializer deserializer, @@ -16044,6 +17678,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + GuardianBitcoinStatus? sse_decode_opt_box_autoadd_guardian_bitcoin_status( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_guardian_bitcoin_status(deserializer)); + } else { + return null; + } + } + @protected int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -16347,23 +17994,22 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( + (bool, BigInt?) sse_decode_record_bool_opt_box_autoadd_u_64( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_field0 = sse_decode_fiat_currency(deserializer); - var var_field1 = sse_decode_u_64(deserializer); + var var_field0 = sse_decode_bool(deserializer); + var var_field1 = sse_decode_opt_box_autoadd_u_64(deserializer); return (var_field0, var_field1); } @protected - (NostrWalletConnectConfig, NWCConnectionInfo) - sse_decode_record_nostr_wallet_connect_config_nwc_connection_info( + (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - var var_field0 = sse_decode_nostr_wallet_connect_config(deserializer); - var var_field1 = sse_decode_nwc_connection_info(deserializer); + var var_field0 = sse_decode_fiat_currency(deserializer); + var var_field1 = sse_decode_u_64(deserializer); return (var_field0, var_field1); } @@ -16468,6 +18114,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return (var_field0, var_field1); } + @protected + RecoveryModule sse_decode_recovery_module(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_i_32(deserializer); + return RecoveryModule.values[inner]; + } + @protected ReissueFees sse_decode_reissue_fees(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -16490,25 +18143,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return RelayStatusKind.values[inner]; } - @protected - SendGatewaySelection sse_decode_send_gateway_selection( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - var var_gatewayUrl = sse_decode_String(deserializer); - var var_amountWithFees = sse_decode_u_64(deserializer); - var var_gatewayFee = sse_decode_u_64(deserializer); - var var_federationFee = sse_decode_u_64(deserializer); - var var_isLnv2 = sse_decode_bool(deserializer); - return SendGatewaySelection( - gatewayUrl: var_gatewayUrl, - amountWithFees: var_amountWithFees, - gatewayFee: var_gatewayFee, - federationFee: var_federationFee, - isLnv2: var_isLnv2, - ); - } - @protected Transaction sse_decode_transaction(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -16654,13 +18288,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return deserializer.buffer.getUint8(); } - @protected - U8Array32 sse_decode_u_8_array_32(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - var inner = sse_decode_list_prim_u_8_strict(deserializer); - return U8Array32(inner); - } - @protected void sse_decode_unit(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -17398,6 +19025,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + SafeUrl self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SafeUrlImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( @@ -17930,6 +19570,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_String(self.outpoint, serializer); sse_encode_u_64(self.blockHeight, serializer); sse_encode_u_64(self.needed, serializer); + sse_encode_opt_String(self.txid, serializer); } @protected @@ -18074,6 +19715,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_f_64(self, serializer); } + @protected + void sse_encode_box_autoadd_guardian_bitcoin_status( + GuardianBitcoinStatus self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_guardian_bitcoin_status(self, serializer); + } + @protected void sse_encode_box_autoadd_invoice_paid_event( InvoicePaidEvent self, @@ -18110,15 +19760,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_nostr_recovery_phase(self, serializer); } - @protected - void sse_encode_box_autoadd_nostr_wallet_connect_config( - NostrWalletConnectConfig self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_nostr_wallet_connect_config(self, serializer); - } - @protected void sse_encode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -18197,6 +19838,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_u_64(self.amount, serializer); sse_encode_String(self.outpoint, serializer); + sse_encode_opt_String(self.txid, serializer); } @protected @@ -18207,6 +19849,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_u_64(self.amount, serializer); sse_encode_String(self.outpoint, serializer); + sse_encode_opt_String(self.txid, serializer); } @protected @@ -18336,77 +19979,190 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case EcashAppError_InvalidLightningAddress(field0: final field0): sse_encode_i_32(10, serializer); sse_encode_String(field0, serializer); - case EcashAppError_PaymentRefunded(field0: final field0): + case EcashAppError_LnurlAmountMismatch( + requestedMsats: final requestedMsats, + invoiceMsats: final invoiceMsats, + ): sse_encode_i_32(11, serializer); + sse_encode_u_64(requestedMsats, serializer); + sse_encode_u_64(invoiceMsats, serializer); + case EcashAppError_PaymentRefunded(field0: final field0): + sse_encode_i_32(12, serializer); sse_encode_String(field0, serializer); case EcashAppError_Timeout(): - sse_encode_i_32(12, serializer); - case EcashAppError_Other(field0: final field0): sse_encode_i_32(13, serializer); + case EcashAppError_Other(field0: final field0): + sse_encode_i_32(14, serializer); sse_encode_String(field0, serializer); } } @protected - void sse_encode_ecash_send_fees( - EcashSendFees self, + void sse_encode_ecash_send_fees( + EcashSendFees self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_u_64(self.amountMsats, serializer); + sse_encode_u_64(self.feeMsats, serializer); + } + + @protected + void sse_encode_f_64(double self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putFloat64(self); + } + + @protected + void sse_encode_fedimint_gateway( + FedimintGateway self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.endpoint, serializer); + sse_encode_u_64(self.baseRoutingFee, serializer); + sse_encode_u_64(self.ppmRoutingFee, serializer); + sse_encode_u_64(self.baseTransactionFee, serializer); + sse_encode_u_64(self.ppmTransactionFee, serializer); + sse_encode_opt_String(self.lightningAlias, serializer); + sse_encode_opt_String(self.lightningNode, serializer); + sse_encode_bool(self.isLnv2, serializer); + sse_encode_bool(self.isVettted, serializer); + sse_encode_opt_box_autoadd_u_64(self.federationIndex, serializer); + sse_encode_opt_box_autoadd_u_64(self.minBaseRoutingFee, serializer); + sse_encode_opt_box_autoadd_u_64(self.minPpmRoutingFee, serializer); + } + + @protected + void sse_encode_fiat_currency(FiatCurrency self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.index, serializer); + } + + @protected + void sse_encode_gateway_payment_preview( + GatewayPaymentPreview self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_fedimint_gateway(self.gateway, serializer); + sse_encode_u_64(self.amountWithFees, serializer); + sse_encode_u_64(self.gatewayFee, serializer); + sse_encode_u_64(self.federationFee, serializer); + } + + @protected + void sse_encode_guardian(Guardian self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_u_16(self.peerId, serializer); + sse_encode_String(self.name, serializer); + sse_encode_opt_String(self.version, serializer); + } + + @protected + void sse_encode_guardian_audit_summary( + GuardianAuditSummary self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_64(self.netAssetsMsats, serializer); + sse_encode_list_guardian_module_summary(self.moduleSummaries, serializer); + } + + @protected + void sse_encode_guardian_backup_statistics( + GuardianBackupStatistics self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_u_64(self.numBackups, serializer); + sse_encode_u_64(self.totalSizeBytes, serializer); + sse_encode_u_64(self.refreshed1D, serializer); + sse_encode_u_64(self.refreshed1W, serializer); + sse_encode_u_64(self.refreshed1M, serializer); + sse_encode_u_64(self.refreshed3M, serializer); + } + + @protected + void sse_encode_guardian_bitcoin_status( + GuardianBitcoinStatus self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_u_64(self.amountMsats, serializer); - sse_encode_u_64(self.feeMsats, serializer); + sse_encode_opt_String(self.kind, serializer); + sse_encode_opt_String(self.url, serializer); + sse_encode_u_64(self.consensusBlockCount, serializer); + sse_encode_opt_box_autoadd_u_64(self.localBlockCount, serializer); + sse_encode_opt_box_autoadd_u_64( + self.consensusFeerateSatsPerKvb, + serializer, + ); } @protected - void sse_encode_f_64(double self, SseSerializer serializer) { + void sse_encode_guardian_health( + GuardianHealth self, + SseSerializer serializer, + ) { // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putFloat64(self); + sse_encode_bool(self.consensusRunning, serializer); + sse_encode_String(self.serverStatus, serializer); + sse_encode_opt_box_autoadd_u_64(self.sessionCount, serializer); + sse_encode_u_64(self.peersOnline, serializer); + sse_encode_u_64(self.peersTotal, serializer); + sse_encode_opt_box_autoadd_u_64(self.consensusOrdLatencyMs, serializer); + sse_encode_opt_box_autoadd_u_64(self.scheduledShutdownSession, serializer); } @protected - void sse_encode_fedimint_gateway( - FedimintGateway self, + void sse_encode_guardian_meta_proposal( + GuardianMetaProposal self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_String(self.endpoint, serializer); - sse_encode_u_64(self.baseRoutingFee, serializer); - sse_encode_u_64(self.ppmRoutingFee, serializer); - sse_encode_u_64(self.baseTransactionFee, serializer); - sse_encode_u_64(self.ppmTransactionFee, serializer); - sse_encode_opt_String(self.lightningAlias, serializer); - sse_encode_opt_String(self.lightningNode, serializer); - sse_encode_bool(self.isLnv2, serializer); - sse_encode_bool(self.isVettted, serializer); - sse_encode_opt_box_autoadd_u_64(self.federationIndex, serializer); - sse_encode_opt_box_autoadd_u_64(self.minBaseRoutingFee, serializer); - sse_encode_opt_box_autoadd_u_64(self.minPpmRoutingFee, serializer); + sse_encode_list_prim_u_16_strict(self.peerIds, serializer); + sse_encode_String(self.valueHex, serializer); + sse_encode_opt_String(self.valueJson, serializer); + sse_encode_bool(self.isOurs, serializer); } @protected - void sse_encode_fiat_currency(FiatCurrency self, SseSerializer serializer) { + void sse_encode_guardian_meta_state( + GuardianMetaState self, + SseSerializer serializer, + ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_i_32(self.index, serializer); + sse_encode_opt_String(self.consensusJson, serializer); + sse_encode_opt_box_autoadd_u_64(self.revision, serializer); + sse_encode_list_guardian_meta_proposal(self.proposals, serializer); + sse_encode_u_16(self.threshold, serializer); + sse_encode_u_16(self.totalGuardians, serializer); } @protected - void sse_encode_gateway_payment_preview( - GatewayPaymentPreview self, + void sse_encode_guardian_module_summary( + GuardianModuleSummary self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_fedimint_gateway(self.gateway, serializer); - sse_encode_u_64(self.amountWithFees, serializer); - sse_encode_u_64(self.gatewayFee, serializer); - sse_encode_u_64(self.federationFee, serializer); + sse_encode_u_16(self.moduleInstanceId, serializer); + sse_encode_String(self.kind, serializer); + sse_encode_i_64(self.netAssetsMsats, serializer); } @protected - void sse_encode_guardian(Guardian self, SseSerializer serializer) { + void sse_encode_guardian_status_summary( + GuardianStatusSummary self, + SseSerializer serializer, + ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_u_16(self.peerId, serializer); - sse_encode_String(self.name, serializer); - sse_encode_opt_String(self.version, serializer); + sse_encode_guardian_health(self.health, serializer); + sse_encode_opt_box_autoadd_guardian_bitcoin_status( + self.bitcoin, + serializer, + ); + sse_encode_bool(self.hasLnv2, serializer); + sse_encode_bool(self.hasMeta, serializer); } @protected @@ -18415,6 +20171,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { serializer.buffer.putInt32(self); } + @protected + void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putPlatformInt64(self); + } + @protected void sse_encode_invoice_paid_event( InvoicePaidEvent self, @@ -18538,6 +20300,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + void sse_encode_list_guardian_meta_proposal( + List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_guardian_meta_proposal(item, serializer); + } + } + + @protected + void sse_encode_list_guardian_module_summary( + List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + for (final item in self) { + sse_encode_guardian_module_summary(item, serializer); + } + } + @protected void sse_encode_list_nostr_profile( List self, @@ -18562,6 +20348,16 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + void sse_encode_list_prim_u_16_strict( + Uint16List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + serializer.buffer.putUint16List(self); + } + @protected void sse_encode_list_prim_u_8_loose( List self, @@ -18733,6 +20529,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_u_64(self.amount, serializer); sse_encode_String(self.outpoint, serializer); + sse_encode_opt_String(self.txid, serializer); } @protected @@ -18786,7 +20583,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ): sse_encode_i_32(4, serializer); sse_encode_String(field0, serializer); - sse_encode_u_16(field1, serializer); + sse_encode_recovery_module(field1, serializer); sse_encode_u_32(field2, serializer); sse_encode_u_32(field3, serializer); case MultimintEvent_Ecash(field0: final field0): @@ -18823,8 +20620,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case MultimintEvent_UpdateAvailable(field0: final field0): sse_encode_i_32(10, serializer); sse_encode_String(field0, serializer); - case MultimintEvent_PaymentError(field0: final field0): + case MultimintEvent_MetaUpdated(field0: final field0): sse_encode_i_32(11, serializer); + sse_encode_String(field0, serializer); + case MultimintEvent_PaymentError(field0: final field0): + sse_encode_i_32(12, serializer); sse_encode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_ecash_app_error( field0, serializer, @@ -18860,19 +20660,11 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { case NostrRecoveryPhase_RejoiningFederations(field0: final field0): sse_encode_i_32(3, serializer); sse_encode_u_32(field0, serializer); + case NostrRecoveryPhase_NoBackupFound(): + sse_encode_i_32(4, serializer); } } - @protected - void sse_encode_nostr_wallet_connect_config( - NostrWalletConnectConfig self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_u_8_array_32(self.secretKey, serializer); - sse_encode_String(self.relay, serializer); - } - @protected void sse_encode_nwc_connection_info( NWCConnectionInfo self, @@ -19011,6 +20803,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + void sse_encode_opt_box_autoadd_guardian_bitcoin_status( + GuardianBitcoinStatus? self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_box_autoadd_guardian_bitcoin_status(self, serializer); + } + } + @protected void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -19295,23 +21100,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_record_fiat_currency_u_64( - (FiatCurrency, BigInt) self, + void sse_encode_record_bool_opt_box_autoadd_u_64( + (bool, BigInt?) self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_fiat_currency(self.$1, serializer); - sse_encode_u_64(self.$2, serializer); + sse_encode_bool(self.$1, serializer); + sse_encode_opt_box_autoadd_u_64(self.$2, serializer); } @protected - void sse_encode_record_nostr_wallet_connect_config_nwc_connection_info( - (NostrWalletConnectConfig, NWCConnectionInfo) self, + void sse_encode_record_fiat_currency_u_64( + (FiatCurrency, BigInt) self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_nostr_wallet_connect_config(self.$1, serializer); - sse_encode_nwc_connection_info(self.$2, serializer); + sse_encode_fiat_currency(self.$1, serializer); + sse_encode_u_64(self.$2, serializer); } @protected @@ -19417,6 +21222,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_usize(self.$2, serializer); } + @protected + void sse_encode_recovery_module( + RecoveryModule self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.index, serializer); + } + @protected void sse_encode_reissue_fees(ReissueFees self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -19435,19 +21249,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_i_32(self.index, serializer); } - @protected - void sse_encode_send_gateway_selection( - SendGatewaySelection self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_String(self.gatewayUrl, serializer); - sse_encode_u_64(self.amountWithFees, serializer); - sse_encode_u_64(self.gatewayFee, serializer); - sse_encode_u_64(self.federationFee, serializer); - sse_encode_bool(self.isLnv2, serializer); - } - @protected void sse_encode_transaction(Transaction self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -19578,12 +21379,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { serializer.buffer.putUint8(self); } - @protected - void sse_encode_u_8_array_32(U8Array32 self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_list_prim_u_8_strict(self.inner, serializer); - } - @protected void sse_encode_unit(void self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -20355,6 +22150,13 @@ class MultimintImpl extends RustOpaque implements Multimint { operationId: operationId, ); + /// Fallible on purpose. The UI polls this, and both failure modes are + /// ordinary rather than exceptional: the federation can be left while a + /// screen still holds its id, and the balance query itself can fail + /// transiently while a module is still coming up during recovery. + /// + /// Returning zero for either would be worse than an error — a wallet + /// showing a confident zero is alarming and wrong. Future balance({required FederationId federationId}) => RustLib .instance .api @@ -20428,9 +22230,6 @@ class MultimintImpl extends RustOpaque implements Multimint { federationId: federationId, ); - Future clearPinHash() => - RustLib.instance.api.crateMultimintMultimintClearPinHash(that: this); - Future> computeAllGatewayPreviews({ required FederationId federationId, required Amount amount, @@ -20555,21 +22354,161 @@ class MultimintImpl extends RustOpaque implements Multimint { Future getRecoveryProgress({ required FederationId federationId, - required int moduleId, + required RecoveryModule recoveryModule, }) => RustLib.instance.api.crateMultimintMultimintGetRecoveryProgress( that: this, federationId: federationId, - moduleId: moduleId, + recoveryModule: recoveryModule, ); - Future getRequirePinForSpending() => RustLib.instance.api - .crateMultimintMultimintGetRequirePinForSpending(that: this); - Future getShowMsats() => RustLib.instance.api.crateMultimintMultimintGetShowMsats(that: this); - Future hasPinCode() => - RustLib.instance.api.crateMultimintMultimintHasPinCode(that: this); + Future getTapReceiveEnabled() => RustLib.instance.api + .crateMultimintMultimintGetTapReceiveEnabled(that: this); + + /// Returns false when the gateway was already whitelisted. + Future guardianAddGateway({ + required FederationId federationId, + required int peer, + required String password, + required String gatewayUrl, + }) => RustLib.instance.api.crateMultimintMultimintGuardianAddGateway( + that: this, + federationId: federationId, + peer: peer, + password: password, + gatewayUrl: gatewayUrl, + ); + + Future guardianAudit({ + required FederationId federationId, + required int peer, + required String password, + }) => RustLib.instance.api.crateMultimintMultimintGuardianAudit( + that: this, + federationId: federationId, + peer: peer, + password: password, + ); + + Future guardianBackupStatistics({ + required FederationId federationId, + required int peer, + required String password, + }) => RustLib.instance.api.crateMultimintMultimintGuardianBackupStatistics( + that: this, + federationId: federationId, + peer: peer, + password: password, + ); + + /// The lnv2 gateway whitelist is per-guardian state, so listing queries + /// the given peer directly instead of the client's default strategy. + Future> guardianListGateways({ + required FederationId federationId, + required int peer, + }) => RustLib.instance.api.crateMultimintMultimintGuardianListGateways( + that: this, + federationId: federationId, + peer: peer, + ); + + /// Verify guardian admin credentials against the `auth` endpoint, which + /// succeeds only with the correct password. Returns `Ok(false)` on a + /// rejected password (also the guardian's response when it has no admin + /// password configured at all) and `Err` when the guardian is unreachable. + Future guardianLogin({ + required FederationId federationId, + required int peer, + required String password, + }) => RustLib.instance.api.crateMultimintMultimintGuardianLogin( + that: this, + federationId: federationId, + peer: peer, + password: password, + ); + + /// Back an existing proposal by resubmitting its exact bytes. + Future guardianMetaAccept({ + required FederationId federationId, + required int peer, + required String password, + required String valueHex, + }) => RustLib.instance.api.crateMultimintMultimintGuardianMetaAccept( + that: this, + federationId: federationId, + peer: peer, + password: password, + valueHex: valueHex, + ); + + /// Propose a single field change. The meta module stores one JSON document + /// per key, so this reads the current consensus document, applies the edit + /// and submits the whole document back. Passing `None` removes the field. + Future guardianMetaProposeField({ + required FederationId federationId, + required int peer, + required String password, + required String field, + String? value, + }) => RustLib.instance.api.crateMultimintMultimintGuardianMetaProposeField( + that: this, + federationId: federationId, + peer: peer, + password: password, + field: field, + value: value, + ); + + Future guardianMetaState({ + required FederationId federationId, + required int peer, + required String password, + }) => RustLib.instance.api.crateMultimintMultimintGuardianMetaState( + that: this, + federationId: federationId, + peer: peer, + password: password, + ); + + /// Withdraw this guardian's vote by submitting the current consensus + /// value, which is how the meta module expresses "no change". + Future guardianMetaWithdraw({ + required FederationId federationId, + required int peer, + required String password, + }) => RustLib.instance.api.crateMultimintMultimintGuardianMetaWithdraw( + that: this, + federationId: federationId, + peer: peer, + password: password, + ); + + /// Returns false when the gateway was not whitelisted to begin with. + Future guardianRemoveGateway({ + required FederationId federationId, + required int peer, + required String password, + required String gatewayUrl, + }) => RustLib.instance.api.crateMultimintMultimintGuardianRemoveGateway( + that: this, + federationId: federationId, + peer: peer, + password: password, + gatewayUrl: gatewayUrl, + ); + + Future guardianStatus({ + required FederationId federationId, + required int peer, + required String password, + }) => RustLib.instance.api.crateMultimintMultimintGuardianStatus( + that: this, + federationId: federationId, + peer: peer, + password: password, + ); Future hasSeedPhraseAck() => RustLib.instance.api.crateMultimintMultimintHasSeedPhraseAck(that: this); @@ -20589,6 +22528,43 @@ class MultimintImpl extends RustOpaque implements Multimint { federationId: federationId, ); + /// Computes the largest amount (in msats) the user can pay over Lightning + /// out of this federation's balance through `gateway`, accounting for that + /// gateway's routing fee (added on top of the invoice) and the + /// on-federation send fee. This is the amount to request an invoice for in + /// order to spend (close to) the whole balance, and backs the "Max" button + /// when paying a Lightning Address / LNURL where the user chooses the amount + /// and the gateway. + /// + /// `is_lnv2` selects which module to quote against — the same gateway the + /// user picked on the number pad and will pay through — so the result is + /// deterministic instead of relying on auto-selection. Pinning the gateway + /// also avoids the guardian gateway-list lookup: LNv2 makes a single + /// `routing_info` call to that gateway, and LNv1 quotes entirely locally + /// against its cached announcement. The quote is point-in-time (it moves + /// with the balance); the eventual send remains the source of truth and may + /// still fail if the balance or gateway state changes in between. + /// + /// `loopback` picks the fee schedule: `false` charges the gateway's default + /// send fee for a payment routed over Lightning, `true` the cheap + /// no-Lightning-hop fee — `send_fee_minimum` for LNv2, and for LNv1 no + /// routing fee at all, since an internal payment has no gateway in the + /// path. It is a caller's decision because it is a property of the invoice, + /// not of the balance: see [`Self::probe_invoice_is_loopback`], which + /// answers it from a throwaway invoice before the real amount is chosen. + Future maxLightningSend({ + required FederationId federationId, + required SafeUrl gateway, + required bool isLnv2, + required bool loopback, + }) => RustLib.instance.api.crateMultimintMultimintMaxLightningSend( + that: this, + federationId: federationId, + gateway: gateway, + isLnv2: isLnv2, + loopback: loopback, + ); + Future parseEcash({ required FederationId federationId, required OobNotes notes, @@ -20598,6 +22574,26 @@ class MultimintImpl extends RustOpaque implements Multimint { notes: notes, ); + /// Whether an invoice would be paid without a Lightning hop through the + /// single gateway the user picked, without pricing every other gateway the + /// way [`Self::compute_all_gateway_previews`] does. + /// + /// Backs the "Max" button's probe: the amount has to be chosen before the + /// real invoice is requested, so a throwaway invoice is fetched first just + /// to answer this question and pick the right fee schedule. + Future probeInvoiceIsLoopback({ + required FederationId federationId, + required SafeUrl gateway, + required bool isLnv2, + required Bolt11Invoice invoice, + }) => RustLib.instance.api.crateMultimintMultimintProbeInvoiceIsLoopback( + that: this, + federationId: federationId, + gateway: gateway, + isLnv2: isLnv2, + invoice: invoice, + ); + Future<(Bolt11Invoice, OperationId)> receive({ required FederationId federationId, required BigInt amountMsatsWithFees, @@ -20648,6 +22644,17 @@ class MultimintImpl extends RustOpaque implements Multimint { Future refreshConnections() => RustLib.instance.api .crateMultimintMultimintRefreshConnections(that: this); + /// Refetch and re-cache a federation's meta immediately, bypassing both the + /// cached value and the periodic refresh task. Used after a guardian action + /// changes meta consensus, so the app reflects it without waiting out the + /// cache interval. + Future refreshFederationMeta({ + required FederationId federationId, + }) => RustLib.instance.api.crateMultimintMultimintRefreshFederationMeta( + that: this, + federationId: federationId, + ); + /// Register LNURL/LN Address Future registerLnAddress({ required FederationId federationId, @@ -20682,17 +22689,6 @@ class MultimintImpl extends RustOpaque implements Multimint { backupInviteCodes: backupInviteCodes, ); - Future selectSendGateway({ - required FederationId federationId, - required Amount amount, - required Bolt11Invoice bolt11, - }) => RustLib.instance.api.crateMultimintMultimintSelectSendGateway( - that: this, - federationId: federationId, - amount: amount, - bolt11: bolt11, - ); - Future send({ required FederationId federationId, required String invoice, @@ -20743,18 +22739,15 @@ class MultimintImpl extends RustOpaque implements Multimint { fiatCurrency: fiatCurrency, ); - Future setPinHash({required String pin}) => RustLib.instance.api - .crateMultimintMultimintSetPinHash(that: this, pin: pin); + Future setShowMsats({required bool showMsats}) => RustLib.instance.api + .crateMultimintMultimintSetShowMsats(that: this, showMsats: showMsats); - Future setRequirePinForSpending({required bool require}) => - RustLib.instance.api.crateMultimintMultimintSetRequirePinForSpending( + Future setTapReceiveEnabled({required bool enabled}) => + RustLib.instance.api.crateMultimintMultimintSetTapReceiveEnabled( that: this, - require: require, + enabled: enabled, ); - Future setShowMsats({required bool showMsats}) => RustLib.instance.api - .crateMultimintMultimintSetShowMsats(that: this, showMsats: showMsats); - Future> transactions({ required FederationId federationId, BigInt? timestamp, @@ -20768,9 +22761,6 @@ class MultimintImpl extends RustOpaque implements Multimint { modules: modules, ); - Future verifyPin({required String pin}) => RustLib.instance.api - .crateMultimintMultimintVerifyPin(that: this, pin: pin); - Future> walletSummary({ String? invite, FederationId? federationId, @@ -20854,15 +22844,6 @@ class NostrClientImpl extends RustOpaque implements NostrClient { .api .crateNostrNostrClientGetFollowsForPubkey(that: this, npub: npub); - /// Get NWC config for a federation and return it. - /// This is used by the blocking listen function. - Future<(NostrWalletConnectConfig, NWCConnectionInfo)> getNwcConfig({ - required FederationId federationId, - }) => RustLib.instance.api.crateNostrNostrClientGetNwcConfig( - that: this, - federationId: federationId, - ); - Future> getNwcConnectionInfo() => RustLib.instance.api .crateNostrNostrClientGetNwcConnectionInfo(that: this); diff --git a/lib/frb_generated.io.dart b/lib/frb_generated.io.dart index 5524d315..c2d69dc8 100644 --- a/lib/frb_generated.io.dart +++ b/lib/frb_generated.io.dart @@ -12,6 +12,7 @@ import 'event_bus.dart'; import 'fountain.dart'; import 'frb_generated.dart'; import 'lib.dart'; +import 'lnurl_client.dart'; import 'multimint.dart'; import 'nostr.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; @@ -475,6 +476,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + SafeUrl + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + dynamic raw, + ); + @protected TapRecipient dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( @@ -764,6 +771,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double dco_decode_box_autoadd_f_64(dynamic raw); + @protected + GuardianBitcoinStatus dco_decode_box_autoadd_guardian_bitcoin_status( + dynamic raw, + ); + @protected InvoicePaidEvent dco_decode_box_autoadd_invoice_paid_event(dynamic raw); @@ -776,11 +788,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected NostrRecoveryPhase dco_decode_box_autoadd_nostr_recovery_phase(dynamic raw); - @protected - NostrWalletConnectConfig dco_decode_box_autoadd_nostr_wallet_connect_config( - dynamic raw, - ); - @protected (FederationId, DepositEventKind) dco_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -859,9 +866,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected Guardian dco_decode_guardian(dynamic raw); + @protected + GuardianAuditSummary dco_decode_guardian_audit_summary(dynamic raw); + + @protected + GuardianBackupStatistics dco_decode_guardian_backup_statistics(dynamic raw); + + @protected + GuardianBitcoinStatus dco_decode_guardian_bitcoin_status(dynamic raw); + + @protected + GuardianHealth dco_decode_guardian_health(dynamic raw); + + @protected + GuardianMetaProposal dco_decode_guardian_meta_proposal(dynamic raw); + + @protected + GuardianMetaState dco_decode_guardian_meta_state(dynamic raw); + + @protected + GuardianModuleSummary dco_decode_guardian_module_summary(dynamic raw); + + @protected + GuardianStatusSummary dco_decode_guardian_status_summary(dynamic raw); + @protected int dco_decode_i_32(dynamic raw); + @protected + PlatformInt64 dco_decode_i_64(dynamic raw); + @protected InvoicePaidEvent dco_decode_invoice_paid_event(dynamic raw); @@ -900,12 +934,25 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List dco_decode_list_guardian(dynamic raw); + @protected + List dco_decode_list_guardian_meta_proposal( + dynamic raw, + ); + + @protected + List dco_decode_list_guardian_module_summary( + dynamic raw, + ); + @protected List dco_decode_list_nostr_profile(dynamic raw); @protected List dco_decode_list_peer_status(dynamic raw); + @protected + Uint16List dco_decode_list_prim_u_16_strict(dynamic raw); + @protected List dco_decode_list_prim_u_8_loose(dynamic raw); @@ -971,9 +1018,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected NostrRecoveryPhase dco_decode_nostr_recovery_phase(dynamic raw); - @protected - NostrWalletConnectConfig dco_decode_nostr_wallet_connect_config(dynamic raw); - @protected NWCConnectionInfo dco_decode_nwc_connection_info(dynamic raw); @@ -1018,6 +1062,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double? dco_decode_opt_box_autoadd_f_64(dynamic raw); + @protected + GuardianBitcoinStatus? dco_decode_opt_box_autoadd_guardian_bitcoin_status( + dynamic raw, + ); + @protected int? dco_decode_opt_box_autoadd_u_32(dynamic raw); @@ -1113,13 +1162,10 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw); + (bool, BigInt?) dco_decode_record_bool_opt_box_autoadd_u_64(dynamic raw); @protected - (NostrWalletConnectConfig, NWCConnectionInfo) - dco_decode_record_nostr_wallet_connect_config_nwc_connection_info( - dynamic raw, - ); + (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw); @protected (ParsedText, FederationSelector) @@ -1161,13 +1207,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { (BigInt, BigInt) dco_decode_record_u_64_usize(dynamic raw); @protected - ReissueFees dco_decode_reissue_fees(dynamic raw); + RecoveryModule dco_decode_recovery_module(dynamic raw); @protected - RelayStatusKind dco_decode_relay_status_kind(dynamic raw); + ReissueFees dco_decode_reissue_fees(dynamic raw); @protected - SendGatewaySelection dco_decode_send_gateway_selection(dynamic raw); + RelayStatusKind dco_decode_relay_status_kind(dynamic raw); @protected Transaction dco_decode_transaction(dynamic raw); @@ -1187,9 +1233,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int dco_decode_u_8(dynamic raw); - @protected - U8Array32 dco_decode_u_8_array_32(dynamic raw); - @protected void dco_decode_unit(dynamic raw); @@ -1526,6 +1569,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + SafeUrl + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + SseDeserializer deserializer, + ); + @protected TapRecipient sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( @@ -1830,27 +1879,27 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { double sse_decode_box_autoadd_f_64(SseDeserializer deserializer); @protected - InvoicePaidEvent sse_decode_box_autoadd_invoice_paid_event( + GuardianBitcoinStatus sse_decode_box_autoadd_guardian_bitcoin_status( SseDeserializer deserializer, ); @protected - MempoolEvent sse_decode_box_autoadd_mempool_event( + InvoicePaidEvent sse_decode_box_autoadd_invoice_paid_event( SseDeserializer deserializer, ); @protected - MultimintCreation sse_decode_box_autoadd_multimint_creation( + MempoolEvent sse_decode_box_autoadd_mempool_event( SseDeserializer deserializer, ); @protected - NostrRecoveryPhase sse_decode_box_autoadd_nostr_recovery_phase( + MultimintCreation sse_decode_box_autoadd_multimint_creation( SseDeserializer deserializer, ); @protected - NostrWalletConnectConfig sse_decode_box_autoadd_nostr_wallet_connect_config( + NostrRecoveryPhase sse_decode_box_autoadd_nostr_recovery_phase( SseDeserializer deserializer, ); @@ -1938,9 +1987,50 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected Guardian sse_decode_guardian(SseDeserializer deserializer); + @protected + GuardianAuditSummary sse_decode_guardian_audit_summary( + SseDeserializer deserializer, + ); + + @protected + GuardianBackupStatistics sse_decode_guardian_backup_statistics( + SseDeserializer deserializer, + ); + + @protected + GuardianBitcoinStatus sse_decode_guardian_bitcoin_status( + SseDeserializer deserializer, + ); + + @protected + GuardianHealth sse_decode_guardian_health(SseDeserializer deserializer); + + @protected + GuardianMetaProposal sse_decode_guardian_meta_proposal( + SseDeserializer deserializer, + ); + + @protected + GuardianMetaState sse_decode_guardian_meta_state( + SseDeserializer deserializer, + ); + + @protected + GuardianModuleSummary sse_decode_guardian_module_summary( + SseDeserializer deserializer, + ); + + @protected + GuardianStatusSummary sse_decode_guardian_status_summary( + SseDeserializer deserializer, + ); + @protected int sse_decode_i_32(SseDeserializer deserializer); + @protected + PlatformInt64 sse_decode_i_64(SseDeserializer deserializer); + @protected InvoicePaidEvent sse_decode_invoice_paid_event(SseDeserializer deserializer); @@ -1985,6 +2075,16 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List sse_decode_list_guardian(SseDeserializer deserializer); + @protected + List sse_decode_list_guardian_meta_proposal( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_guardian_module_summary( + SseDeserializer deserializer, + ); + @protected List sse_decode_list_nostr_profile( SseDeserializer deserializer, @@ -1993,6 +2093,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List sse_decode_list_peer_status(SseDeserializer deserializer); + @protected + Uint16List sse_decode_list_prim_u_16_strict(SseDeserializer deserializer); + @protected List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); @@ -2066,11 +2169,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); - @protected - NostrWalletConnectConfig sse_decode_nostr_wallet_connect_config( - SseDeserializer deserializer, - ); - @protected NWCConnectionInfo sse_decode_nwc_connection_info( SseDeserializer deserializer, @@ -2119,6 +2217,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double? sse_decode_opt_box_autoadd_f_64(SseDeserializer deserializer); + @protected + GuardianBitcoinStatus? sse_decode_opt_box_autoadd_guardian_bitcoin_status( + SseDeserializer deserializer, + ); + @protected int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer); @@ -2214,13 +2317,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( + (bool, BigInt?) sse_decode_record_bool_opt_box_autoadd_u_64( SseDeserializer deserializer, ); @protected - (NostrWalletConnectConfig, NWCConnectionInfo) - sse_decode_record_nostr_wallet_connect_config_nwc_connection_info( + (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( SseDeserializer deserializer, ); @@ -2268,15 +2370,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { (BigInt, BigInt) sse_decode_record_u_64_usize(SseDeserializer deserializer); @protected - ReissueFees sse_decode_reissue_fees(SseDeserializer deserializer); + RecoveryModule sse_decode_recovery_module(SseDeserializer deserializer); @protected - RelayStatusKind sse_decode_relay_status_kind(SseDeserializer deserializer); + ReissueFees sse_decode_reissue_fees(SseDeserializer deserializer); @protected - SendGatewaySelection sse_decode_send_gateway_selection( - SseDeserializer deserializer, - ); + RelayStatusKind sse_decode_relay_status_kind(SseDeserializer deserializer); @protected Transaction sse_decode_transaction(SseDeserializer deserializer); @@ -2296,9 +2396,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int sse_decode_u_8(SseDeserializer deserializer); - @protected - U8Array32 sse_decode_u_8_array_32(SseDeserializer deserializer); - @protected void sse_decode_unit(SseDeserializer deserializer); @@ -2692,6 +2789,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + SafeUrl self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( @@ -3048,6 +3152,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_box_autoadd_f_64(double self, SseSerializer serializer); + @protected + void sse_encode_box_autoadd_guardian_bitcoin_status( + GuardianBitcoinStatus self, + SseSerializer serializer, + ); + @protected void sse_encode_box_autoadd_invoice_paid_event( InvoicePaidEvent self, @@ -3072,12 +3182,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); - @protected - void sse_encode_box_autoadd_nostr_wallet_connect_config( - NostrWalletConnectConfig self, - SseSerializer serializer, - ); - @protected void sse_encode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -3181,9 +3285,60 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_guardian(Guardian self, SseSerializer serializer); + @protected + void sse_encode_guardian_audit_summary( + GuardianAuditSummary self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_backup_statistics( + GuardianBackupStatistics self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_bitcoin_status( + GuardianBitcoinStatus self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_health( + GuardianHealth self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_meta_proposal( + GuardianMetaProposal self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_meta_state( + GuardianMetaState self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_module_summary( + GuardianModuleSummary self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_status_summary( + GuardianStatusSummary self, + SseSerializer serializer, + ); + @protected void sse_encode_i_32(int self, SseSerializer serializer); + @protected + void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer); + @protected void sse_encode_invoice_paid_event( InvoicePaidEvent self, @@ -3237,6 +3392,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_list_guardian(List self, SseSerializer serializer); + @protected + void sse_encode_list_guardian_meta_proposal( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_guardian_module_summary( + List self, + SseSerializer serializer, + ); + @protected void sse_encode_list_nostr_profile( List self, @@ -3249,6 +3416,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_list_prim_u_16_strict( + Uint16List self, + SseSerializer serializer, + ); + @protected void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); @@ -3344,12 +3517,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); - @protected - void sse_encode_nostr_wallet_connect_config( - NostrWalletConnectConfig self, - SseSerializer serializer, - ); - @protected void sse_encode_nwc_connection_info( NWCConnectionInfo self, @@ -3408,6 +3575,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_opt_box_autoadd_f_64(double? self, SseSerializer serializer); + @protected + void sse_encode_opt_box_autoadd_guardian_bitcoin_status( + GuardianBitcoinStatus? self, + SseSerializer serializer, + ); + @protected void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer); @@ -3521,14 +3694,14 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - void sse_encode_record_fiat_currency_u_64( - (FiatCurrency, BigInt) self, + void sse_encode_record_bool_opt_box_autoadd_u_64( + (bool, BigInt?) self, SseSerializer serializer, ); @protected - void sse_encode_record_nostr_wallet_connect_config_nwc_connection_info( - (NostrWalletConnectConfig, NWCConnectionInfo) self, + void sse_encode_record_fiat_currency_u_64( + (FiatCurrency, BigInt) self, SseSerializer serializer, ); @@ -3586,6 +3759,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_recovery_module( + RecoveryModule self, + SseSerializer serializer, + ); + @protected void sse_encode_reissue_fees(ReissueFees self, SseSerializer serializer); @@ -3595,12 +3774,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); - @protected - void sse_encode_send_gateway_selection( - SendGatewaySelection self, - SseSerializer serializer, - ); - @protected void sse_encode_transaction(Transaction self, SseSerializer serializer); @@ -3622,9 +3795,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_u_8(int self, SseSerializer serializer); - @protected - void sse_encode_u_8_array_32(U8Array32 self, SseSerializer serializer); - @protected void sse_encode_unit(void self, SseSerializer serializer); diff --git a/lib/frb_generated.web.dart b/lib/frb_generated.web.dart index 12147f76..eff142b0 100644 --- a/lib/frb_generated.web.dart +++ b/lib/frb_generated.web.dart @@ -14,6 +14,7 @@ import 'event_bus.dart'; import 'fountain.dart'; import 'frb_generated.dart'; import 'lib.dart'; +import 'lnurl_client.dart'; import 'multimint.dart'; import 'nostr.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; @@ -477,6 +478,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + SafeUrl + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + dynamic raw, + ); + @protected TapRecipient dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( @@ -766,6 +773,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double dco_decode_box_autoadd_f_64(dynamic raw); + @protected + GuardianBitcoinStatus dco_decode_box_autoadd_guardian_bitcoin_status( + dynamic raw, + ); + @protected InvoicePaidEvent dco_decode_box_autoadd_invoice_paid_event(dynamic raw); @@ -778,11 +790,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected NostrRecoveryPhase dco_decode_box_autoadd_nostr_recovery_phase(dynamic raw); - @protected - NostrWalletConnectConfig dco_decode_box_autoadd_nostr_wallet_connect_config( - dynamic raw, - ); - @protected (FederationId, DepositEventKind) dco_decode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -861,9 +868,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected Guardian dco_decode_guardian(dynamic raw); + @protected + GuardianAuditSummary dco_decode_guardian_audit_summary(dynamic raw); + + @protected + GuardianBackupStatistics dco_decode_guardian_backup_statistics(dynamic raw); + + @protected + GuardianBitcoinStatus dco_decode_guardian_bitcoin_status(dynamic raw); + + @protected + GuardianHealth dco_decode_guardian_health(dynamic raw); + + @protected + GuardianMetaProposal dco_decode_guardian_meta_proposal(dynamic raw); + + @protected + GuardianMetaState dco_decode_guardian_meta_state(dynamic raw); + + @protected + GuardianModuleSummary dco_decode_guardian_module_summary(dynamic raw); + + @protected + GuardianStatusSummary dco_decode_guardian_status_summary(dynamic raw); + @protected int dco_decode_i_32(dynamic raw); + @protected + PlatformInt64 dco_decode_i_64(dynamic raw); + @protected InvoicePaidEvent dco_decode_invoice_paid_event(dynamic raw); @@ -902,12 +936,25 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List dco_decode_list_guardian(dynamic raw); + @protected + List dco_decode_list_guardian_meta_proposal( + dynamic raw, + ); + + @protected + List dco_decode_list_guardian_module_summary( + dynamic raw, + ); + @protected List dco_decode_list_nostr_profile(dynamic raw); @protected List dco_decode_list_peer_status(dynamic raw); + @protected + Uint16List dco_decode_list_prim_u_16_strict(dynamic raw); + @protected List dco_decode_list_prim_u_8_loose(dynamic raw); @@ -973,9 +1020,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected NostrRecoveryPhase dco_decode_nostr_recovery_phase(dynamic raw); - @protected - NostrWalletConnectConfig dco_decode_nostr_wallet_connect_config(dynamic raw); - @protected NWCConnectionInfo dco_decode_nwc_connection_info(dynamic raw); @@ -1020,6 +1064,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double? dco_decode_opt_box_autoadd_f_64(dynamic raw); + @protected + GuardianBitcoinStatus? dco_decode_opt_box_autoadd_guardian_bitcoin_status( + dynamic raw, + ); + @protected int? dco_decode_opt_box_autoadd_u_32(dynamic raw); @@ -1115,13 +1164,10 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw); + (bool, BigInt?) dco_decode_record_bool_opt_box_autoadd_u_64(dynamic raw); @protected - (NostrWalletConnectConfig, NWCConnectionInfo) - dco_decode_record_nostr_wallet_connect_config_nwc_connection_info( - dynamic raw, - ); + (FiatCurrency, BigInt) dco_decode_record_fiat_currency_u_64(dynamic raw); @protected (ParsedText, FederationSelector) @@ -1163,13 +1209,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { (BigInt, BigInt) dco_decode_record_u_64_usize(dynamic raw); @protected - ReissueFees dco_decode_reissue_fees(dynamic raw); + RecoveryModule dco_decode_recovery_module(dynamic raw); @protected - RelayStatusKind dco_decode_relay_status_kind(dynamic raw); + ReissueFees dco_decode_reissue_fees(dynamic raw); @protected - SendGatewaySelection dco_decode_send_gateway_selection(dynamic raw); + RelayStatusKind dco_decode_relay_status_kind(dynamic raw); @protected Transaction dco_decode_transaction(dynamic raw); @@ -1189,9 +1235,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int dco_decode_u_8(dynamic raw); - @protected - U8Array32 dco_decode_u_8_array_32(dynamic raw); - @protected void dco_decode_unit(dynamic raw); @@ -1528,6 +1571,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + SafeUrl + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + SseDeserializer deserializer, + ); + @protected TapRecipient sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( @@ -1832,27 +1881,27 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { double sse_decode_box_autoadd_f_64(SseDeserializer deserializer); @protected - InvoicePaidEvent sse_decode_box_autoadd_invoice_paid_event( + GuardianBitcoinStatus sse_decode_box_autoadd_guardian_bitcoin_status( SseDeserializer deserializer, ); @protected - MempoolEvent sse_decode_box_autoadd_mempool_event( + InvoicePaidEvent sse_decode_box_autoadd_invoice_paid_event( SseDeserializer deserializer, ); @protected - MultimintCreation sse_decode_box_autoadd_multimint_creation( + MempoolEvent sse_decode_box_autoadd_mempool_event( SseDeserializer deserializer, ); @protected - NostrRecoveryPhase sse_decode_box_autoadd_nostr_recovery_phase( + MultimintCreation sse_decode_box_autoadd_multimint_creation( SseDeserializer deserializer, ); @protected - NostrWalletConnectConfig sse_decode_box_autoadd_nostr_wallet_connect_config( + NostrRecoveryPhase sse_decode_box_autoadd_nostr_recovery_phase( SseDeserializer deserializer, ); @@ -1940,9 +1989,50 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected Guardian sse_decode_guardian(SseDeserializer deserializer); + @protected + GuardianAuditSummary sse_decode_guardian_audit_summary( + SseDeserializer deserializer, + ); + + @protected + GuardianBackupStatistics sse_decode_guardian_backup_statistics( + SseDeserializer deserializer, + ); + + @protected + GuardianBitcoinStatus sse_decode_guardian_bitcoin_status( + SseDeserializer deserializer, + ); + + @protected + GuardianHealth sse_decode_guardian_health(SseDeserializer deserializer); + + @protected + GuardianMetaProposal sse_decode_guardian_meta_proposal( + SseDeserializer deserializer, + ); + + @protected + GuardianMetaState sse_decode_guardian_meta_state( + SseDeserializer deserializer, + ); + + @protected + GuardianModuleSummary sse_decode_guardian_module_summary( + SseDeserializer deserializer, + ); + + @protected + GuardianStatusSummary sse_decode_guardian_status_summary( + SseDeserializer deserializer, + ); + @protected int sse_decode_i_32(SseDeserializer deserializer); + @protected + PlatformInt64 sse_decode_i_64(SseDeserializer deserializer); + @protected InvoicePaidEvent sse_decode_invoice_paid_event(SseDeserializer deserializer); @@ -1987,6 +2077,16 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List sse_decode_list_guardian(SseDeserializer deserializer); + @protected + List sse_decode_list_guardian_meta_proposal( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_guardian_module_summary( + SseDeserializer deserializer, + ); + @protected List sse_decode_list_nostr_profile( SseDeserializer deserializer, @@ -1995,6 +2095,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected List sse_decode_list_peer_status(SseDeserializer deserializer); + @protected + Uint16List sse_decode_list_prim_u_16_strict(SseDeserializer deserializer); + @protected List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); @@ -2068,11 +2171,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); - @protected - NostrWalletConnectConfig sse_decode_nostr_wallet_connect_config( - SseDeserializer deserializer, - ); - @protected NWCConnectionInfo sse_decode_nwc_connection_info( SseDeserializer deserializer, @@ -2121,6 +2219,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected double? sse_decode_opt_box_autoadd_f_64(SseDeserializer deserializer); + @protected + GuardianBitcoinStatus? sse_decode_opt_box_autoadd_guardian_bitcoin_status( + SseDeserializer deserializer, + ); + @protected int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer); @@ -2216,13 +2319,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( + (bool, BigInt?) sse_decode_record_bool_opt_box_autoadd_u_64( SseDeserializer deserializer, ); @protected - (NostrWalletConnectConfig, NWCConnectionInfo) - sse_decode_record_nostr_wallet_connect_config_nwc_connection_info( + (FiatCurrency, BigInt) sse_decode_record_fiat_currency_u_64( SseDeserializer deserializer, ); @@ -2270,15 +2372,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { (BigInt, BigInt) sse_decode_record_u_64_usize(SseDeserializer deserializer); @protected - ReissueFees sse_decode_reissue_fees(SseDeserializer deserializer); + RecoveryModule sse_decode_recovery_module(SseDeserializer deserializer); @protected - RelayStatusKind sse_decode_relay_status_kind(SseDeserializer deserializer); + ReissueFees sse_decode_reissue_fees(SseDeserializer deserializer); @protected - SendGatewaySelection sse_decode_send_gateway_selection( - SseDeserializer deserializer, - ); + RelayStatusKind sse_decode_relay_status_kind(SseDeserializer deserializer); @protected Transaction sse_decode_transaction(SseDeserializer deserializer); @@ -2298,9 +2398,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int sse_decode_u_8(SseDeserializer deserializer); - @protected - U8Array32 sse_decode_u_8_array_32(SseDeserializer deserializer); - @protected void sse_decode_unit(SseDeserializer deserializer); @@ -2694,6 +2791,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSafeUrl( + SafeUrl self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTapRecipient( @@ -3050,6 +3154,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_box_autoadd_f_64(double self, SseSerializer serializer); + @protected + void sse_encode_box_autoadd_guardian_bitcoin_status( + GuardianBitcoinStatus self, + SseSerializer serializer, + ); + @protected void sse_encode_box_autoadd_invoice_paid_event( InvoicePaidEvent self, @@ -3074,12 +3184,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); - @protected - void sse_encode_box_autoadd_nostr_wallet_connect_config( - NostrWalletConnectConfig self, - SseSerializer serializer, - ); - @protected void sse_encode_box_autoadd_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_federation_id_deposit_event_kind( @@ -3183,9 +3287,60 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_guardian(Guardian self, SseSerializer serializer); + @protected + void sse_encode_guardian_audit_summary( + GuardianAuditSummary self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_backup_statistics( + GuardianBackupStatistics self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_bitcoin_status( + GuardianBitcoinStatus self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_health( + GuardianHealth self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_meta_proposal( + GuardianMetaProposal self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_meta_state( + GuardianMetaState self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_module_summary( + GuardianModuleSummary self, + SseSerializer serializer, + ); + + @protected + void sse_encode_guardian_status_summary( + GuardianStatusSummary self, + SseSerializer serializer, + ); + @protected void sse_encode_i_32(int self, SseSerializer serializer); + @protected + void sse_encode_i_64(PlatformInt64 self, SseSerializer serializer); + @protected void sse_encode_invoice_paid_event( InvoicePaidEvent self, @@ -3239,6 +3394,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_list_guardian(List self, SseSerializer serializer); + @protected + void sse_encode_list_guardian_meta_proposal( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_guardian_module_summary( + List self, + SseSerializer serializer, + ); + @protected void sse_encode_list_nostr_profile( List self, @@ -3251,6 +3418,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_list_prim_u_16_strict( + Uint16List self, + SseSerializer serializer, + ); + @protected void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); @@ -3346,12 +3519,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); - @protected - void sse_encode_nostr_wallet_connect_config( - NostrWalletConnectConfig self, - SseSerializer serializer, - ); - @protected void sse_encode_nwc_connection_info( NWCConnectionInfo self, @@ -3410,6 +3577,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_opt_box_autoadd_f_64(double? self, SseSerializer serializer); + @protected + void sse_encode_opt_box_autoadd_guardian_bitcoin_status( + GuardianBitcoinStatus? self, + SseSerializer serializer, + ); + @protected void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer); @@ -3523,14 +3696,14 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { ); @protected - void sse_encode_record_fiat_currency_u_64( - (FiatCurrency, BigInt) self, + void sse_encode_record_bool_opt_box_autoadd_u_64( + (bool, BigInt?) self, SseSerializer serializer, ); @protected - void sse_encode_record_nostr_wallet_connect_config_nwc_connection_info( - (NostrWalletConnectConfig, NWCConnectionInfo) self, + void sse_encode_record_fiat_currency_u_64( + (FiatCurrency, BigInt) self, SseSerializer serializer, ); @@ -3588,6 +3761,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_recovery_module( + RecoveryModule self, + SseSerializer serializer, + ); + @protected void sse_encode_reissue_fees(ReissueFees self, SseSerializer serializer); @@ -3597,12 +3776,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); - @protected - void sse_encode_send_gateway_selection( - SendGatewaySelection self, - SseSerializer serializer, - ); - @protected void sse_encode_transaction(Transaction self, SseSerializer serializer); @@ -3624,9 +3797,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_u_8(int self, SseSerializer serializer); - @protected - void sse_encode_u_8_array_32(U8Array32 self, SseSerializer serializer); - @protected void sse_encode_unit(void self, SseSerializer serializer); diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index a7883d30..3a37bb13 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -1321,6 +1321,27 @@ "ecashCopiedToClipboard": "Ecash copied to clipboard", "@ecashCopiedToClipboard": {}, + "tapToSendHint": "Or tap the recipient's phone", + "@tapToSendHint": {}, + + "tapConnecting": "Connecting…", + "@tapConnecting": {}, + + "tapSending": "Sending…", + "@tapSending": {}, + + "tapSendFailed": "Tap-to-send failed — use the QR code", + "@tapSendFailed": {}, + + "tapToReceiveTitle": "Tap to receive", + "@tapToReceiveTitle": {}, + + "tapToReceiveSubtitle": "Let others tap your phone to send you ecash", + "@tapToReceiveSubtitle": {}, + + "tapToReceivePermissionDenied": "Bluetooth permission is required for tap to receive", + "@tapToReceivePermissionDenied": {}, + "federationLabel": "Federation", "@federationLabel": {}, diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 136bb1ad..2d81d82c 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -373,6 +373,13 @@ "failedToLoadEcash": "Error al cargar Ecash", "ecashWithdrawn": "Ecash retirado", "ecashCopiedToClipboard": "Ecash copiado al portapapeles", + "tapToSendHint": "O toca el teléfono del destinatario", + "tapConnecting": "Conectando…", + "tapSending": "Enviando…", + "tapSendFailed": "Falló el envío por toque — usa el código QR", + "tapToReceiveTitle": "Tocar para recibir", + "tapToReceiveSubtitle": "Permite que otros toquen tu teléfono para enviarte ecash", + "tapToReceivePermissionDenied": "Se requiere permiso de Bluetooth para tocar y recibir", "federationLabel": "Federación", "confirmPayment": "Confirmar pago", "amountSpent": "{amount} gastado", diff --git a/lib/lib.dart b/lib/lib.dart index fc707bff..b6711492 100644 --- a/lib/lib.dart +++ b/lib/lib.dart @@ -666,6 +666,12 @@ Future getShowMsats() => RustLib.instance.api.crateGetShowMsats(); Future setShowMsats({required bool showMsats}) => RustLib.instance.api.crateSetShowMsats(showMsats: showMsats); +Future getTapReceiveEnabled() => + RustLib.instance.api.crateGetTapReceiveEnabled(); + +Future setTapReceiveEnabled({required bool enabled}) => + RustLib.instance.api.crateSetTapReceiveEnabled(enabled: enabled); + Future hasPinCode() => RustLib.instance.api.crateHasPinCode(); /// Enroll a PIN for the first time. diff --git a/lib/multimint.dart b/lib/multimint.dart index 824f1a20..09aa50b4 100644 --- a/lib/multimint.dart +++ b/lib/multimint.dart @@ -264,6 +264,8 @@ abstract class Multimint implements RustOpaqueInterface { Future getShowMsats(); + Future getTapReceiveEnabled(); + /// Returns false when the gateway was already whitelisted. Future guardianAddGateway({ required FederationId federationId, @@ -499,6 +501,8 @@ abstract class Multimint implements RustOpaqueInterface { Future setShowMsats({required bool showMsats}); + Future setTapReceiveEnabled({required bool enabled}); + Future> transactions({ required FederationId federationId, BigInt? timestamp, diff --git a/lib/nostr.dart b/lib/nostr.dart index 3bd51910..f1add854 100644 --- a/lib/nostr.dart +++ b/lib/nostr.dart @@ -9,9 +9,10 @@ import 'lib.dart'; import 'multimint.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; -// These functions are ignored because they are not marked as `pub`: `add_relays_from_db`, `broadcast_nwc_info`, `broadcast_response`, `fetch_observer_federations`, `get_or_insert_default_relays`, `handle_request`, `now_millis`, `parse_content`, `parse_federation_id`, `parse_federation_name`, `parse_invite_codes`, `parse_modules`, `parse_network`, `parse_picture`, `spawn_listen_for_nwc`, `update_federations_from_nostr` +// These functions are ignored because they are not marked as `pub`: `add_relays_from_db`, `broadcast_nwc_info`, `broadcast_response`, `check_nwc_budget`, `check_nwc_payment_limit`, `connection_info`, `fetch_observer_federations`, `get_or_insert_default_relays`, `handle_request`, `method_name`, `now_millis`, `nwc_limits`, `parse_content`, `parse_federation_id`, `parse_federation_name`, `parse_invite_codes`, `parse_modules`, `parse_network`, `parse_picture`, `purge_legacy_nwc_configs`, `record_nwc_spend`, `spawn_listen_for_nwc`, `update_federations_from_nostr`, `window_state` // These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `WalletConnectRequest`, `WalletConnectResponse` // These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `clone`, `clone`, `clone`, `clone`, `eq`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `try_from`, `try_from` +// These functions are ignored (category: IgnoreBecauseExplicitAttribute): `get_nwc_config`, `listen_for_nwc` // Rust type: RustOpaqueMoi> abstract class NostrClient implements RustOpaqueInterface { @@ -37,12 +38,6 @@ abstract class NostrClient implements RustOpaqueInterface { /// Fetch follows list for any pubkey (Kind 3 contact list) Future> getFollowsForPubkey({required String npub}); - /// Get NWC config for a federation and return it. - /// This is used by the blocking listen function. - Future<(NostrWalletConnectConfig, NWCConnectionInfo)> getNwcConfig({ - required FederationId federationId, - }); - Future> getNwcConnectionInfo(); Future> getPublicFederations({ @@ -56,16 +51,6 @@ abstract class NostrClient implements RustOpaqueInterface { Future insertRelay({required String relayUri}); - /// Blocking NWC listener - runs until the relay connection is closed or an error occurs. - /// This function is intended to be called directly from the foreground task. - static Future listenForNwc({ - required FederationId federationId, - required NostrWalletConnectConfig nwcConfig, - }) => RustLib.instance.api.crateNostrNostrClientListenForNwc( - federationId: federationId, - nwcConfig: nwcConfig, - ); - // HINT: Make it `#[frb(sync)]` to let it become the default constructor of Dart class. static Future newInstance({ required Database db, diff --git a/lib/providers/preferences_provider.dart b/lib/providers/preferences_provider.dart index abdcadc5..29a98a1a 100644 --- a/lib/providers/preferences_provider.dart +++ b/lib/providers/preferences_provider.dart @@ -7,11 +7,13 @@ class PreferencesProvider extends ChangeNotifier { BitcoinDisplay _bitcoinDisplay = BitcoinDisplay.bip177; FiatCurrency _fiatCurrency = FiatCurrency.usd; bool _showMsats = false; + bool _tapReceiveEnabled = false; bool _isLoading = true; BitcoinDisplay get bitcoinDisplay => _bitcoinDisplay; FiatCurrency get fiatCurrency => _fiatCurrency; bool get showMsats => _showMsats; + bool get tapReceiveEnabled => _tapReceiveEnabled; bool get isLoading => _isLoading; PreferencesProvider() { @@ -23,6 +25,7 @@ class PreferencesProvider extends ChangeNotifier { _bitcoinDisplay = await rust_lib.getBitcoinDisplay(); _fiatCurrency = await rust_lib.getFiatCurrency(); _showMsats = await rust_lib.getShowMsats(); + _tapReceiveEnabled = await rust_lib.getTapReceiveEnabled(); _isLoading = false; notifyListeners(); } catch (e) { @@ -61,4 +64,14 @@ class PreferencesProvider extends ChangeNotifier { AppLogger.instance.error('Failed to save show msats preference: $e'); } } + + Future setTapReceiveEnabled(bool value) async { + _tapReceiveEnabled = value; + notifyListeners(); + try { + await rust_lib.setTapReceiveEnabled(enabled: value); + } catch (e) { + AppLogger.instance.error('Failed to save tap receive preference: $e'); + } + } } diff --git a/lib/request.dart b/lib/request.dart index 58cb67c2..3c636f56 100644 --- a/lib/request.dart +++ b/lib/request.dart @@ -7,6 +7,7 @@ import 'package:ecashapp/extensions/build_context_l10n.dart'; import 'package:ecashapp/lib.dart'; import 'package:ecashapp/multimint.dart'; import 'package:ecashapp/nfc_hce.dart'; +import 'package:ecashapp/tap_transfer/tap_receive.dart'; import 'package:ecashapp/providers/preferences_provider.dart'; import 'package:ecashapp/success.dart'; import 'package:ecashapp/toast.dart'; @@ -63,6 +64,9 @@ class _RequestState extends State _startCountdown(); _waitForPayment(); WidgetsBinding.instance.addObserver(this); + // The Lightning-invoice HCE and the passive receiver both drive the single + // HCE service, so pause the receiver while this screen owns the tag. + TapReceive.instance.pause(); _startNfcBroadcast(); } @@ -71,6 +75,7 @@ class _RequestState extends State _timer?.cancel(); WidgetsBinding.instance.removeObserver(this); InvoiceNfcBroadcaster.stop(); + TapReceive.instance.resume(); super.dispose(); } diff --git a/lib/screens/display_settings.dart b/lib/screens/display_settings.dart index 69847fe4..6924622c 100644 --- a/lib/screens/display_settings.dart +++ b/lib/screens/display_settings.dart @@ -1,7 +1,9 @@ import 'package:ecashapp/db.dart'; import 'package:ecashapp/extensions/build_context_l10n.dart'; import 'package:ecashapp/providers/preferences_provider.dart'; +import 'package:ecashapp/tap_transfer/tap_transfer_dev_screen.dart'; import 'package:ecashapp/toast.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; @@ -501,6 +503,32 @@ class _DisplaySettingsScreenState extends State { ], ), ), + // Debug-only harness for the NFC + BLE tap-to-send feature (Phase 2). + if (kDebugMode) ...[ + const SizedBox(height: 24), + Card( + elevation: 2, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + child: ListTile( + leading: Icon( + Icons.wifi_tethering, + color: theme.colorScheme.primary, + ), + title: const Text('Tap transfer (dev)'), // i18n-ignore + subtitle: const Text('BLE ecash transfer test'), // i18n-ignore + trailing: const Icon(Icons.chevron_right), + onTap: + () => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => const TapTransferDevScreen(), + ), + ), + ), + ), + ], ], ), ); diff --git a/lib/setttings.dart b/lib/setttings.dart index 54a158db..06c7b8e3 100644 --- a/lib/setttings.dart +++ b/lib/setttings.dart @@ -5,14 +5,18 @@ import 'package:ecashapp/ln_address.dart'; import 'package:ecashapp/mnemonic.dart'; import 'package:ecashapp/multimint.dart'; import 'package:ecashapp/nwc.dart'; +import 'package:ecashapp/providers/preferences_provider.dart'; import 'package:ecashapp/relays.dart'; import 'package:ecashapp/screens/access_control.dart'; import 'package:ecashapp/screens/btcmap_screen.dart'; import 'package:ecashapp/screens/display_settings.dart'; +import 'package:ecashapp/tap_transfer/tap_receive.dart'; import 'package:ecashapp/theme.dart'; +import 'package:ecashapp/toast.dart'; import 'package:ecashapp/utils/pin_guard.dart'; import 'package:flutter/material.dart'; import 'package:package_info_plus/package_info_plus.dart'; +import 'package:provider/provider.dart'; class SettingsScreen extends StatefulWidget { final void Function(FederationSelector fed, bool recovering) onJoin; @@ -52,6 +56,31 @@ class _SettingsScreenState extends State { }); } + /// Toggle passive "tap to receive". Enabling requests the BLE permissions the + /// receiver needs (the one place we prompt) before persisting and arming. + Future _toggleTapReceive(bool value) async { + final prefs = context.read(); + if (value) { + final granted = await TapReceive.instance.requestPermissions(); + if (!granted) { + if (mounted) { + ToastService().show( + message: context.l10n.tapToReceivePermissionDenied, + duration: const Duration(seconds: 4), + onTap: () {}, + icon: const Icon(Icons.error), + ); + } + return; + } + await prefs.setTapReceiveEnabled(true); + await TapReceive.instance.arm(); + } else { + await prefs.setTapReceiveEnabled(false); + await TapReceive.instance.disarm(); + } + } + @override Widget build(BuildContext context) { return Scaffold( @@ -156,6 +185,22 @@ class _SettingsScreenState extends State { ); }, ), + Card( + elevation: 2, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + child: SwitchListTile( + secondary: Icon( + Icons.contactless, + color: Theme.of(context).colorScheme.primary, + ), + title: Text(context.l10n.tapToReceiveTitle), + subtitle: Text(context.l10n.tapToReceiveSubtitle), + value: context.watch().tapReceiveEnabled, + onChanged: _toggleTapReceive, + ), + ), _SettingsOption( icon: Icon( Icons.lock, diff --git a/lib/tap_transfer/ble_tap.dart b/lib/tap_transfer/ble_tap.dart new file mode 100644 index 00000000..c09532e8 --- /dev/null +++ b/lib/tap_transfer/ble_tap.dart @@ -0,0 +1,72 @@ +import 'dart:async'; + +import 'package:flutter/services.dart'; + +/// An event streamed from the native BLE tap-transfer controller. +/// +/// `event` is one of: `status`, `received`, `error`. +/// - `status` → [state] set (advertising/scanning/connecting/connected/writing/sent/confirmed/stopped) +/// - `received`→ [data] is the fully reassembled encrypted blob (receiver side) +/// - `error` → [message] set +class BleTapEvent { + final String event; + final String? state; + final String? message; + final Uint8List? data; + + const BleTapEvent({required this.event, this.state, this.message, this.data}); + + factory BleTapEvent.fromMap(Map map) => BleTapEvent( + event: map['event'] as String, + state: map['state'] as String?, + message: map['message'] as String?, + data: map['data'] as Uint8List?, + ); + + @override + String toString() => + 'BleTapEvent($event${state != null ? ' $state' : ''}' + '${message != null ? ' "$message"' : ''}' + '${data != null ? ' ${data!.length}B' : ''})'; +} + +/// Thin Dart wrapper over the native `ecashapp/ble_tap` channels (Android only). +/// +/// See android/app/src/main/kotlin/app/ecash/BleTapController.kt. This is the +/// Phase 2 transport: it moves an already-encrypted blob between two phones over +/// a no-bond GATT connection. Encryption/decryption itself lives in Rust +/// (`TapRecipient` / `encryptEcashForTap`). +class BleTap { + static const MethodChannel _method = MethodChannel('ecashapp/ble_tap'); + static const EventChannel _events = EventChannel('ecashapp/ble_tap/events'); + + /// Broadcast stream of controller events. Safe to listen to before starting. + static Stream events() => _events.receiveBroadcastStream().map( + (e) => BleTapEvent.fromMap(e as Map), + ); + + /// Whether BLE is present and enabled on this device. + static Future isAvailable() async => + (await _method.invokeMethod('isAvailable')) ?? false; + + /// Sender: advertise the per-session rendezvous [serviceUuid] (learned over + /// NFC) and push [blob] — already encrypted for the pubkey that came with it — + /// to the first central that connects. + /// + /// The sender is the peripheral because Android 17's GATT *client* accepts + /// attribute writes and never delivers their callback, so the payload travels + /// as server-to-client notifications instead. See BleTapController.kt. + static Future startSending(String serviceUuid, Uint8List blob) => + _method.invokeMethod('startSending', { + 'uuid': serviceUuid, + 'blob': blob, + }); + + /// Receiver: scan for [serviceUuid], connect (no bond), and collect the pushed + /// blob, which arrives as a `received` event. + static Future startReceiving(String serviceUuid) => + _method.invokeMethod('startReceiving', {'uuid': serviceUuid}); + + /// Tear down whichever role is active and release BLE resources. + static Future stop() => _method.invokeMethod('stop'); +} diff --git a/lib/tap_transfer/tap_nfc.dart b/lib/tap_transfer/tap_nfc.dart new file mode 100644 index 00000000..758187e9 --- /dev/null +++ b/lib/tap_transfer/tap_nfc.dart @@ -0,0 +1,128 @@ +import 'dart:async'; +import 'dart:convert'; +import 'dart:math'; +import 'dart:typed_data'; + +import 'package:flutter/services.dart'; + +/// The handshake payload exchanged over NFC: the receiver's ephemeral public key +/// plus the per-session BLE rendezvous service UUID. +class TapRendezvous { + final Uint8List pubkey; // 33-byte compressed secp256k1 key + final String uuid; // BLE rendezvous service UUID + + const TapRendezvous({required this.pubkey, required this.uuid}); +} + +/// NFC side of "tap to send" (Phase 3), Android only. +/// +/// Receiver publishes the rendezvous over HCE (reusing the existing +/// `ecashapp/nfc_hce` channel, encoded as an `ecashtap:` URI record). +/// Sender enters reader mode (`ecashapp/nfc_tap`) and, on tap, reads that URI and +/// decodes it back into a [TapRendezvous]. The pubkey only ever crosses this +/// proximity-authenticated channel — never BLE — which is what makes the +/// transfer MITM-safe. +class TapNfc { + static const MethodChannel _hce = MethodChannel('ecashapp/nfc_hce'); + static const MethodChannel _reader = MethodChannel('ecashapp/nfc_tap'); + static const EventChannel _readerEvents = EventChannel( + 'ecashapp/nfc_tap/events', + ); + static const EventChannel _hceEvents = EventChannel( + 'ecashapp/nfc_hce/events', + ); + + static const int _version = 1; + static const String _scheme = 'ecashtap:'; + static const int _rendezvousLen = 1 + 33 + 16; // version + pubkey + uuid + + /// Whether NFC + HCE is available (receiver publish path). + static Future hceAvailable() async { + try { + return (await _hce.invokeMethod('isAvailable')) ?? false; + } catch (_) { + return false; + } + } + + /// Receiver: serve [rendezvous] over HCE until [stopPublish]. + static Future publish(TapRendezvous rendezvous) => + _hce.invokeMethod('start', {'payload': _scheme + _encode(rendezvous)}); + + static Future stopPublish() => _hce.invokeMethod('stop'); + + /// Receiver: fires when a reader actually pulls the published rendezvous, i.e. + /// the instant a tap happens. The receiver uses this to start scanning for the + /// sender's advertisement; scanning continuously would cost too much battery. + /// May fire more than once per tap, so listeners must be idempotent. + static Stream tagReads() => + _hceEvents.receiveBroadcastStream().map((_) {}); + + /// Sender: enter NFC reader mode. Reads arrive on [reads]. + static Future startReader() => _reader.invokeMethod('startReader'); + + static Future stopReader() => _reader.invokeMethod('stopReader'); + + /// Sender: rendezvous decoded from a tapped receiver. Malformed reads are + /// dropped rather than surfaced. + static Stream reads() => + _readerEvents + .receiveBroadcastStream() + .map((e) => _parseEvent(e as Map)) + .where((r) => r != null) + .cast(); + + /// A fresh random rendezvous UUID for one transfer. + static String randomUuid() { + final rng = Random.secure(); + final b = Uint8List.fromList( + List.generate(16, (_) => rng.nextInt(256)), + ); + b[6] = (b[6] & 0x0f) | 0x40; // version 4 + b[8] = (b[8] & 0x3f) | 0x80; // variant + return _bytesToUuid(b); + } + + static TapRendezvous? _parseEvent(Map map) { + if (map['event'] != 'read') return null; + final uri = map['uri'] as String?; + if (uri == null || !uri.startsWith(_scheme)) return null; + return _decode(uri.substring(_scheme.length)); + } + + static String _encode(TapRendezvous r) { + final out = BytesBuilder(); + out.addByte(_version); + out.add(r.pubkey); + out.add(_uuidToBytes(r.uuid)); + return base64Url.encode(out.toBytes()).replaceAll('=', ''); + } + + static TapRendezvous? _decode(String b64) { + try { + final bytes = base64Url.decode(base64Url.normalize(b64)); + if (bytes.length != _rendezvousLen || bytes[0] != _version) return null; + return TapRendezvous( + pubkey: Uint8List.fromList(bytes.sublist(1, 34)), + uuid: _bytesToUuid(bytes.sublist(34, 50)), + ); + } catch (_) { + return null; + } + } + + static Uint8List _uuidToBytes(String uuid) { + final hex = uuid.replaceAll('-', ''); + final bytes = Uint8List(16); + for (var i = 0; i < 16; i++) { + bytes[i] = int.parse(hex.substring(i * 2, i * 2 + 2), radix: 16); + } + return bytes; + } + + static String _bytesToUuid(List b) { + final hex = b.map((x) => x.toRadixString(16).padLeft(2, '0')).join(); + return '${hex.substring(0, 8)}-${hex.substring(8, 12)}-' + '${hex.substring(12, 16)}-${hex.substring(16, 20)}-${hex.substring(20, 32)}'; + } +} diff --git a/lib/tap_transfer/tap_receive.dart b/lib/tap_transfer/tap_receive.dart new file mode 100644 index 00000000..d0def8b0 --- /dev/null +++ b/lib/tap_transfer/tap_receive.dart @@ -0,0 +1,255 @@ +import 'dart:async'; + +import 'package:ecashapp/extensions/build_context_l10n.dart'; +import 'package:ecashapp/lib.dart'; +import 'package:ecashapp/redeem_ecash.dart'; +import 'package:ecashapp/screens/federation_info_screen.dart'; +import 'package:ecashapp/tap_transfer/ble_tap.dart'; +import 'package:ecashapp/tap_transfer/tap_nfc.dart'; +import 'package:ecashapp/tap_transfer.dart'; +import 'package:ecashapp/theme.dart'; +import 'package:ecashapp/toast.dart'; +import 'package:ecashapp/utils.dart'; +import 'package:flutter/material.dart'; +import 'package:permission_handler/permission_handler.dart'; + +/// App-global passive receiver for "tap to send" ecash (Phase 4b). +/// +/// While armed — app foregrounded, BLE permissions already granted, and no +/// send/invoice screen holding NFC/BLE — it keeps a fresh rendezvous published +/// over NFC (HCE) and advertised over BLE, listening for an incoming encrypted +/// blob. On receipt it decrypts and hands the ecash string to [onEcash] (wired +/// in app.dart to the redeem bottom sheet). Nothing is auto-reissued. +/// +/// Arm/disarm follow the app lifecycle; [pause]/[resume] are a nesting-safe way +/// for screens that need exclusive NFC/BLE (the send screen, the Lightning +/// invoice HCE) to temporarily take over. +class TapReceive { + TapReceive._(); + static final TapReceive instance = TapReceive._(); + + /// Invoked with the decrypted ecash string. Set by app.dart. + void Function(String ecash)? onEcash; + + TapRecipient? _recipient; + StreamSubscription? _sub; + StreamSubscription? _tagSub; + bool _armed = false; + int _pauseCount = 0; + + /// UUID of the rendezvous currently published over NFC. + String? _uuid; + + /// Whether a scan for the sender's advertisement is already in flight, so a + /// tag read arriving twice for one tap doesn't restart it. + bool _scanning = false; + + bool get _paused => _pauseCount > 0; + + /// Arm if possible. No-op if already armed, paused, unsupported, or if BLE + /// permissions aren't already granted — we never prompt from here, so the + /// feature switches on silently once the user has granted them (e.g. via a + /// tap-send). + Future arm() async { + if (_armed || _paused) return; + try { + if (!await getTapReceiveEnabled()) return; + if (!await BleTap.isAvailable()) return; + if (!await TapNfc.hceAvailable()) return; + if (!await _permissionsGranted()) return; + _armed = true; + _sub ??= BleTap.events().listen( + _onEvent, + onError: (e) => AppLogger.instance.warn("tap receive stream: $e"), + ); + _tagSub ??= TapNfc.tagReads().listen( + (_) => _onTagRead(), + onError: (e) => AppLogger.instance.warn("tap receive hce stream: $e"), + ); + await _rotate(); + AppLogger.instance.info("tap receive: armed"); + } catch (e) { + _armed = false; + AppLogger.instance.warn("tap receive: arm failed: $e"); + } + } + + Future disarm() async { + if (!_armed) return; + _armed = false; + try { + await _sub?.cancel(); + _sub = null; + await _tagSub?.cancel(); + _tagSub = null; + await TapNfc.stopPublish(); + await BleTap.stop(); + } catch (e) { + AppLogger.instance.warn("tap receive: disarm error: $e"); + } + _recipient?.dispose(); + _recipient = null; + _uuid = null; + _scanning = false; + AppLogger.instance.info("tap receive: disarmed"); + } + + Future pause() async { + _pauseCount++; + await disarm(); + } + + Future resume() async { + if (_pauseCount > 0) _pauseCount--; + if (_pauseCount == 0) await arm(); + } + + Future _rotate() async { + _recipient?.dispose(); + final recipient = TapRecipient(); + _recipient = recipient; + final uuid = TapNfc.randomUuid(); + _uuid = uuid; + _scanning = false; + await BleTap.stop(); + await TapNfc.publish( + TapRendezvous(pubkey: recipient.publicKey(), uuid: uuid), + ); + // No BLE yet: the sender is the peripheral now, so there is nothing to scan + // for until it has read this rendezvous and started advertising it. That + // moment arrives as a tag read - see [_onTagRead]. + } + + /// A reader just pulled our rendezvous off the NFC tag, so the sender is about + /// to advertise it. Start scanning for it. + Future _onTagRead() async { + if (!_armed || _paused || _scanning) return; + final uuid = _uuid; + if (uuid == null) return; + _scanning = true; + AppLogger.instance.info("tap receive: tag read, scanning for sender"); + try { + await BleTap.startReceiving(uuid); + } catch (e) { + _scanning = false; + AppLogger.instance.warn("tap receive: could not start scan: $e"); + } + } + + void _onEvent(BleTapEvent e) { + if (e.event == 'error') { + // Previously dropped, which made every transport failure look like silence. + _scanning = false; + AppLogger.instance.warn("tap receive: ${e.message}"); + return; + } + if (e.event != 'received' || e.data == null) return; + _scanning = false; + final recipient = _recipient; + if (recipient == null) return; + String ecash; + try { + ecash = recipient.decrypt(blob: e.data!); + } catch (err) { + AppLogger.instance.warn("tap receive: decrypt failed: $err"); + _rotate(); + return; + } + AppLogger.instance.info("tap receive: decrypted a token, presenting"); + onEcash?.call(ecash); + // Fresh rendezvous + key for the next transfer. + _rotate(); + } + + Future _permissionsGranted() async { + final scan = await Permission.bluetoothScan.status; + final connect = await Permission.bluetoothConnect.status; + final advertise = await Permission.bluetoothAdvertise.status; + return scan.isGranted && connect.isGranted && advertise.isGranted; + } + + /// Prompt for the BLE permissions the receiver needs. Called from the Settings + /// toggle (the one place we're allowed to prompt), not from [arm]. + Future requestPermissions() async { + final statuses = + await [ + Permission.bluetoothScan, + Permission.bluetoothConnect, + Permission.bluetoothAdvertise, + ].request(); + return statuses.values.every((s) => s.isGranted); + } +} + +/// Route a received ecash string through the same path the QR scanner uses: the +/// redeem bottom sheet for a known federation, the join flow for an invite-code +/// ecash, or an error for ecash with no resolvable federation. +Future presentReceivedEcash(BuildContext context, String ecash) async { + try { + final (action, fed) = await parsedScannedText(text: ecash); + if (!context.mounted) return; + switch (action) { + case ParsedText_Ecash(:final field0): + if (fed == null) return; + await showAppModalBottomSheet( + context: context, + heightFactor: 0.5, + childBuilder: + () async => + EcashRedeemPrompt(fed: fed, ecash: ecash, amount: field0), + ); + break; + case ParsedText_InviteCodeWithEcash(:final field0, :final field1): + await _presentJoin(context, field0, field1); + break; + case ParsedText_EcashNoFederation(): + ToastService().show( + message: context.l10n.validEcashNoFederation, + duration: const Duration(seconds: 5), + onTap: () {}, + icon: const Icon(Icons.error), + ); + break; + default: + break; + } + } catch (e) { + AppLogger.instance.warn("tap receive: could not present ecash: $e"); + } +} + +Future _presentJoin( + BuildContext context, + String inviteCode, + String ecash, +) async { + try { + final meta = await getFederationMeta(inviteCode: inviteCode); + if (!context.mounted) return; + await Navigator.push( + context, + MaterialPageRoute( + builder: + (_) => FederationInfoScreen( + fed: meta.selector, + inviteCode: inviteCode, + welcomeMessage: meta.welcome, + imageUrl: meta.picture, + joinable: true, + ecash: ecash, + onLeaveFederation: () {}, + ), + ), + ); + } catch (e) { + AppLogger.instance.warn("tap receive: federation meta failed: $e"); + if (context.mounted) { + ToastService().show( + message: context.l10n.couldNotGetFederationMetadataScan, + duration: const Duration(seconds: 5), + onTap: () {}, + icon: const Icon(Icons.error), + ); + } + } +} diff --git a/lib/tap_transfer/tap_transfer_dev_screen.dart b/lib/tap_transfer/tap_transfer_dev_screen.dart new file mode 100644 index 00000000..4361ccc7 --- /dev/null +++ b/lib/tap_transfer/tap_transfer_dev_screen.dart @@ -0,0 +1,291 @@ +import 'dart:async'; +import 'dart:typed_data'; + +import 'package:ecashapp/lib.dart'; +import 'package:ecashapp/tap_transfer/ble_tap.dart'; +import 'package:ecashapp/tap_transfer/tap_nfc.dart'; +import 'package:ecashapp/tap_transfer/tap_receive.dart'; +import 'package:ecashapp/tap_transfer.dart'; +import 'package:ecashapp/utils.dart'; +import 'package:flutter/material.dart'; +import 'package:permission_handler/permission_handler.dart'; + +/// Debug-only harness for Phase 3 of the NFC + BLE "tap to send" feature. +/// +/// Full end-to-end flow: the receiver generates an ephemeral key + rendezvous +/// UUID, publishes them over NFC (HCE) and advertises over BLE; the sender enters +/// reader mode, taps, reads the rendezvous, encrypts with [encryptEcashForTap] +/// for the NFC-delivered pubkey, and streams the blob over BLE. The receiver +/// decrypts with [TapRecipient]. Any text works as the payload — this verifies +/// the handshake + transport + crypto, not reissue (that's Phase 4). +class TapTransferDevScreen extends StatefulWidget { + const TapTransferDevScreen({super.key}); + + @override + State createState() => _TapTransferDevScreenState(); +} + +enum _Mode { idle, receiving, sending } + +class _TapTransferDevScreenState extends State { + final TextEditingController _payloadController = TextEditingController( + text: + 'fed1-tap-transfer-dev-payload-${DateTime.now().millisecondsSinceEpoch}', + ); + final List _log = []; + + StreamSubscription? _bleSub; + StreamSubscription? _nfcSub; + StreamSubscription? _tagSub; + String? _rxUuid; + bool _rxScanning = false; + TapRecipient? _recipient; + _Mode _mode = _Mode.idle; + bool _sendStarted = false; + String? _result; + + @override + void initState() { + super.initState(); + TapReceive.instance.pause(); + _bleSub = BleTap.events().listen( + _onBleEvent, + onError: (e) => _append('ble stream error: $e'), + ); + _nfcSub = TapNfc.reads().listen( + _onRendezvous, + onError: (e) => _append('nfc stream error: $e'), + ); + _tagSub = TapNfc.tagReads().listen( + (_) => _onTagRead(), + onError: (e) => _append('hce stream error: $e'), + ); + } + + /// Receiving side: our tag was read, so the sender is about to advertise the + /// rendezvous. Scan for it. + Future _onTagRead() async { + if (_mode != _Mode.receiving || _rxScanning) return; + final uuid = _rxUuid; + if (uuid == null) return; + _rxScanning = true; + _append('tag read, scanning for sender…'); + await BleTap.startReceiving(uuid); + } + + @override + void dispose() { + _bleSub?.cancel(); + _nfcSub?.cancel(); + _tagSub?.cancel(); + BleTap.stop(); + TapNfc.stopPublish(); + TapNfc.stopReader(); + _recipient?.dispose(); + _payloadController.dispose(); + TapReceive.instance.resume(); + super.dispose(); + } + + void _append(String line) { + if (!mounted) return; + setState(() => _log.insert(0, line)); + } + + void _onBleEvent(BleTapEvent e) { + _append(e.toString()); + AppLogger.instance.info("tap ble(rx): $e"); + switch (e.event) { + case 'received': + if (_mode == _Mode.receiving && e.data != null) { + _decryptReceived(e.data!); + } + break; + case 'status': + if (e.state == 'sent' || e.state == 'confirmed') { + setState(() => _result = 'Sent (${e.state})'); + } + break; + case 'error': + setState(() => _result = 'Error: ${e.message}'); + break; + } + } + + void _onRendezvous(TapRendezvous r) { + if (_mode != _Mode.sending || _sendStarted) return; + _sendStarted = true; + _append('tapped: uuid=${r.uuid} pubkey=${r.pubkey.length}B'); + TapNfc.stopReader(); + try { + final blob = encryptEcashForTap( + ecash: _payloadController.text, + recipientPubkey: r.pubkey, + ); + _append('encrypted ${blob.length}B, advertising over BLE…'); + BleTap.startSending(r.uuid, blob); + } catch (e) { + setState(() => _result = 'Encrypt failed: $e'); + } + } + + void _decryptReceived(Uint8List blob) { + final recipient = _recipient; + if (recipient == null) return; + try { + final text = recipient.decrypt(blob: blob); + setState(() => _result = 'Received & decrypted:\n$text'); + } catch (e) { + setState(() => _result = 'Decrypt failed: $e'); + } + } + + Future _ensurePermissions() async { + final statuses = + await [ + Permission.bluetoothScan, + Permission.bluetoothConnect, + Permission.bluetoothAdvertise, + ].request(); + final granted = statuses.values.every((s) => s.isGranted); + if (!granted) _append('permissions denied: $statuses'); + return granted; + } + + Future _startReceive() async { + if (!await BleTap.isAvailable()) { + setState(() => _result = 'BLE unavailable (off or unsupported)'); + return; + } + if (!await TapNfc.hceAvailable()) { + setState(() => _result = 'NFC/HCE unavailable (off or unsupported)'); + return; + } + if (!await _ensurePermissions()) return; + + final recipient = TapRecipient(); + _recipient?.dispose(); + _recipient = recipient; + final pubkey = recipient.publicKey(); + final uuid = TapNfc.randomUuid(); + setState(() { + _mode = _Mode.receiving; + _result = 'Waiting for a tap…'; + }); + _append('rendezvous uuid=$uuid pubkey=${pubkey.length}B'); + _rxUuid = uuid; + _rxScanning = false; + await TapNfc.publish(TapRendezvous(pubkey: pubkey, uuid: uuid)); + // BLE starts on the tag read - the sender is the peripheral now. + } + + Future _startSend() async { + if (!await BleTap.isAvailable()) { + setState(() => _result = 'BLE unavailable (off or unsupported)'); + return; + } + if (!await _ensurePermissions()) return; + _sendStarted = false; + setState(() { + _mode = _Mode.sending; + _result = 'Tap the receiver…'; + }); + await TapNfc.startReader(); + } + + Future _stop() async { + await BleTap.stop(); + await TapNfc.stopPublish(); + await TapNfc.stopReader(); + _recipient?.dispose(); + _recipient = null; + _sendStarted = false; + setState(() { + _mode = _Mode.idle; + _result = null; + }); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final busy = _mode != _Mode.idle; + + return Scaffold( + appBar: AppBar(title: const Text('Tap transfer (dev)')), // i18n-ignore + body: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + TextField( + controller: _payloadController, + enabled: !busy, + maxLines: 2, + decoration: const InputDecoration( + labelText: 'Payload to send', // i18n-ignore + border: OutlineInputBorder(), + ), + ), + const SizedBox(height: 12), + Row( + children: [ + Expanded( + child: FilledButton.icon( + onPressed: busy ? null : _startReceive, + icon: const Icon(Icons.download), + label: const Text('Receive'), // i18n-ignore + ), + ), + const SizedBox(width: 12), + Expanded( + child: FilledButton.icon( + onPressed: busy ? null : _startSend, + icon: const Icon(Icons.upload), + label: const Text('Send'), // i18n-ignore + ), + ), + ], + ), + const SizedBox(height: 8), + OutlinedButton.icon( + onPressed: busy ? _stop : null, + icon: const Icon(Icons.stop), + label: const Text('Stop'), // i18n-ignore + ), + const SizedBox(height: 16), + if (_result != null) + Card( + color: theme.colorScheme.surfaceContainerHighest, + child: Padding( + padding: const EdgeInsets.all(12), + child: SelectableText( + _result!, + style: theme.textTheme.bodyMedium, + ), + ), + ), + const SizedBox(height: 16), + Text('Event log', style: theme.textTheme.titleSmall), // i18n-ignore + const Divider(), + Expanded( + child: ListView.builder( + itemCount: _log.length, + itemBuilder: + (_, i) => Padding( + padding: const EdgeInsets.symmetric(vertical: 2), + child: Text( + _log[i], + style: theme.textTheme.bodySmall?.copyWith( + fontFamily: 'monospace', + ), + ), + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/rust/ecashapp/src/db.rs b/rust/ecashapp/src/db.rs index cb0727ea..897ec256 100644 --- a/rust/ecashapp/src/db.rs +++ b/rust/ecashapp/src/db.rs @@ -103,6 +103,7 @@ pub(crate) enum DbKeyPrefix { PinAttempts = 0x18, NwcLimits = 0x19, NwcSpendWindow = 0x1A, + TapReceiveEnabled = 0x1B, } #[derive(Debug, Clone, Encodable, Decodable, Eq, PartialEq, Hash, Ord, PartialOrd)] @@ -559,6 +560,15 @@ impl_db_record!( db_prefix = DbKeyPrefix::ShowMsats, ); +#[derive(Debug, Encodable, Decodable)] +pub(crate) struct TapReceiveEnabledKey; + +impl_db_record!( + key = TapReceiveEnabledKey, + value = (), + db_prefix = DbKeyPrefix::TapReceiveEnabled, +); + /// Tracks every walletv2 receive (peg-in) address we have handed out, which is /// the source of truth for the deposit-address list shown in the UI. Unlike /// walletv1, walletv2 creates no client operation at address-allocation time diff --git a/rust/ecashapp/src/frb_generated.rs b/rust/ecashapp/src/frb_generated.rs index bfba734c..3b937a90 100644 --- a/rust/ecashapp/src/frb_generated.rs +++ b/rust/ecashapp/src/frb_generated.rs @@ -44,7 +44,7 @@ flutter_rust_bridge::frb_generated_boilerplate!( default_rust_auto_opaque = RustAutoOpaqueMoi, ); pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.9.0"; -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -733282414; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 586808380; // Section: executor @@ -2627,7 +2627,7 @@ fn wire__crate__multimint__Multimint_balance_impl( >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; @@ -2659,13 +2659,11 @@ fn wire__crate__multimint__Multimint_balance_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::balance( - &*api_that_guard, - &*api_federation_id_guard, - ) - .await, - )?; + let output_ok = crate::multimint::Multimint::balance( + &*api_that_guard, + &*api_federation_id_guard, + ) + .await?; Ok(output_ok) })() .await, @@ -3069,63 +3067,6 @@ fn wire__crate__multimint__Multimint_check_ln_address_availability_impl( }, ) } -fn wire__crate__multimint__Multimint_clear_pin_hash_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_clear_pin_hash", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::clear_pin_hash(&*api_that_guard).await; - })?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} fn wire__crate__multimint__Multimint_compute_all_gateway_previews_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -4382,7 +4323,8 @@ fn wire__crate__multimint__Multimint_get_recovery_progress_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_module_id = ::sse_decode(&mut deserializer); + let api_recovery_module = + ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -4421,7 +4363,7 @@ fn wire__crate__multimint__Multimint_get_recovery_progress_impl( crate::multimint::Multimint::get_recovery_progress( &*api_that_guard, &*api_federation_id_guard, - api_module_id, + api_recovery_module, ) .await, )?; @@ -4433,7 +4375,7 @@ fn wire__crate__multimint__Multimint_get_recovery_progress_impl( }, ) } -fn wire__crate__multimint__Multimint_get_require_pin_for_spending_impl( +fn wire__crate__multimint__Multimint_get_show_msats_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4441,7 +4383,7 @@ fn wire__crate__multimint__Multimint_get_require_pin_for_spending_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_get_require_pin_for_spending", + debug_name: "Multimint_get_show_msats", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4480,10 +4422,7 @@ fn wire__crate__multimint__Multimint_get_require_pin_for_spending_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::get_require_pin_for_spending( - &*api_that_guard, - ) - .await, + crate::multimint::Multimint::get_show_msats(&*api_that_guard).await, )?; Ok(output_ok) })() @@ -4493,7 +4432,7 @@ fn wire__crate__multimint__Multimint_get_require_pin_for_spending_impl( }, ) } -fn wire__crate__multimint__Multimint_get_show_msats_impl( +fn wire__crate__multimint__Multimint_get_tap_receive_enabled_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4501,7 +4440,7 @@ fn wire__crate__multimint__Multimint_get_show_msats_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_get_show_msats", + debug_name: "Multimint_get_tap_receive_enabled", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4540,7 +4479,8 @@ fn wire__crate__multimint__Multimint_get_show_msats_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::get_show_msats(&*api_that_guard).await, + crate::multimint::Multimint::get_tap_receive_enabled(&*api_that_guard) + .await, )?; Ok(output_ok) })() @@ -4550,7 +4490,7 @@ fn wire__crate__multimint__Multimint_get_show_msats_impl( }, ) } -fn wire__crate__multimint__Multimint_has_pin_code_impl( +fn wire__crate__multimint__Multimint_guardian_add_gateway_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4558,7 +4498,7 @@ fn wire__crate__multimint__Multimint_has_pin_code_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_has_pin_code", + debug_name: "Multimint_guardian_add_gateway", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4575,16 +4515,30 @@ fn wire__crate__multimint__Multimint_has_pin_code_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); + let api_gateway_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -4592,13 +4546,23 @@ fn wire__crate__multimint__Multimint_has_pin_code_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::has_pin_code(&*api_that_guard).await, - )?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::multimint::Multimint::guardian_add_gateway( + &*api_that_guard, + &*api_federation_id_guard, + api_peer, + api_password, + api_gateway_url, + ) + .await?; Ok(output_ok) })() .await, @@ -4607,7 +4571,7 @@ fn wire__crate__multimint__Multimint_has_pin_code_impl( }, ) } -fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( +fn wire__crate__multimint__Multimint_guardian_audit_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4615,7 +4579,7 @@ fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_has_seed_phrase_ack", + debug_name: "Multimint_guardian_audit", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4632,16 +4596,29 @@ fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -4649,14 +4626,22 @@ fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::has_seed_phrase_ack(&*api_that_guard) - .await, - )?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::multimint::Multimint::guardian_audit( + &*api_that_guard, + &*api_federation_id_guard, + api_peer, + api_password, + ) + .await?; Ok(output_ok) })() .await, @@ -4665,7 +4650,7 @@ fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( }, ) } -fn wire__crate__multimint__Multimint_join_federation_impl( +fn wire__crate__multimint__Multimint_guardian_backup_statistics_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4673,7 +4658,7 @@ fn wire__crate__multimint__Multimint_join_federation_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_join_federation", + debug_name: "Multimint_guardian_backup_statistics", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4690,33 +4675,50 @@ fn wire__crate__multimint__Multimint_join_federation_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_invite = ::sse_decode(&mut deserializer); - let api_recover = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref_mut().await) + Some(api_that.lockable_decode_async_ref().await) + } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) } _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::multimint::Multimint::join_federation( - &mut *api_that_guard, - api_invite, - api_recover, + let api_that_guard = api_that_guard.unwrap(); + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::multimint::Multimint::guardian_backup_statistics( + &*api_that_guard, + &*api_federation_id_guard, + api_peer, + api_password, ) .await?; Ok(output_ok) @@ -4727,7 +4729,7 @@ fn wire__crate__multimint__Multimint_join_federation_impl( }, ) } -fn wire__crate__multimint__Multimint_leave_federation_impl( +fn wire__crate__multimint__Multimint_guardian_list_gateways_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4735,7 +4737,7 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_leave_federation", + debug_name: "Multimint_guardian_list_gateways", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4755,9 +4757,10 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; @@ -4765,7 +4768,7 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), flutter_rust_bridge::for_generated::LockableOrderInfo::new( &api_federation_id, @@ -4778,7 +4781,7 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref_mut().await) + Some(api_that.lockable_decode_async_ref().await) } 1 => { api_federation_id_guard = @@ -4787,54 +4790,14 @@ fn wire__crate__multimint__Multimint_leave_federation_impl( _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); + let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::leave_federation( - &mut *api_that_guard, - &*api_federation_id_guard, - ) - .await; - })?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__multimint__Multimint_new_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_new", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_db = ::sse_decode(&mut deserializer); - let api_creation_type = - ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = - crate::multimint::Multimint::new(api_db, api_creation_type).await?; + let output_ok = crate::multimint::Multimint::guardian_list_gateways( + &*api_that_guard, + &*api_federation_id_guard, + api_peer, + ) + .await?; Ok(output_ok) })() .await, @@ -4843,7 +4806,7 @@ fn wire__crate__multimint__Multimint_new_impl( }, ) } -fn wire__crate__multimint__Multimint_parse_ecash_impl( +fn wire__crate__multimint__Multimint_guardian_login_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4851,7 +4814,7 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_parse_ecash", + debug_name: "Multimint_guardian_login", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4871,16 +4834,14 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_notes = , - >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; - let mut api_notes_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![ @@ -4892,9 +4853,6 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( 1, false, ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_notes, 2, false, - ), ], ); for i in decode_indices_ { @@ -4907,20 +4865,16 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( api_federation_id_guard = Some(api_federation_id.lockable_decode_async_ref().await) } - 2 => { - api_notes_guard = - Some(api_notes.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let api_notes_guard = api_notes_guard.unwrap(); - let output_ok = crate::multimint::Multimint::parse_ecash( + let output_ok = crate::multimint::Multimint::guardian_login( &*api_that_guard, &*api_federation_id_guard, - &*api_notes_guard, + api_peer, + api_password, ) .await?; Ok(output_ok) @@ -4931,7 +4885,7 @@ fn wire__crate__multimint__Multimint_parse_ecash_impl( }, ) } -fn wire__crate__multimint__Multimint_receive_impl( +fn wire__crate__multimint__Multimint_guardian_meta_accept_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -4939,7 +4893,7 @@ fn wire__crate__multimint__Multimint_receive_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_receive", + debug_name: "Multimint_guardian_meta_accept", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -4959,12 +4913,9 @@ fn wire__crate__multimint__Multimint_receive_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_amount_msats_with_fees = ::sse_decode(&mut deserializer); - let api_amount_msats_without_fees = ::sse_decode(&mut deserializer); - let api_federation_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); + let api_value_hex = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -4999,15 +4950,12 @@ fn wire__crate__multimint__Multimint_receive_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::receive( + let output_ok = crate::multimint::Multimint::guardian_meta_accept( &*api_that_guard, &*api_federation_id_guard, - api_amount_msats_with_fees, - api_amount_msats_without_fees, - api_federation_fee_msats, - api_gateway_fee_msats, - api_gateway, - api_is_lnv2, + api_peer, + api_password, + api_value_hex, ) .await?; Ok(output_ok) @@ -5018,7 +4966,7 @@ fn wire__crate__multimint__Multimint_receive_impl( }, ) } -fn wire__crate__multimint__Multimint_recheck_address_impl( +fn wire__crate__multimint__Multimint_guardian_meta_propose_field_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5026,7 +4974,7 @@ fn wire__crate__multimint__Multimint_recheck_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_recheck_address", + debug_name: "Multimint_guardian_meta_propose_field", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5046,7 +4994,10 @@ fn wire__crate__multimint__Multimint_recheck_address_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_tweak_idx = ::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); + let api_field = ::sse_decode(&mut deserializer); + let api_value = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -5081,10 +5032,13 @@ fn wire__crate__multimint__Multimint_recheck_address_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::recheck_address( + let output_ok = crate::multimint::Multimint::guardian_meta_propose_field( &*api_that_guard, &*api_federation_id_guard, - api_tweak_idx, + api_peer, + api_password, + api_field, + api_value, ) .await?; Ok(output_ok) @@ -5095,7 +5049,7 @@ fn wire__crate__multimint__Multimint_recheck_address_impl( }, ) } -fn wire__crate__multimint__Multimint_recover_ln_address_impl( +fn wire__crate__multimint__Multimint_guardian_meta_state_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5103,7 +5057,7 @@ fn wire__crate__multimint__Multimint_recover_ln_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_recover_ln_address", + debug_name: "Multimint_guardian_meta_state", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5123,8 +5077,8 @@ fn wire__crate__multimint__Multimint_recover_ln_address_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_ln_address_api = ::sse_decode(&mut deserializer); - let api_recurringd_api = ::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -5159,11 +5113,11 @@ fn wire__crate__multimint__Multimint_recover_ln_address_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::recover_ln_address( + let output_ok = crate::multimint::Multimint::guardian_meta_state( &*api_that_guard, &*api_federation_id_guard, - &api_ln_address_api, - &api_recurringd_api, + api_peer, + api_password, ) .await?; Ok(output_ok) @@ -5174,7 +5128,7 @@ fn wire__crate__multimint__Multimint_recover_ln_address_impl( }, ) } -fn wire__crate__multimint__Multimint_refresh_connections_impl( +fn wire__crate__multimint__Multimint_guardian_meta_withdraw_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5182,7 +5136,7 @@ fn wire__crate__multimint__Multimint_refresh_connections_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_refresh_connections", + debug_name: "Multimint_guardian_meta_withdraw", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5199,16 +5153,29 @@ fn wire__crate__multimint__Multimint_refresh_connections_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -5216,14 +5183,22 @@ fn wire__crate__multimint__Multimint_refresh_connections_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::refresh_connections(&*api_that_guard) - .await; - })?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::multimint::Multimint::guardian_meta_withdraw( + &*api_that_guard, + &*api_federation_id_guard, + api_peer, + api_password, + ) + .await?; Ok(output_ok) })() .await, @@ -5232,7 +5207,7 @@ fn wire__crate__multimint__Multimint_refresh_connections_impl( }, ) } -fn wire__crate__multimint__Multimint_register_ln_address_impl( +fn wire__crate__multimint__Multimint_guardian_remove_gateway_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5240,7 +5215,7 @@ fn wire__crate__multimint__Multimint_register_ln_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_register_ln_address", + debug_name: "Multimint_guardian_remove_gateway", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5260,10 +5235,9 @@ fn wire__crate__multimint__Multimint_register_ln_address_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_recurringd_api = ::sse_decode(&mut deserializer); - let api_ln_address_api = ::sse_decode(&mut deserializer); - let api_username = ::sse_decode(&mut deserializer); - let api_domain = ::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); + let api_gateway_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -5298,13 +5272,12 @@ fn wire__crate__multimint__Multimint_register_ln_address_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::register_ln_address( + let output_ok = crate::multimint::Multimint::guardian_remove_gateway( &*api_that_guard, &*api_federation_id_guard, - api_recurringd_api, - api_ln_address_api, - api_username, - api_domain, + api_peer, + api_password, + api_gateway_url, ) .await?; Ok(output_ok) @@ -5315,7 +5288,7 @@ fn wire__crate__multimint__Multimint_register_ln_address_impl( }, ) } -fn wire__crate__multimint__Multimint_reissue_ecash_impl( +fn wire__crate__multimint__Multimint_guardian_status_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5323,7 +5296,7 @@ fn wire__crate__multimint__Multimint_reissue_ecash_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_reissue_ecash", + debug_name: "Multimint_guardian_status", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5343,11 +5316,11 @@ fn wire__crate__multimint__Multimint_reissue_ecash_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_ecash = ::sse_decode(&mut deserializer); - let api_fees = ::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; @@ -5379,15 +5352,13 @@ fn wire__crate__multimint__Multimint_reissue_ecash_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::reissue_ecash( - &*api_that_guard, - &*api_federation_id_guard, - api_ecash, - api_fees, - ) - .await, - )?; + let output_ok = crate::multimint::Multimint::guardian_status( + &*api_that_guard, + &*api_federation_id_guard, + api_peer, + api_password, + ) + .await?; Ok(output_ok) })() .await, @@ -5396,7 +5367,7 @@ fn wire__crate__multimint__Multimint_reissue_ecash_impl( }, ) } -fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( +fn wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5404,7 +5375,7 @@ fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_rejoin_from_backup_invites", + debug_name: "Multimint_has_seed_phrase_ack", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5421,7 +5392,6 @@ fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_backup_invite_codes = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -5430,26 +5400,23 @@ fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, )], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref_mut().await) + Some(api_that.lockable_decode_async_ref().await) } _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::rejoin_from_backup_invites( - &mut *api_that_guard, - api_backup_invite_codes, - ) - .await; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::has_seed_phrase_ack(&*api_that_guard) + .await, + )?; Ok(output_ok) })() .await, @@ -5458,7 +5425,7 @@ fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( }, ) } -fn wire__crate__multimint__Multimint_select_send_gateway_impl( +fn wire__crate__multimint__Multimint_join_federation_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5466,7 +5433,7 @@ fn wire__crate__multimint__Multimint_select_send_gateway_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_select_send_gateway", + debug_name: "Multimint_join_federation", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5483,50 +5450,33 @@ fn wire__crate__multimint__Multimint_select_send_gateway_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_amount = ::sse_decode(&mut deserializer); - let api_bolt11 = ::sse_decode(&mut deserializer); + let api_invite = ::sse_decode(&mut deserializer); + let api_recover = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + )], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) + Some(api_that.lockable_decode_async_ref_mut().await) } _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::multimint::Multimint::select_send_gateway( - &*api_that_guard, - &*api_federation_id_guard, - api_amount, - api_bolt11, + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = crate::multimint::Multimint::join_federation( + &mut *api_that_guard, + api_invite, + api_recover, ) .await?; Ok(output_ok) @@ -5537,7 +5487,7 @@ fn wire__crate__multimint__Multimint_select_send_gateway_impl( }, ) } -fn wire__crate__multimint__Multimint_send_impl( +fn wire__crate__multimint__Multimint_leave_federation_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5545,7 +5495,7 @@ fn wire__crate__multimint__Multimint_send_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_send", + debug_name: "Multimint_leave_federation", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5565,13 +5515,6 @@ fn wire__crate__multimint__Multimint_send_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_invoice = ::sse_decode(&mut deserializer); - let api_gateway = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); - let api_amount_with_fees = ::sse_decode(&mut deserializer); - let api_federation_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway_fee_msats = ::sse_decode(&mut deserializer); - let api_ln_address = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -5582,7 +5525,7 @@ fn wire__crate__multimint__Multimint_send_impl( flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, ), flutter_rust_bridge::for_generated::LockableOrderInfo::new( &api_federation_id, @@ -5595,7 +5538,7 @@ fn wire__crate__multimint__Multimint_send_impl( match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref().await) + Some(api_that.lockable_decode_async_ref_mut().await) } 1 => { api_federation_id_guard = @@ -5604,22 +5547,15 @@ fn wire__crate__multimint__Multimint_send_impl( _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); + let mut api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::send( - &*api_that_guard, + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::leave_federation( + &mut *api_that_guard, &*api_federation_id_guard, - api_invoice, - api_gateway, - api_is_lnv2, - api_amount_with_fees, - api_federation_fee_msats, - api_gateway_fee_msats, - api_ln_address, ) - .await, - )?; + .await; + })?; Ok(output_ok) })() .await, @@ -5628,7 +5564,7 @@ fn wire__crate__multimint__Multimint_send_impl( }, ) } -fn wire__crate__multimint__Multimint_send_ecash_impl( +fn wire__crate__multimint__Multimint_max_lightning_send_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5636,7 +5572,7 @@ fn wire__crate__multimint__Multimint_send_ecash_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_send_ecash", + debug_name: "Multimint_max_lightning_send", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5656,11 +5592,12 @@ fn wire__crate__multimint__Multimint_send_ecash_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_amount_msats = ::sse_decode(&mut deserializer); - let api_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); + let api_loopback = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let mut api_federation_id_guard = None; @@ -5692,15 +5629,14 @@ fn wire__crate__multimint__Multimint_send_ecash_impl( } let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::send_ecash( - &*api_that_guard, - &*api_federation_id_guard, - api_amount_msats, - api_fee_msats, - ) - .await, - )?; + let output_ok = crate::multimint::Multimint::max_lightning_send( + &*api_that_guard, + &*api_federation_id_guard, + api_gateway, + api_is_lnv2, + api_loopback, + ) + .await?; Ok(output_ok) })() .await, @@ -5709,7 +5645,7 @@ fn wire__crate__multimint__Multimint_send_ecash_impl( }, ) } -fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( +fn wire__crate__multimint__Multimint_new_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5717,7 +5653,7 @@ fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_bitcoin_display", + debug_name: "Multimint_new", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5731,38 +5667,15 @@ fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_bitcoin_display = ::sse_decode(&mut deserializer); + let api_db = ::sse_decode(&mut deserializer); + let api_creation_type = + ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::set_bitcoin_display( - &*api_that_guard, - api_bitcoin_display, - ) - .await; - })?; + let output_ok = + crate::multimint::Multimint::new(api_db, api_creation_type).await?; Ok(output_ok) })() .await, @@ -5771,7 +5684,7 @@ fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( }, ) } -fn wire__crate__multimint__Multimint_set_federation_order_impl( +fn wire__crate__multimint__Multimint_parse_ecash_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5779,7 +5692,7 @@ fn wire__crate__multimint__Multimint_set_federation_order_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_federation_order", + debug_name: "Multimint_parse_ecash", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5796,17 +5709,34 @@ fn wire__crate__multimint__Multimint_set_federation_order_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_order = >::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_notes = , + >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; + let mut api_notes_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_notes, 2, false, + ), + ], ); for i in decode_indices_ { match i { @@ -5814,17 +5744,26 @@ fn wire__crate__multimint__Multimint_set_federation_order_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + 2 => { + api_notes_guard = + Some(api_notes.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::set_federation_order( - &*api_that_guard, - api_order, - ) - .await; - })?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let api_notes_guard = api_notes_guard.unwrap(); + let output_ok = crate::multimint::Multimint::parse_ecash( + &*api_that_guard, + &*api_federation_id_guard, + &*api_notes_guard, + ) + .await?; Ok(output_ok) })() .await, @@ -5833,7 +5772,7 @@ fn wire__crate__multimint__Multimint_set_federation_order_impl( }, ) } -fn wire__crate__multimint__Multimint_set_fiat_currency_impl( +fn wire__crate__multimint__Multimint_probe_invoice_is_loopback_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5841,7 +5780,7 @@ fn wire__crate__multimint__Multimint_set_fiat_currency_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_fiat_currency", + debug_name: "Multimint_probe_invoice_is_loopback", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5858,17 +5797,46 @@ fn wire__crate__multimint__Multimint_set_fiat_currency_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_fiat_currency = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_gateway = , + >>::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); + let api_invoice = , + >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; + let mut api_gateway_guard = None; + let mut api_invoice_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_gateway, + 2, + false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_invoice, + 3, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -5876,17 +5844,33 @@ fn wire__crate__multimint__Multimint_set_fiat_currency_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + 2 => { + api_gateway_guard = + Some(api_gateway.lockable_decode_async_ref().await) + } + 3 => { + api_invoice_guard = + Some(api_invoice.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::set_fiat_currency( - &*api_that_guard, - api_fiat_currency, - ) - .await; - })?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let api_gateway_guard = api_gateway_guard.unwrap(); + let api_invoice_guard = api_invoice_guard.unwrap(); + let output_ok = crate::multimint::Multimint::probe_invoice_is_loopback( + &*api_that_guard, + &*api_federation_id_guard, + &*api_gateway_guard, + api_is_lnv2, + &*api_invoice_guard, + ) + .await?; Ok(output_ok) })() .await, @@ -5895,7 +5879,7 @@ fn wire__crate__multimint__Multimint_set_fiat_currency_impl( }, ) } -fn wire__crate__multimint__Multimint_set_pin_hash_impl( +fn wire__crate__multimint__Multimint_receive_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5903,7 +5887,7 @@ fn wire__crate__multimint__Multimint_set_pin_hash_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_pin_hash", + debug_name: "Multimint_receive", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5920,17 +5904,33 @@ fn wire__crate__multimint__Multimint_set_pin_hash_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_pin = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_amount_msats_with_fees = ::sse_decode(&mut deserializer); + let api_amount_msats_without_fees = ::sse_decode(&mut deserializer); + let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -5938,13 +5938,26 @@ fn wire__crate__multimint__Multimint_set_pin_hash_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = - crate::multimint::Multimint::set_pin_hash(&*api_that_guard, api_pin) - .await?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::multimint::Multimint::receive( + &*api_that_guard, + &*api_federation_id_guard, + api_amount_msats_with_fees, + api_amount_msats_without_fees, + api_federation_fee_msats, + api_gateway_fee_msats, + api_gateway, + api_is_lnv2, + ) + .await?; Ok(output_ok) })() .await, @@ -5953,7 +5966,7 @@ fn wire__crate__multimint__Multimint_set_pin_hash_impl( }, ) } -fn wire__crate__multimint__Multimint_set_require_pin_for_spending_impl( +fn wire__crate__multimint__Multimint_recheck_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -5961,7 +5974,7 @@ fn wire__crate__multimint__Multimint_set_require_pin_for_spending_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_require_pin_for_spending", + debug_name: "Multimint_recheck_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -5978,17 +5991,28 @@ fn wire__crate__multimint__Multimint_set_require_pin_for_spending_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_require = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_tweak_idx = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -5996,17 +6020,21 @@ fn wire__crate__multimint__Multimint_set_require_pin_for_spending_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::set_require_pin_for_spending( - &*api_that_guard, - api_require, - ) - .await; - })?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::multimint::Multimint::recheck_address( + &*api_that_guard, + &*api_federation_id_guard, + api_tweak_idx, + ) + .await?; Ok(output_ok) })() .await, @@ -6015,7 +6043,7 @@ fn wire__crate__multimint__Multimint_set_require_pin_for_spending_impl( }, ) } -fn wire__crate__multimint__Multimint_set_show_msats_impl( +fn wire__crate__multimint__Multimint_recover_ln_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6023,7 +6051,7 @@ fn wire__crate__multimint__Multimint_set_show_msats_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_set_show_msats", + debug_name: "Multimint_recover_ln_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6040,17 +6068,29 @@ fn wire__crate__multimint__Multimint_set_show_msats_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_show_msats = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_ln_address_api = ::sse_decode(&mut deserializer); + let api_recurringd_api = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -6058,17 +6098,22 @@ fn wire__crate__multimint__Multimint_set_show_msats_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::multimint::Multimint::set_show_msats( - &*api_that_guard, - api_show_msats, - ) - .await; - })?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::multimint::Multimint::recover_ln_address( + &*api_that_guard, + &*api_federation_id_guard, + &api_ln_address_api, + &api_recurringd_api, + ) + .await?; Ok(output_ok) })() .await, @@ -6077,7 +6122,7 @@ fn wire__crate__multimint__Multimint_set_show_msats_impl( }, ) } -fn wire__crate__multimint__Multimint_transactions_impl( +fn wire__crate__multimint__Multimint_refresh_connections_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6085,7 +6130,7 @@ fn wire__crate__multimint__Multimint_transactions_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_transactions", + debug_name: "Multimint_refresh_connections", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6102,30 +6147,16 @@ fn wire__crate__multimint__Multimint_transactions_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_timestamp = >::sse_decode(&mut deserializer); - let api_operation_id = >>::sse_decode(&mut deserializer); - let api_modules = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -6133,25 +6164,14 @@ fn wire__crate__multimint__Multimint_transactions_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::transactions( - &*api_that_guard, - &*api_federation_id_guard, - api_timestamp, - api_operation_id, - api_modules, - ) - .await, - )?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::refresh_connections(&*api_that_guard) + .await; + })?; Ok(output_ok) })() .await, @@ -6160,7 +6180,7 @@ fn wire__crate__multimint__Multimint_transactions_impl( }, ) } -fn wire__crate__multimint__Multimint_verify_pin_impl( +fn wire__crate__multimint__Multimint_refresh_federation_meta_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6168,7 +6188,7 @@ fn wire__crate__multimint__Multimint_verify_pin_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_verify_pin", + debug_name: "Multimint_refresh_federation_meta", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6185,17 +6205,27 @@ fn wire__crate__multimint__Multimint_verify_pin_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_pin = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -6203,14 +6233,20 @@ fn wire__crate__multimint__Multimint_verify_pin_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::verify_pin(&*api_that_guard, api_pin) - .await, - )?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::multimint::Multimint::refresh_federation_meta( + &*api_that_guard, + &*api_federation_id_guard, + ) + .await?; Ok(output_ok) })() .await, @@ -6219,7 +6255,7 @@ fn wire__crate__multimint__Multimint_verify_pin_impl( }, ) } -fn wire__crate__multimint__Multimint_wallet_summary_impl( +fn wire__crate__multimint__Multimint_register_ln_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6227,7 +6263,7 @@ fn wire__crate__multimint__Multimint_wallet_summary_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_wallet_summary", + debug_name: "Multimint_register_ln_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6244,18 +6280,31 @@ fn wire__crate__multimint__Multimint_wallet_summary_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_invite = >::sse_decode(&mut deserializer); - let api_federation_id = >::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_recurringd_api = ::sse_decode(&mut deserializer); + let api_ln_address_api = ::sse_decode(&mut deserializer); + let api_username = ::sse_decode(&mut deserializer); + let api_domain = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -6263,14 +6312,22 @@ fn wire__crate__multimint__Multimint_wallet_summary_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::multimint::Multimint::wallet_summary( + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::multimint::Multimint::register_ln_address( &*api_that_guard, - api_invite, - api_federation_id, + &*api_federation_id_guard, + api_recurringd_api, + api_ln_address_api, + api_username, + api_domain, ) .await?; Ok(output_ok) @@ -6281,7 +6338,7 @@ fn wire__crate__multimint__Multimint_wallet_summary_impl( }, ) } -fn wire__crate__multimint__Multimint_withdraw_to_address_impl( +fn wire__crate__multimint__Multimint_reissue_ecash_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6289,7 +6346,7 @@ fn wire__crate__multimint__Multimint_withdraw_to_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Multimint_withdraw_to_address", + debug_name: "Multimint_reissue_ecash", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6309,10 +6366,8 @@ fn wire__crate__multimint__Multimint_withdraw_to_address_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_address = ::sse_decode(&mut deserializer); - let api_amount_sats = ::sse_decode(&mut deserializer); - let api_fees = ::sse_decode(&mut deserializer); - let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_ecash = ::sse_decode(&mut deserializer); + let api_fees = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6348,13 +6403,11 @@ fn wire__crate__multimint__Multimint_withdraw_to_address_impl( let api_that_guard = api_that_guard.unwrap(); let api_federation_id_guard = api_federation_id_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::multimint::Multimint::withdraw_to_address( + crate::multimint::Multimint::reissue_ecash( &*api_that_guard, &*api_federation_id_guard, - api_address, - api_amount_sats, + api_ecash, api_fees, - api_federation_fee_msats, ) .await, )?; @@ -6366,7 +6419,7 @@ fn wire__crate__multimint__Multimint_withdraw_to_address_impl( }, ) } -fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( +fn wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6374,7 +6427,7 @@ fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_backup_invite_codes", + debug_name: "Multimint_rejoin_from_backup_invites", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6389,35 +6442,37 @@ fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_invite_codes = >::sse_decode(&mut deserializer); + let api_backup_invite_codes = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, )], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref().await) + Some(api_that.lockable_decode_async_ref_mut().await) } _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::backup_invite_codes( - &*api_that_guard, - api_invite_codes, - ) - .await?; + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::rejoin_from_backup_invites( + &mut *api_that_guard, + api_backup_invite_codes, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -6426,7 +6481,7 @@ fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( }, ) } -fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( +fn wire__crate__multimint__Multimint_send_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6434,7 +6489,7 @@ fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_clear_contacts_and_stop_sync", + debug_name: "Multimint_send", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6449,18 +6504,36 @@ fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + >>::sse_decode(&mut deserializer); + let api_federation_id = , >>::sse_decode(&mut deserializer); + let api_invoice = ::sse_decode(&mut deserializer); + let api_gateway = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); + let api_amount_with_fees = ::sse_decode(&mut deserializer); + let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway_fee_msats = ::sse_decode(&mut deserializer); + let api_ln_address = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -6468,13 +6541,26 @@ fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); + let api_federation_id_guard = api_federation_id_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::clear_contacts_and_stop_sync( + crate::multimint::Multimint::send( &*api_that_guard, + &*api_federation_id_guard, + api_invoice, + api_gateway, + api_is_lnv2, + api_amount_with_fees, + api_federation_fee_msats, + api_gateway_fee_msats, + api_ln_address, ) .await, )?; @@ -6486,7 +6572,7 @@ fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( }, ) } -fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( +fn wire__crate__multimint__Multimint_send_ecash_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6494,7 +6580,7 @@ fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_fetch_nostr_profiles", + debug_name: "Multimint_send_ecash", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6509,19 +6595,31 @@ fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_npubs = >::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_amount_msats = ::sse_decode(&mut deserializer); + let api_fee_msats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -6529,15 +6627,24 @@ fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::fetch_nostr_profiles( - &*api_that_guard, - api_npubs, - ) - .await?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::send_ecash( + &*api_that_guard, + &*api_federation_id_guard, + api_amount_msats, + api_fee_msats, + ) + .await, + )?; Ok(output_ok) })() .await, @@ -6546,7 +6653,7 @@ fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_all_contacts_impl( +fn wire__crate__multimint__Multimint_set_bitcoin_display_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6554,7 +6661,7 @@ fn wire__crate__nostr__NostrClient_get_all_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_all_contacts", + debug_name: "Multimint_set_bitcoin_display", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6569,8 +6676,9 @@ fn wire__crate__nostr__NostrClient_get_all_contacts_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_bitcoin_display = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6592,10 +6700,14 @@ fn wire__crate__nostr__NostrClient_get_all_contacts_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_all_contacts(&*api_that_guard).await, - )?; - Ok(output_ok) + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::set_bitcoin_display( + &*api_that_guard, + api_bitcoin_display, + ) + .await; + })?; + Ok(output_ok) })() .await, ) @@ -6603,7 +6715,7 @@ fn wire__crate__nostr__NostrClient_get_all_contacts_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( +fn wire__crate__multimint__Multimint_set_federation_order_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6611,7 +6723,7 @@ fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_backup_invite_codes", + debug_name: "Multimint_set_federation_order", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6626,8 +6738,9 @@ fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_order = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6649,10 +6762,13 @@ fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_backup_invite_codes(&*api_that_guard) - .await, - )?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::set_federation_order( + &*api_that_guard, + api_order, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -6661,7 +6777,7 @@ fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_contact_impl( +fn wire__crate__multimint__Multimint_set_fiat_currency_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6669,7 +6785,7 @@ fn wire__crate__nostr__NostrClient_get_contact_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_contact", + debug_name: "Multimint_set_fiat_currency", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6684,9 +6800,9 @@ fn wire__crate__nostr__NostrClient_get_contact_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_npub = ::sse_decode(&mut deserializer); + let api_fiat_currency = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6708,10 +6824,13 @@ fn wire__crate__nostr__NostrClient_get_contact_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_contact(&*api_that_guard, &api_npub) - .await, - )?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::set_fiat_currency( + &*api_that_guard, + api_fiat_currency, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -6720,7 +6839,7 @@ fn wire__crate__nostr__NostrClient_get_contact_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( +fn wire__crate__multimint__Multimint_set_show_msats_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6728,7 +6847,7 @@ fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_contact_sync_config", + debug_name: "Multimint_set_show_msats", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6743,8 +6862,9 @@ fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_show_msats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -6766,10 +6886,13 @@ fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_contact_sync_config(&*api_that_guard) - .await, - )?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::set_show_msats( + &*api_that_guard, + api_show_msats, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -6778,7 +6901,7 @@ fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( +fn wire__crate__multimint__Multimint_set_tap_receive_enabled_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6786,7 +6909,7 @@ fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_follows_for_pubkey", + debug_name: "Multimint_set_tap_receive_enabled", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6801,12 +6924,12 @@ fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_npub = ::sse_decode(&mut deserializer); + let api_enabled = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -6825,11 +6948,13 @@ fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::get_follows_for_pubkey( - &*api_that_guard, - api_npub, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::multimint::Multimint::set_tap_receive_enabled( + &*api_that_guard, + api_enabled, + ) + .await; + })?; Ok(output_ok) })() .await, @@ -6838,7 +6963,7 @@ fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_nwc_config_impl( +fn wire__crate__multimint__Multimint_transactions_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6846,7 +6971,7 @@ fn wire__crate__nostr__NostrClient_get_nwc_config_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_nwc_config", + debug_name: "Multimint_transactions", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6861,19 +6986,32 @@ fn wire__crate__nostr__NostrClient_get_nwc_config_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_federation_id = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_timestamp = >::sse_decode(&mut deserializer); + let api_operation_id = >>::sse_decode(&mut deserializer); + let api_modules = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { @@ -6881,15 +7019,25 @@ fn wire__crate__nostr__NostrClient_get_nwc_config_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::get_nwc_config( - &*api_that_guard, - api_federation_id, - ) - .await?; + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::multimint::Multimint::transactions( + &*api_that_guard, + &*api_federation_id_guard, + api_timestamp, + api_operation_id, + api_modules, + ) + .await, + )?; Ok(output_ok) })() .await, @@ -6898,7 +7046,7 @@ fn wire__crate__nostr__NostrClient_get_nwc_config_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( +fn wire__crate__multimint__Multimint_wallet_summary_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6906,7 +7054,7 @@ fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_nwc_connection_info", + debug_name: "Multimint_wallet_summary", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6921,11 +7069,13 @@ fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_invite = >::sse_decode(&mut deserializer); + let api_federation_id = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -6944,10 +7094,12 @@ fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_nwc_connection_info(&*api_that_guard) - .await, - )?; + let output_ok = crate::multimint::Multimint::wallet_summary( + &*api_that_guard, + api_invite, + api_federation_id, + ) + .await?; Ok(output_ok) })() .await, @@ -6956,7 +7108,7 @@ fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_public_federations_impl( +fn wire__crate__multimint__Multimint_withdraw_to_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -6964,7 +7116,7 @@ fn wire__crate__nostr__NostrClient_get_public_federations_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_public_federations", + debug_name: "Multimint_withdraw_to_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -6979,34 +7131,57 @@ fn wire__crate__nostr__NostrClient_get_public_federations_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_force_update = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_address = ::sse_decode(&mut deserializer); + let api_amount_sats = ::sse_decode(&mut deserializer); + let api_fees = ::sse_decode(&mut deserializer); + let api_federation_fee_msats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; + let mut api_federation_id_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - )], + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 1, + false, + ), + ], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref_mut().await) + Some(api_that.lockable_decode_async_ref().await) + } + 1 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) } _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); + let api_that_guard = api_that_guard.unwrap(); + let api_federation_id_guard = api_federation_id_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_public_federations( - &mut *api_that_guard, - api_force_update, + crate::multimint::Multimint::withdraw_to_address( + &*api_that_guard, + &*api_federation_id_guard, + api_address, + api_amount_sats, + api_fees, + api_federation_fee_msats, ) .await, )?; @@ -7018,7 +7193,7 @@ fn wire__crate__nostr__NostrClient_get_public_federations_impl( }, ) } -fn wire__crate__nostr__NostrClient_get_relays_impl( +fn wire__crate__nostr__NostrClient_backup_invite_codes_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7026,7 +7201,7 @@ fn wire__crate__nostr__NostrClient_get_relays_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_get_relays", + debug_name: "NostrClient_backup_invite_codes", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7043,9 +7218,10 @@ fn wire__crate__nostr__NostrClient_get_relays_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_invite_codes = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -7064,9 +7240,11 @@ fn wire__crate__nostr__NostrClient_get_relays_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::get_relays(&*api_that_guard).await, - )?; + let output_ok = crate::nostr::NostrClient::backup_invite_codes( + &*api_that_guard, + api_invite_codes, + ) + .await?; Ok(output_ok) })() .await, @@ -7075,7 +7253,7 @@ fn wire__crate__nostr__NostrClient_get_relays_impl( }, ) } -fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( +fn wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7083,7 +7261,7 @@ fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_has_imported_contacts", + debug_name: "NostrClient_clear_contacts_and_stop_sync", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7122,8 +7300,10 @@ fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::has_imported_contacts(&*api_that_guard) - .await, + crate::nostr::NostrClient::clear_contacts_and_stop_sync( + &*api_that_guard, + ) + .await, )?; Ok(output_ok) })() @@ -7133,7 +7313,7 @@ fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( }, ) } -fn wire__crate__nostr__NostrClient_insert_relay_impl( +fn wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7141,7 +7321,7 @@ fn wire__crate__nostr__NostrClient_insert_relay_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_insert_relay", + debug_name: "NostrClient_fetch_nostr_profiles", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7158,7 +7338,7 @@ fn wire__crate__nostr__NostrClient_insert_relay_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_relay_uri = ::sse_decode(&mut deserializer); + let api_npubs = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -7180,9 +7360,9 @@ fn wire__crate__nostr__NostrClient_insert_relay_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::insert_relay( + let output_ok = crate::nostr::NostrClient::fetch_nostr_profiles( &*api_that_guard, - api_relay_uri, + api_npubs, ) .await?; Ok(output_ok) @@ -7193,7 +7373,7 @@ fn wire__crate__nostr__NostrClient_insert_relay_impl( }, ) } -fn wire__crate__nostr__NostrClient_listen_for_nwc_impl( +fn wire__crate__nostr__NostrClient_get_all_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7201,7 +7381,7 @@ fn wire__crate__nostr__NostrClient_listen_for_nwc_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_listen_for_nwc", + debug_name: "NostrClient_get_all_contacts", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7215,41 +7395,33 @@ fn wire__crate__nostr__NostrClient_listen_for_nwc_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , + let api_that = , >>::sse_decode(&mut deserializer); - let api_nwc_config = - ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; + let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, + &api_that, 0, false, )], ); for i in decode_indices_ { match i { 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) } _ => unreachable!(), } } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::nostr::NostrClient::listen_for_nwc( - &*api_federation_id_guard, - api_nwc_config, - ) - .await; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::get_all_contacts(&*api_that_guard).await, + )?; Ok(output_ok) })() .await, @@ -7258,7 +7430,7 @@ fn wire__crate__nostr__NostrClient_listen_for_nwc_impl( }, ) } -fn wire__crate__nostr__NostrClient_new_impl( +fn wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7266,7 +7438,7 @@ fn wire__crate__nostr__NostrClient_new_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_new", + debug_name: "NostrClient_get_backup_invite_codes", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7280,19 +7452,34 @@ fn wire__crate__nostr__NostrClient_new_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_db = ::sse_decode(&mut deserializer); - let api_recover_relays = >::sse_decode(&mut deserializer); - let api_is_desktop = ::sse_decode(&mut deserializer); + let api_that = , + >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let output_ok = crate::nostr::NostrClient::new( - api_db, - api_recover_relays, - api_is_desktop, - ) - .await?; + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::get_backup_invite_codes(&*api_that_guard) + .await, + )?; Ok(output_ok) })() .await, @@ -7301,7 +7488,7 @@ fn wire__crate__nostr__NostrClient_new_impl( }, ) } -fn wire__crate__nostr__NostrClient_paginate_contacts_impl( +fn wire__crate__nostr__NostrClient_get_contact_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7309,7 +7496,7 @@ fn wire__crate__nostr__NostrClient_paginate_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_paginate_contacts", + debug_name: "NostrClient_get_contact", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7326,8 +7513,7 @@ fn wire__crate__nostr__NostrClient_paginate_contacts_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_cursor = >::sse_decode(&mut deserializer); - let api_limit = ::sse_decode(&mut deserializer); + let api_npub = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -7350,12 +7536,8 @@ fn wire__crate__nostr__NostrClient_paginate_contacts_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::paginate_contacts( - &*api_that_guard, - api_cursor, - api_limit, - ) - .await, + crate::nostr::NostrClient::get_contact(&*api_that_guard, &api_npub) + .await, )?; Ok(output_ok) })() @@ -7365,7 +7547,7 @@ fn wire__crate__nostr__NostrClient_paginate_contacts_impl( }, ) } -fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( +fn wire__crate__nostr__NostrClient_get_contact_sync_config_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7373,7 +7555,7 @@ fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_paginate_search_contacts", + debug_name: "NostrClient_get_contact_sync_config", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7390,9 +7572,6 @@ fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_query = ::sse_decode(&mut deserializer); - let api_cursor = >::sse_decode(&mut deserializer); - let api_limit = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -7415,13 +7594,8 @@ fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( } let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::paginate_search_contacts( - &*api_that_guard, - &api_query, - api_cursor, - api_limit, - ) - .await, + crate::nostr::NostrClient::get_contact_sync_config(&*api_that_guard) + .await, )?; Ok(output_ok) })() @@ -7431,7 +7605,7 @@ fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( }, ) } -fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( +fn wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7439,7 +7613,7 @@ fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_remove_nwc_connection_info", + debug_name: "NostrClient_get_follows_for_pubkey", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7456,10 +7630,10 @@ fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = ::sse_decode(&mut deserializer); + let api_npub = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -7478,13 +7652,11 @@ fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::nostr::NostrClient::remove_nwc_connection_info( - &*api_that_guard, - api_federation_id, - ) - .await; - })?; + let output_ok = crate::nostr::NostrClient::get_follows_for_pubkey( + &*api_that_guard, + api_npub, + ) + .await?; Ok(output_ok) })() .await, @@ -7493,7 +7665,7 @@ fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( }, ) } -fn wire__crate__nostr__NostrClient_remove_relay_impl( +fn wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7501,7 +7673,7 @@ fn wire__crate__nostr__NostrClient_remove_relay_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_remove_relay", + debug_name: "NostrClient_get_nwc_connection_info", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7518,10 +7690,9 @@ fn wire__crate__nostr__NostrClient_remove_relay_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_relay_uri = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -7540,11 +7711,10 @@ fn wire__crate__nostr__NostrClient_remove_relay_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::remove_relay( - &*api_that_guard, - api_relay_uri, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::get_nwc_connection_info(&*api_that_guard) + .await, + )?; Ok(output_ok) })() .await, @@ -7553,7 +7723,7 @@ fn wire__crate__nostr__NostrClient_remove_relay_impl( }, ) } -fn wire__crate__nostr__NostrClient_set_contact_sync_config_impl( +fn wire__crate__nostr__NostrClient_get_public_federations_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7561,7 +7731,7 @@ fn wire__crate__nostr__NostrClient_set_contact_sync_config_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_set_contact_sync_config", + debug_name: "NostrClient_get_public_federations", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7578,8 +7748,7 @@ fn wire__crate__nostr__NostrClient_set_contact_sync_config_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_npub = ::sse_decode(&mut deserializer); - let api_enabled = ::sse_decode(&mut deserializer); + let api_force_update = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -7588,27 +7757,26 @@ fn wire__crate__nostr__NostrClient_set_contact_sync_config_impl( let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, )], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref().await) + Some(api_that.lockable_decode_async_ref_mut().await) } _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::nostr::NostrClient::set_contact_sync_config( - &*api_that_guard, - api_npub, - api_enabled, + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::get_public_federations( + &mut *api_that_guard, + api_force_update, ) - .await; - })?; + .await, + )?; Ok(output_ok) })() .await, @@ -7617,7 +7785,7 @@ fn wire__crate__nostr__NostrClient_set_contact_sync_config_impl( }, ) } -fn wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( +fn wire__crate__nostr__NostrClient_get_relays_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7625,7 +7793,7 @@ fn wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_set_nwc_connection_info", + debug_name: "NostrClient_get_relays", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7642,9 +7810,6 @@ fn wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = ::sse_decode(&mut deserializer); - let api_relay = ::sse_decode(&mut deserializer); - let api_is_desktop = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -7653,27 +7818,21 @@ fn wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, )], ); for i in decode_indices_ { match i { 0 => { api_that_guard = - Some(api_that.lockable_decode_async_ref_mut().await) + Some(api_that.lockable_decode_async_ref().await) } _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); + let api_that_guard = api_that_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - crate::nostr::NostrClient::set_nwc_connection_info( - &mut *api_that_guard, - api_federation_id, - api_relay, - api_is_desktop, - ) - .await, + crate::nostr::NostrClient::get_relays(&*api_that_guard).await, )?; Ok(output_ok) })() @@ -7683,7 +7842,7 @@ fn wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( }, ) } -fn wire__crate__nostr__NostrClient_sync_contacts_impl( +fn wire__crate__nostr__NostrClient_has_imported_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7691,7 +7850,7 @@ fn wire__crate__nostr__NostrClient_sync_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_sync_contacts", + debug_name: "NostrClient_has_imported_contacts", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7729,9 +7888,10 @@ fn wire__crate__nostr__NostrClient_sync_contacts_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::nostr::NostrClient::sync_contacts(&*api_that_guard).await; - })?; + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::has_imported_contacts(&*api_that_guard) + .await, + )?; Ok(output_ok) })() .await, @@ -7740,7 +7900,7 @@ fn wire__crate__nostr__NostrClient_sync_contacts_impl( }, ) } -fn wire__crate__nostr__NostrClient_verify_nip05_impl( +fn wire__crate__nostr__NostrClient_insert_relay_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -7748,7 +7908,7 @@ fn wire__crate__nostr__NostrClient_verify_nip05_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "NostrClient_verify_nip05", + debug_name: "NostrClient_insert_relay", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7765,7 +7925,7 @@ fn wire__crate__nostr__NostrClient_verify_nip05_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_nip05_id = ::sse_decode(&mut deserializer); + let api_relay_uri = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -7787,9 +7947,9 @@ fn wire__crate__nostr__NostrClient_verify_nip05_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = crate::nostr::NostrClient::verify_nip05( + let output_ok = crate::nostr::NostrClient::insert_relay( &*api_that_guard, - &api_nip05_id, + api_relay_uri, ) .await?; Ok(output_ok) @@ -7800,16 +7960,17 @@ fn wire__crate__nostr__NostrClient_verify_nip05_impl( }, ) } -fn wire__crate__fountain__OobNotesDecoder_add_fragment_impl( +fn wire__crate__nostr__NostrClient_new_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "OobNotesDecoder_add_fragment", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + debug_name: "NostrClient_new", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, move || { let message = unsafe { @@ -7821,46 +7982,38 @@ fn wire__crate__fountain__OobNotesDecoder_add_fragment_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_fragment = ::sse_decode(&mut deserializer); + let api_db = ::sse_decode(&mut deserializer); + let api_recover_relays = >::sse_decode(&mut deserializer); + let api_is_desktop = ::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = - Result::<_, ()>::Ok(crate::fountain::OOBNotesDecoder::add_fragment( - &mut *api_that_guard, - &api_fragment, - ))?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let output_ok = crate::nostr::NostrClient::new( + api_db, + api_recover_relays, + api_is_desktop, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } }, ) } -fn wire__crate__fountain__OobNotesDecoder_new_impl( +fn wire__crate__nostr__NostrClient_paginate_contacts_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "OobNotesDecoder_new", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + debug_name: "NostrClient_paginate_contacts", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, move || { let message = unsafe { @@ -7872,24 +8025,59 @@ fn wire__crate__fountain__OobNotesDecoder_new_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_cursor = >::sse_decode(&mut deserializer); + let api_limit = ::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::fountain::OOBNotesDecoder::new())?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__fountain__OobNotesEncoder_new_impl( + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::paginate_contacts( + &*api_that_guard, + api_cursor, + api_limit, + ) + .await, + )?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__nostr__NostrClient_paginate_search_contacts_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "OobNotesEncoder_new", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + debug_name: "NostrClient_paginate_search_contacts", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, move || { let message = unsafe { @@ -7901,41 +8089,59 @@ fn wire__crate__fountain__OobNotesEncoder_new_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_notes = , + let api_that = , >>::sse_decode(&mut deserializer); + let api_query = ::sse_decode(&mut deserializer); + let api_cursor = >::sse_decode(&mut deserializer); + let api_limit = ::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_notes_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_notes, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_notes_guard = Some(api_notes.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_notes_guard = api_notes_guard.unwrap(); - let output_ok = - Result::<_, ()>::Ok(crate::fountain::OOBNotesEncoder::new(&*api_notes_guard))?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::paginate_search_contacts( + &*api_that_guard, + &api_query, + api_cursor, + api_limit, + ) + .await, + )?; + Ok(output_ok) + })() + .await, + ) + } }, ) } -fn wire__crate__fountain__OobNotesEncoder_next_fragment_impl( +fn wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "OobNotesEncoder_next_fragment", + debug_name: "NostrClient_remove_nwc_connection_info", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -7950,44 +8156,56 @@ fn wire__crate__fountain__OobNotesEncoder_next_fragment_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), - _ => unreachable!(), + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::fountain::OOBNotesEncoder::next_fragment(&mut *api_that_guard), - )?; - Ok(output_ok) - })()) + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + crate::nostr::NostrClient::remove_nwc_connection_info( + &*api_that_guard, + api_federation_id, + ) + .await; + })?; + Ok(output_ok) + })() + .await, + ) } }, ) } -fn wire__crate__multimint__OobNotesWrapper_amount_msats_impl( +fn wire__crate__nostr__NostrClient_remove_relay_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "OobNotesWrapper_amount_msats", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + debug_name: "NostrClient_remove_relay", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, move || { let message = unsafe { @@ -8000,42 +8218,54 @@ fn wire__crate__multimint__OobNotesWrapper_amount_msats_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_relay_uri = ::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::multimint::OOBNotesWrapper::amount_msats(&*api_that_guard), - )?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = crate::nostr::NostrClient::remove_relay( + &*api_that_guard, + api_relay_uri, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } }, ) } -fn wire__crate__multimint__OobNotesWrapper_to_string_impl( +fn wire__crate__nostr__NostrClient_set_contact_sync_config_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "OobNotesWrapper_to_string", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + debug_name: "NostrClient_set_contact_sync_config", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, move || { let message = unsafe { @@ -8048,42 +8278,58 @@ fn wire__crate__multimint__OobNotesWrapper_to_string_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_npub = ::sse_decode(&mut deserializer); + let api_enabled = ::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(crate::multimint::OOBNotesWrapper::to_string( - &*api_that_guard, - ))?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + crate::nostr::NostrClient::set_contact_sync_config( + &*api_that_guard, + api_npub, + api_enabled, + ) + .await; + })?; + Ok(output_ok) + })() + .await, + ) + } }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_get_about_impl( +fn wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_get_about", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + debug_name: "NostrClient_set_nwc_connection_info", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, move || { let message = unsafe { @@ -8096,40 +8342,60 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_get_about_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_federation_id = ::sse_decode(&mut deserializer); + let api_relay = ::sse_decode(&mut deserializer); + let api_is_desktop = ::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.about.clone())?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref_mut().await) + } + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::nostr::NostrClient::set_nwc_connection_info( + &mut *api_that_guard, + api_federation_id, + api_relay, + api_is_desktop, + ) + .await, + )?; + Ok(output_ok) + })() + .await, + ) + } }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_get_federation_id_impl( +fn wire__crate__nostr__NostrClient_sync_contacts_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_get_federation_id", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + debug_name: "NostrClient_sync_contacts", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, move || { let message = unsafe { @@ -8142,40 +8408,51 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_get_federation_id_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.federation_id.clone())?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + crate::nostr::NostrClient::sync_contacts(&*api_that_guard).await; + })?; + Ok(output_ok) + })() + .await, + ) + } }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_get_federation_name_impl( +fn wire__crate__nostr__NostrClient_verify_nip05_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_get_federation_name", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + debug_name: "NostrClient_verify_nip05", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, move || { let message = unsafe { @@ -8188,38 +8465,51 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_get_federation_name_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_nip05_id = ::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.federation_name.clone())?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = crate::nostr::NostrClient::verify_nip05( + &*api_that_guard, + &api_nip05_id, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_get_invite_codes_impl( +fn wire__crate__fountain__OobNotesDecoder_add_fragment_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_get_invite_codes", + debug_name: "OobNotesDecoder_add_fragment", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8234,38 +8524,43 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_get_invite_codes_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_fragment = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.invite_codes.clone())?; - Ok(output_ok) + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = + Result::<_, ()>::Ok(crate::fountain::OOBNotesDecoder::add_fragment( + &mut *api_that_guard, + &api_fragment, + ))?; + Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_get_modules_impl( +fn wire__crate__fountain__OobNotesDecoder_new_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_get_modules", + debug_name: "OobNotesDecoder_new", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8279,39 +8574,22 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_get_modules_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.modules.clone())?; + let output_ok = Result::<_, ()>::Ok(crate::fountain::OOBNotesDecoder::new())?; Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_get_network_impl( +fn wire__crate__fountain__OobNotesEncoder_new_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_get_network", + debug_name: "OobNotesEncoder_new", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8325,39 +8603,91 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_get_network_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , + let api_notes = , >>::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; + let mut api_notes_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_notes, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + 0 => api_notes_guard = Some(api_notes.lockable_decode_sync_ref()), _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.network.clone())?; + let api_notes_guard = api_notes_guard.unwrap(); + let output_ok = + Result::<_, ()>::Ok(crate::fountain::OOBNotesEncoder::new(&*api_notes_guard))?; Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_get_picture_impl( +fn wire__crate__fountain__OobNotesEncoder_next_fragment_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "OobNotesEncoder_next_fragment", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::fountain::OOBNotesEncoder::next_fragment(&mut *api_that_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__multimint__OobNotesWrapper_amount_msats_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_get_picture", + debug_name: "OobNotesWrapper_amount_msats", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8372,7 +8702,7 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_get_picture_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { @@ -8390,20 +8720,22 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_get_picture_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.picture.clone())?; + let output_ok = Result::<_, ()>::Ok( + crate::multimint::OOBNotesWrapper::amount_msats(&*api_that_guard), + )?; Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_set_about_impl( +fn wire__crate__multimint__OobNotesWrapper_to_string_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_set_about", + debug_name: "OobNotesWrapper_to_string", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8418,43 +8750,40 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_set_about_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_about = >::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.about = api_about; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(crate::multimint::OOBNotesWrapper::to_string( + &*api_that_guard, + ))?; Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_set_federation_id_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_get_about_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_set_federation_id", + debug_name: "PublicFederation_auto_accessor_get_about", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8471,41 +8800,36 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_set_federation_id_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.federation_id = api_federation_id; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.about.clone())?; Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_set_federation_name_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_get_federation_id_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_set_federation_name", + debug_name: "PublicFederation_auto_accessor_get_federation_id", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8522,41 +8846,36 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_set_federation_name_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_federation_name = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.federation_name = api_federation_name; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.federation_id.clone())?; Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_set_invite_codes_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_get_federation_name_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_set_invite_codes", + debug_name: "PublicFederation_auto_accessor_get_federation_name", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8573,41 +8892,36 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_set_invite_codes_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_invite_codes = >::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.invite_codes = api_invite_codes; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.federation_name.clone())?; Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_set_modules_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_get_invite_codes_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_set_modules", + debug_name: "PublicFederation_auto_accessor_get_invite_codes", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8624,41 +8938,36 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_set_modules_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_modules = >::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.modules = api_modules; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.invite_codes.clone())?; Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_set_network_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_get_modules_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_set_network", + debug_name: "PublicFederation_auto_accessor_get_modules", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8675,41 +8984,36 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_set_network_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_network = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.network = api_network; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.modules.clone())?; Ok(output_ok) })()) }, ) } -fn wire__crate__nostr__PublicFederation_auto_accessor_set_picture_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_get_network_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "PublicFederation_auto_accessor_set_picture", + debug_name: "PublicFederation_auto_accessor_get_network", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8726,41 +9030,36 @@ fn wire__crate__nostr__PublicFederation_auto_accessor_set_picture_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_picture = >::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.picture = api_picture; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.network.clone())?; Ok(output_ok) })()) }, ) } -fn wire__crate__tap_transfer__TapRecipient_decrypt_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_get_picture_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "TapRecipient_decrypt", + debug_name: "PublicFederation_auto_accessor_get_picture", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8775,11 +9074,10 @@ fn wire__crate__tap_transfer__TapRecipient_decrypt_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_blob = >::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, crate::app_error::EcashAppError>((move || { + transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ @@ -8794,21 +9092,20 @@ fn wire__crate__tap_transfer__TapRecipient_decrypt_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = - crate::tap_transfer::TapRecipient::decrypt(&*api_that_guard, api_blob)?; + let output_ok = Result::<_, ()>::Ok(api_that_guard.picture.clone())?; Ok(output_ok) })()) }, ) } -fn wire__crate__tap_transfer__TapRecipient_new_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_set_about_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "TapRecipient_new", + debug_name: "PublicFederation_auto_accessor_set_about", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8822,22 +9119,44 @@ fn wire__crate__tap_transfer__TapRecipient_new_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_about = >::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::tap_transfer::TapRecipient::new())?; - Ok(output_ok) - })()) + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.about = api_about; + }; + })?; + Ok(output_ok) + })()) }, ) } -fn wire__crate__tap_transfer__TapRecipient_public_key_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_set_federation_id_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "TapRecipient_public_key", + debug_name: "PublicFederation_auto_accessor_set_federation_id", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8852,40 +9171,43 @@ fn wire__crate__tap_transfer__TapRecipient_public_key_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::tap_transfer::TapRecipient::public_key(&*api_that_guard), - )?; + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.federation_id = api_federation_id; + }; + })?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_federation_fee_msats_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_set_federation_name_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_get_federation_fee_msats", + debug_name: "PublicFederation_auto_accessor_set_federation_name", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8900,38 +9222,43 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_federation_fee let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_federation_name = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.federation_fee_msats.clone())?; + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.federation_name = api_federation_name; + }; + })?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_set_invite_codes_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_get_fee_amount", + debug_name: "PublicFederation_auto_accessor_set_invite_codes", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8946,38 +9273,43 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_imp let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_invite_codes = >::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.fee_amount.clone())?; + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.invite_codes = api_invite_codes; + }; + })?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_rate_sats_per_vb_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_set_modules_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_get_fee_rate_sats_per_vb", + debug_name: "PublicFederation_auto_accessor_set_modules", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -8992,38 +9324,43 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_rate_sats_ let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_modules = >::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.fee_rate_sats_per_vb.clone())?; + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.modules = api_modules; + }; + })?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fees_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_set_network_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_get_fees", + debug_name: "PublicFederation_auto_accessor_set_network", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -9038,38 +9375,43 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fees_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_network = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.fees.clone())?; + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.network = api_network; + }; + })?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes_impl( +fn wire__crate__nostr__PublicFederation_auto_accessor_set_picture_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes", + debug_name: "PublicFederation_auto_accessor_set_picture", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -9084,38 +9426,43 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_picture = >::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, + &api_that, 0, true, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), _ => unreachable!(), } } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(api_that_guard.tx_size_vbytes.clone())?; + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.picture = api_picture; + }; + })?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_federation_fee_msats_impl( +fn wire__crate__tap_transfer__TapRecipient_decrypt_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_set_federation_fee_msats", + debug_name: "TapRecipient_decrypt", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -9130,43 +9477,69 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_federation_fee let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_blob = >::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { + transform_result_sse::<_, crate::app_error::EcashAppError>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.federation_fee_msats = api_federation_fee_msats; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = + crate::tap_transfer::TapRecipient::decrypt(&*api_that_guard, api_blob)?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_amount_impl( +fn wire__crate__tap_transfer__TapRecipient_new_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_set_fee_amount", + debug_name: "TapRecipient_new", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok(crate::tap_transfer::TapRecipient::new())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__tap_transfer__TapRecipient_public_key_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "TapRecipient_public_key", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -9181,43 +9554,40 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_amount_imp let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_fee_amount = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.fee_amount = api_fee_amount; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::tap_transfer::TapRecipient::public_key(&*api_that_guard), + )?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_rate_sats_per_vb_impl( +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_federation_fee_msats_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_set_fee_rate_sats_per_vb", + debug_name: "WithdrawFeesResponse_auto_accessor_get_federation_fee_msats", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -9234,41 +9604,36 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_rate_sats_ let api_that = , >>::sse_decode(&mut deserializer); - let api_fee_rate_sats_per_vb = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.fee_rate_sats_per_vb = api_fee_rate_sats_per_vb; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.federation_fee_msats.clone())?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fees_impl( +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_set_fees", + debug_name: "WithdrawFeesResponse_auto_accessor_get_fee_amount", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -9285,41 +9650,36 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fees_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_fees = ::sse_decode(&mut deserializer); deserializer.end(); transform_result_sse::<_, ()>((move || { let mut api_that_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, + &api_that, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.fees = api_fees; - }; - })?; + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.fee_amount.clone())?; Ok(output_ok) })()) }, ) } -fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes_impl( +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_rate_sats_per_vb_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes", + debug_name: "WithdrawFeesResponse_auto_accessor_get_fee_rate_sats_per_vb", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, @@ -9330,40 +9690,1013 @@ fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes rust_vec_len_, data_len_, ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_tx_size_vbytes = ::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - { - api_that_guard.tx_size_vbytes = api_tx_size_vbytes; - }; - })?; - Ok(output_ok) - })()) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.fee_rate_sats_per_vb.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fees_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "WithdrawFeesResponse_auto_accessor_get_fees", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.fees.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(api_that_guard.tx_size_vbytes.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_federation_fee_msats_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "WithdrawFeesResponse_auto_accessor_set_federation_fee_msats", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_federation_fee_msats = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.federation_fee_msats = api_federation_fee_msats; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_amount_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "WithdrawFeesResponse_auto_accessor_set_fee_amount", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_fee_amount = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.fee_amount = api_fee_amount; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_rate_sats_per_vb_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "WithdrawFeesResponse_auto_accessor_set_fee_rate_sats_per_vb", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_fee_rate_sats_per_vb = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.fee_rate_sats_per_vb = api_fee_rate_sats_per_vb; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fees_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "WithdrawFeesResponse_auto_accessor_set_fees", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_fees = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.fees = api_fees; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_tx_size_vbytes = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.tx_size_vbytes = api_tx_size_vbytes; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__ack_seed_phrase_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "ack_seed_phrase", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = Result::<_, ()>::Ok({ + crate::ack_seed_phrase().await; + })?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__add_recovery_relay_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "add_recovery_relay", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_relay = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = Result::<_, ()>::Ok({ + crate::add_recovery_relay(api_relay).await; + })?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__allocate_deposit_address_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "allocate_deposit_address", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let output_ok = crate::allocate_deposit_address(api_federation_id).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__await_ecash_reissue_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "await_ecash_reissue", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_operation_id = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = + crate::await_ecash_reissue(&*api_federation_id_guard, api_operation_id) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__await_receive_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "await_receive", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_operation_id = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = + crate::await_receive(&*api_federation_id_guard, api_operation_id) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__await_send_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "await_send", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_operation_id = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::await_send(&*api_federation_id_guard, api_operation_id).await, + )?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__await_withdraw_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "await_withdraw", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_operation_id = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::app_error::EcashAppError>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = + crate::await_withdraw(&*api_federation_id_guard, api_operation_id) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__backup_invite_codes_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "backup_invite_codes", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let output_ok = crate::backup_invite_codes().await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__balance_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "balance", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::balance(&*api_federation_id_guard).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__calculate_ecash_reissue_fees_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "calculate_ecash_reissue_fees", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_ecash = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::calculate_ecash_reissue_fees( + &*api_federation_id_guard, + api_ecash, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__calculate_ecash_send_fees_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "calculate_ecash_send_fees", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_amount_msats = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::calculate_ecash_send_fees( + &*api_federation_id_guard, + api_amount_msats, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__calculate_withdraw_fees_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "calculate_withdraw_fees", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_address = ::sse_decode(&mut deserializer); + let api_amount_sats = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::app_error::EcashAppError>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::calculate_withdraw_fees( + &*api_federation_id_guard, + api_address, + api_amount_sats, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } }, ) } -fn wire__crate__ack_seed_phrase_impl( +fn wire__crate__change_pin_code_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9371,7 +10704,7 @@ fn wire__crate__ack_seed_phrase_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "ack_seed_phrase", + debug_name: "change_pin_code", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9385,13 +10718,14 @@ fn wire__crate__ack_seed_phrase_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_current_pin = ::sse_decode(&mut deserializer); + let api_new_pin = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok({ - crate::ack_seed_phrase().await; - })?; + let output_ok = + crate::change_pin_code(api_current_pin, api_new_pin).await?; Ok(output_ok) })() .await, @@ -9400,7 +10734,7 @@ fn wire__crate__ack_seed_phrase_impl( }, ) } -fn wire__crate__add_recovery_relay_impl( +fn wire__crate__check_ecash_spent_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9408,7 +10742,7 @@ fn wire__crate__add_recovery_relay_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "add_recovery_relay", + debug_name: "check_ecash_spent", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9422,14 +10756,35 @@ fn wire__crate__add_recovery_relay_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_relay = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_ecash = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok({ - crate::add_recovery_relay(api_relay).await; - })?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = + crate::check_ecash_spent(&*api_federation_id_guard, api_ecash).await?; Ok(output_ok) })() .await, @@ -9438,7 +10793,7 @@ fn wire__crate__add_recovery_relay_impl( }, ) } -fn wire__crate__allocate_deposit_address_impl( +fn wire__crate__check_ln_address_availability_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9446,7 +10801,7 @@ fn wire__crate__allocate_deposit_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "allocate_deposit_address", + debug_name: "check_ln_address_availability", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9460,12 +10815,44 @@ fn wire__crate__allocate_deposit_address_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = ::sse_decode(&mut deserializer); + let api_username = ::sse_decode(&mut deserializer); + let api_domain = ::sse_decode(&mut deserializer); + let api_ln_address_api = ::sse_decode(&mut deserializer); + let api_recurringd_api = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = crate::allocate_deposit_address(api_federation_id).await?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::check_ln_address_availability( + api_username, + api_domain, + api_ln_address_api, + api_recurringd_api, + &*api_federation_id_guard, + ) + .await?; Ok(output_ok) })() .await, @@ -9474,7 +10861,7 @@ fn wire__crate__allocate_deposit_address_impl( }, ) } -fn wire__crate__await_ecash_reissue_impl( +fn wire__crate__claim_random_ln_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9482,7 +10869,7 @@ fn wire__crate__await_ecash_reissue_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "await_ecash_reissue", + debug_name: "claim_random_ln_address", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9499,7 +10886,8 @@ fn wire__crate__await_ecash_reissue_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_operation_id = ::sse_decode(&mut deserializer); + let api_ln_address_api = ::sse_decode(&mut deserializer); + let api_recurringd_api = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -9523,9 +10911,48 @@ fn wire__crate__await_ecash_reissue_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::claim_random_ln_address( + &*api_federation_id_guard, + api_ln_address_api, + api_recurringd_api, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__clear_contacts_and_stop_sync_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "clear_contacts_and_stop_sync", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { let output_ok = - crate::await_ecash_reissue(&*api_federation_id_guard, api_operation_id) - .await?; + Result::<_, ()>::Ok(crate::clear_contacts_and_stop_sync().await)?; Ok(output_ok) })() .await, @@ -9534,7 +10961,7 @@ fn wire__crate__await_ecash_reissue_impl( }, ) } -fn wire__crate__await_receive_impl( +fn wire__crate__clear_pin_code_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9542,7 +10969,43 @@ fn wire__crate__await_receive_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "await_receive", + debug_name: "clear_pin_code", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_pin = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let output_ok = crate::clear_pin_code(api_pin).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__compute_receive_amount_with_fees_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "compute_receive_amount_with_fees", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9559,7 +11022,10 @@ fn wire__crate__await_receive_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_operation_id = ::sse_decode(&mut deserializer); + let api_gateway_url = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); + let api_amount_msats = ::sse_decode(&mut deserializer); + let api_include_fees = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -9583,9 +11049,14 @@ fn wire__crate__await_receive_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::await_receive(&*api_federation_id_guard, api_operation_id) - .await?; + let output_ok = crate::compute_receive_amount_with_fees( + &*api_federation_id_guard, + api_gateway_url, + api_is_lnv2, + api_amount_msats, + api_include_fees, + ) + .await?; Ok(output_ok) })() .await, @@ -9594,7 +11065,39 @@ fn wire__crate__await_receive_impl( }, ) } -fn wire__crate__await_send_impl( +fn wire__crate__db__connector_default_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "connector_default", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok(crate::db::Connector::default())?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__create_multimint_from_words_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9602,7 +11105,7 @@ fn wire__crate__await_send_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "await_send", + debug_name: "create_multimint_from_words", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9616,36 +11119,17 @@ fn wire__crate__await_send_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_operation_id = ::sse_decode(&mut deserializer); + let api_path = ::sse_decode(&mut deserializer); + let api_words = >::sse_decode(&mut deserializer); + let api_is_desktop = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::await_send(&*api_federation_id_guard, api_operation_id).await, - )?; + let output_ok = Result::<_, ()>::Ok({ + crate::create_multimint_from_words(api_path, api_words, api_is_desktop) + .await; + })?; Ok(output_ok) })() .await, @@ -9654,7 +11138,7 @@ fn wire__crate__await_send_impl( }, ) } -fn wire__crate__await_withdraw_impl( +fn wire__crate__create_new_multimint_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9662,7 +11146,7 @@ fn wire__crate__await_withdraw_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "await_withdraw", + debug_name: "create_new_multimint", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9676,36 +11160,15 @@ fn wire__crate__await_withdraw_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_operation_id = ::sse_decode(&mut deserializer); + let api_path = ::sse_decode(&mut deserializer); + let api_is_desktop = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, crate::app_error::EcashAppError>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::await_withdraw(&*api_federation_id_guard, api_operation_id) - .await?; + let output_ok = Result::<_, ()>::Ok({ + crate::create_new_multimint(api_path, api_is_desktop).await; + })?; Ok(output_ok) })() .await, @@ -9714,17 +11177,16 @@ fn wire__crate__await_withdraw_impl( }, ) } -fn wire__crate__backup_invite_codes_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, +fn wire__crate__encrypt_ecash_for_tap_impl( ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "backup_invite_codes", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + debug_name: "encrypt_ecash_for_tap", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, move || { let message = unsafe { @@ -9736,20 +11198,17 @@ fn wire__crate__backup_invite_codes_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_ecash = ::sse_decode(&mut deserializer); + let api_recipient_pubkey = >::sse_decode(&mut deserializer); deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = crate::backup_invite_codes().await?; - Ok(output_ok) - })() - .await, - ) - } + transform_result_sse::<_, crate::app_error::EcashAppError>((move || { + let output_ok = crate::encrypt_ecash_for_tap(api_ecash, api_recipient_pubkey)?; + Ok(output_ok) + })()) }, ) } -fn wire__crate__balance_impl( +fn wire__crate__execute_lnurl_withdraw_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9757,7 +11216,7 @@ fn wire__crate__balance_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "balance", + debug_name: "execute_lnurl_withdraw", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9774,9 +11233,17 @@ fn wire__crate__balance_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); + let api_callback = ::sse_decode(&mut deserializer); + let api_k1 = ::sse_decode(&mut deserializer); + let api_amount_msats_without_fees = ::sse_decode(&mut deserializer); + let api_amount_msats_with_fees = ::sse_decode(&mut deserializer); + let api_federation_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway_fee_msats = ::sse_decode(&mut deserializer); + let api_gateway_url = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -9797,8 +11264,18 @@ fn wire__crate__balance_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - Result::<_, ()>::Ok(crate::balance(&*api_federation_id_guard).await)?; + let output_ok = crate::execute_lnurl_withdraw( + &*api_federation_id_guard, + api_callback, + api_k1, + api_amount_msats_without_fees, + api_amount_msats_with_fees, + api_federation_fee_msats, + api_gateway_fee_msats, + api_gateway_url, + api_is_lnv2, + ) + .await?; Ok(output_ok) })() .await, @@ -9807,7 +11284,7 @@ fn wire__crate__balance_impl( }, ) } -fn wire__crate__calculate_ecash_reissue_fees_impl( +fn wire__crate__federation_id_to_string_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9815,7 +11292,7 @@ fn wire__crate__calculate_ecash_reissue_fees_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "calculate_ecash_reissue_fees", + debug_name: "federation_id_to_string", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9829,38 +11306,14 @@ fn wire__crate__calculate_ecash_reissue_fees_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_ecash = ::sse_decode(&mut deserializer); + let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::calculate_ecash_reissue_fees( - &*api_federation_id_guard, - api_ecash, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::federation_id_to_string(api_federation_id).await, + )?; Ok(output_ok) })() .await, @@ -9869,7 +11322,7 @@ fn wire__crate__calculate_ecash_reissue_fees_impl( }, ) } -fn wire__crate__calculate_ecash_send_fees_impl( +fn wire__crate__federations_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9877,7 +11330,7 @@ fn wire__crate__calculate_ecash_send_fees_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "calculate_ecash_send_fees", + debug_name: "federations", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9891,38 +11344,47 @@ fn wire__crate__calculate_ecash_send_fees_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_amount_msats = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = Result::<_, ()>::Ok(crate::federations().await)?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__fetch_lnurl_withdraw_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "fetch_lnurl_withdraw", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::calculate_ecash_send_fees( - &*api_federation_id_guard, - api_amount_msats, - ) - .await?; + let output_ok = crate::fetch_lnurl_withdraw(api_url).await?; Ok(output_ok) })() .await, @@ -9931,7 +11393,7 @@ fn wire__crate__calculate_ecash_send_fees_impl( }, ) } -fn wire__crate__calculate_withdraw_fees_impl( +fn wire__crate__get_addresses_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -9939,7 +11401,7 @@ fn wire__crate__calculate_withdraw_fees_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "calculate_withdraw_fees", + debug_name: "get_addresses", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -9956,11 +11418,9 @@ fn wire__crate__calculate_withdraw_fees_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_address = ::sse_decode(&mut deserializer); - let api_amount_sats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, crate::app_error::EcashAppError>( + transform_result_sse::<_, ()>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -9981,12 +11441,9 @@ fn wire__crate__calculate_withdraw_fees_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::calculate_withdraw_fees( - &*api_federation_id_guard, - api_address, - api_amount_sats, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::get_addresses(&*api_federation_id_guard).await, + )?; Ok(output_ok) })() .await, @@ -9995,7 +11452,7 @@ fn wire__crate__calculate_withdraw_fees_impl( }, ) } -fn wire__crate__check_ecash_spent_impl( +fn wire__crate__get_all_btc_prices_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10003,7 +11460,7 @@ fn wire__crate__check_ecash_spent_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "check_ecash_spent", + debug_name: "get_all_btc_prices", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10017,35 +11474,11 @@ fn wire__crate__check_ecash_spent_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_ecash = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::check_ecash_spent(&*api_federation_id_guard, api_ecash).await?; + let output_ok = Result::<_, ()>::Ok(crate::get_all_btc_prices().await)?; Ok(output_ok) })() .await, @@ -10054,7 +11487,7 @@ fn wire__crate__check_ecash_spent_impl( }, ) } -fn wire__crate__check_ln_address_availability_impl( +fn wire__crate__get_all_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10062,7 +11495,7 @@ fn wire__crate__check_ln_address_availability_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "check_ln_address_availability", + debug_name: "get_all_contacts", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10076,44 +11509,11 @@ fn wire__crate__check_ln_address_availability_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_username = ::sse_decode(&mut deserializer); - let api_domain = ::sse_decode(&mut deserializer); - let api_ln_address_api = ::sse_decode(&mut deserializer); - let api_recurringd_api = ::sse_decode(&mut deserializer); - let api_federation_id = , - >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::check_ln_address_availability( - api_username, - api_domain, - api_ln_address_api, - api_recurringd_api, - &*api_federation_id_guard, - ) - .await?; + let output_ok = Result::<_, ()>::Ok(crate::get_all_contacts().await)?; Ok(output_ok) })() .await, @@ -10122,7 +11522,7 @@ fn wire__crate__check_ln_address_availability_impl( }, ) } -fn wire__crate__claim_random_ln_address_impl( +fn wire__crate__get_bitcoin_display_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10130,7 +11530,7 @@ fn wire__crate__claim_random_ln_address_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "claim_random_ln_address", + debug_name: "get_bitcoin_display", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10144,40 +11544,11 @@ fn wire__crate__claim_random_ln_address_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_ln_address_api = ::sse_decode(&mut deserializer); - let api_recurringd_api = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::claim_random_ln_address( - &*api_federation_id_guard, - api_ln_address_api, - api_recurringd_api, - ) - .await?; + let output_ok = Result::<_, ()>::Ok(crate::get_bitcoin_display().await)?; Ok(output_ok) })() .await, @@ -10186,7 +11557,7 @@ fn wire__crate__claim_random_ln_address_impl( }, ) } -fn wire__crate__clear_contacts_and_stop_sync_impl( +fn wire__crate__get_btc_price_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10194,7 +11565,7 @@ fn wire__crate__clear_contacts_and_stop_sync_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "clear_contacts_and_stop_sync", + debug_name: "get_btc_price", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10212,8 +11583,7 @@ fn wire__crate__clear_contacts_and_stop_sync_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = - Result::<_, ()>::Ok(crate::clear_contacts_and_stop_sync().await)?; + let output_ok = Result::<_, ()>::Ok(crate::get_btc_price().await)?; Ok(output_ok) })() .await, @@ -10222,7 +11592,39 @@ fn wire__crate__clear_contacts_and_stop_sync_impl( }, ) } -fn wire__crate__clear_pin_code_impl( +fn wire__crate__get_event_bus_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "get_event_bus", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok(crate::get_event_bus())?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__get_federation_meta_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10230,7 +11632,7 @@ fn wire__crate__clear_pin_code_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "clear_pin_code", + debug_name: "get_federation_meta", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10244,12 +11646,14 @@ fn wire__crate__clear_pin_code_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_pin = ::sse_decode(&mut deserializer); + let api_invite_code = >::sse_decode(&mut deserializer); + let api_federation_id = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = crate::clear_pin_code(api_pin).await?; + let output_ok = + crate::get_federation_meta(api_invite_code, api_federation_id).await?; Ok(output_ok) })() .await, @@ -10258,7 +11662,7 @@ fn wire__crate__clear_pin_code_impl( }, ) } -fn wire__crate__compute_receive_amount_with_fees_impl( +fn wire__crate__get_federation_order_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10266,7 +11670,7 @@ fn wire__crate__compute_receive_amount_with_fees_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "compute_receive_amount_with_fees", + debug_name: "get_federation_order", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10280,44 +11684,11 @@ fn wire__crate__compute_receive_amount_with_fees_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_gateway_url = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); - let api_amount_msats = ::sse_decode(&mut deserializer); - let api_include_fees = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::compute_receive_amount_with_fees( - &*api_federation_id_guard, - api_gateway_url, - api_is_lnv2, - api_amount_msats, - api_include_fees, - ) - .await?; + let output_ok = Result::<_, ()>::Ok(crate::get_federation_order().await)?; Ok(output_ok) })() .await, @@ -10326,15 +11697,15 @@ fn wire__crate__compute_receive_amount_with_fees_impl( }, ) } -fn wire__crate__db__connector_default_impl( +fn wire__crate__get_fiat_currency_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "connector_default", + debug_name: "get_fiat_currency", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10349,16 +11720,19 @@ fn wire__crate__db__connector_default_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::db::Connector::default())?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = Result::<_, ()>::Ok(crate::get_fiat_currency().await)?; + Ok(output_ok) + })() + .await, + ) } }, ) } -fn wire__crate__create_multimint_from_words_impl( +fn wire__crate__get_invite_code_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10366,7 +11740,7 @@ fn wire__crate__create_multimint_from_words_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "create_multimint_from_words", + debug_name: "get_invite_code", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10380,17 +11754,35 @@ fn wire__crate__create_multimint_from_words_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_path = ::sse_decode(&mut deserializer); - let api_words = >::sse_decode(&mut deserializer); - let api_is_desktop = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok({ - crate::create_multimint_from_words(api_path, api_words, api_is_desktop) - .await; - })?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = + crate::get_invite_code(&*api_federation_id_guard, api_peer).await?; Ok(output_ok) })() .await, @@ -10399,7 +11791,7 @@ fn wire__crate__create_multimint_from_words_impl( }, ) } -fn wire__crate__create_new_multimint_impl( +fn wire__crate__get_invoice_from_lnaddress_or_lnurl_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10407,7 +11799,7 @@ fn wire__crate__create_new_multimint_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "create_new_multimint", + debug_name: "get_invoice_from_lnaddress_or_lnurl", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10421,15 +11813,40 @@ fn wire__crate__create_new_multimint_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_path = ::sse_decode(&mut deserializer); - let api_is_desktop = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_amount_msats = ::sse_decode(&mut deserializer); + let api_lnaddress_or_lnurl = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, crate::app_error::EcashAppError>( (move || async move { - let output_ok = Result::<_, ()>::Ok({ - crate::create_new_multimint(api_path, api_is_desktop).await; - })?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::get_invoice_from_lnaddress_or_lnurl( + &*api_federation_id_guard, + api_amount_msats, + api_lnaddress_or_lnurl, + ) + .await?; Ok(output_ok) })() .await, @@ -10438,38 +11855,7 @@ fn wire__crate__create_new_multimint_impl( }, ) } -fn wire__crate__encrypt_ecash_for_tap_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "encrypt_ecash_for_tap", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_ecash = ::sse_decode(&mut deserializer); - let api_recipient_pubkey = >::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, crate::app_error::EcashAppError>((move || { - let output_ok = crate::encrypt_ecash_for_tap(api_ecash, api_recipient_pubkey)?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__execute_lnurl_withdraw_impl( +fn wire__crate__get_ln_address_config_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10477,7 +11863,7 @@ fn wire__crate__execute_lnurl_withdraw_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "execute_lnurl_withdraw", + debug_name: "get_ln_address_config", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10494,17 +11880,9 @@ fn wire__crate__execute_lnurl_withdraw_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_callback = ::sse_decode(&mut deserializer); - let api_k1 = ::sse_decode(&mut deserializer); - let api_amount_msats_without_fees = ::sse_decode(&mut deserializer); - let api_amount_msats_with_fees = ::sse_decode(&mut deserializer); - let api_federation_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway_fee_msats = ::sse_decode(&mut deserializer); - let api_gateway_url = ::sse_decode(&mut deserializer); - let api_is_lnv2 = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -10525,18 +11903,9 @@ fn wire__crate__execute_lnurl_withdraw_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::execute_lnurl_withdraw( - &*api_federation_id_guard, - api_callback, - api_k1, - api_amount_msats_without_fees, - api_amount_msats_with_fees, - api_federation_fee_msats, - api_gateway_fee_msats, - api_gateway_url, - api_is_lnv2, - ) - .await?; + let output_ok = Result::<_, ()>::Ok( + crate::get_ln_address_config(&*api_federation_id_guard).await, + )?; Ok(output_ok) })() .await, @@ -10545,7 +11914,7 @@ fn wire__crate__execute_lnurl_withdraw_impl( }, ) } -fn wire__crate__federation_id_to_string_impl( +fn wire__crate__get_max_withdrawable_amount_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10553,7 +11922,7 @@ fn wire__crate__federation_id_to_string_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "federation_id_to_string", + debug_name: "get_max_withdrawable_amount", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10567,14 +11936,38 @@ fn wire__crate__federation_id_to_string_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_address = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, crate::app_error::EcashAppError>( (move || async move { - let output_ok = Result::<_, ()>::Ok( - crate::federation_id_to_string(api_federation_id).await, - )?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::get_max_withdrawable_amount( + &*api_federation_id_guard, + api_address, + ) + .await?; Ok(output_ok) })() .await, @@ -10583,7 +11976,7 @@ fn wire__crate__federation_id_to_string_impl( }, ) } -fn wire__crate__federations_impl( +fn wire__crate__get_mnemonic_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10591,7 +11984,7 @@ fn wire__crate__federations_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "federations", + debug_name: "get_mnemonic", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10609,7 +12002,7 @@ fn wire__crate__federations_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::federations().await)?; + let output_ok = Result::<_, ()>::Ok(crate::get_mnemonic().await)?; Ok(output_ok) })() .await, @@ -10618,7 +12011,7 @@ fn wire__crate__federations_impl( }, ) } -fn wire__crate__fetch_lnurl_withdraw_impl( +fn wire__crate__get_module_recovery_progress_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10626,7 +12019,7 @@ fn wire__crate__fetch_lnurl_withdraw_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "fetch_lnurl_withdraw", + debug_name: "get_module_recovery_progress", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10640,12 +12033,41 @@ fn wire__crate__fetch_lnurl_withdraw_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_url = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_recovery_module = + ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { - let output_ok = crate::fetch_lnurl_withdraw(api_url).await?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::get_module_recovery_progress( + &*api_federation_id_guard, + api_recovery_module, + ) + .await, + )?; Ok(output_ok) })() .await, @@ -10654,7 +12076,7 @@ fn wire__crate__fetch_lnurl_withdraw_impl( }, ) } -fn wire__crate__get_addresses_impl( +fn wire__crate__get_note_summary_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10662,7 +12084,7 @@ fn wire__crate__get_addresses_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_addresses", + debug_name: "get_note_summary", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10681,7 +12103,7 @@ fn wire__crate__get_addresses_impl( >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -10702,9 +12124,7 @@ fn wire__crate__get_addresses_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::get_addresses(&*api_federation_id_guard).await, - )?; + let output_ok = crate::get_note_summary(&*api_federation_id_guard).await?; Ok(output_ok) })() .await, @@ -10713,7 +12133,7 @@ fn wire__crate__get_addresses_impl( }, ) } -fn wire__crate__get_all_btc_prices_impl( +fn wire__crate__get_nwc_connection_info_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10721,7 +12141,7 @@ fn wire__crate__get_all_btc_prices_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_all_btc_prices", + debug_name: "get_nwc_connection_info", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10739,7 +12159,8 @@ fn wire__crate__get_all_btc_prices_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_all_btc_prices().await)?; + let output_ok = + Result::<_, ()>::Ok(crate::get_nwc_connection_info().await)?; Ok(output_ok) })() .await, @@ -10748,7 +12169,7 @@ fn wire__crate__get_all_btc_prices_impl( }, ) } -fn wire__crate__get_all_contacts_impl( +fn wire__crate__get_nwc_daily_budget_sats_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10756,7 +12177,7 @@ fn wire__crate__get_all_contacts_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_all_contacts", + debug_name: "get_nwc_daily_budget_sats", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10774,7 +12195,8 @@ fn wire__crate__get_all_contacts_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_all_contacts().await)?; + let output_ok = + Result::<_, ()>::Ok(crate::get_nwc_daily_budget_sats().await)?; Ok(output_ok) })() .await, @@ -10783,7 +12205,7 @@ fn wire__crate__get_all_contacts_impl( }, ) } -fn wire__crate__get_bitcoin_display_impl( +fn wire__crate__get_nwc_max_payment_sats_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10791,7 +12213,7 @@ fn wire__crate__get_bitcoin_display_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_bitcoin_display", + debug_name: "get_nwc_max_payment_sats", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10809,7 +12231,8 @@ fn wire__crate__get_bitcoin_display_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_bitcoin_display().await)?; + let output_ok = + Result::<_, ()>::Ok(crate::get_nwc_max_payment_sats().await)?; Ok(output_ok) })() .await, @@ -10818,7 +12241,7 @@ fn wire__crate__get_bitcoin_display_impl( }, ) } -fn wire__crate__get_btc_price_impl( +fn wire__crate__get_pegin_fee_quote_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10826,7 +12249,7 @@ fn wire__crate__get_btc_price_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_btc_price", + debug_name: "get_pegin_fee_quote", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10840,11 +12263,12 @@ fn wire__crate__get_btc_price_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_btc_price().await)?; + let output_ok = crate::get_pegin_fee_quote(api_federation_id).await?; Ok(output_ok) })() .await, @@ -10853,15 +12277,15 @@ fn wire__crate__get_btc_price_impl( }, ) } -fn wire__crate__get_event_bus_impl( +fn wire__crate__get_relays_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_event_bus", + debug_name: "get_relays", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10876,16 +12300,19 @@ fn wire__crate__get_event_bus_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::get_event_bus())?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = Result::<_, ()>::Ok(crate::get_relays().await)?; + Ok(output_ok) + })() + .await, + ) } }, ) } -fn wire__crate__get_federation_meta_impl( +fn wire__crate__get_require_pin_for_spending_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10893,7 +12320,7 @@ fn wire__crate__get_federation_meta_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_federation_meta", + debug_name: "get_require_pin_for_spending", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10907,14 +12334,12 @@ fn wire__crate__get_federation_meta_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_invite_code = >::sse_decode(&mut deserializer); - let api_federation_id = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let output_ok = - crate::get_federation_meta(api_invite_code, api_federation_id).await?; + Result::<_, ()>::Ok(crate::get_require_pin_for_spending().await)?; Ok(output_ok) })() .await, @@ -10923,7 +12348,7 @@ fn wire__crate__get_federation_meta_impl( }, ) } -fn wire__crate__get_federation_order_impl( +fn wire__crate__get_show_msats_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10931,7 +12356,7 @@ fn wire__crate__get_federation_order_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_federation_order", + debug_name: "get_show_msats", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10949,7 +12374,7 @@ fn wire__crate__get_federation_order_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_federation_order().await)?; + let output_ok = Result::<_, ()>::Ok(crate::get_show_msats().await)?; Ok(output_ok) })() .await, @@ -10958,7 +12383,7 @@ fn wire__crate__get_federation_order_impl( }, ) } -fn wire__crate__get_fiat_currency_impl( +fn wire__crate__get_tap_receive_enabled_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -10966,7 +12391,7 @@ fn wire__crate__get_fiat_currency_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_fiat_currency", + debug_name: "get_tap_receive_enabled", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -10984,7 +12409,8 @@ fn wire__crate__get_fiat_currency_impl( move |context| async move { transform_result_sse::<_, ()>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_fiat_currency().await)?; + let output_ok = + Result::<_, ()>::Ok(crate::get_tap_receive_enabled().await)?; Ok(output_ok) })() .await, @@ -10993,7 +12419,7 @@ fn wire__crate__get_fiat_currency_impl( }, ) } -fn wire__crate__get_invite_code_impl( +fn wire__crate__guardian_add_gateway_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11001,7 +12427,7 @@ fn wire__crate__get_invite_code_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_invite_code", + debug_name: "guardian_add_gateway", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11019,6 +12445,8 @@ fn wire__crate__get_invite_code_impl( flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); + let api_gateway_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -11042,47 +12470,11 @@ fn wire__crate__get_invite_code_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = - crate::get_invite_code(&*api_federation_id_guard, api_peer).await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__get_invoice_from_lnaddress_or_lnurl_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_invoice_from_lnaddress_or_lnurl", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_amount_msats = ::sse_decode(&mut deserializer); - let api_lnaddress_or_lnurl = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, crate::app_error::EcashAppError>( - (move || async move { - let output_ok = crate::get_invoice_from_lnaddress_or_lnurl( - api_amount_msats, - api_lnaddress_or_lnurl, + let output_ok = crate::guardian_add_gateway( + &*api_federation_id_guard, + api_peer, + api_password, + api_gateway_url, ) .await?; Ok(output_ok) @@ -11093,7 +12485,7 @@ fn wire__crate__get_invoice_from_lnaddress_or_lnurl_impl( }, ) } -fn wire__crate__get_ln_address_config_impl( +fn wire__crate__guardian_audit_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11101,7 +12493,7 @@ fn wire__crate__get_ln_address_config_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_ln_address_config", + debug_name: "guardian_audit", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11118,9 +12510,11 @@ fn wire__crate__get_ln_address_config_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -11141,9 +12535,12 @@ fn wire__crate__get_ln_address_config_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::get_ln_address_config(&*api_federation_id_guard).await, - )?; + let output_ok = crate::guardian_audit( + &*api_federation_id_guard, + api_peer, + api_password, + ) + .await?; Ok(output_ok) })() .await, @@ -11152,7 +12549,7 @@ fn wire__crate__get_ln_address_config_impl( }, ) } -fn wire__crate__get_max_withdrawable_amount_impl( +fn wire__crate__guardian_backup_statistics_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11160,7 +12557,7 @@ fn wire__crate__get_max_withdrawable_amount_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_max_withdrawable_amount", + debug_name: "guardian_backup_statistics", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11177,10 +12574,11 @@ fn wire__crate__get_max_withdrawable_amount_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_address = ::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, crate::app_error::EcashAppError>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -11201,9 +12599,10 @@ fn wire__crate__get_max_withdrawable_amount_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::get_max_withdrawable_amount( + let output_ok = crate::guardian_backup_statistics( &*api_federation_id_guard, - api_address, + api_peer, + api_password, ) .await?; Ok(output_ok) @@ -11214,7 +12613,7 @@ fn wire__crate__get_max_withdrawable_amount_impl( }, ) } -fn wire__crate__get_mnemonic_impl( +fn wire__crate__guardian_list_gateways_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11222,7 +12621,7 @@ fn wire__crate__get_mnemonic_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_mnemonic", + debug_name: "guardian_list_gateways", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11236,11 +12635,36 @@ fn wire__crate__get_mnemonic_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_mnemonic().await)?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = + crate::guardian_list_gateways(&*api_federation_id_guard, api_peer) + .await?; Ok(output_ok) })() .await, @@ -11249,7 +12673,7 @@ fn wire__crate__get_mnemonic_impl( }, ) } -fn wire__crate__get_module_recovery_progress_impl( +fn wire__crate__guardian_login_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11257,7 +12681,7 @@ fn wire__crate__get_module_recovery_progress_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_module_recovery_progress", + debug_name: "guardian_login", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11274,10 +12698,11 @@ fn wire__crate__get_module_recovery_progress_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); - let api_module_id = ::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_federation_id_guard = None; let decode_indices_ = @@ -11298,13 +12723,12 @@ fn wire__crate__get_module_recovery_progress_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::get_module_recovery_progress( - &*api_federation_id_guard, - api_module_id, - ) - .await, - )?; + let output_ok = crate::guardian_login( + &*api_federation_id_guard, + api_peer, + api_password, + ) + .await?; Ok(output_ok) })() .await, @@ -11313,7 +12737,7 @@ fn wire__crate__get_module_recovery_progress_impl( }, ) } -fn wire__crate__get_note_summary_impl( +fn wire__crate__guardian_meta_accept_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11321,7 +12745,7 @@ fn wire__crate__get_note_summary_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_note_summary", + debug_name: "guardian_meta_accept", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11338,6 +12762,9 @@ fn wire__crate__get_note_summary_impl( let api_federation_id = , >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); + let api_value_hex = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -11361,7 +12788,13 @@ fn wire__crate__get_note_summary_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::get_note_summary(&*api_federation_id_guard).await?; + let output_ok = crate::guardian_meta_accept( + &*api_federation_id_guard, + api_peer, + api_password, + api_value_hex, + ) + .await?; Ok(output_ok) })() .await, @@ -11370,7 +12803,7 @@ fn wire__crate__get_note_summary_impl( }, ) } -fn wire__crate__get_nwc_connection_info_impl( +fn wire__crate__guardian_meta_propose_field_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11378,7 +12811,7 @@ fn wire__crate__get_nwc_connection_info_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_nwc_connection_info", + debug_name: "guardian_meta_propose_field", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11392,12 +12825,44 @@ fn wire__crate__get_nwc_connection_info_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); + let api_field = ::sse_decode(&mut deserializer); + let api_value = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = - Result::<_, ()>::Ok(crate::get_nwc_connection_info().await)?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::guardian_meta_propose_field( + &*api_federation_id_guard, + api_peer, + api_password, + api_field, + api_value, + ) + .await?; Ok(output_ok) })() .await, @@ -11406,7 +12871,7 @@ fn wire__crate__get_nwc_connection_info_impl( }, ) } -fn wire__crate__get_pegin_fee_quote_impl( +fn wire__crate__guardian_meta_state_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11414,7 +12879,7 @@ fn wire__crate__get_pegin_fee_quote_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_pegin_fee_quote", + debug_name: "guardian_meta_state", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11428,12 +12893,40 @@ fn wire__crate__get_pegin_fee_quote_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = ::sse_decode(&mut deserializer); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = crate::get_pegin_fee_quote(api_federation_id).await?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::guardian_meta_state( + &*api_federation_id_guard, + api_peer, + api_password, + ) + .await?; Ok(output_ok) })() .await, @@ -11442,7 +12935,7 @@ fn wire__crate__get_pegin_fee_quote_impl( }, ) } -fn wire__crate__get_relays_impl( +fn wire__crate__guardian_meta_withdraw_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11450,7 +12943,7 @@ fn wire__crate__get_relays_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_relays", + debug_name: "guardian_meta_withdraw", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11464,11 +12957,40 @@ fn wire__crate__get_relays_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_relays().await)?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::guardian_meta_withdraw( + &*api_federation_id_guard, + api_peer, + api_password, + ) + .await?; Ok(output_ok) })() .await, @@ -11477,7 +12999,7 @@ fn wire__crate__get_relays_impl( }, ) } -fn wire__crate__get_require_pin_for_spending_impl( +fn wire__crate__guardian_remove_gateway_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11485,7 +13007,7 @@ fn wire__crate__get_require_pin_for_spending_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_require_pin_for_spending", + debug_name: "guardian_remove_gateway", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11499,12 +13021,42 @@ fn wire__crate__get_require_pin_for_spending_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); + let api_gateway_url = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = - Result::<_, ()>::Ok(crate::get_require_pin_for_spending().await)?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::guardian_remove_gateway( + &*api_federation_id_guard, + api_peer, + api_password, + api_gateway_url, + ) + .await?; Ok(output_ok) })() .await, @@ -11513,7 +13065,7 @@ fn wire__crate__get_require_pin_for_spending_impl( }, ) } -fn wire__crate__get_show_msats_impl( +fn wire__crate__guardian_status_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -11521,7 +13073,7 @@ fn wire__crate__get_show_msats_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "get_show_msats", + debug_name: "guardian_status", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -11535,11 +13087,40 @@ fn wire__crate__get_show_msats_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_peer = ::sse_decode(&mut deserializer); + let api_password = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok(crate::get_show_msats().await)?; + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::guardian_status( + &*api_federation_id_guard, + api_peer, + api_password, + ) + .await?; Ok(output_ok) })() .await, @@ -12003,6 +13584,72 @@ fn wire__crate__load_multimint_impl( }, ) } +fn wire__crate__max_lightning_send_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "max_lightning_send", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + let api_lnaddress_or_lnurl = ::sse_decode(&mut deserializer); + let api_gateway = ::sse_decode(&mut deserializer); + let api_is_lnv2 = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = crate::max_lightning_send( + &*api_federation_id_guard, + api_lnaddress_or_lnurl, + api_gateway, + api_is_lnv2, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} fn wire__crate__paginate_contacts_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -12289,6 +13936,41 @@ fn wire__crate__payment_preview_with_gateways_impl( }, ) } +fn wire__crate__pin_lockout_seconds_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "pin_lockout_seconds", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = Result::<_, ()>::Ok(crate::pin_lockout_seconds().await)?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} fn wire__crate__receive_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -12458,6 +14140,64 @@ fn wire__crate__refresh_connections_impl( }, ) } +fn wire__crate__refresh_federation_meta_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "refresh_federation_meta", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_federation_id = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_federation_id_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_federation_id, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_federation_id_guard = + Some(api_federation_id.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_federation_id_guard = api_federation_id_guard.unwrap(); + let output_ok = + crate::refresh_federation_meta(&*api_federation_id_guard).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} fn wire__crate__register_ln_address_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -12753,79 +14493,15 @@ fn wire__crate__send_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::send( - &*api_federation_id_guard, - api_invoice, - api_gateway, - api_is_lnv2, - api_amount_with_fees, - api_federation_fee_msats, - api_gateway_fee_msats, - api_ln_address, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__crate__send_ecash_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "send_ecash", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_federation_id = , - >>::sse_decode(&mut deserializer); - let api_amount_msats = ::sse_decode(&mut deserializer); - let api_fee_msats = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, crate::app_error::EcashAppError>( - (move || async move { - let mut api_federation_id_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_federation_id, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_federation_id_guard = - Some(api_federation_id.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::send_ecash( + let output_ok = crate::send( &*api_federation_id_guard, - api_amount_msats, - api_fee_msats, + api_invoice, + api_gateway, + api_is_lnv2, + api_amount_with_fees, + api_federation_fee_msats, + api_gateway_fee_msats, + api_ln_address, ) .await?; Ok(output_ok) @@ -12836,7 +14512,7 @@ fn wire__crate__send_ecash_impl( }, ) } -fn wire__crate__send_lnaddress_impl( +fn wire__crate__send_ecash_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -12844,7 +14520,7 @@ fn wire__crate__send_lnaddress_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "send_lnaddress", + debug_name: "send_ecash", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -12862,7 +14538,7 @@ fn wire__crate__send_lnaddress_impl( flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); let api_amount_msats = ::sse_decode(&mut deserializer); - let api_address = ::sse_decode(&mut deserializer); + let api_fee_msats = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, crate::app_error::EcashAppError>( @@ -12886,10 +14562,10 @@ fn wire__crate__send_lnaddress_impl( } } let api_federation_id_guard = api_federation_id_guard.unwrap(); - let output_ok = crate::send_lnaddress( + let output_ok = crate::send_ecash( &*api_federation_id_guard, api_amount_msats, - api_address, + api_fee_msats, ) .await?; Ok(output_ok) @@ -13059,6 +14735,78 @@ fn wire__crate__set_nwc_connection_info_impl( }, ) } +fn wire__crate__set_nwc_daily_budget_sats_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "set_nwc_daily_budget_sats", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_sats = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let output_ok = crate::set_nwc_daily_budget_sats(api_sats).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__set_nwc_max_payment_sats_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "set_nwc_max_payment_sats", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_sats = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let output_ok = crate::set_nwc_max_payment_sats(api_sats).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} fn wire__crate__set_pin_code_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -13118,13 +14866,14 @@ fn wire__crate__set_require_pin_for_spending_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_require = ::sse_decode(&mut deserializer); + let api_current_pin = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { - let output_ok = Result::<_, ()>::Ok({ - crate::set_require_pin_for_spending(api_require).await; - })?; + let output_ok = + crate::set_require_pin_for_spending(api_require, api_current_pin) + .await?; Ok(output_ok) })() .await, @@ -13171,6 +14920,44 @@ fn wire__crate__set_show_msats_impl( }, ) } +fn wire__crate__set_tap_receive_enabled_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "set_tap_receive_enabled", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_enabled = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let output_ok = Result::<_, ()>::Ok({ + crate::set_tap_receive_enabled(api_enabled).await; + })?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} fn wire__crate__subscribe_deposits_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -13324,7 +15111,8 @@ fn wire__crate__subscribe_recovery_progress_impl( &mut deserializer, ); let api_federation_id = ::sse_decode(&mut deserializer); - let api_module_id = ::sse_decode(&mut deserializer); + let api_recovery_module = + ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, ()>( @@ -13333,7 +15121,7 @@ fn wire__crate__subscribe_recovery_progress_impl( crate::subscribe_recovery_progress( api_sink, api_federation_id, - api_module_id, + api_recovery_module, ) .await; })?; @@ -14477,11 +16265,13 @@ impl SseDecode for crate::multimint::AwaitingConfsEvent { let mut var_outpoint = ::sse_decode(deserializer); let mut var_blockHeight = ::sse_decode(deserializer); let mut var_needed = ::sse_decode(deserializer); + let mut var_txid = >::sse_decode(deserializer); return crate::multimint::AwaitingConfsEvent { amount: var_amount, outpoint: var_outpoint, block_height: var_blockHeight, needed: var_needed, + txid: var_txid, }; } } @@ -14512,9 +16302,11 @@ impl SseDecode for crate::multimint::ClaimedEvent { fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut var_amount = ::sse_decode(deserializer); let mut var_outpoint = ::sse_decode(deserializer); + let mut var_txid = >::sse_decode(deserializer); return crate::multimint::ClaimedEvent { amount: var_amount, outpoint: var_outpoint, + txid: var_txid, }; } } @@ -14524,9 +16316,11 @@ impl SseDecode for crate::multimint::ConfirmedEvent { fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut var_amount = ::sse_decode(deserializer); let mut var_outpoint = ::sse_decode(deserializer); + let mut var_txid = >::sse_decode(deserializer); return crate::multimint::ConfirmedEvent { amount: var_amount, outpoint: var_outpoint, + txid: var_txid, }; } } @@ -14709,13 +16503,21 @@ impl SseDecode for crate::app_error::EcashAppError { return crate::app_error::EcashAppError::InvalidLightningAddress(var_field0); } 11 => { + let mut var_requestedMsats = ::sse_decode(deserializer); + let mut var_invoiceMsats = ::sse_decode(deserializer); + return crate::app_error::EcashAppError::LnurlAmountMismatch { + requested_msats: var_requestedMsats, + invoice_msats: var_invoiceMsats, + }; + } + 12 => { let mut var_field0 = ::sse_decode(deserializer); return crate::app_error::EcashAppError::PaymentRefunded(var_field0); } - 12 => { + 13 => { return crate::app_error::EcashAppError::Timeout; } - 13 => { + 14 => { let mut var_field0 = ::sse_decode(deserializer); return crate::app_error::EcashAppError::Other(var_field0); } @@ -14824,6 +16626,145 @@ impl SseDecode for crate::multimint::Guardian { } } +impl SseDecode for crate::multimint::GuardianAuditSummary { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_netAssetsMsats = ::sse_decode(deserializer); + let mut var_moduleSummaries = + >::sse_decode(deserializer); + return crate::multimint::GuardianAuditSummary { + net_assets_msats: var_netAssetsMsats, + module_summaries: var_moduleSummaries, + }; + } +} + +impl SseDecode for crate::multimint::GuardianBackupStatistics { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_numBackups = ::sse_decode(deserializer); + let mut var_totalSizeBytes = ::sse_decode(deserializer); + let mut var_refreshed1D = ::sse_decode(deserializer); + let mut var_refreshed1W = ::sse_decode(deserializer); + let mut var_refreshed1M = ::sse_decode(deserializer); + let mut var_refreshed3M = ::sse_decode(deserializer); + return crate::multimint::GuardianBackupStatistics { + num_backups: var_numBackups, + total_size_bytes: var_totalSizeBytes, + refreshed_1d: var_refreshed1D, + refreshed_1w: var_refreshed1W, + refreshed_1m: var_refreshed1M, + refreshed_3m: var_refreshed3M, + }; + } +} + +impl SseDecode for crate::multimint::GuardianBitcoinStatus { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_kind = >::sse_decode(deserializer); + let mut var_url = >::sse_decode(deserializer); + let mut var_consensusBlockCount = ::sse_decode(deserializer); + let mut var_localBlockCount = >::sse_decode(deserializer); + let mut var_consensusFeerateSatsPerKvb = >::sse_decode(deserializer); + return crate::multimint::GuardianBitcoinStatus { + kind: var_kind, + url: var_url, + consensus_block_count: var_consensusBlockCount, + local_block_count: var_localBlockCount, + consensus_feerate_sats_per_kvb: var_consensusFeerateSatsPerKvb, + }; + } +} + +impl SseDecode for crate::multimint::GuardianHealth { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_consensusRunning = ::sse_decode(deserializer); + let mut var_serverStatus = ::sse_decode(deserializer); + let mut var_sessionCount = >::sse_decode(deserializer); + let mut var_peersOnline = ::sse_decode(deserializer); + let mut var_peersTotal = ::sse_decode(deserializer); + let mut var_consensusOrdLatencyMs = >::sse_decode(deserializer); + let mut var_scheduledShutdownSession = >::sse_decode(deserializer); + return crate::multimint::GuardianHealth { + consensus_running: var_consensusRunning, + server_status: var_serverStatus, + session_count: var_sessionCount, + peers_online: var_peersOnline, + peers_total: var_peersTotal, + consensus_ord_latency_ms: var_consensusOrdLatencyMs, + scheduled_shutdown_session: var_scheduledShutdownSession, + }; + } +} + +impl SseDecode for crate::multimint::GuardianMetaProposal { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_peerIds = >::sse_decode(deserializer); + let mut var_valueHex = ::sse_decode(deserializer); + let mut var_valueJson = >::sse_decode(deserializer); + let mut var_isOurs = ::sse_decode(deserializer); + return crate::multimint::GuardianMetaProposal { + peer_ids: var_peerIds, + value_hex: var_valueHex, + value_json: var_valueJson, + is_ours: var_isOurs, + }; + } +} + +impl SseDecode for crate::multimint::GuardianMetaState { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_consensusJson = >::sse_decode(deserializer); + let mut var_revision = >::sse_decode(deserializer); + let mut var_proposals = + >::sse_decode(deserializer); + let mut var_threshold = ::sse_decode(deserializer); + let mut var_totalGuardians = ::sse_decode(deserializer); + return crate::multimint::GuardianMetaState { + consensus_json: var_consensusJson, + revision: var_revision, + proposals: var_proposals, + threshold: var_threshold, + total_guardians: var_totalGuardians, + }; + } +} + +impl SseDecode for crate::multimint::GuardianModuleSummary { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_moduleInstanceId = ::sse_decode(deserializer); + let mut var_kind = ::sse_decode(deserializer); + let mut var_netAssetsMsats = ::sse_decode(deserializer); + return crate::multimint::GuardianModuleSummary { + module_instance_id: var_moduleInstanceId, + kind: var_kind, + net_assets_msats: var_netAssetsMsats, + }; + } +} + +impl SseDecode for crate::multimint::GuardianStatusSummary { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut var_health = ::sse_decode(deserializer); + let mut var_bitcoin = + >::sse_decode(deserializer); + let mut var_hasLnv2 = ::sse_decode(deserializer); + let mut var_hasMeta = ::sse_decode(deserializer); + return crate::multimint::GuardianStatusSummary { + health: var_health, + bitcoin: var_bitcoin, + has_lnv2: var_hasLnv2, + has_meta: var_hasMeta, + }; + } +} + impl SseDecode for i32 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -14831,6 +16772,13 @@ impl SseDecode for i32 { } } +impl SseDecode for i64 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + deserializer.cursor.read_i64::().unwrap() + } +} + impl SseDecode for crate::multimint::InvoicePaidEvent { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -14968,6 +16916,34 @@ impl SseDecode for Vec { } } +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode( + deserializer, + )); + } + return ans_; + } +} + +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode( + deserializer, + )); + } + return ans_; + } +} + impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -14992,6 +16968,18 @@ impl SseDecode for Vec { } } +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode(deserializer)); + } + return ans_; + } +} + impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -15132,7 +17120,7 @@ impl SseDecode for crate::multimint::LNAddressStatus { } } -impl SseDecode for crate::LnurlWithdrawParams { +impl SseDecode for crate::lnurl_client::LnurlWithdrawParams { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut var_callback = ::sse_decode(deserializer); @@ -15140,7 +17128,7 @@ impl SseDecode for crate::LnurlWithdrawParams { let mut var_minWithdrawableMsats = ::sse_decode(deserializer); let mut var_maxWithdrawableMsats = ::sse_decode(deserializer); let mut var_defaultDescription = ::sse_decode(deserializer); - return crate::LnurlWithdrawParams { + return crate::lnurl_client::LnurlWithdrawParams { callback: var_callback, k1: var_k1, min_withdrawable_msats: var_minWithdrawableMsats, @@ -15170,9 +17158,11 @@ impl SseDecode for crate::multimint::MempoolEvent { fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { let mut var_amount = ::sse_decode(deserializer); let mut var_outpoint = ::sse_decode(deserializer); + let mut var_txid = >::sse_decode(deserializer); return crate::multimint::MempoolEvent { amount: var_amount, outpoint: var_outpoint, + txid: var_txid, }; } } @@ -15227,7 +17217,7 @@ impl SseDecode for crate::multimint::MultimintEvent { } 4 => { let mut var_field0 = ::sse_decode(deserializer); - let mut var_field1 = ::sse_decode(deserializer); + let mut var_field1 = ::sse_decode(deserializer); let mut var_field2 = ::sse_decode(deserializer); let mut var_field3 = ::sse_decode(deserializer); return crate::multimint::MultimintEvent::RecoveryProgress( @@ -15266,6 +17256,10 @@ impl SseDecode for crate::multimint::MultimintEvent { return crate::multimint::MultimintEvent::UpdateAvailable(var_field0); } 11 => { + let mut var_field0 = ::sse_decode(deserializer); + return crate::multimint::MultimintEvent::MetaUpdated(var_field0); + } + 12 => { let mut var_field0 = <(FederationId, crate::app_error::EcashAppError)>::sse_decode(deserializer); return crate::multimint::MultimintEvent::PaymentError(var_field0); @@ -15317,6 +17311,9 @@ impl SseDecode for crate::multimint::NostrRecoveryPhase { let mut var_field0 = ::sse_decode(deserializer); return crate::multimint::NostrRecoveryPhase::RejoiningFederations(var_field0); } + 4 => { + return crate::multimint::NostrRecoveryPhase::NoBackupFound; + } _ => { unimplemented!(""); } @@ -15324,18 +17321,6 @@ impl SseDecode for crate::multimint::NostrRecoveryPhase { } } -impl SseDecode for crate::db::NostrWalletConnectConfig { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_secretKey = <[u8; 32]>::sse_decode(deserializer); - let mut var_relay = ::sse_decode(deserializer); - return crate::db::NostrWalletConnectConfig { - secret_key: var_secretKey, - relay: var_relay, - }; - } -} - impl SseDecode for crate::nostr::NWCConnectionInfo { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -15449,6 +17434,19 @@ impl SseDecode for Option { } } +impl SseDecode for Option { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + if (::sse_decode(deserializer)) { + return Some(::sse_decode( + deserializer, + )); + } else { + return None; + } + } +} + impl SseDecode for Option { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -15716,25 +17714,20 @@ impl SseDecode for (ReissueExternalNotesState, Option) { } } -impl SseDecode for (crate::db::FiatCurrency, u64) { +impl SseDecode for (bool, Option) { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_field0 = ::sse_decode(deserializer); - let mut var_field1 = ::sse_decode(deserializer); + let mut var_field0 = ::sse_decode(deserializer); + let mut var_field1 = >::sse_decode(deserializer); return (var_field0, var_field1); } } -impl SseDecode - for ( - crate::db::NostrWalletConnectConfig, - crate::nostr::NWCConnectionInfo, - ) -{ +impl SseDecode for (crate::db::FiatCurrency, u64) { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_field0 = ::sse_decode(deserializer); - let mut var_field1 = ::sse_decode(deserializer); + let mut var_field0 = ::sse_decode(deserializer); + let mut var_field1 = ::sse_decode(deserializer); return (var_field0, var_field1); } } @@ -15824,6 +17817,19 @@ impl SseDecode for (u64, usize) { } } +impl SseDecode for crate::multimint::RecoveryModule { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = ::sse_decode(deserializer); + return match inner { + 0 => crate::multimint::RecoveryModule::Lightning, + 1 => crate::multimint::RecoveryModule::Ecash, + 2 => crate::multimint::RecoveryModule::Onchain, + _ => unreachable!("Invalid variant for RecoveryModule: {}", inner), + }; + } +} + impl SseDecode for crate::multimint::ReissueFees { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -15853,24 +17859,6 @@ impl SseDecode for crate::multimint::RelayStatusKind { } } -impl SseDecode for crate::multimint::SendGatewaySelection { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut var_gatewayUrl = ::sse_decode(deserializer); - let mut var_amountWithFees = ::sse_decode(deserializer); - let mut var_gatewayFee = ::sse_decode(deserializer); - let mut var_federationFee = ::sse_decode(deserializer); - let mut var_isLnv2 = ::sse_decode(deserializer); - return crate::multimint::SendGatewaySelection { - gateway_url: var_gatewayUrl, - amount_with_fees: var_amountWithFees, - gateway_fee: var_gatewayFee, - federation_fee: var_federationFee, - is_lnv2: var_isLnv2, - }; - } -} - impl SseDecode for crate::multimint::Transaction { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -16021,14 +18009,6 @@ impl SseDecode for u8 { } } -impl SseDecode for [u8; 32] { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = >::sse_decode(deserializer); - return flutter_rust_bridge::for_generated::from_vec_to_array(inner); - } -} - impl SseDecode for () { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {} @@ -16126,431 +18106,507 @@ fn pde_ffi_dispatcher_primary_impl( rust_vec_len, data_len, ), - 56 => { - wire__crate__multimint__Multimint_clear_pin_hash_impl(port, ptr, rust_vec_len, data_len) - } - 57 => wire__crate__multimint__Multimint_compute_all_gateway_previews_impl( + 56 => wire__crate__multimint__Multimint_compute_all_gateway_previews_impl( port, ptr, rust_vec_len, data_len, ), - 58 => wire__crate__multimint__Multimint_compute_receive_amount_with_fees_impl( + 57 => wire__crate__multimint__Multimint_compute_receive_amount_with_fees_impl( port, ptr, rust_vec_len, data_len, ), - 59 => wire__crate__multimint__Multimint_contains_client_impl( + 58 => wire__crate__multimint__Multimint_contains_client_impl( port, ptr, rust_vec_len, data_len, ), - 60 => wire__crate__multimint__Multimint_federations_impl(port, ptr, rust_vec_len, data_len), - 61 => { + 59 => wire__crate__multimint__Multimint_federations_impl(port, ptr, rust_vec_len, data_len), + 60 => { wire__crate__multimint__Multimint_get_addresses_impl(port, ptr, rust_vec_len, data_len) } - 62 => wire__crate__multimint__Multimint_get_all_btc_prices_impl( + 61 => wire__crate__multimint__Multimint_get_all_btc_prices_impl( port, ptr, rust_vec_len, data_len, ), - 63 => wire__crate__multimint__Multimint_get_all_invite_codes_impl( + 62 => wire__crate__multimint__Multimint_get_all_invite_codes_impl( port, ptr, rust_vec_len, data_len, ), - 64 => wire__crate__multimint__Multimint_get_bitcoin_display_impl( + 63 => wire__crate__multimint__Multimint_get_bitcoin_display_impl( port, ptr, rust_vec_len, data_len, ), - 65 => { + 64 => { wire__crate__multimint__Multimint_get_btc_price_impl(port, ptr, rust_vec_len, data_len) } - 66 => wire__crate__multimint__Multimint_get_cached_federation_meta_impl( + 65 => wire__crate__multimint__Multimint_get_cached_federation_meta_impl( port, ptr, rust_vec_len, data_len, ), - 67 => wire__crate__multimint__Multimint_get_federation_order_impl( + 66 => wire__crate__multimint__Multimint_get_federation_order_impl( port, ptr, rust_vec_len, data_len, ), - 68 => wire__crate__multimint__Multimint_get_fiat_currency_impl( + 67 => wire__crate__multimint__Multimint_get_fiat_currency_impl( port, ptr, rust_vec_len, data_len, ), - 69 => wire__crate__multimint__Multimint_get_invite_code_impl( + 68 => wire__crate__multimint__Multimint_get_invite_code_impl( port, ptr, rust_vec_len, data_len, ), - 70 => wire__crate__multimint__Multimint_get_ln_address_config_impl( + 69 => wire__crate__multimint__Multimint_get_ln_address_config_impl( port, ptr, rust_vec_len, data_len, ), - 71 => wire__crate__multimint__Multimint_get_max_withdrawable_amount_impl( + 70 => wire__crate__multimint__Multimint_get_max_withdrawable_amount_impl( port, ptr, rust_vec_len, data_len, ), - 72 => { + 71 => { wire__crate__multimint__Multimint_get_mnemonic_impl(port, ptr, rust_vec_len, data_len) } - 73 => wire__crate__multimint__Multimint_get_note_summary_impl( + 72 => wire__crate__multimint__Multimint_get_note_summary_impl( port, ptr, rust_vec_len, data_len, ), - 74 => wire__crate__multimint__Multimint_get_pegin_fee_quote_impl( + 73 => wire__crate__multimint__Multimint_get_pegin_fee_quote_impl( port, ptr, rust_vec_len, data_len, ), - 75 => wire__crate__multimint__Multimint_get_recovery_progress_impl( + 74 => wire__crate__multimint__Multimint_get_recovery_progress_impl( port, ptr, rust_vec_len, data_len, ), - 76 => wire__crate__multimint__Multimint_get_require_pin_for_spending_impl( + 75 => { + wire__crate__multimint__Multimint_get_show_msats_impl(port, ptr, rust_vec_len, data_len) + } + 76 => wire__crate__multimint__Multimint_get_tap_receive_enabled_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 77 => wire__crate__multimint__Multimint_guardian_add_gateway_impl( port, ptr, rust_vec_len, data_len, ), - 77 => { - wire__crate__multimint__Multimint_get_show_msats_impl(port, ptr, rust_vec_len, data_len) - } 78 => { - wire__crate__multimint__Multimint_has_pin_code_impl(port, ptr, rust_vec_len, data_len) + wire__crate__multimint__Multimint_guardian_audit_impl(port, ptr, rust_vec_len, data_len) } - 79 => wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( + 79 => wire__crate__multimint__Multimint_guardian_backup_statistics_impl( port, ptr, rust_vec_len, data_len, ), - 80 => wire__crate__multimint__Multimint_join_federation_impl( + 80 => wire__crate__multimint__Multimint_guardian_list_gateways_impl( port, ptr, rust_vec_len, data_len, ), - 81 => wire__crate__multimint__Multimint_leave_federation_impl( + 81 => { + wire__crate__multimint__Multimint_guardian_login_impl(port, ptr, rust_vec_len, data_len) + } + 82 => wire__crate__multimint__Multimint_guardian_meta_accept_impl( port, ptr, rust_vec_len, data_len, ), - 82 => wire__crate__multimint__Multimint_new_impl(port, ptr, rust_vec_len, data_len), - 83 => wire__crate__multimint__Multimint_parse_ecash_impl(port, ptr, rust_vec_len, data_len), - 84 => wire__crate__multimint__Multimint_receive_impl(port, ptr, rust_vec_len, data_len), - 85 => wire__crate__multimint__Multimint_recheck_address_impl( + 83 => wire__crate__multimint__Multimint_guardian_meta_propose_field_impl( port, ptr, rust_vec_len, data_len, ), - 86 => wire__crate__multimint__Multimint_recover_ln_address_impl( + 84 => wire__crate__multimint__Multimint_guardian_meta_state_impl( port, ptr, rust_vec_len, data_len, ), - 87 => wire__crate__multimint__Multimint_refresh_connections_impl( + 85 => wire__crate__multimint__Multimint_guardian_meta_withdraw_impl( port, ptr, rust_vec_len, data_len, ), - 88 => wire__crate__multimint__Multimint_register_ln_address_impl( + 86 => wire__crate__multimint__Multimint_guardian_remove_gateway_impl( port, ptr, rust_vec_len, data_len, ), - 89 => { - wire__crate__multimint__Multimint_reissue_ecash_impl(port, ptr, rust_vec_len, data_len) - } - 90 => wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( + 87 => wire__crate__multimint__Multimint_guardian_status_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 88 => wire__crate__multimint__Multimint_has_seed_phrase_ack_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 89 => wire__crate__multimint__Multimint_join_federation_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 90 => wire__crate__multimint__Multimint_leave_federation_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 91 => wire__crate__multimint__Multimint_max_lightning_send_impl( port, ptr, rust_vec_len, data_len, ), - 91 => wire__crate__multimint__Multimint_select_send_gateway_impl( + 92 => wire__crate__multimint__Multimint_new_impl(port, ptr, rust_vec_len, data_len), + 93 => wire__crate__multimint__Multimint_parse_ecash_impl(port, ptr, rust_vec_len, data_len), + 94 => wire__crate__multimint__Multimint_probe_invoice_is_loopback_impl( port, ptr, rust_vec_len, data_len, ), - 92 => wire__crate__multimint__Multimint_send_impl(port, ptr, rust_vec_len, data_len), - 93 => wire__crate__multimint__Multimint_send_ecash_impl(port, ptr, rust_vec_len, data_len), - 94 => wire__crate__multimint__Multimint_set_bitcoin_display_impl( + 95 => wire__crate__multimint__Multimint_receive_impl(port, ptr, rust_vec_len, data_len), + 96 => wire__crate__multimint__Multimint_recheck_address_impl( port, ptr, rust_vec_len, data_len, ), - 95 => wire__crate__multimint__Multimint_set_federation_order_impl( + 97 => wire__crate__multimint__Multimint_recover_ln_address_impl( port, ptr, rust_vec_len, data_len, ), - 96 => wire__crate__multimint__Multimint_set_fiat_currency_impl( + 98 => wire__crate__multimint__Multimint_refresh_connections_impl( port, ptr, rust_vec_len, data_len, ), - 97 => { - wire__crate__multimint__Multimint_set_pin_hash_impl(port, ptr, rust_vec_len, data_len) + 99 => wire__crate__multimint__Multimint_refresh_federation_meta_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 100 => wire__crate__multimint__Multimint_register_ln_address_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 101 => { + wire__crate__multimint__Multimint_reissue_ecash_impl(port, ptr, rust_vec_len, data_len) } - 98 => wire__crate__multimint__Multimint_set_require_pin_for_spending_impl( + 102 => wire__crate__multimint__Multimint_rejoin_from_backup_invites_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 103 => wire__crate__multimint__Multimint_send_impl(port, ptr, rust_vec_len, data_len), + 104 => wire__crate__multimint__Multimint_send_ecash_impl(port, ptr, rust_vec_len, data_len), + 105 => wire__crate__multimint__Multimint_set_bitcoin_display_impl( port, ptr, rust_vec_len, data_len, ), - 99 => { + 106 => wire__crate__multimint__Multimint_set_federation_order_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 107 => wire__crate__multimint__Multimint_set_fiat_currency_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 108 => { wire__crate__multimint__Multimint_set_show_msats_impl(port, ptr, rust_vec_len, data_len) } - 100 => { + 109 => wire__crate__multimint__Multimint_set_tap_receive_enabled_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 110 => { wire__crate__multimint__Multimint_transactions_impl(port, ptr, rust_vec_len, data_len) } - 101 => wire__crate__multimint__Multimint_verify_pin_impl(port, ptr, rust_vec_len, data_len), - 102 => { + 111 => { wire__crate__multimint__Multimint_wallet_summary_impl(port, ptr, rust_vec_len, data_len) } - 103 => wire__crate__multimint__Multimint_withdraw_to_address_impl( + 112 => wire__crate__multimint__Multimint_withdraw_to_address_impl( port, ptr, rust_vec_len, data_len, ), - 104 => wire__crate__nostr__NostrClient_backup_invite_codes_impl( + 113 => wire__crate__nostr__NostrClient_backup_invite_codes_impl( port, ptr, rust_vec_len, data_len, ), - 105 => wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( + 114 => wire__crate__nostr__NostrClient_clear_contacts_and_stop_sync_impl( port, ptr, rust_vec_len, data_len, ), - 106 => wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( + 115 => wire__crate__nostr__NostrClient_fetch_nostr_profiles_impl( port, ptr, rust_vec_len, data_len, ), - 107 => { + 116 => { wire__crate__nostr__NostrClient_get_all_contacts_impl(port, ptr, rust_vec_len, data_len) } - 108 => wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( + 117 => wire__crate__nostr__NostrClient_get_backup_invite_codes_impl( port, ptr, rust_vec_len, data_len, ), - 109 => wire__crate__nostr__NostrClient_get_contact_impl(port, ptr, rust_vec_len, data_len), - 110 => wire__crate__nostr__NostrClient_get_contact_sync_config_impl( + 118 => wire__crate__nostr__NostrClient_get_contact_impl(port, ptr, rust_vec_len, data_len), + 119 => wire__crate__nostr__NostrClient_get_contact_sync_config_impl( port, ptr, rust_vec_len, data_len, ), - 111 => wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( + 120 => wire__crate__nostr__NostrClient_get_follows_for_pubkey_impl( port, ptr, rust_vec_len, data_len, ), - 112 => { - wire__crate__nostr__NostrClient_get_nwc_config_impl(port, ptr, rust_vec_len, data_len) - } - 113 => wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( + 121 => wire__crate__nostr__NostrClient_get_nwc_connection_info_impl( port, ptr, rust_vec_len, data_len, ), - 114 => wire__crate__nostr__NostrClient_get_public_federations_impl( + 122 => wire__crate__nostr__NostrClient_get_public_federations_impl( port, ptr, rust_vec_len, data_len, ), - 115 => wire__crate__nostr__NostrClient_get_relays_impl(port, ptr, rust_vec_len, data_len), - 116 => wire__crate__nostr__NostrClient_has_imported_contacts_impl( + 123 => wire__crate__nostr__NostrClient_get_relays_impl(port, ptr, rust_vec_len, data_len), + 124 => wire__crate__nostr__NostrClient_has_imported_contacts_impl( port, ptr, rust_vec_len, data_len, ), - 117 => wire__crate__nostr__NostrClient_insert_relay_impl(port, ptr, rust_vec_len, data_len), - 118 => { - wire__crate__nostr__NostrClient_listen_for_nwc_impl(port, ptr, rust_vec_len, data_len) - } - 119 => wire__crate__nostr__NostrClient_new_impl(port, ptr, rust_vec_len, data_len), - 120 => wire__crate__nostr__NostrClient_paginate_contacts_impl( + 125 => wire__crate__nostr__NostrClient_insert_relay_impl(port, ptr, rust_vec_len, data_len), + 126 => wire__crate__nostr__NostrClient_new_impl(port, ptr, rust_vec_len, data_len), + 127 => wire__crate__nostr__NostrClient_paginate_contacts_impl( port, ptr, rust_vec_len, data_len, ), - 121 => wire__crate__nostr__NostrClient_paginate_search_contacts_impl( + 128 => wire__crate__nostr__NostrClient_paginate_search_contacts_impl( port, ptr, rust_vec_len, data_len, ), - 122 => wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( + 129 => wire__crate__nostr__NostrClient_remove_nwc_connection_info_impl( port, ptr, rust_vec_len, data_len, ), - 123 => wire__crate__nostr__NostrClient_remove_relay_impl(port, ptr, rust_vec_len, data_len), - 124 => wire__crate__nostr__NostrClient_set_contact_sync_config_impl( + 130 => wire__crate__nostr__NostrClient_remove_relay_impl(port, ptr, rust_vec_len, data_len), + 131 => wire__crate__nostr__NostrClient_set_contact_sync_config_impl( port, ptr, rust_vec_len, data_len, ), - 125 => wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( + 132 => wire__crate__nostr__NostrClient_set_nwc_connection_info_impl( port, ptr, rust_vec_len, data_len, ), - 126 => { + 133 => { wire__crate__nostr__NostrClient_sync_contacts_impl(port, ptr, rust_vec_len, data_len) } - 127 => wire__crate__nostr__NostrClient_verify_nip05_impl(port, ptr, rust_vec_len, data_len), - 131 => wire__crate__fountain__OobNotesEncoder_next_fragment_impl( + 134 => wire__crate__nostr__NostrClient_verify_nip05_impl(port, ptr, rust_vec_len, data_len), + 138 => wire__crate__fountain__OobNotesEncoder_next_fragment_impl( port, ptr, rust_vec_len, data_len, ), - 161 => wire__crate__ack_seed_phrase_impl(port, ptr, rust_vec_len, data_len), - 162 => wire__crate__add_recovery_relay_impl(port, ptr, rust_vec_len, data_len), - 163 => wire__crate__allocate_deposit_address_impl(port, ptr, rust_vec_len, data_len), - 164 => wire__crate__await_ecash_reissue_impl(port, ptr, rust_vec_len, data_len), - 165 => wire__crate__await_receive_impl(port, ptr, rust_vec_len, data_len), - 166 => wire__crate__await_send_impl(port, ptr, rust_vec_len, data_len), - 167 => wire__crate__await_withdraw_impl(port, ptr, rust_vec_len, data_len), - 168 => wire__crate__backup_invite_codes_impl(port, ptr, rust_vec_len, data_len), - 169 => wire__crate__balance_impl(port, ptr, rust_vec_len, data_len), - 170 => wire__crate__calculate_ecash_reissue_fees_impl(port, ptr, rust_vec_len, data_len), - 171 => wire__crate__calculate_ecash_send_fees_impl(port, ptr, rust_vec_len, data_len), - 172 => wire__crate__calculate_withdraw_fees_impl(port, ptr, rust_vec_len, data_len), - 173 => wire__crate__check_ecash_spent_impl(port, ptr, rust_vec_len, data_len), - 174 => wire__crate__check_ln_address_availability_impl(port, ptr, rust_vec_len, data_len), - 175 => wire__crate__claim_random_ln_address_impl(port, ptr, rust_vec_len, data_len), - 176 => wire__crate__clear_contacts_and_stop_sync_impl(port, ptr, rust_vec_len, data_len), - 177 => wire__crate__clear_pin_code_impl(port, ptr, rust_vec_len, data_len), - 178 => { + 168 => wire__crate__ack_seed_phrase_impl(port, ptr, rust_vec_len, data_len), + 169 => wire__crate__add_recovery_relay_impl(port, ptr, rust_vec_len, data_len), + 170 => wire__crate__allocate_deposit_address_impl(port, ptr, rust_vec_len, data_len), + 171 => wire__crate__await_ecash_reissue_impl(port, ptr, rust_vec_len, data_len), + 172 => wire__crate__await_receive_impl(port, ptr, rust_vec_len, data_len), + 173 => wire__crate__await_send_impl(port, ptr, rust_vec_len, data_len), + 174 => wire__crate__await_withdraw_impl(port, ptr, rust_vec_len, data_len), + 175 => wire__crate__backup_invite_codes_impl(port, ptr, rust_vec_len, data_len), + 176 => wire__crate__balance_impl(port, ptr, rust_vec_len, data_len), + 177 => wire__crate__calculate_ecash_reissue_fees_impl(port, ptr, rust_vec_len, data_len), + 178 => wire__crate__calculate_ecash_send_fees_impl(port, ptr, rust_vec_len, data_len), + 179 => wire__crate__calculate_withdraw_fees_impl(port, ptr, rust_vec_len, data_len), + 180 => wire__crate__change_pin_code_impl(port, ptr, rust_vec_len, data_len), + 181 => wire__crate__check_ecash_spent_impl(port, ptr, rust_vec_len, data_len), + 182 => wire__crate__check_ln_address_availability_impl(port, ptr, rust_vec_len, data_len), + 183 => wire__crate__claim_random_ln_address_impl(port, ptr, rust_vec_len, data_len), + 184 => wire__crate__clear_contacts_and_stop_sync_impl(port, ptr, rust_vec_len, data_len), + 185 => wire__crate__clear_pin_code_impl(port, ptr, rust_vec_len, data_len), + 186 => { wire__crate__compute_receive_amount_with_fees_impl(port, ptr, rust_vec_len, data_len) } - 179 => wire__crate__db__connector_default_impl(port, ptr, rust_vec_len, data_len), - 180 => wire__crate__create_multimint_from_words_impl(port, ptr, rust_vec_len, data_len), - 181 => wire__crate__create_new_multimint_impl(port, ptr, rust_vec_len, data_len), - 183 => wire__crate__execute_lnurl_withdraw_impl(port, ptr, rust_vec_len, data_len), - 184 => wire__crate__federation_id_to_string_impl(port, ptr, rust_vec_len, data_len), - 185 => wire__crate__federations_impl(port, ptr, rust_vec_len, data_len), - 186 => wire__crate__fetch_lnurl_withdraw_impl(port, ptr, rust_vec_len, data_len), - 187 => wire__crate__get_addresses_impl(port, ptr, rust_vec_len, data_len), - 188 => wire__crate__get_all_btc_prices_impl(port, ptr, rust_vec_len, data_len), - 189 => wire__crate__get_all_contacts_impl(port, ptr, rust_vec_len, data_len), - 190 => wire__crate__get_bitcoin_display_impl(port, ptr, rust_vec_len, data_len), - 191 => wire__crate__get_btc_price_impl(port, ptr, rust_vec_len, data_len), - 192 => wire__crate__get_event_bus_impl(port, ptr, rust_vec_len, data_len), - 193 => wire__crate__get_federation_meta_impl(port, ptr, rust_vec_len, data_len), - 194 => wire__crate__get_federation_order_impl(port, ptr, rust_vec_len, data_len), - 195 => wire__crate__get_fiat_currency_impl(port, ptr, rust_vec_len, data_len), - 196 => wire__crate__get_invite_code_impl(port, ptr, rust_vec_len, data_len), - 197 => { + 187 => wire__crate__db__connector_default_impl(port, ptr, rust_vec_len, data_len), + 188 => wire__crate__create_multimint_from_words_impl(port, ptr, rust_vec_len, data_len), + 189 => wire__crate__create_new_multimint_impl(port, ptr, rust_vec_len, data_len), + 191 => wire__crate__execute_lnurl_withdraw_impl(port, ptr, rust_vec_len, data_len), + 192 => wire__crate__federation_id_to_string_impl(port, ptr, rust_vec_len, data_len), + 193 => wire__crate__federations_impl(port, ptr, rust_vec_len, data_len), + 194 => wire__crate__fetch_lnurl_withdraw_impl(port, ptr, rust_vec_len, data_len), + 195 => wire__crate__get_addresses_impl(port, ptr, rust_vec_len, data_len), + 196 => wire__crate__get_all_btc_prices_impl(port, ptr, rust_vec_len, data_len), + 197 => wire__crate__get_all_contacts_impl(port, ptr, rust_vec_len, data_len), + 198 => wire__crate__get_bitcoin_display_impl(port, ptr, rust_vec_len, data_len), + 199 => wire__crate__get_btc_price_impl(port, ptr, rust_vec_len, data_len), + 200 => wire__crate__get_event_bus_impl(port, ptr, rust_vec_len, data_len), + 201 => wire__crate__get_federation_meta_impl(port, ptr, rust_vec_len, data_len), + 202 => wire__crate__get_federation_order_impl(port, ptr, rust_vec_len, data_len), + 203 => wire__crate__get_fiat_currency_impl(port, ptr, rust_vec_len, data_len), + 204 => wire__crate__get_invite_code_impl(port, ptr, rust_vec_len, data_len), + 205 => { wire__crate__get_invoice_from_lnaddress_or_lnurl_impl(port, ptr, rust_vec_len, data_len) } - 198 => wire__crate__get_ln_address_config_impl(port, ptr, rust_vec_len, data_len), - 199 => wire__crate__get_max_withdrawable_amount_impl(port, ptr, rust_vec_len, data_len), - 200 => wire__crate__get_mnemonic_impl(port, ptr, rust_vec_len, data_len), - 201 => wire__crate__get_module_recovery_progress_impl(port, ptr, rust_vec_len, data_len), - 202 => wire__crate__get_note_summary_impl(port, ptr, rust_vec_len, data_len), - 203 => wire__crate__get_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), - 204 => wire__crate__get_pegin_fee_quote_impl(port, ptr, rust_vec_len, data_len), - 205 => wire__crate__get_relays_impl(port, ptr, rust_vec_len, data_len), - 206 => wire__crate__get_require_pin_for_spending_impl(port, ptr, rust_vec_len, data_len), - 207 => wire__crate__get_show_msats_impl(port, ptr, rust_vec_len, data_len), - 208 => wire__crate__has_imported_contacts_impl(port, ptr, rust_vec_len, data_len), - 209 => wire__crate__has_pin_code_impl(port, ptr, rust_vec_len, data_len), - 210 => wire__crate__has_seed_phrase_ack_impl(port, ptr, rust_vec_len, data_len), - 211 => wire__crate__insert_relay_impl(port, ptr, rust_vec_len, data_len), - 213 => wire__crate__join_federation_impl(port, ptr, rust_vec_len, data_len), - 214 => wire__crate__leave_federation_impl(port, ptr, rust_vec_len, data_len), - 215 => wire__crate__list_federations_from_nostr_impl(port, ptr, rust_vec_len, data_len), - 216 => wire__crate__list_gateways_impl(port, ptr, rust_vec_len, data_len), - 217 => wire__crate__list_ln_address_domains_impl(port, ptr, rust_vec_len, data_len), - 218 => wire__crate__listen_for_nwc_blocking_impl(port, ptr, rust_vec_len, data_len), - 219 => wire__crate__load_multimint_impl(port, ptr, rust_vec_len, data_len), - 220 => wire__crate__paginate_contacts_impl(port, ptr, rust_vec_len, data_len), - 221 => wire__crate__paginate_search_contacts_impl(port, ptr, rust_vec_len, data_len), - 223 => { + 206 => wire__crate__get_ln_address_config_impl(port, ptr, rust_vec_len, data_len), + 207 => wire__crate__get_max_withdrawable_amount_impl(port, ptr, rust_vec_len, data_len), + 208 => wire__crate__get_mnemonic_impl(port, ptr, rust_vec_len, data_len), + 209 => wire__crate__get_module_recovery_progress_impl(port, ptr, rust_vec_len, data_len), + 210 => wire__crate__get_note_summary_impl(port, ptr, rust_vec_len, data_len), + 211 => wire__crate__get_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), + 212 => wire__crate__get_nwc_daily_budget_sats_impl(port, ptr, rust_vec_len, data_len), + 213 => wire__crate__get_nwc_max_payment_sats_impl(port, ptr, rust_vec_len, data_len), + 214 => wire__crate__get_pegin_fee_quote_impl(port, ptr, rust_vec_len, data_len), + 215 => wire__crate__get_relays_impl(port, ptr, rust_vec_len, data_len), + 216 => wire__crate__get_require_pin_for_spending_impl(port, ptr, rust_vec_len, data_len), + 217 => wire__crate__get_show_msats_impl(port, ptr, rust_vec_len, data_len), + 218 => wire__crate__get_tap_receive_enabled_impl(port, ptr, rust_vec_len, data_len), + 219 => wire__crate__guardian_add_gateway_impl(port, ptr, rust_vec_len, data_len), + 220 => wire__crate__guardian_audit_impl(port, ptr, rust_vec_len, data_len), + 221 => wire__crate__guardian_backup_statistics_impl(port, ptr, rust_vec_len, data_len), + 222 => wire__crate__guardian_list_gateways_impl(port, ptr, rust_vec_len, data_len), + 223 => wire__crate__guardian_login_impl(port, ptr, rust_vec_len, data_len), + 224 => wire__crate__guardian_meta_accept_impl(port, ptr, rust_vec_len, data_len), + 225 => wire__crate__guardian_meta_propose_field_impl(port, ptr, rust_vec_len, data_len), + 226 => wire__crate__guardian_meta_state_impl(port, ptr, rust_vec_len, data_len), + 227 => wire__crate__guardian_meta_withdraw_impl(port, ptr, rust_vec_len, data_len), + 228 => wire__crate__guardian_remove_gateway_impl(port, ptr, rust_vec_len, data_len), + 229 => wire__crate__guardian_status_impl(port, ptr, rust_vec_len, data_len), + 230 => wire__crate__has_imported_contacts_impl(port, ptr, rust_vec_len, data_len), + 231 => wire__crate__has_pin_code_impl(port, ptr, rust_vec_len, data_len), + 232 => wire__crate__has_seed_phrase_ack_impl(port, ptr, rust_vec_len, data_len), + 233 => wire__crate__insert_relay_impl(port, ptr, rust_vec_len, data_len), + 235 => wire__crate__join_federation_impl(port, ptr, rust_vec_len, data_len), + 236 => wire__crate__leave_federation_impl(port, ptr, rust_vec_len, data_len), + 237 => wire__crate__list_federations_from_nostr_impl(port, ptr, rust_vec_len, data_len), + 238 => wire__crate__list_gateways_impl(port, ptr, rust_vec_len, data_len), + 239 => wire__crate__list_ln_address_domains_impl(port, ptr, rust_vec_len, data_len), + 240 => wire__crate__listen_for_nwc_blocking_impl(port, ptr, rust_vec_len, data_len), + 241 => wire__crate__load_multimint_impl(port, ptr, rust_vec_len, data_len), + 242 => wire__crate__max_lightning_send_impl(port, ptr, rust_vec_len, data_len), + 243 => wire__crate__paginate_contacts_impl(port, ptr, rust_vec_len, data_len), + 244 => wire__crate__paginate_search_contacts_impl(port, ptr, rust_vec_len, data_len), + 246 => { wire__crate__parse_scanned_text_for_federation_impl(port, ptr, rust_vec_len, data_len) } - 224 => wire__crate__parsed_scanned_text_impl(port, ptr, rust_vec_len, data_len), - 225 => wire__crate__payment_preview_with_gateways_impl(port, ptr, rust_vec_len, data_len), - 226 => wire__crate__receive_impl(port, ptr, rust_vec_len, data_len), - 227 => wire__crate__recheck_address_impl(port, ptr, rust_vec_len, data_len), - 228 => wire__crate__refresh_connections_impl(port, ptr, rust_vec_len, data_len), - 229 => wire__crate__register_ln_address_impl(port, ptr, rust_vec_len, data_len), - 230 => wire__crate__reissue_ecash_impl(port, ptr, rust_vec_len, data_len), - 231 => wire__crate__rejoin_from_backup_invites_impl(port, ptr, rust_vec_len, data_len), - 232 => wire__crate__remove_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), - 233 => wire__crate__remove_relay_impl(port, ptr, rust_vec_len, data_len), - 234 => wire__crate__send_impl(port, ptr, rust_vec_len, data_len), - 235 => wire__crate__send_ecash_impl(port, ptr, rust_vec_len, data_len), - 236 => wire__crate__send_lnaddress_impl(port, ptr, rust_vec_len, data_len), - 237 => wire__crate__set_bitcoin_display_impl(port, ptr, rust_vec_len, data_len), - 238 => wire__crate__set_federation_order_impl(port, ptr, rust_vec_len, data_len), - 239 => wire__crate__set_fiat_currency_impl(port, ptr, rust_vec_len, data_len), - 240 => wire__crate__set_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), - 241 => wire__crate__set_pin_code_impl(port, ptr, rust_vec_len, data_len), - 242 => wire__crate__set_require_pin_for_spending_impl(port, ptr, rust_vec_len, data_len), - 243 => wire__crate__set_show_msats_impl(port, ptr, rust_vec_len, data_len), - 244 => wire__crate__subscribe_deposits_impl(port, ptr, rust_vec_len, data_len), - 245 => wire__crate__subscribe_multimint_events_impl(port, ptr, rust_vec_len, data_len), - 246 => wire__crate__subscribe_peer_status_impl(port, ptr, rust_vec_len, data_len), - 247 => wire__crate__subscribe_recovery_progress_impl(port, ptr, rust_vec_len, data_len), - 248 => wire__crate__sync_contacts_impl(port, ptr, rust_vec_len, data_len), - 249 => wire__crate__transactions_impl(port, ptr, rust_vec_len, data_len), - 250 => wire__crate__verify_nip05_impl(port, ptr, rust_vec_len, data_len), - 251 => wire__crate__verify_pin_impl(port, ptr, rust_vec_len, data_len), - 252 => wire__crate__wallet_summary_impl(port, ptr, rust_vec_len, data_len), - 253 => wire__crate__withdraw_to_address_impl(port, ptr, rust_vec_len, data_len), - 254 => wire__crate__word_list_impl(port, ptr, rust_vec_len, data_len), + 247 => wire__crate__parsed_scanned_text_impl(port, ptr, rust_vec_len, data_len), + 248 => wire__crate__payment_preview_with_gateways_impl(port, ptr, rust_vec_len, data_len), + 249 => wire__crate__pin_lockout_seconds_impl(port, ptr, rust_vec_len, data_len), + 250 => wire__crate__receive_impl(port, ptr, rust_vec_len, data_len), + 251 => wire__crate__recheck_address_impl(port, ptr, rust_vec_len, data_len), + 252 => wire__crate__refresh_connections_impl(port, ptr, rust_vec_len, data_len), + 253 => wire__crate__refresh_federation_meta_impl(port, ptr, rust_vec_len, data_len), + 254 => wire__crate__register_ln_address_impl(port, ptr, rust_vec_len, data_len), + 255 => wire__crate__reissue_ecash_impl(port, ptr, rust_vec_len, data_len), + 256 => wire__crate__rejoin_from_backup_invites_impl(port, ptr, rust_vec_len, data_len), + 257 => wire__crate__remove_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), + 258 => wire__crate__remove_relay_impl(port, ptr, rust_vec_len, data_len), + 259 => wire__crate__send_impl(port, ptr, rust_vec_len, data_len), + 260 => wire__crate__send_ecash_impl(port, ptr, rust_vec_len, data_len), + 261 => wire__crate__set_bitcoin_display_impl(port, ptr, rust_vec_len, data_len), + 262 => wire__crate__set_federation_order_impl(port, ptr, rust_vec_len, data_len), + 263 => wire__crate__set_fiat_currency_impl(port, ptr, rust_vec_len, data_len), + 264 => wire__crate__set_nwc_connection_info_impl(port, ptr, rust_vec_len, data_len), + 265 => wire__crate__set_nwc_daily_budget_sats_impl(port, ptr, rust_vec_len, data_len), + 266 => wire__crate__set_nwc_max_payment_sats_impl(port, ptr, rust_vec_len, data_len), + 267 => wire__crate__set_pin_code_impl(port, ptr, rust_vec_len, data_len), + 268 => wire__crate__set_require_pin_for_spending_impl(port, ptr, rust_vec_len, data_len), + 269 => wire__crate__set_show_msats_impl(port, ptr, rust_vec_len, data_len), + 270 => wire__crate__set_tap_receive_enabled_impl(port, ptr, rust_vec_len, data_len), + 271 => wire__crate__subscribe_deposits_impl(port, ptr, rust_vec_len, data_len), + 272 => wire__crate__subscribe_multimint_events_impl(port, ptr, rust_vec_len, data_len), + 273 => wire__crate__subscribe_peer_status_impl(port, ptr, rust_vec_len, data_len), + 274 => wire__crate__subscribe_recovery_progress_impl(port, ptr, rust_vec_len, data_len), + 275 => wire__crate__sync_contacts_impl(port, ptr, rust_vec_len, data_len), + 276 => wire__crate__transactions_impl(port, ptr, rust_vec_len, data_len), + 277 => wire__crate__verify_nip05_impl(port, ptr, rust_vec_len, data_len), + 278 => wire__crate__verify_pin_impl(port, ptr, rust_vec_len, data_len), + 279 => wire__crate__wallet_summary_impl(port, ptr, rust_vec_len, data_len), + 280 => wire__crate__withdraw_to_address_impl(port, ptr, rust_vec_len, data_len), + 281 => wire__crate__word_list_impl(port, ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -16773,149 +18829,149 @@ fn pde_ffi_dispatcher_sync_impl( rust_vec_len, data_len, ), - 128 => { + 135 => { wire__crate__fountain__OobNotesDecoder_add_fragment_impl(ptr, rust_vec_len, data_len) } - 129 => wire__crate__fountain__OobNotesDecoder_new_impl(ptr, rust_vec_len, data_len), - 130 => wire__crate__fountain__OobNotesEncoder_new_impl(ptr, rust_vec_len, data_len), - 132 => { + 136 => wire__crate__fountain__OobNotesDecoder_new_impl(ptr, rust_vec_len, data_len), + 137 => wire__crate__fountain__OobNotesEncoder_new_impl(ptr, rust_vec_len, data_len), + 139 => { wire__crate__multimint__OobNotesWrapper_amount_msats_impl(ptr, rust_vec_len, data_len) } - 133 => wire__crate__multimint__OobNotesWrapper_to_string_impl(ptr, rust_vec_len, data_len), - 134 => wire__crate__nostr__PublicFederation_auto_accessor_get_about_impl( + 140 => wire__crate__multimint__OobNotesWrapper_to_string_impl(ptr, rust_vec_len, data_len), + 141 => wire__crate__nostr__PublicFederation_auto_accessor_get_about_impl( ptr, rust_vec_len, data_len, ), - 135 => wire__crate__nostr__PublicFederation_auto_accessor_get_federation_id_impl( + 142 => wire__crate__nostr__PublicFederation_auto_accessor_get_federation_id_impl( ptr, rust_vec_len, data_len, ), - 136 => wire__crate__nostr__PublicFederation_auto_accessor_get_federation_name_impl( + 143 => wire__crate__nostr__PublicFederation_auto_accessor_get_federation_name_impl( ptr, rust_vec_len, data_len, ), - 137 => wire__crate__nostr__PublicFederation_auto_accessor_get_invite_codes_impl( + 144 => wire__crate__nostr__PublicFederation_auto_accessor_get_invite_codes_impl( ptr, rust_vec_len, data_len, ), - 138 => wire__crate__nostr__PublicFederation_auto_accessor_get_modules_impl( + 145 => wire__crate__nostr__PublicFederation_auto_accessor_get_modules_impl( ptr, rust_vec_len, data_len, ), - 139 => wire__crate__nostr__PublicFederation_auto_accessor_get_network_impl( + 146 => wire__crate__nostr__PublicFederation_auto_accessor_get_network_impl( ptr, rust_vec_len, data_len, ), - 140 => wire__crate__nostr__PublicFederation_auto_accessor_get_picture_impl( + 147 => wire__crate__nostr__PublicFederation_auto_accessor_get_picture_impl( ptr, rust_vec_len, data_len, ), - 141 => wire__crate__nostr__PublicFederation_auto_accessor_set_about_impl( + 148 => wire__crate__nostr__PublicFederation_auto_accessor_set_about_impl( ptr, rust_vec_len, data_len, ), - 142 => wire__crate__nostr__PublicFederation_auto_accessor_set_federation_id_impl( + 149 => wire__crate__nostr__PublicFederation_auto_accessor_set_federation_id_impl( ptr, rust_vec_len, data_len, ), - 143 => wire__crate__nostr__PublicFederation_auto_accessor_set_federation_name_impl( + 150 => wire__crate__nostr__PublicFederation_auto_accessor_set_federation_name_impl( ptr, rust_vec_len, data_len, ), - 144 => wire__crate__nostr__PublicFederation_auto_accessor_set_invite_codes_impl( + 151 => wire__crate__nostr__PublicFederation_auto_accessor_set_invite_codes_impl( ptr, rust_vec_len, data_len, ), - 145 => wire__crate__nostr__PublicFederation_auto_accessor_set_modules_impl( + 152 => wire__crate__nostr__PublicFederation_auto_accessor_set_modules_impl( ptr, rust_vec_len, data_len, ), - 146 => wire__crate__nostr__PublicFederation_auto_accessor_set_network_impl( + 153 => wire__crate__nostr__PublicFederation_auto_accessor_set_network_impl( ptr, rust_vec_len, data_len, ), - 147 => wire__crate__nostr__PublicFederation_auto_accessor_set_picture_impl( + 154 => wire__crate__nostr__PublicFederation_auto_accessor_set_picture_impl( ptr, rust_vec_len, data_len, ), - 148 => wire__crate__tap_transfer__TapRecipient_decrypt_impl(ptr, rust_vec_len, data_len), - 149 => wire__crate__tap_transfer__TapRecipient_new_impl(ptr, rust_vec_len, data_len), - 150 => wire__crate__tap_transfer__TapRecipient_public_key_impl(ptr, rust_vec_len, data_len), - 151 => { + 155 => wire__crate__tap_transfer__TapRecipient_decrypt_impl(ptr, rust_vec_len, data_len), + 156 => wire__crate__tap_transfer__TapRecipient_new_impl(ptr, rust_vec_len, data_len), + 157 => wire__crate__tap_transfer__TapRecipient_public_key_impl(ptr, rust_vec_len, data_len), + 158 => { wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_federation_fee_msats_impl( ptr, rust_vec_len, data_len, ) } - 152 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_impl( + 159 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_amount_impl( ptr, rust_vec_len, data_len, ), - 153 => { + 160 => { wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fee_rate_sats_per_vb_impl( ptr, rust_vec_len, data_len, ) } - 154 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fees_impl( + 161 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_fees_impl( ptr, rust_vec_len, data_len, ), - 155 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes_impl( + 162 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_get_tx_size_vbytes_impl( ptr, rust_vec_len, data_len, ), - 156 => { + 163 => { wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_federation_fee_msats_impl( ptr, rust_vec_len, data_len, ) } - 157 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_amount_impl( + 164 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_amount_impl( ptr, rust_vec_len, data_len, ), - 158 => { + 165 => { wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fee_rate_sats_per_vb_impl( ptr, rust_vec_len, data_len, ) } - 159 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fees_impl( + 166 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_fees_impl( ptr, rust_vec_len, data_len, ), - 160 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes_impl( + 167 => wire__crate__multimint__WithdrawFeesResponse_auto_accessor_set_tx_size_vbytes_impl( ptr, rust_vec_len, data_len, ), - 182 => wire__crate__encrypt_ecash_for_tap_impl(ptr, rust_vec_len, data_len), - 212 => wire__crate__multimint__is_mintv2_ecash_impl(ptr, rust_vec_len, data_len), - 222 => wire__crate__multimint__parse_oob_notes_impl(ptr, rust_vec_len, data_len), + 190 => wire__crate__encrypt_ecash_for_tap_impl(ptr, rust_vec_len, data_len), + 234 => wire__crate__multimint__is_mintv2_ecash_impl(ptr, rust_vec_len, data_len), + 245 => wire__crate__multimint__parse_oob_notes_impl(ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -17452,6 +19508,7 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::AwaitingConfsEvent { self.outpoint.into_into_dart().into_dart(), self.block_height.into_into_dart().into_dart(), self.needed.into_into_dart().into_dart(), + self.txid.into_into_dart().into_dart(), ] .into_dart() } @@ -17491,6 +19548,7 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::ClaimedEvent { [ self.amount.into_into_dart().into_dart(), self.outpoint.into_into_dart().into_dart(), + self.txid.into_into_dart().into_dart(), ] .into_dart() } @@ -17512,6 +19570,7 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::ConfirmedEvent { [ self.amount.into_into_dart().into_dart(), self.outpoint.into_into_dart().into_dart(), + self.txid.into_into_dart().into_dart(), ] .into_dart() } @@ -17706,12 +19765,21 @@ impl flutter_rust_bridge::IntoDart for crate::app_error::EcashAppError { crate::app_error::EcashAppError::InvalidLightningAddress(field0) => { [10.into_dart(), field0.into_into_dart().into_dart()].into_dart() } + crate::app_error::EcashAppError::LnurlAmountMismatch { + requested_msats, + invoice_msats, + } => [ + 11.into_dart(), + requested_msats.into_into_dart().into_dart(), + invoice_msats.into_into_dart().into_dart(), + ] + .into_dart(), crate::app_error::EcashAppError::PaymentRefunded(field0) => { - [11.into_dart(), field0.into_into_dart().into_dart()].into_dart() + [12.into_dart(), field0.into_into_dart().into_dart()].into_dart() } - crate::app_error::EcashAppError::Timeout => [12.into_dart()].into_dart(), + crate::app_error::EcashAppError::Timeout => [13.into_dart()].into_dart(), crate::app_error::EcashAppError::Other(field0) => { - [13.into_dart(), field0.into_into_dart().into_dart()].into_dart() + [14.into_dart(), field0.into_into_dart().into_dart()].into_dart() } _ => { unimplemented!(""); @@ -17752,94 +19820,284 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::FedimintGateway { +impl flutter_rust_bridge::IntoDart for crate::multimint::FedimintGateway { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.endpoint.into_into_dart().into_dart(), + self.base_routing_fee.into_into_dart().into_dart(), + self.ppm_routing_fee.into_into_dart().into_dart(), + self.base_transaction_fee.into_into_dart().into_dart(), + self.ppm_transaction_fee.into_into_dart().into_dart(), + self.lightning_alias.into_into_dart().into_dart(), + self.lightning_node.into_into_dart().into_dart(), + self.is_lnv2.into_into_dart().into_dart(), + self.is_vettted.into_into_dart().into_dart(), + self.federation_index.into_into_dart().into_dart(), + self.min_base_routing_fee.into_into_dart().into_dart(), + self.min_ppm_routing_fee.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::FedimintGateway +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::FedimintGateway +{ + fn into_into_dart(self) -> crate::multimint::FedimintGateway { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::db::FiatCurrency { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + Self::Usd => 0.into_dart(), + Self::Eur => 1.into_dart(), + Self::Gbp => 2.into_dart(), + Self::Cad => 3.into_dart(), + Self::Chf => 4.into_dart(), + Self::Aud => 5.into_dart(), + Self::Jpy => 6.into_dart(), + _ => unreachable!(), + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::db::FiatCurrency {} +impl flutter_rust_bridge::IntoIntoDart for crate::db::FiatCurrency { + fn into_into_dart(self) -> crate::db::FiatCurrency { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::multimint::GatewayPaymentPreview { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.gateway.into_into_dart().into_dart(), + self.amount_with_fees.into_into_dart().into_dart(), + self.gateway_fee.into_into_dart().into_dart(), + self.federation_fee.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::GatewayPaymentPreview +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GatewayPaymentPreview +{ + fn into_into_dart(self) -> crate::multimint::GatewayPaymentPreview { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::multimint::Guardian { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.peer_id.into_into_dart().into_dart(), + self.name.into_into_dart().into_dart(), + self.version.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::multimint::Guardian {} +impl flutter_rust_bridge::IntoIntoDart for crate::multimint::Guardian { + fn into_into_dart(self) -> crate::multimint::Guardian { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianAuditSummary { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.net_assets_msats.into_into_dart().into_dart(), + self.module_summaries.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::GuardianAuditSummary +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GuardianAuditSummary +{ + fn into_into_dart(self) -> crate::multimint::GuardianAuditSummary { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianBackupStatistics { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.num_backups.into_into_dart().into_dart(), + self.total_size_bytes.into_into_dart().into_dart(), + self.refreshed_1d.into_into_dart().into_dart(), + self.refreshed_1w.into_into_dart().into_dart(), + self.refreshed_1m.into_into_dart().into_dart(), + self.refreshed_3m.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::GuardianBackupStatistics +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GuardianBackupStatistics +{ + fn into_into_dart(self) -> crate::multimint::GuardianBackupStatistics { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianBitcoinStatus { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.kind.into_into_dart().into_dart(), + self.url.into_into_dart().into_dart(), + self.consensus_block_count.into_into_dart().into_dart(), + self.local_block_count.into_into_dart().into_dart(), + self.consensus_feerate_sats_per_kvb + .into_into_dart() + .into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::GuardianBitcoinStatus +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GuardianBitcoinStatus +{ + fn into_into_dart(self) -> crate::multimint::GuardianBitcoinStatus { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianHealth { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.consensus_running.into_into_dart().into_dart(), + self.server_status.into_into_dart().into_dart(), + self.session_count.into_into_dart().into_dart(), + self.peers_online.into_into_dart().into_dart(), + self.peers_total.into_into_dart().into_dart(), + self.consensus_ord_latency_ms.into_into_dart().into_dart(), + self.scheduled_shutdown_session.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::GuardianHealth +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GuardianHealth +{ + fn into_into_dart(self) -> crate::multimint::GuardianHealth { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianMetaProposal { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ - self.endpoint.into_into_dart().into_dart(), - self.base_routing_fee.into_into_dart().into_dart(), - self.ppm_routing_fee.into_into_dart().into_dart(), - self.base_transaction_fee.into_into_dart().into_dart(), - self.ppm_transaction_fee.into_into_dart().into_dart(), - self.lightning_alias.into_into_dart().into_dart(), - self.lightning_node.into_into_dart().into_dart(), - self.is_lnv2.into_into_dart().into_dart(), - self.is_vettted.into_into_dart().into_dart(), - self.federation_index.into_into_dart().into_dart(), - self.min_base_routing_fee.into_into_dart().into_dart(), - self.min_ppm_routing_fee.into_into_dart().into_dart(), + self.peer_ids.into_into_dart().into_dart(), + self.value_hex.into_into_dart().into_dart(), + self.value_json.into_into_dart().into_dart(), + self.is_ours.into_into_dart().into_dart(), ] .into_dart() } } impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::FedimintGateway + for crate::multimint::GuardianMetaProposal { } -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::FedimintGateway +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GuardianMetaProposal { - fn into_into_dart(self) -> crate::multimint::FedimintGateway { + fn into_into_dart(self) -> crate::multimint::GuardianMetaProposal { self } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::db::FiatCurrency { +impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianMetaState { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - match self { - Self::Usd => 0.into_dart(), - Self::Eur => 1.into_dart(), - Self::Gbp => 2.into_dart(), - Self::Cad => 3.into_dart(), - Self::Chf => 4.into_dart(), - Self::Aud => 5.into_dart(), - Self::Jpy => 6.into_dart(), - _ => unreachable!(), - } + [ + self.consensus_json.into_into_dart().into_dart(), + self.revision.into_into_dart().into_dart(), + self.proposals.into_into_dart().into_dart(), + self.threshold.into_into_dart().into_dart(), + self.total_guardians.into_into_dart().into_dart(), + ] + .into_dart() } } -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::db::FiatCurrency {} -impl flutter_rust_bridge::IntoIntoDart for crate::db::FiatCurrency { - fn into_into_dart(self) -> crate::db::FiatCurrency { +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::GuardianMetaState +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GuardianMetaState +{ + fn into_into_dart(self) -> crate::multimint::GuardianMetaState { self } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::GatewayPaymentPreview { +impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianModuleSummary { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ - self.gateway.into_into_dart().into_dart(), - self.amount_with_fees.into_into_dart().into_dart(), - self.gateway_fee.into_into_dart().into_dart(), - self.federation_fee.into_into_dart().into_dart(), + self.module_instance_id.into_into_dart().into_dart(), + self.kind.into_into_dart().into_dart(), + self.net_assets_msats.into_into_dart().into_dart(), ] .into_dart() } } impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::GatewayPaymentPreview + for crate::multimint::GuardianModuleSummary { } -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::GatewayPaymentPreview +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GuardianModuleSummary { - fn into_into_dart(self) -> crate::multimint::GatewayPaymentPreview { + fn into_into_dart(self) -> crate::multimint::GuardianModuleSummary { self } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::Guardian { +impl flutter_rust_bridge::IntoDart for crate::multimint::GuardianStatusSummary { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ - self.peer_id.into_into_dart().into_dart(), - self.name.into_into_dart().into_dart(), - self.version.into_into_dart().into_dart(), + self.health.into_into_dart().into_dart(), + self.bitcoin.into_into_dart().into_dart(), + self.has_lnv2.into_into_dart().into_dart(), + self.has_meta.into_into_dart().into_dart(), ] .into_dart() } } -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::multimint::Guardian {} -impl flutter_rust_bridge::IntoIntoDart for crate::multimint::Guardian { - fn into_into_dart(self) -> crate::multimint::Guardian { +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::GuardianStatusSummary +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::GuardianStatusSummary +{ + fn into_into_dart(self) -> crate::multimint::GuardianStatusSummary { self } } @@ -17941,7 +20199,7 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::LnurlWithdrawParams { +impl flutter_rust_bridge::IntoDart for crate::lnurl_client::LnurlWithdrawParams { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ self.callback.into_into_dart().into_dart(), @@ -17953,9 +20211,14 @@ impl flutter_rust_bridge::IntoDart for crate::LnurlWithdrawParams { .into_dart() } } -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::LnurlWithdrawParams {} -impl flutter_rust_bridge::IntoIntoDart for crate::LnurlWithdrawParams { - fn into_into_dart(self) -> crate::LnurlWithdrawParams { +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::lnurl_client::LnurlWithdrawParams +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::lnurl_client::LnurlWithdrawParams +{ + fn into_into_dart(self) -> crate::lnurl_client::LnurlWithdrawParams { self } } @@ -17984,6 +20247,7 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::MempoolEvent { [ self.amount.into_into_dart().into_dart(), self.outpoint.into_into_dart().into_dart(), + self.txid.into_into_dart().into_dart(), ] .into_dart() } @@ -18077,9 +20341,12 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::MultimintEvent { crate::multimint::MultimintEvent::UpdateAvailable(field0) => { [10.into_dart(), field0.into_into_dart().into_dart()].into_dart() } - crate::multimint::MultimintEvent::PaymentError(field0) => { + crate::multimint::MultimintEvent::MetaUpdated(field0) => { [11.into_dart(), field0.into_into_dart().into_dart()].into_dart() } + crate::multimint::MultimintEvent::PaymentError(field0) => { + [12.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } _ => { unimplemented!(""); } @@ -18128,6 +20395,7 @@ impl flutter_rust_bridge::IntoDart for crate::multimint::NostrRecoveryPhase { crate::multimint::NostrRecoveryPhase::RejoiningFederations(field0) => { [3.into_dart(), field0.into_into_dart().into_dart()].into_dart() } + crate::multimint::NostrRecoveryPhase::NoBackupFound => [4.into_dart()].into_dart(), _ => { unimplemented!(""); } @@ -18146,27 +20414,6 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::db::NostrWalletConnectConfig { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.secret_key.into_into_dart().into_dart(), - self.relay.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::db::NostrWalletConnectConfig -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::db::NostrWalletConnectConfig -{ - fn into_into_dart(self) -> crate::db::NostrWalletConnectConfig { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for crate::nostr::NWCConnectionInfo { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ @@ -18348,6 +20595,28 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::multimint::RecoveryModule { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + Self::Lightning => 0.into_dart(), + Self::Ecash => 1.into_dart(), + Self::Onchain => 2.into_dart(), + _ => unreachable!(), + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::multimint::RecoveryModule +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::multimint::RecoveryModule +{ + fn into_into_dart(self) -> crate::multimint::RecoveryModule { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for crate::multimint::ReissueFees { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ @@ -18390,30 +20659,6 @@ impl flutter_rust_bridge::IntoIntoDart } } // Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for crate::multimint::SendGatewaySelection { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - [ - self.gateway_url.into_into_dart().into_dart(), - self.amount_with_fees.into_into_dart().into_dart(), - self.gateway_fee.into_into_dart().into_dart(), - self.federation_fee.into_into_dart().into_dart(), - self.is_lnv2.into_into_dart().into_dart(), - ] - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for crate::multimint::SendGatewaySelection -{ -} -impl flutter_rust_bridge::IntoIntoDart - for crate::multimint::SendGatewaySelection -{ - fn into_into_dart(self) -> crate::multimint::SendGatewaySelection { - self - } -} -// Codec=Dco (DartCObject based), see doc to use other codecs impl flutter_rust_bridge::IntoDart for crate::multimint::Transaction { fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { [ @@ -19264,6 +21509,7 @@ impl SseEncode for crate::multimint::AwaitingConfsEvent { ::sse_encode(self.outpoint, serializer); ::sse_encode(self.block_height, serializer); ::sse_encode(self.needed, serializer); + >::sse_encode(self.txid, serializer); } } @@ -19297,6 +21543,7 @@ impl SseEncode for crate::multimint::ClaimedEvent { fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.amount, serializer); ::sse_encode(self.outpoint, serializer); + >::sse_encode(self.txid, serializer); } } @@ -19305,6 +21552,7 @@ impl SseEncode for crate::multimint::ConfirmedEvent { fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.amount, serializer); ::sse_encode(self.outpoint, serializer); + >::sse_encode(self.txid, serializer); } } @@ -19463,15 +21711,23 @@ impl SseEncode for crate::app_error::EcashAppError { ::sse_encode(10, serializer); ::sse_encode(field0, serializer); } - crate::app_error::EcashAppError::PaymentRefunded(field0) => { + crate::app_error::EcashAppError::LnurlAmountMismatch { + requested_msats, + invoice_msats, + } => { ::sse_encode(11, serializer); + ::sse_encode(requested_msats, serializer); + ::sse_encode(invoice_msats, serializer); + } + crate::app_error::EcashAppError::PaymentRefunded(field0) => { + ::sse_encode(12, serializer); ::sse_encode(field0, serializer); } crate::app_error::EcashAppError::Timeout => { - ::sse_encode(12, serializer); + ::sse_encode(13, serializer); } crate::app_error::EcashAppError::Other(field0) => { - ::sse_encode(13, serializer); + ::sse_encode(14, serializer); ::sse_encode(field0, serializer); } _ => { @@ -19554,6 +21810,93 @@ impl SseEncode for crate::multimint::Guardian { } } +impl SseEncode for crate::multimint::GuardianAuditSummary { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.net_assets_msats, serializer); + >::sse_encode( + self.module_summaries, + serializer, + ); + } +} + +impl SseEncode for crate::multimint::GuardianBackupStatistics { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.num_backups, serializer); + ::sse_encode(self.total_size_bytes, serializer); + ::sse_encode(self.refreshed_1d, serializer); + ::sse_encode(self.refreshed_1w, serializer); + ::sse_encode(self.refreshed_1m, serializer); + ::sse_encode(self.refreshed_3m, serializer); + } +} + +impl SseEncode for crate::multimint::GuardianBitcoinStatus { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >::sse_encode(self.kind, serializer); + >::sse_encode(self.url, serializer); + ::sse_encode(self.consensus_block_count, serializer); + >::sse_encode(self.local_block_count, serializer); + >::sse_encode(self.consensus_feerate_sats_per_kvb, serializer); + } +} + +impl SseEncode for crate::multimint::GuardianHealth { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.consensus_running, serializer); + ::sse_encode(self.server_status, serializer); + >::sse_encode(self.session_count, serializer); + ::sse_encode(self.peers_online, serializer); + ::sse_encode(self.peers_total, serializer); + >::sse_encode(self.consensus_ord_latency_ms, serializer); + >::sse_encode(self.scheduled_shutdown_session, serializer); + } +} + +impl SseEncode for crate::multimint::GuardianMetaProposal { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >::sse_encode(self.peer_ids, serializer); + ::sse_encode(self.value_hex, serializer); + >::sse_encode(self.value_json, serializer); + ::sse_encode(self.is_ours, serializer); + } +} + +impl SseEncode for crate::multimint::GuardianMetaState { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + >::sse_encode(self.consensus_json, serializer); + >::sse_encode(self.revision, serializer); + >::sse_encode(self.proposals, serializer); + ::sse_encode(self.threshold, serializer); + ::sse_encode(self.total_guardians, serializer); + } +} + +impl SseEncode for crate::multimint::GuardianModuleSummary { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.module_instance_id, serializer); + ::sse_encode(self.kind, serializer); + ::sse_encode(self.net_assets_msats, serializer); + } +} + +impl SseEncode for crate::multimint::GuardianStatusSummary { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.health, serializer); + >::sse_encode(self.bitcoin, serializer); + ::sse_encode(self.has_lnv2, serializer); + ::sse_encode(self.has_meta, serializer); + } +} + impl SseEncode for i32 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -19561,6 +21904,13 @@ impl SseEncode for i32 { } } +impl SseEncode for i64 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + serializer.cursor.write_i64::(self).unwrap(); + } +} + impl SseEncode for crate::multimint::InvoicePaidEvent { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -19675,6 +22025,26 @@ impl SseEncode for Vec { } } +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -19695,6 +22065,16 @@ impl SseEncode for Vec { } } +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -19812,7 +22192,7 @@ impl SseEncode for crate::multimint::LNAddressStatus { } } -impl SseEncode for crate::LnurlWithdrawParams { +impl SseEncode for crate::lnurl_client::LnurlWithdrawParams { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.callback, serializer); @@ -19847,6 +22227,7 @@ impl SseEncode for crate::multimint::MempoolEvent { fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { ::sse_encode(self.amount, serializer); ::sse_encode(self.outpoint, serializer); + >::sse_encode(self.txid, serializer); } } @@ -19899,7 +22280,7 @@ impl SseEncode for crate::multimint::MultimintEvent { crate::multimint::MultimintEvent::RecoveryProgress(field0, field1, field2, field3) => { ::sse_encode(4, serializer); ::sse_encode(field0, serializer); - ::sse_encode(field1, serializer); + ::sse_encode(field1, serializer); ::sse_encode(field2, serializer); ::sse_encode(field3, serializer); } @@ -19930,8 +22311,12 @@ impl SseEncode for crate::multimint::MultimintEvent { ::sse_encode(10, serializer); ::sse_encode(field0, serializer); } - crate::multimint::MultimintEvent::PaymentError(field0) => { + crate::multimint::MultimintEvent::MetaUpdated(field0) => { ::sse_encode(11, serializer); + ::sse_encode(field0, serializer); + } + crate::multimint::MultimintEvent::PaymentError(field0) => { + ::sse_encode(12, serializer); <(FederationId, crate::app_error::EcashAppError)>::sse_encode(field0, serializer); } _ => { @@ -19971,6 +22356,9 @@ impl SseEncode for crate::multimint::NostrRecoveryPhase { ::sse_encode(3, serializer); ::sse_encode(field0, serializer); } + crate::multimint::NostrRecoveryPhase::NoBackupFound => { + ::sse_encode(4, serializer); + } _ => { unimplemented!(""); } @@ -19978,14 +22366,6 @@ impl SseEncode for crate::multimint::NostrRecoveryPhase { } } -impl SseEncode for crate::db::NostrWalletConnectConfig { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - <[u8; 32]>::sse_encode(self.secret_key, serializer); - ::sse_encode(self.relay, serializer); - } -} - impl SseEncode for crate::nostr::NWCConnectionInfo { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -20085,6 +22465,16 @@ impl SseEncode for Option { } } +impl SseEncode for Option { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.is_some(), serializer); + if let Some(value) = self { + ::sse_encode(value, serializer); + } + } +} + impl SseEncode for Option { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -20315,24 +22705,19 @@ impl SseEncode for (ReissueExternalNotesState, Option) { } } -impl SseEncode for (crate::db::FiatCurrency, u64) { +impl SseEncode for (bool, Option) { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.0, serializer); - ::sse_encode(self.1, serializer); + ::sse_encode(self.0, serializer); + >::sse_encode(self.1, serializer); } } -impl SseEncode - for ( - crate::db::NostrWalletConnectConfig, - crate::nostr::NWCConnectionInfo, - ) -{ +impl SseEncode for (crate::db::FiatCurrency, u64) { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.0, serializer); - ::sse_encode(self.1, serializer); + ::sse_encode(self.0, serializer); + ::sse_encode(self.1, serializer); } } @@ -20412,6 +22797,23 @@ impl SseEncode for (u64, usize) { } } +impl SseEncode for crate::multimint::RecoveryModule { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode( + match self { + crate::multimint::RecoveryModule::Lightning => 0, + crate::multimint::RecoveryModule::Ecash => 1, + crate::multimint::RecoveryModule::Onchain => 2, + _ => { + unimplemented!(""); + } + }, + serializer, + ); + } +} + impl SseEncode for crate::multimint::ReissueFees { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -20439,17 +22841,6 @@ impl SseEncode for crate::multimint::RelayStatusKind { } } -impl SseEncode for crate::multimint::SendGatewaySelection { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.gateway_url, serializer); - ::sse_encode(self.amount_with_fees, serializer); - ::sse_encode(self.gateway_fee, serializer); - ::sse_encode(self.federation_fee, serializer); - ::sse_encode(self.is_lnv2, serializer); - } -} - impl SseEncode for crate::multimint::Transaction { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -20590,19 +22981,6 @@ impl SseEncode for u8 { } } -impl SseEncode for [u8; 32] { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode( - { - let boxed: Box<[_]> = Box::new(self); - boxed.into_vec() - }, - serializer, - ); - } -} - impl SseEncode for () { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {} diff --git a/rust/ecashapp/src/lib.rs b/rust/ecashapp/src/lib.rs index 1081c795..806484ba 100644 --- a/rust/ecashapp/src/lib.rs +++ b/rust/ecashapp/src/lib.rs @@ -1232,6 +1232,18 @@ pub async fn set_show_msats(show_msats: bool) { multimint.set_show_msats(show_msats).await; } +#[frb] +pub async fn get_tap_receive_enabled() -> bool { + let multimint = get_multimint(); + multimint.get_tap_receive_enabled().await +} + +#[frb] +pub async fn set_tap_receive_enabled(enabled: bool) { + let multimint = get_multimint(); + multimint.set_tap_receive_enabled(enabled).await; +} + #[frb] pub async fn has_pin_code() -> bool { get_pin_manager().has_pin_code().await diff --git a/rust/ecashapp/src/multimint.rs b/rust/ecashapp/src/multimint.rs index b5dd1b36..21a59e2f 100644 --- a/rust/ecashapp/src/multimint.rs +++ b/rust/ecashapp/src/multimint.rs @@ -6423,6 +6423,24 @@ impl Multimint { dbtx.commit_tx().await; } + pub async fn get_tap_receive_enabled(&self) -> bool { + let mut dbtx = self.db.begin_transaction_nc().await; + dbtx.get_value(&crate::db::TapReceiveEnabledKey) + .await + .is_some() + } + + pub async fn set_tap_receive_enabled(&self, enabled: bool) { + let mut dbtx = self.db.begin_transaction().await; + if enabled { + dbtx.insert_entry(&crate::db::TapReceiveEnabledKey, &()) + .await; + } else { + dbtx.remove_entry(&crate::db::TapReceiveEnabledKey).await; + } + dbtx.commit_tx().await; + } + pub async fn get_federation_order(&self) -> Option> { let mut dbtx = self.db.begin_transaction_nc().await; dbtx.get_value(&crate::db::FederationOrderKey) From 81c69de98480ea891933246ff0e665b42bb15688 Mon Sep 17 00:00:00 2001 From: m1sterc001guy Date: Mon, 31 Aug 2026 10:26:36 -0500 Subject: [PATCH 3/3] fix: change BLE sender role, now works with Android 16/17 --- .../main/kotlin/app/ecash/BleTapController.kt | 126 +++++++++++++++--- 1 file changed, 104 insertions(+), 22 deletions(-) diff --git a/android/app/src/main/kotlin/app/ecash/BleTapController.kt b/android/app/src/main/kotlin/app/ecash/BleTapController.kt index 443096be..6eec6b6f 100644 --- a/android/app/src/main/kotlin/app/ecash/BleTapController.kt +++ b/android/app/src/main/kotlin/app/ecash/BleTapController.kt @@ -88,8 +88,17 @@ class BleTapController( private const val HEADER_VERSION: Byte = 1 private const val DEFAULT_MTU = 23 private const val ATT_NOTIFY_OVERHEAD = 3 - /** Keep notifications comfortably inside one ATT PDU. */ - private const val MAX_SAFE_CHUNK = 180 + /** + * Upper bound on one notification's value, just under the 514 bytes an + * ATT_MTU of 517 allows. + * + * This was 180 when the payload travelled as characteristic *writes*: a + * write of exactly (MTU - 3) could tip Android into a prepared "long + * write", which the GATT server did not implement. Notifications have no + * long-form equivalent - they are simply capped at MTU - 3 - so that + * constraint does not apply and the old cap only cost frames. + */ + private const val MAX_SAFE_CHUNK = 512 /** Sanity bound on the advertised payload length in the header. */ private const val MAX_PAYLOAD_BYTES = 64 * 1024 @@ -120,6 +129,15 @@ class BleTapController( /** Release the client regardless if the disconnect callback never lands. */ private const val CLOSE_FALLBACK_MS = 2_000L + /** + * Keep the link up briefly after the last frame is confirmed. The ATT + * confirmation is generated by the receiver's stack before its app has + * necessarily processed the frame, so tearing down instantly could make + * the receiver see a disconnect while it still believes the transfer is + * incomplete. + */ + private const val LINGER_MS = 1_500L + /** * If the receiver hasn't disconnected (its only way of confirming) this * long after a full push, send the whole payload again. An Android 17 @@ -145,6 +163,24 @@ class BleTapController( private val transferTimeout = Runnable { onTransferTimeout() } private val pushSettle = Runnable { beginPush() } + private val linger = Runnable { stopInternal() } + private var delivered = false + + /** + * Whether the receiver proved its app registered for notifications, by + * issuing the readiness read. Only then does an indication confirmation + * amount to app-level delivery - the ATT layer confirms and discards frames + * for handles no app has registered. Android 17 centrals can never set this. + */ + private var readyProven = false + + /** + * [readyProven] snapshotted when the current attempt started. The readiness + * read can land mid-push; sampling it live would send early frames + * unacknowledged and later ones as indications, then wrongly report the whole + * attempt as acknowledged by a registered receiver. + */ + private var attemptConfirmed = false private val closeFallback = Runnable { stopInternal() } private val pushRetry = Runnable { beginPush() } private var attempt = 0 @@ -200,12 +236,17 @@ class BleTapController( val service = BluetoothGattService(uuid, BluetoothGattService.SERVICE_TYPE_PRIMARY) val payload = BluetoothGattCharacteristic( CHAR_PAYLOAD_UUID, - // READ as well as NOTIFY: the receiver reads this characteristic once - // it has registered for notifications, and that read is what tells us - // it is safe to start pushing. A read is used rather than a write - // because client writes are the operation broken on Android 17. + // READ: the receiver reads this once it has registered, and that read + // is what tells us it is safe to start pushing - a read rather than a + // write because client writes are broken on Android 17. + // + // INDICATE: frames are sent as indications, not notifications. The + // receiver's ATT layer confirms each one automatically, with no app + // involvement, which is the only end-to-end delivery signal available + // when the peer cannot make any app-initiated GATT call at all. BluetoothGattCharacteristic.PROPERTY_READ or - BluetoothGattCharacteristic.PROPERTY_NOTIFY, + BluetoothGattCharacteristic.PROPERTY_NOTIFY or + BluetoothGattCharacteristic.PROPERTY_INDICATE, BluetoothGattCharacteristic.PERMISSION_READ, ) // Declared for correctness. The receiver never writes it - Android's GATT @@ -281,11 +322,9 @@ class BleTapController( // that is the delivery signal, since acknowledging it in-band // would require a client write. if (allSent) { - logd("central disconnected after full payload, delivered") - main.removeCallbacks(transferTimeout) - main.removeCallbacks(pushRetry) - sendStatus("confirmed") - stopInternal() + // Backstop: normally reportDelivered() has already fired on + // the last indication's confirmation. + reportDelivered("central disconnected after full payload") } else if (pushing) { sendError("receiver disconnected mid-transfer (status=$status)") stopInternal() @@ -319,6 +358,7 @@ class BleTapController( // Fast path: a central that can still issue reads is telling us it is // ready, so skip the settle. Android 17 centrals never get here. logd("receiver read the payload characteristic: ready, starting push") + readyProven = true if (!pushing) { main.removeCallbacks(pushSettle) beginPush() @@ -335,6 +375,21 @@ class BleTapController( } } + /** + * The payload is confirmed delivered. Idempotent: the last indication's + * confirmation and the receiver's subsequent disconnect can both land here. + */ + private fun reportDelivered(why: String) { + if (delivered) return + delivered = true + logd("$why -> delivered") + main.removeCallbacks(transferTimeout) + main.removeCallbacks(pushRetry) + main.removeCallbacks(pushSettle) + sendStatus("confirmed") + main.postDelayed(linger, LINGER_MS) + } + /** Chunk the blob for the negotiated MTU and start streaming it. */ private fun beginPush() { if (pushing) return @@ -343,6 +398,7 @@ class BleTapController( pushing = true allSent = false attempt++ + attemptConfirmed = readyProven sendQueue.clear() val header = ByteArray(6) @@ -366,7 +422,10 @@ class BleTapController( sendQueue.addLast(frame) i = end } - logd("beginPush attempt=$attempt blob=${blob.size}B mtu=$mtu dataSize=$dataSize frames=${sendQueue.size}") + logd( + "beginPush attempt=$attempt blob=${blob.size}B mtu=$mtu dataSize=$dataSize " + + "frames=${sendQueue.size} mode=${if (attemptConfirmed) "indicate" else "notify"}" + ) sendStatus("writing") pushNext() } @@ -380,12 +439,21 @@ class BleTapController( if (chunk == null) { allSent = true pushing = false - logd("attempt $attempt fully pushed, awaiting receiver disconnect") - sendStatus("sent") - // The receiver confirms by disconnecting. If it doesn't, it wasn't - // listening yet - send the whole thing again rather than waiting for a - // readiness signal it may be incapable of sending. - main.postDelayed(pushRetry, PUSH_RETRY_MS) + if (attemptConfirmed) { + // Every frame was confirmed by the receiver's ATT layer AND its app + // proved it had registered before this attempt began, so this is + // real delivery. Skip the ~4.2s supervision timeout. + reportDelivered("attempt $attempt acknowledged by a registered receiver") + } else { + // Frames were confirmed, but the receiver never proved its app was + // listening - and the ATT layer confirms then discards frames for + // unregistered handles. Not enough to claim delivery of money. Fall + // back to the disconnect, which only happens once the app has + // actually assembled the payload. + logd("attempt $attempt acknowledged, but readiness unproven - awaiting disconnect") + sendStatus("sent") + main.postDelayed(pushRetry, PUSH_RETRY_MS) + } return } val ok = notifyChunk(server, device, ch, chunk) @@ -402,13 +470,23 @@ class BleTapController( ch: BluetoothGattCharacteristic, value: ByteArray, ): Boolean { + // Indications only when they buy something. confirm = true makes + // onNotificationSent fire on the receiver's ATT confirmation rather than + // on local buffer availability, which lets us declare delivery on the last + // frame instead of waiting out the ~4.2s supervision timeout - but each + // one costs a round trip (~131ms measured, vs ~1.8ms for a notification). + // + // That trade only pays off when the confirmation actually means delivery, + // i.e. when the receiver proved its app had registered. Otherwise we are + // waiting for the disconnect either way, so push fast and unacknowledged. + val confirm = attemptConfirmed return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - val res = server.notifyCharacteristicChanged(device, ch, false, value) - if (res != BluetoothStatusCodes.SUCCESS) logd("notifyCharacteristicChanged code=$res") + val res = server.notifyCharacteristicChanged(device, ch, confirm, value) + if (res != BluetoothStatusCodes.SUCCESS) logd("notify/indicate code=$res") res == BluetoothStatusCodes.SUCCESS } else { ch.value = value - server.notifyCharacteristicChanged(device, ch, false) + server.notifyCharacteristicChanged(device, ch, confirm) } } @@ -602,6 +680,10 @@ class BleTapController( main.removeCallbacks(pushSettle) main.removeCallbacks(pushRetry) main.removeCallbacks(closeFallback) + main.removeCallbacks(linger) + delivered = false + readyProven = false + attemptConfirmed = false attempt = 0 try {