From fa5fd7d98e889385bfbe79981e3599bbca3da121 Mon Sep 17 00:00:00 2001 From: Forte11Cuba Date: Sat, 28 Mar 2026 03:14:40 -0600 Subject: [PATCH 1/3] feat: implement Phase 1 Rust API core (keys, token, mint_info, wallet) --- lib/src/rust/api/error.dart | 31 + lib/src/rust/api/error.freezed.dart | 863 +++++ lib/src/rust/api/keys.dart | 20 + lib/src/rust/api/mint_info.dart | 309 ++ lib/src/rust/api/token.dart | 62 + lib/src/rust/api/wallet.dart | 292 ++ lib/src/rust/frb_generated.dart | 4474 +++++++++++++++++++++++++- lib/src/rust/frb_generated.io.dart | 1144 ++++++- lib/src/rust/frb_generated.web.dart | 1114 ++++++- pubspec.lock | 250 +- pubspec.yaml | 3 + rust/Cargo.lock | 2 + rust/Cargo.toml | 6 + rust/src/api/error.rs | 55 + rust/src/api/keys.rs | 30 + rust/src/api/mint_info.rs | 243 ++ rust/src/api/mod.rs | 4 + rust/src/api/token.rs | 151 + rust/src/api/wallet.rs | 649 ++++ rust/src/frb_generated.rs | 4538 ++++++++++++++++++++++++++- 20 files changed, 14223 insertions(+), 17 deletions(-) create mode 100644 lib/src/rust/api/error.dart create mode 100644 lib/src/rust/api/error.freezed.dart create mode 100644 lib/src/rust/api/keys.dart create mode 100644 lib/src/rust/api/mint_info.dart create mode 100644 lib/src/rust/api/token.dart create mode 100644 lib/src/rust/api/wallet.dart create mode 100644 rust/src/api/keys.rs create mode 100644 rust/src/api/mint_info.rs create mode 100644 rust/src/api/token.rs create mode 100644 rust/src/api/wallet.rs diff --git a/lib/src/rust/api/error.dart b/lib/src/rust/api/error.dart new file mode 100644 index 0000000..c850534 --- /dev/null +++ b/lib/src/rust/api/error.dart @@ -0,0 +1,31 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import '../frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; +import 'package:freezed_annotation/freezed_annotation.dart' hide protected; +part 'error.freezed.dart'; + +// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `fmt`, `fmt`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from` + +@freezed +sealed class Error with _$Error implements FrbException { + const Error._(); + + /// Error del protocolo Cashu (cdk) + const factory Error.cdk(String field0) = Error_Cdk; + + /// Error de base de datos (SQLite) + const factory Error.database(String field0) = Error_Database; + + /// Input inválido del usuario + const factory Error.invalidInput() = Error_InvalidInput; + + /// Error de red (HTTP, conexión) + const factory Error.network(String field0) = Error_Network; + + /// Error de UR (QR multiframe) + const factory Error.ur(String field0) = Error_Ur; +} diff --git a/lib/src/rust/api/error.freezed.dart b/lib/src/rust/api/error.freezed.dart new file mode 100644 index 0000000..a70e468 --- /dev/null +++ b/lib/src/rust/api/error.freezed.dart @@ -0,0 +1,863 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'error.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models', +); + +/// @nodoc +mixin _$Error { + @optionalTypeArgs + TResult when({ + required TResult Function(String field0) cdk, + required TResult Function(String field0) database, + required TResult Function() invalidInput, + required TResult Function(String field0) network, + required TResult Function(String field0) ur, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String field0)? cdk, + TResult? Function(String field0)? database, + TResult? Function()? invalidInput, + TResult? Function(String field0)? network, + TResult? Function(String field0)? ur, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String field0)? cdk, + TResult Function(String field0)? database, + TResult Function()? invalidInput, + TResult Function(String field0)? network, + TResult Function(String field0)? ur, + required TResult orElse(), + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map({ + required TResult Function(Error_Cdk value) cdk, + required TResult Function(Error_Database value) database, + required TResult Function(Error_InvalidInput value) invalidInput, + required TResult Function(Error_Network value) network, + required TResult Function(Error_Ur value) ur, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(Error_Cdk value)? cdk, + TResult? Function(Error_Database value)? database, + TResult? Function(Error_InvalidInput value)? invalidInput, + TResult? Function(Error_Network value)? network, + TResult? Function(Error_Ur value)? ur, + }) => throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap({ + TResult Function(Error_Cdk value)? cdk, + TResult Function(Error_Database value)? database, + TResult Function(Error_InvalidInput value)? invalidInput, + TResult Function(Error_Network value)? network, + TResult Function(Error_Ur value)? ur, + required TResult orElse(), + }) => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $ErrorCopyWith<$Res> { + factory $ErrorCopyWith(Error value, $Res Function(Error) then) = + _$ErrorCopyWithImpl<$Res, Error>; +} + +/// @nodoc +class _$ErrorCopyWithImpl<$Res, $Val extends Error> + implements $ErrorCopyWith<$Res> { + _$ErrorCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc +abstract class _$$Error_CdkImplCopyWith<$Res> { + factory _$$Error_CdkImplCopyWith( + _$Error_CdkImpl value, + $Res Function(_$Error_CdkImpl) then, + ) = __$$Error_CdkImplCopyWithImpl<$Res>; + @useResult + $Res call({String field0}); +} + +/// @nodoc +class __$$Error_CdkImplCopyWithImpl<$Res> + extends _$ErrorCopyWithImpl<$Res, _$Error_CdkImpl> + implements _$$Error_CdkImplCopyWith<$Res> { + __$$Error_CdkImplCopyWithImpl( + _$Error_CdkImpl _value, + $Res Function(_$Error_CdkImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? field0 = null}) { + return _then( + _$Error_CdkImpl( + null == field0 + ? _value.field0 + : field0 // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$Error_CdkImpl extends Error_Cdk { + const _$Error_CdkImpl(this.field0) : super._(); + + @override + final String field0; + + @override + String toString() { + return 'Error.cdk(field0: $field0)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$Error_CdkImpl && + (identical(other.field0, field0) || other.field0 == field0)); + } + + @override + int get hashCode => Object.hash(runtimeType, field0); + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$Error_CdkImplCopyWith<_$Error_CdkImpl> get copyWith => + __$$Error_CdkImplCopyWithImpl<_$Error_CdkImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String field0) cdk, + required TResult Function(String field0) database, + required TResult Function() invalidInput, + required TResult Function(String field0) network, + required TResult Function(String field0) ur, + }) { + return cdk(field0); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String field0)? cdk, + TResult? Function(String field0)? database, + TResult? Function()? invalidInput, + TResult? Function(String field0)? network, + TResult? Function(String field0)? ur, + }) { + return cdk?.call(field0); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String field0)? cdk, + TResult Function(String field0)? database, + TResult Function()? invalidInput, + TResult Function(String field0)? network, + TResult Function(String field0)? ur, + required TResult orElse(), + }) { + if (cdk != null) { + return cdk(field0); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(Error_Cdk value) cdk, + required TResult Function(Error_Database value) database, + required TResult Function(Error_InvalidInput value) invalidInput, + required TResult Function(Error_Network value) network, + required TResult Function(Error_Ur value) ur, + }) { + return cdk(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(Error_Cdk value)? cdk, + TResult? Function(Error_Database value)? database, + TResult? Function(Error_InvalidInput value)? invalidInput, + TResult? Function(Error_Network value)? network, + TResult? Function(Error_Ur value)? ur, + }) { + return cdk?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(Error_Cdk value)? cdk, + TResult Function(Error_Database value)? database, + TResult Function(Error_InvalidInput value)? invalidInput, + TResult Function(Error_Network value)? network, + TResult Function(Error_Ur value)? ur, + required TResult orElse(), + }) { + if (cdk != null) { + return cdk(this); + } + return orElse(); + } +} + +abstract class Error_Cdk extends Error { + const factory Error_Cdk(final String field0) = _$Error_CdkImpl; + const Error_Cdk._() : super._(); + + String get field0; + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$Error_CdkImplCopyWith<_$Error_CdkImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$Error_DatabaseImplCopyWith<$Res> { + factory _$$Error_DatabaseImplCopyWith( + _$Error_DatabaseImpl value, + $Res Function(_$Error_DatabaseImpl) then, + ) = __$$Error_DatabaseImplCopyWithImpl<$Res>; + @useResult + $Res call({String field0}); +} + +/// @nodoc +class __$$Error_DatabaseImplCopyWithImpl<$Res> + extends _$ErrorCopyWithImpl<$Res, _$Error_DatabaseImpl> + implements _$$Error_DatabaseImplCopyWith<$Res> { + __$$Error_DatabaseImplCopyWithImpl( + _$Error_DatabaseImpl _value, + $Res Function(_$Error_DatabaseImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? field0 = null}) { + return _then( + _$Error_DatabaseImpl( + null == field0 + ? _value.field0 + : field0 // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$Error_DatabaseImpl extends Error_Database { + const _$Error_DatabaseImpl(this.field0) : super._(); + + @override + final String field0; + + @override + String toString() { + return 'Error.database(field0: $field0)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$Error_DatabaseImpl && + (identical(other.field0, field0) || other.field0 == field0)); + } + + @override + int get hashCode => Object.hash(runtimeType, field0); + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$Error_DatabaseImplCopyWith<_$Error_DatabaseImpl> get copyWith => + __$$Error_DatabaseImplCopyWithImpl<_$Error_DatabaseImpl>( + this, + _$identity, + ); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String field0) cdk, + required TResult Function(String field0) database, + required TResult Function() invalidInput, + required TResult Function(String field0) network, + required TResult Function(String field0) ur, + }) { + return database(field0); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String field0)? cdk, + TResult? Function(String field0)? database, + TResult? Function()? invalidInput, + TResult? Function(String field0)? network, + TResult? Function(String field0)? ur, + }) { + return database?.call(field0); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String field0)? cdk, + TResult Function(String field0)? database, + TResult Function()? invalidInput, + TResult Function(String field0)? network, + TResult Function(String field0)? ur, + required TResult orElse(), + }) { + if (database != null) { + return database(field0); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(Error_Cdk value) cdk, + required TResult Function(Error_Database value) database, + required TResult Function(Error_InvalidInput value) invalidInput, + required TResult Function(Error_Network value) network, + required TResult Function(Error_Ur value) ur, + }) { + return database(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(Error_Cdk value)? cdk, + TResult? Function(Error_Database value)? database, + TResult? Function(Error_InvalidInput value)? invalidInput, + TResult? Function(Error_Network value)? network, + TResult? Function(Error_Ur value)? ur, + }) { + return database?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(Error_Cdk value)? cdk, + TResult Function(Error_Database value)? database, + TResult Function(Error_InvalidInput value)? invalidInput, + TResult Function(Error_Network value)? network, + TResult Function(Error_Ur value)? ur, + required TResult orElse(), + }) { + if (database != null) { + return database(this); + } + return orElse(); + } +} + +abstract class Error_Database extends Error { + const factory Error_Database(final String field0) = _$Error_DatabaseImpl; + const Error_Database._() : super._(); + + String get field0; + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$Error_DatabaseImplCopyWith<_$Error_DatabaseImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$Error_InvalidInputImplCopyWith<$Res> { + factory _$$Error_InvalidInputImplCopyWith( + _$Error_InvalidInputImpl value, + $Res Function(_$Error_InvalidInputImpl) then, + ) = __$$Error_InvalidInputImplCopyWithImpl<$Res>; +} + +/// @nodoc +class __$$Error_InvalidInputImplCopyWithImpl<$Res> + extends _$ErrorCopyWithImpl<$Res, _$Error_InvalidInputImpl> + implements _$$Error_InvalidInputImplCopyWith<$Res> { + __$$Error_InvalidInputImplCopyWithImpl( + _$Error_InvalidInputImpl _value, + $Res Function(_$Error_InvalidInputImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. +} + +/// @nodoc + +class _$Error_InvalidInputImpl extends Error_InvalidInput { + const _$Error_InvalidInputImpl() : super._(); + + @override + String toString() { + return 'Error.invalidInput()'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && other is _$Error_InvalidInputImpl); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String field0) cdk, + required TResult Function(String field0) database, + required TResult Function() invalidInput, + required TResult Function(String field0) network, + required TResult Function(String field0) ur, + }) { + return invalidInput(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String field0)? cdk, + TResult? Function(String field0)? database, + TResult? Function()? invalidInput, + TResult? Function(String field0)? network, + TResult? Function(String field0)? ur, + }) { + return invalidInput?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String field0)? cdk, + TResult Function(String field0)? database, + TResult Function()? invalidInput, + TResult Function(String field0)? network, + TResult Function(String field0)? ur, + required TResult orElse(), + }) { + if (invalidInput != null) { + return invalidInput(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(Error_Cdk value) cdk, + required TResult Function(Error_Database value) database, + required TResult Function(Error_InvalidInput value) invalidInput, + required TResult Function(Error_Network value) network, + required TResult Function(Error_Ur value) ur, + }) { + return invalidInput(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(Error_Cdk value)? cdk, + TResult? Function(Error_Database value)? database, + TResult? Function(Error_InvalidInput value)? invalidInput, + TResult? Function(Error_Network value)? network, + TResult? Function(Error_Ur value)? ur, + }) { + return invalidInput?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(Error_Cdk value)? cdk, + TResult Function(Error_Database value)? database, + TResult Function(Error_InvalidInput value)? invalidInput, + TResult Function(Error_Network value)? network, + TResult Function(Error_Ur value)? ur, + required TResult orElse(), + }) { + if (invalidInput != null) { + return invalidInput(this); + } + return orElse(); + } +} + +abstract class Error_InvalidInput extends Error { + const factory Error_InvalidInput() = _$Error_InvalidInputImpl; + const Error_InvalidInput._() : super._(); +} + +/// @nodoc +abstract class _$$Error_NetworkImplCopyWith<$Res> { + factory _$$Error_NetworkImplCopyWith( + _$Error_NetworkImpl value, + $Res Function(_$Error_NetworkImpl) then, + ) = __$$Error_NetworkImplCopyWithImpl<$Res>; + @useResult + $Res call({String field0}); +} + +/// @nodoc +class __$$Error_NetworkImplCopyWithImpl<$Res> + extends _$ErrorCopyWithImpl<$Res, _$Error_NetworkImpl> + implements _$$Error_NetworkImplCopyWith<$Res> { + __$$Error_NetworkImplCopyWithImpl( + _$Error_NetworkImpl _value, + $Res Function(_$Error_NetworkImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? field0 = null}) { + return _then( + _$Error_NetworkImpl( + null == field0 + ? _value.field0 + : field0 // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$Error_NetworkImpl extends Error_Network { + const _$Error_NetworkImpl(this.field0) : super._(); + + @override + final String field0; + + @override + String toString() { + return 'Error.network(field0: $field0)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$Error_NetworkImpl && + (identical(other.field0, field0) || other.field0 == field0)); + } + + @override + int get hashCode => Object.hash(runtimeType, field0); + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$Error_NetworkImplCopyWith<_$Error_NetworkImpl> get copyWith => + __$$Error_NetworkImplCopyWithImpl<_$Error_NetworkImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String field0) cdk, + required TResult Function(String field0) database, + required TResult Function() invalidInput, + required TResult Function(String field0) network, + required TResult Function(String field0) ur, + }) { + return network(field0); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String field0)? cdk, + TResult? Function(String field0)? database, + TResult? Function()? invalidInput, + TResult? Function(String field0)? network, + TResult? Function(String field0)? ur, + }) { + return network?.call(field0); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String field0)? cdk, + TResult Function(String field0)? database, + TResult Function()? invalidInput, + TResult Function(String field0)? network, + TResult Function(String field0)? ur, + required TResult orElse(), + }) { + if (network != null) { + return network(field0); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(Error_Cdk value) cdk, + required TResult Function(Error_Database value) database, + required TResult Function(Error_InvalidInput value) invalidInput, + required TResult Function(Error_Network value) network, + required TResult Function(Error_Ur value) ur, + }) { + return network(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(Error_Cdk value)? cdk, + TResult? Function(Error_Database value)? database, + TResult? Function(Error_InvalidInput value)? invalidInput, + TResult? Function(Error_Network value)? network, + TResult? Function(Error_Ur value)? ur, + }) { + return network?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(Error_Cdk value)? cdk, + TResult Function(Error_Database value)? database, + TResult Function(Error_InvalidInput value)? invalidInput, + TResult Function(Error_Network value)? network, + TResult Function(Error_Ur value)? ur, + required TResult orElse(), + }) { + if (network != null) { + return network(this); + } + return orElse(); + } +} + +abstract class Error_Network extends Error { + const factory Error_Network(final String field0) = _$Error_NetworkImpl; + const Error_Network._() : super._(); + + String get field0; + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$Error_NetworkImplCopyWith<_$Error_NetworkImpl> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class _$$Error_UrImplCopyWith<$Res> { + factory _$$Error_UrImplCopyWith( + _$Error_UrImpl value, + $Res Function(_$Error_UrImpl) then, + ) = __$$Error_UrImplCopyWithImpl<$Res>; + @useResult + $Res call({String field0}); +} + +/// @nodoc +class __$$Error_UrImplCopyWithImpl<$Res> + extends _$ErrorCopyWithImpl<$Res, _$Error_UrImpl> + implements _$$Error_UrImplCopyWith<$Res> { + __$$Error_UrImplCopyWithImpl( + _$Error_UrImpl _value, + $Res Function(_$Error_UrImpl) _then, + ) : super(_value, _then); + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({Object? field0 = null}) { + return _then( + _$Error_UrImpl( + null == field0 + ? _value.field0 + : field0 // ignore: cast_nullable_to_non_nullable + as String, + ), + ); + } +} + +/// @nodoc + +class _$Error_UrImpl extends Error_Ur { + const _$Error_UrImpl(this.field0) : super._(); + + @override + final String field0; + + @override + String toString() { + return 'Error.ur(field0: $field0)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$Error_UrImpl && + (identical(other.field0, field0) || other.field0 == field0)); + } + + @override + int get hashCode => Object.hash(runtimeType, field0); + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$Error_UrImplCopyWith<_$Error_UrImpl> get copyWith => + __$$Error_UrImplCopyWithImpl<_$Error_UrImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when({ + required TResult Function(String field0) cdk, + required TResult Function(String field0) database, + required TResult Function() invalidInput, + required TResult Function(String field0) network, + required TResult Function(String field0) ur, + }) { + return ur(field0); + } + + @override + @optionalTypeArgs + TResult? whenOrNull({ + TResult? Function(String field0)? cdk, + TResult? Function(String field0)? database, + TResult? Function()? invalidInput, + TResult? Function(String field0)? network, + TResult? Function(String field0)? ur, + }) { + return ur?.call(field0); + } + + @override + @optionalTypeArgs + TResult maybeWhen({ + TResult Function(String field0)? cdk, + TResult Function(String field0)? database, + TResult Function()? invalidInput, + TResult Function(String field0)? network, + TResult Function(String field0)? ur, + required TResult orElse(), + }) { + if (ur != null) { + return ur(field0); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map({ + required TResult Function(Error_Cdk value) cdk, + required TResult Function(Error_Database value) database, + required TResult Function(Error_InvalidInput value) invalidInput, + required TResult Function(Error_Network value) network, + required TResult Function(Error_Ur value) ur, + }) { + return ur(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull({ + TResult? Function(Error_Cdk value)? cdk, + TResult? Function(Error_Database value)? database, + TResult? Function(Error_InvalidInput value)? invalidInput, + TResult? Function(Error_Network value)? network, + TResult? Function(Error_Ur value)? ur, + }) { + return ur?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap({ + TResult Function(Error_Cdk value)? cdk, + TResult Function(Error_Database value)? database, + TResult Function(Error_InvalidInput value)? invalidInput, + TResult Function(Error_Network value)? network, + TResult Function(Error_Ur value)? ur, + required TResult orElse(), + }) { + if (ur != null) { + return ur(this); + } + return orElse(); + } +} + +abstract class Error_Ur extends Error { + const factory Error_Ur(final String field0) = _$Error_UrImpl; + const Error_Ur._() : super._(); + + String get field0; + + /// Create a copy of Error + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + _$$Error_UrImplCopyWith<_$Error_UrImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/lib/src/rust/api/keys.dart b/lib/src/rust/api/keys.dart new file mode 100644 index 0000000..a8f17ee --- /dev/null +++ b/lib/src/rust/api/keys.dart @@ -0,0 +1,20 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import '../frb_generated.dart'; +import 'error.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +/// Generate a new 12-word BIP39 mnemonic +String generateMnemonic() => + RustLib.instance.api.crateApiKeysGenerateMnemonic(); + +/// Convert a mnemonic to a 64-byte seed +Uint8List mnemonicToSeed({required String mnemonic}) => + RustLib.instance.api.crateApiKeysMnemonicToSeed(mnemonic: mnemonic); + +/// Derive the public key (hex) from a secret key (hex) +String getPubKey({required String secret}) => + RustLib.instance.api.crateApiKeysGetPubKey(secret: secret); diff --git a/lib/src/rust/api/mint_info.dart b/lib/src/rust/api/mint_info.dart new file mode 100644 index 0000000..f029e14 --- /dev/null +++ b/lib/src/rust/api/mint_info.dart @@ -0,0 +1,309 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import '../frb_generated.dart'; +import 'error.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from` + +/// Fetch full mint info from a mint URL +Future getMintInfo({required String mintUrl}) => + RustLib.instance.api.crateApiMintInfoGetMintInfo(mintUrl: mintUrl); + +/// Ping a mint to check if it's reachable (replaces Dart HTTP call) +Future pingMint({required String mintUrl}) => + RustLib.instance.api.crateApiMintInfoPingMint(mintUrl: mintUrl); + +/// Fetch keysets from a mint (replaces Dart HTTP call) +Future> fetchKeysets({required String mintUrl}) => + RustLib.instance.api.crateApiMintInfoFetchKeysets(mintUrl: mintUrl); + +class ContactInfo { + final String method; + final String info; + + const ContactInfo({required this.method, required this.info}); + + @override + int get hashCode => method.hashCode ^ info.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is ContactInfo && + runtimeType == other.runtimeType && + method == other.method && + info == other.info; +} + +/// Keyset info returned by fetch_keysets +class KeysetInfo { + final String id; + final String unit; + final bool active; + + const KeysetInfo({ + required this.id, + required this.unit, + required this.active, + }); + + @override + int get hashCode => id.hashCode ^ unit.hashCode ^ active.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is KeysetInfo && + runtimeType == other.runtimeType && + id == other.id && + unit == other.unit && + active == other.active; +} + +class MeltMethodSettings { + final String method; + final String unit; + final BigInt? minAmount; + final BigInt? maxAmount; + + const MeltMethodSettings({ + required this.method, + required this.unit, + this.minAmount, + this.maxAmount, + }); + + @override + int get hashCode => + method.hashCode ^ unit.hashCode ^ minAmount.hashCode ^ maxAmount.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is MeltMethodSettings && + runtimeType == other.runtimeType && + method == other.method && + unit == other.unit && + minAmount == other.minAmount && + maxAmount == other.maxAmount; +} + +class MintInfo { + final String? name; + final String? pubkey; + final MintVersion? version; + final String? description; + final String? descriptionLong; + final List? contact; + final Nuts nuts; + final String? iconUrl; + final List? urls; + final String? motd; + final BigInt? time; + final String? tosUrl; + + const MintInfo({ + this.name, + this.pubkey, + this.version, + this.description, + this.descriptionLong, + this.contact, + required this.nuts, + this.iconUrl, + this.urls, + this.motd, + this.time, + this.tosUrl, + }); + + @override + int get hashCode => + name.hashCode ^ + pubkey.hashCode ^ + version.hashCode ^ + description.hashCode ^ + descriptionLong.hashCode ^ + contact.hashCode ^ + nuts.hashCode ^ + iconUrl.hashCode ^ + urls.hashCode ^ + motd.hashCode ^ + time.hashCode ^ + tosUrl.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is MintInfo && + runtimeType == other.runtimeType && + name == other.name && + pubkey == other.pubkey && + version == other.version && + description == other.description && + descriptionLong == other.descriptionLong && + contact == other.contact && + nuts == other.nuts && + iconUrl == other.iconUrl && + urls == other.urls && + motd == other.motd && + time == other.time && + tosUrl == other.tosUrl; +} + +class MintMethodSettings { + final String method; + final String unit; + final BigInt? minAmount; + final BigInt? maxAmount; + + const MintMethodSettings({ + required this.method, + required this.unit, + this.minAmount, + this.maxAmount, + }); + + @override + int get hashCode => + method.hashCode ^ unit.hashCode ^ minAmount.hashCode ^ maxAmount.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is MintMethodSettings && + runtimeType == other.runtimeType && + method == other.method && + unit == other.unit && + minAmount == other.minAmount && + maxAmount == other.maxAmount; +} + +class MintVersion { + final String name; + final String version; + + const MintVersion({required this.name, required this.version}); + + @override + int get hashCode => name.hashCode ^ version.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is MintVersion && + runtimeType == other.runtimeType && + name == other.name && + version == other.version; +} + +class Nut04Settings { + final List methods; + final bool disabled; + + const Nut04Settings({required this.methods, required this.disabled}); + + @override + int get hashCode => methods.hashCode ^ disabled.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Nut04Settings && + runtimeType == other.runtimeType && + methods == other.methods && + disabled == other.disabled; +} + +class Nut05Settings { + final List methods; + final bool disabled; + + const Nut05Settings({required this.methods, required this.disabled}); + + @override + int get hashCode => methods.hashCode ^ disabled.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Nut05Settings && + runtimeType == other.runtimeType && + methods == other.methods && + disabled == other.disabled; +} + +class Nuts { + final Nut04Settings nut04; + final Nut05Settings nut05; + final SupportedSettings nut07; + final SupportedSettings nut08; + final SupportedSettings nut09; + final SupportedSettings nut10; + final SupportedSettings nut11; + final SupportedSettings nut12; + final SupportedSettings nut14; + final SupportedSettings nut20; + + const Nuts({ + required this.nut04, + required this.nut05, + required this.nut07, + required this.nut08, + required this.nut09, + required this.nut10, + required this.nut11, + required this.nut12, + required this.nut14, + required this.nut20, + }); + + @override + int get hashCode => + nut04.hashCode ^ + nut05.hashCode ^ + nut07.hashCode ^ + nut08.hashCode ^ + nut09.hashCode ^ + nut10.hashCode ^ + nut11.hashCode ^ + nut12.hashCode ^ + nut14.hashCode ^ + nut20.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Nuts && + runtimeType == other.runtimeType && + nut04 == other.nut04 && + nut05 == other.nut05 && + nut07 == other.nut07 && + nut08 == other.nut08 && + nut09 == other.nut09 && + nut10 == other.nut10 && + nut11 == other.nut11 && + nut12 == other.nut12 && + nut14 == other.nut14 && + nut20 == other.nut20; +} + +class SupportedSettings { + final bool supported; + + const SupportedSettings({required this.supported}); + + @override + int get hashCode => supported.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is SupportedSettings && + runtimeType == other.runtimeType && + supported == other.supported; +} diff --git a/lib/src/rust/api/token.dart b/lib/src/rust/api/token.dart new file mode 100644 index 0000000..1275aef --- /dev/null +++ b/lib/src/rust/api/token.dart @@ -0,0 +1,62 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import '../frb_generated.dart'; +import 'error.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +// These functions are ignored because they are not marked as `pub`: `proofs` +// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `fmt`, `from_str`, `try_from`, `try_into`, `try_into` + +List encodeQrToken({required Token token, BigInt? maxFragmentLength}) => + RustLib.instance.api.crateApiTokenEncodeQrToken( + token: token, + maxFragmentLength: maxFragmentLength, + ); + +// Rust type: RustOpaqueMoi> +abstract class TokenDecoder implements RustOpaqueInterface { + bool isComplete(); + + factory TokenDecoder() => RustLib.instance.api.crateApiTokenTokenDecoderNew(); + + void receive({required String input}); + + Token? value(); +} + +class Token { + final String encoded; + final Uint8List? raw; + final BigInt amount; + final String mintUrl; + + const Token({ + required this.encoded, + this.raw, + required this.amount, + required this.mintUrl, + }); + + static Token fromRawBytes({required List raw}) => + RustLib.instance.api.crateApiTokenTokenFromRawBytes(raw: raw); + + static Token parse({required String encoded}) => + RustLib.instance.api.crateApiTokenTokenParse(encoded: encoded); + + @override + int get hashCode => + encoded.hashCode ^ raw.hashCode ^ amount.hashCode ^ mintUrl.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Token && + runtimeType == other.runtimeType && + encoded == other.encoded && + raw == other.raw && + amount == other.amount && + mintUrl == other.mintUrl; +} diff --git a/lib/src/rust/api/wallet.dart b/lib/src/rust/api/wallet.dart new file mode 100644 index 0000000..6bdf481 --- /dev/null +++ b/lib/src/rust/api/wallet.dart @@ -0,0 +1,292 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import '../frb_generated.dart'; +import 'error.dart'; +import 'mint_info.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; +import 'token.dart'; + +// These functions are ignored because they are not marked as `pub`: `mint_url`, `unit`, `update_balance_streams` +// 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`, `clone`, `clone`, `clone`, `clone`, `cmp`, `eq`, `eq`, `eq`, `fmt`, `fmt`, `from`, `from`, `from`, `from`, `from`, `from`, `into`, `partial_cmp`, `try_into`, `try_into` + +// Rust type: RustOpaqueMoi> +abstract class PreparedSend implements RustOpaqueInterface { + BigInt get amount; + + BigInt get fee; + + BigInt get sendFee; + + BigInt get swapFee; + + set amount(BigInt amount); + + set fee(BigInt fee); + + set sendFee(BigInt sendFee); + + set swapFee(BigInt swapFee); +} + +// Rust type: RustOpaqueMoi> +abstract class Wallet implements RustOpaqueInterface { + String get mintUrl; + + String get unit; + + set mintUrl(String mintUrl); + + set unit(String unit); + + Future balance(); + + Future cancelSend({required PreparedSend send}); + + Future checkAllMintQuotes(); + + Future checkPendingTransactions(); + + Future finalizePendingMelts(); + + Future getMint(); + + Future isTokenSpent({required Token token}); + + Future> listTransactions({TransactionDirection? direction}); + + Future melt({required MeltQuote quote}); + + Future meltQuote({required String request}); + + Stream mint({required BigInt amount, String? description}); + + factory Wallet({ + required String mintUrl, + required String unit, + required String mnemonic, + BigInt? targetProofCount, + required WalletDatabase db, + }) => RustLib.instance.api.crateApiWalletWalletNew( + mintUrl: mintUrl, + unit: unit, + mnemonic: mnemonic, + targetProofCount: targetProofCount, + db: db, + ); + + Future prepareSend({required BigInt amount, SendOptions? opts}); + + Future receive({required Token token, ReceiveOptions? opts}); + + Future recoverIncompleteSagas(); + + Future restore(); + + Future send({ + required PreparedSend send, + String? memo, + bool? includeMemo, + }); + + Stream streamBalance(); +} + +// Rust type: RustOpaqueMoi> +abstract class WalletDatabase implements RustOpaqueInterface { + String get path; + + set path(String path); + + static Future newInstance({required String path}) => + RustLib.instance.api.crateApiWalletWalletDatabaseNewInstance(path: path); + + Future removeMint({required String mintUrl}); +} + +class MeltQuote { + final String id; + final String request; + final BigInt amount; + final BigInt feeReserve; + final BigInt expiry; + + const MeltQuote({ + required this.id, + required this.request, + required this.amount, + required this.feeReserve, + required this.expiry, + }); + + @override + int get hashCode => + id.hashCode ^ + request.hashCode ^ + amount.hashCode ^ + feeReserve.hashCode ^ + expiry.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is MeltQuote && + runtimeType == other.runtimeType && + id == other.id && + request == other.request && + amount == other.amount && + feeReserve == other.feeReserve && + expiry == other.expiry; +} + +class MintQuote { + final String id; + final String request; + final BigInt? amount; + final BigInt? expiry; + final MintQuoteState state; + final Token? token; + final String? error; + + const MintQuote({ + required this.id, + required this.request, + this.amount, + this.expiry, + required this.state, + this.token, + this.error, + }); + + @override + int get hashCode => + id.hashCode ^ + request.hashCode ^ + amount.hashCode ^ + expiry.hashCode ^ + state.hashCode ^ + token.hashCode ^ + error.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is MintQuote && + runtimeType == other.runtimeType && + id == other.id && + request == other.request && + amount == other.amount && + expiry == other.expiry && + state == other.state && + token == other.token && + error == other.error; +} + +enum MintQuoteState { unpaid, paid, issued, error } + +class ReceiveOptions { + final List? signingKeys; + final List? preimages; + + const ReceiveOptions({this.signingKeys, this.preimages}); + + static Future default_() => + RustLib.instance.api.crateApiWalletReceiveOptionsDefault(); + + @override + int get hashCode => signingKeys.hashCode ^ preimages.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is ReceiveOptions && + runtimeType == other.runtimeType && + signingKeys == other.signingKeys && + preimages == other.preimages; +} + +class SendOptions { + final String? pubkey; + final bool? includeFee; + + const SendOptions({this.pubkey, this.includeFee}); + + static Future default_() => + RustLib.instance.api.crateApiWalletSendOptionsDefault(); + + @override + int get hashCode => pubkey.hashCode ^ includeFee.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is SendOptions && + runtimeType == other.runtimeType && + pubkey == other.pubkey && + includeFee == other.includeFee; +} + +class Transaction { + final String id; + final String mintUrl; + final TransactionDirection direction; + final BigInt amount; + final BigInt fee; + final String unit; + final List ys; + final BigInt timestamp; + final String? memo; + final Map metadata; + final TransactionStatus status; + + const Transaction({ + required this.id, + required this.mintUrl, + required this.direction, + required this.amount, + required this.fee, + required this.unit, + required this.ys, + required this.timestamp, + this.memo, + required this.metadata, + required this.status, + }); + + @override + int get hashCode => + id.hashCode ^ + mintUrl.hashCode ^ + direction.hashCode ^ + amount.hashCode ^ + fee.hashCode ^ + unit.hashCode ^ + ys.hashCode ^ + timestamp.hashCode ^ + memo.hashCode ^ + metadata.hashCode ^ + status.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is Transaction && + runtimeType == other.runtimeType && + id == other.id && + mintUrl == other.mintUrl && + direction == other.direction && + amount == other.amount && + fee == other.fee && + unit == other.unit && + ys == other.ys && + timestamp == other.timestamp && + memo == other.memo && + metadata == other.metadata && + status == other.status; +} + +enum TransactionDirection { incoming, outgoing } + +enum TransactionStatus { pending, settled } diff --git a/lib/src/rust/frb_generated.dart b/lib/src/rust/frb_generated.dart index bbb7233..6afbe7d 100644 --- a/lib/src/rust/frb_generated.dart +++ b/lib/src/rust/frb_generated.dart @@ -3,6 +3,11 @@ // ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field +import 'api/error.dart'; +import 'api/keys.dart'; +import 'api/mint_info.dart'; +import 'api/token.dart'; +import 'api/wallet.dart'; import 'dart:async'; import 'dart:convert'; import 'frb_generated.dart'; @@ -63,7 +68,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.11.1'; @override - int get rustContentHash => -291292710; + int get rustContentHash => -625377011; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -73,7 +78,222 @@ class RustLib extends BaseEntrypoint { ); } -abstract class RustLibApi extends BaseApi {} +abstract class RustLibApi extends BaseApi { + BigInt crateApiWalletPreparedSendAutoAccessorGetAmount({ + required PreparedSend that, + }); + + BigInt crateApiWalletPreparedSendAutoAccessorGetFee({ + required PreparedSend that, + }); + + BigInt crateApiWalletPreparedSendAutoAccessorGetSendFee({ + required PreparedSend that, + }); + + BigInt crateApiWalletPreparedSendAutoAccessorGetSwapFee({ + required PreparedSend that, + }); + + void crateApiWalletPreparedSendAutoAccessorSetAmount({ + required PreparedSend that, + required BigInt amount, + }); + + void crateApiWalletPreparedSendAutoAccessorSetFee({ + required PreparedSend that, + required BigInt fee, + }); + + void crateApiWalletPreparedSendAutoAccessorSetSendFee({ + required PreparedSend that, + required BigInt sendFee, + }); + + void crateApiWalletPreparedSendAutoAccessorSetSwapFee({ + required PreparedSend that, + required BigInt swapFee, + }); + + bool crateApiTokenTokenDecoderIsComplete({required TokenDecoder that}); + + TokenDecoder crateApiTokenTokenDecoderNew(); + + void crateApiTokenTokenDecoderReceive({ + required TokenDecoder that, + required String input, + }); + + Token? crateApiTokenTokenDecoderValue({required TokenDecoder that}); + + String crateApiWalletWalletDatabaseAutoAccessorGetPath({ + required WalletDatabase that, + }); + + void crateApiWalletWalletDatabaseAutoAccessorSetPath({ + required WalletDatabase that, + required String path, + }); + + Future crateApiWalletWalletDatabaseNewInstance({ + required String path, + }); + + Future crateApiWalletWalletDatabaseRemoveMint({ + required WalletDatabase that, + required String mintUrl, + }); + + String crateApiWalletWalletAutoAccessorGetMintUrl({required Wallet that}); + + String crateApiWalletWalletAutoAccessorGetUnit({required Wallet that}); + + void crateApiWalletWalletAutoAccessorSetMintUrl({ + required Wallet that, + required String mintUrl, + }); + + void crateApiWalletWalletAutoAccessorSetUnit({ + required Wallet that, + required String unit, + }); + + Future crateApiWalletWalletBalance({required Wallet that}); + + Future crateApiWalletWalletCancelSend({ + required Wallet that, + required PreparedSend send, + }); + + Future crateApiWalletWalletCheckAllMintQuotes({required Wallet that}); + + Future crateApiWalletWalletCheckPendingTransactions({ + required Wallet that, + }); + + Future crateApiWalletWalletFinalizePendingMelts({required Wallet that}); + + Future crateApiWalletWalletGetMint({required Wallet that}); + + Future crateApiWalletWalletIsTokenSpent({ + required Wallet that, + required Token token, + }); + + Future> crateApiWalletWalletListTransactions({ + required Wallet that, + TransactionDirection? direction, + }); + + Future crateApiWalletWalletMelt({ + required Wallet that, + required MeltQuote quote, + }); + + Future crateApiWalletWalletMeltQuote({ + required Wallet that, + required String request, + }); + + Stream crateApiWalletWalletMint({ + required Wallet that, + required BigInt amount, + String? description, + }); + + Wallet crateApiWalletWalletNew({ + required String mintUrl, + required String unit, + required String mnemonic, + BigInt? targetProofCount, + required WalletDatabase db, + }); + + Future crateApiWalletWalletPrepareSend({ + required Wallet that, + required BigInt amount, + SendOptions? opts, + }); + + Future crateApiWalletWalletReceive({ + required Wallet that, + required Token token, + ReceiveOptions? opts, + }); + + Future crateApiWalletWalletRecoverIncompleteSagas({ + required Wallet that, + }); + + Future crateApiWalletWalletRestore({required Wallet that}); + + Future crateApiWalletWalletSend({ + required Wallet that, + required PreparedSend send, + String? memo, + bool? includeMemo, + }); + + Stream crateApiWalletWalletStreamBalance({required Wallet that}); + + List crateApiTokenEncodeQrToken({ + required Token token, + BigInt? maxFragmentLength, + }); + + Future> crateApiMintInfoFetchKeysets({ + required String mintUrl, + }); + + String crateApiKeysGenerateMnemonic(); + + Future crateApiMintInfoGetMintInfo({required String mintUrl}); + + String crateApiKeysGetPubKey({required String secret}); + + Uint8List crateApiKeysMnemonicToSeed({required String mnemonic}); + + Future crateApiMintInfoPingMint({required String mintUrl}); + + Future crateApiWalletReceiveOptionsDefault(); + + Future crateApiWalletSendOptionsDefault(); + + Token crateApiTokenTokenFromRawBytes({required List raw}); + + Token crateApiTokenTokenParse({required String encoded}); + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_PreparedSend; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_PreparedSend; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_PreparedSendPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_TokenDecoder; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_TokenDecoder; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_TokenDecoderPtr; + + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_Wallet; + + RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_Wallet; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_WalletPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_WalletDatabase; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_WalletDatabase; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_WalletDatabasePtr; +} class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { RustLibApiImpl({ @@ -83,10 +303,2529 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { required super.portManager, }); + @override + BigInt crateApiWalletPreparedSendAutoAccessorGetAmount({ + required PreparedSend that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 1)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletPreparedSendAutoAccessorGetAmountConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletPreparedSendAutoAccessorGetAmountConstMeta => + const TaskConstMeta( + debugName: "PreparedSend_auto_accessor_get_amount", + argNames: ["that"], + ); + + @override + BigInt crateApiWalletPreparedSendAutoAccessorGetFee({ + required PreparedSend that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 2)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletPreparedSendAutoAccessorGetFeeConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletPreparedSendAutoAccessorGetFeeConstMeta => + const TaskConstMeta( + debugName: "PreparedSend_auto_accessor_get_fee", + argNames: ["that"], + ); + + @override + BigInt crateApiWalletPreparedSendAutoAccessorGetSendFee({ + required PreparedSend that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 3)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletPreparedSendAutoAccessorGetSendFeeConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateApiWalletPreparedSendAutoAccessorGetSendFeeConstMeta => + const TaskConstMeta( + debugName: "PreparedSend_auto_accessor_get_send_fee", + argNames: ["that"], + ); + + @override + BigInt crateApiWalletPreparedSendAutoAccessorGetSwapFee({ + required PreparedSend that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 4)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletPreparedSendAutoAccessorGetSwapFeeConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateApiWalletPreparedSendAutoAccessorGetSwapFeeConstMeta => + const TaskConstMeta( + debugName: "PreparedSend_auto_accessor_get_swap_fee", + argNames: ["that"], + ); + + @override + void crateApiWalletPreparedSendAutoAccessorSetAmount({ + required PreparedSend that, + required BigInt amount, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + that, + serializer, + ); + sse_encode_u_64(amount, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 5)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletPreparedSendAutoAccessorSetAmountConstMeta, + argValues: [that, amount], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletPreparedSendAutoAccessorSetAmountConstMeta => + const TaskConstMeta( + debugName: "PreparedSend_auto_accessor_set_amount", + argNames: ["that", "amount"], + ); + + @override + void crateApiWalletPreparedSendAutoAccessorSetFee({ + required PreparedSend that, + required BigInt fee, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + that, + serializer, + ); + sse_encode_u_64(fee, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 6)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletPreparedSendAutoAccessorSetFeeConstMeta, + argValues: [that, fee], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletPreparedSendAutoAccessorSetFeeConstMeta => + const TaskConstMeta( + debugName: "PreparedSend_auto_accessor_set_fee", + argNames: ["that", "fee"], + ); + + @override + void crateApiWalletPreparedSendAutoAccessorSetSendFee({ + required PreparedSend that, + required BigInt sendFee, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + that, + serializer, + ); + sse_encode_u_64(sendFee, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 7)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletPreparedSendAutoAccessorSetSendFeeConstMeta, + argValues: [that, sendFee], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateApiWalletPreparedSendAutoAccessorSetSendFeeConstMeta => + const TaskConstMeta( + debugName: "PreparedSend_auto_accessor_set_send_fee", + argNames: ["that", "sendFee"], + ); + + @override + void crateApiWalletPreparedSendAutoAccessorSetSwapFee({ + required PreparedSend that, + required BigInt swapFee, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + that, + serializer, + ); + sse_encode_u_64(swapFee, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 8)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletPreparedSendAutoAccessorSetSwapFeeConstMeta, + argValues: [that, swapFee], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateApiWalletPreparedSendAutoAccessorSetSwapFeeConstMeta => + const TaskConstMeta( + debugName: "PreparedSend_auto_accessor_set_swap_fee", + argNames: ["that", "swapFee"], + ); + + @override + bool crateApiTokenTokenDecoderIsComplete({required TokenDecoder that}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 9)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, + ), + constMeta: kCrateApiTokenTokenDecoderIsCompleteConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiTokenTokenDecoderIsCompleteConstMeta => + const TaskConstMeta( + debugName: "TokenDecoder_is_complete", + argNames: ["that"], + ); + + @override + TokenDecoder crateApiTokenTokenDecoderNew() { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 10)!; + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder, + decodeErrorData: null, + ), + constMeta: kCrateApiTokenTokenDecoderNewConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiTokenTokenDecoderNewConstMeta => + const TaskConstMeta(debugName: "TokenDecoder_new", argNames: []); + + @override + void crateApiTokenTokenDecoderReceive({ + required TokenDecoder that, + required String input, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + that, + serializer, + ); + sse_encode_String(input, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 11)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiTokenTokenDecoderReceiveConstMeta, + argValues: [that, input], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiTokenTokenDecoderReceiveConstMeta => + const TaskConstMeta( + debugName: "TokenDecoder_receive", + argNames: ["that", "input"], + ); + + @override + Token? crateApiTokenTokenDecoderValue({required TokenDecoder that}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 12)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_opt_box_autoadd_token, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiTokenTokenDecoderValueConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiTokenTokenDecoderValueConstMeta => + const TaskConstMeta(debugName: "TokenDecoder_value", argNames: ["that"]); + + @override + String crateApiWalletWalletDatabaseAutoAccessorGetPath({ + required WalletDatabase that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 13)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletWalletDatabaseAutoAccessorGetPathConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletDatabaseAutoAccessorGetPathConstMeta => + const TaskConstMeta( + debugName: "WalletDatabase_auto_accessor_get_path", + argNames: ["that"], + ); + + @override + void crateApiWalletWalletDatabaseAutoAccessorSetPath({ + required WalletDatabase that, + required String path, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + that, + serializer, + ); + sse_encode_String(path, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 14)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletWalletDatabaseAutoAccessorSetPathConstMeta, + argValues: [that, path], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletDatabaseAutoAccessorSetPathConstMeta => + const TaskConstMeta( + debugName: "WalletDatabase_auto_accessor_set_path", + argNames: ["that", "path"], + ); + + @override + Future crateApiWalletWalletDatabaseNewInstance({ + required String path, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(path, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 15, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletDatabaseNewInstanceConstMeta, + argValues: [path], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletDatabaseNewInstanceConstMeta => + const TaskConstMeta( + debugName: "WalletDatabase_new_instance", + argNames: ["path"], + ); + + @override + Future crateApiWalletWalletDatabaseRemoveMint({ + required WalletDatabase that, + required String mintUrl, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + that, + serializer, + ); + sse_encode_String(mintUrl, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 16, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletDatabaseRemoveMintConstMeta, + argValues: [that, mintUrl], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletDatabaseRemoveMintConstMeta => + const TaskConstMeta( + debugName: "WalletDatabase_remove_mint", + argNames: ["that", "mintUrl"], + ); + + @override + String crateApiWalletWalletAutoAccessorGetMintUrl({required Wallet that}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 17)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletWalletAutoAccessorGetMintUrlConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletAutoAccessorGetMintUrlConstMeta => + const TaskConstMeta( + debugName: "Wallet_auto_accessor_get_mint_url", + argNames: ["that"], + ); + + @override + String crateApiWalletWalletAutoAccessorGetUnit({required Wallet that}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 18)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletWalletAutoAccessorGetUnitConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletAutoAccessorGetUnitConstMeta => + const TaskConstMeta( + debugName: "Wallet_auto_accessor_get_unit", + argNames: ["that"], + ); + + @override + void crateApiWalletWalletAutoAccessorSetMintUrl({ + required Wallet that, + required String mintUrl, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_String(mintUrl, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 19)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletWalletAutoAccessorSetMintUrlConstMeta, + argValues: [that, mintUrl], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletAutoAccessorSetMintUrlConstMeta => + const TaskConstMeta( + debugName: "Wallet_auto_accessor_set_mint_url", + argNames: ["that", "mintUrl"], + ); + + @override + void crateApiWalletWalletAutoAccessorSetUnit({ + required Wallet that, + required String unit, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_String(unit, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 20)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletWalletAutoAccessorSetUnitConstMeta, + argValues: [that, unit], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletAutoAccessorSetUnitConstMeta => + const TaskConstMeta( + debugName: "Wallet_auto_accessor_set_unit", + argNames: ["that", "unit"], + ); + + @override + Future crateApiWalletWalletBalance({required Wallet that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 21, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletBalanceConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletBalanceConstMeta => + const TaskConstMeta(debugName: "Wallet_balance", argNames: ["that"]); + + @override + Future crateApiWalletWalletCancelSend({ + required Wallet that, + required PreparedSend send, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + send, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 22, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletCancelSendConstMeta, + argValues: [that, send], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletCancelSendConstMeta => + const TaskConstMeta( + debugName: "Wallet_cancel_send", + argNames: ["that", "send"], + ); + + @override + Future crateApiWalletWalletCheckAllMintQuotes({required Wallet that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 23, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletCheckAllMintQuotesConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletCheckAllMintQuotesConstMeta => + const TaskConstMeta( + debugName: "Wallet_check_all_mint_quotes", + argNames: ["that"], + ); + + @override + Future crateApiWalletWalletCheckPendingTransactions({ + required Wallet that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 24, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletCheckPendingTransactionsConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletCheckPendingTransactionsConstMeta => + const TaskConstMeta( + debugName: "Wallet_check_pending_transactions", + argNames: ["that"], + ); + + @override + Future crateApiWalletWalletFinalizePendingMelts({ + required Wallet that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 25, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletFinalizePendingMeltsConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletFinalizePendingMeltsConstMeta => + const TaskConstMeta( + debugName: "Wallet_finalize_pending_melts", + argNames: ["that"], + ); + + @override + Future crateApiWalletWalletGetMint({required Wallet that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 26, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_opt_box_autoadd_mint_info, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletGetMintConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletGetMintConstMeta => + const TaskConstMeta(debugName: "Wallet_get_mint", argNames: ["that"]); + + @override + Future crateApiWalletWalletIsTokenSpent({ + required Wallet that, + required Token token, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_box_autoadd_token(token, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 27, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_bool, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletIsTokenSpentConstMeta, + argValues: [that, token], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletIsTokenSpentConstMeta => + const TaskConstMeta( + debugName: "Wallet_is_token_spent", + argNames: ["that", "token"], + ); + + @override + Future> crateApiWalletWalletListTransactions({ + required Wallet that, + TransactionDirection? direction, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_opt_box_autoadd_transaction_direction( + direction, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 28, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_transaction, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletListTransactionsConstMeta, + argValues: [that, direction], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletListTransactionsConstMeta => + const TaskConstMeta( + debugName: "Wallet_list_transactions", + argNames: ["that", "direction"], + ); + + @override + Future crateApiWalletWalletMelt({ + required Wallet that, + required MeltQuote quote, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_box_autoadd_melt_quote(quote, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 29, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletMeltConstMeta, + argValues: [that, quote], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletMeltConstMeta => const TaskConstMeta( + debugName: "Wallet_melt", + argNames: ["that", "quote"], + ); + + @override + Future crateApiWalletWalletMeltQuote({ + required Wallet that, + required String request, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_String(request, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 30, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_melt_quote, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletMeltQuoteConstMeta, + argValues: [that, request], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletMeltQuoteConstMeta => + const TaskConstMeta( + debugName: "Wallet_melt_quote", + argNames: ["that", "request"], + ); + + @override + Stream crateApiWalletWalletMint({ + required Wallet that, + required BigInt amount, + String? description, + }) { + final sink = RustStreamSink(); + unawaited( + handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_u_64(amount, serializer); + sse_encode_opt_String(description, serializer); + sse_encode_StreamSink_mint_quote_Sse(sink, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 31, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletMintConstMeta, + argValues: [that, amount, description, sink], + apiImpl: this, + ), + ), + ); + return sink.stream; + } + + TaskConstMeta get kCrateApiWalletWalletMintConstMeta => const TaskConstMeta( + debugName: "Wallet_mint", + argNames: ["that", "amount", "description", "sink"], + ); + + @override + Wallet crateApiWalletWalletNew({ + required String mintUrl, + required String unit, + required String mnemonic, + BigInt? targetProofCount, + required WalletDatabase db, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(mintUrl, serializer); + sse_encode_String(unit, serializer); + sse_encode_String(mnemonic, serializer); + sse_encode_opt_box_autoadd_usize(targetProofCount, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + db, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 32)!; + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletNewConstMeta, + argValues: [mintUrl, unit, mnemonic, targetProofCount, db], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletNewConstMeta => const TaskConstMeta( + debugName: "Wallet_new", + argNames: ["mintUrl", "unit", "mnemonic", "targetProofCount", "db"], + ); + + @override + Future crateApiWalletWalletPrepareSend({ + required Wallet that, + required BigInt amount, + SendOptions? opts, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_u_64(amount, serializer); + sse_encode_opt_box_autoadd_send_options(opts, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 33, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletPrepareSendConstMeta, + argValues: [that, amount, opts], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletPrepareSendConstMeta => + const TaskConstMeta( + debugName: "Wallet_prepare_send", + argNames: ["that", "amount", "opts"], + ); + + @override + Future crateApiWalletWalletReceive({ + required Wallet that, + required Token token, + ReceiveOptions? opts, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_box_autoadd_token(token, serializer); + sse_encode_opt_box_autoadd_receive_options(opts, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 34, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletReceiveConstMeta, + argValues: [that, token, opts], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletReceiveConstMeta => + const TaskConstMeta( + debugName: "Wallet_receive", + argNames: ["that", "token", "opts"], + ); + + @override + Future crateApiWalletWalletRecoverIncompleteSagas({ + required Wallet that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 35, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletRecoverIncompleteSagasConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletRecoverIncompleteSagasConstMeta => + const TaskConstMeta( + debugName: "Wallet_recover_incomplete_sagas", + argNames: ["that"], + ); + + @override + Future crateApiWalletWalletRestore({required Wallet that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 36, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletRestoreConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletRestoreConstMeta => + const TaskConstMeta(debugName: "Wallet_restore", argNames: ["that"]); + + @override + Future crateApiWalletWalletSend({ + required Wallet that, + required PreparedSend send, + String? memo, + bool? includeMemo, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + send, + serializer, + ); + sse_encode_opt_String(memo, serializer); + sse_encode_opt_box_autoadd_bool(includeMemo, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 37, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_token, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletSendConstMeta, + argValues: [that, send, memo, includeMemo], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletWalletSendConstMeta => const TaskConstMeta( + debugName: "Wallet_send", + argNames: ["that", "send", "memo", "includeMemo"], + ); + + @override + Stream crateApiWalletWalletStreamBalance({required Wallet that}) { + final sink = RustStreamSink(); + unawaited( + handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + that, + serializer, + ); + sse_encode_StreamSink_u_64_Sse(sink, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 38, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiWalletWalletStreamBalanceConstMeta, + argValues: [that, sink], + apiImpl: this, + ), + ), + ); + return sink.stream; + } + + TaskConstMeta get kCrateApiWalletWalletStreamBalanceConstMeta => + const TaskConstMeta( + debugName: "Wallet_stream_balance", + argNames: ["that", "sink"], + ); + + @override + List crateApiTokenEncodeQrToken({ + required Token token, + BigInt? maxFragmentLength, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_box_autoadd_token(token, serializer); + sse_encode_opt_box_autoadd_usize(maxFragmentLength, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 39)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_String, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiTokenEncodeQrTokenConstMeta, + argValues: [token, maxFragmentLength], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiTokenEncodeQrTokenConstMeta => const TaskConstMeta( + debugName: "encode_qr_token", + argNames: ["token", "maxFragmentLength"], + ); + + @override + Future> crateApiMintInfoFetchKeysets({ + required String mintUrl, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(mintUrl, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 40, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_keyset_info, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiMintInfoFetchKeysetsConstMeta, + argValues: [mintUrl], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiMintInfoFetchKeysetsConstMeta => + const TaskConstMeta(debugName: "fetch_keysets", argNames: ["mintUrl"]); + + @override + String crateApiKeysGenerateMnemonic() { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 41)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kCrateApiKeysGenerateMnemonicConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiKeysGenerateMnemonicConstMeta => + const TaskConstMeta(debugName: "generate_mnemonic", argNames: []); + + @override + Future crateApiMintInfoGetMintInfo({required String mintUrl}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(mintUrl, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 42, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_mint_info, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiMintInfoGetMintInfoConstMeta, + argValues: [mintUrl], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiMintInfoGetMintInfoConstMeta => + const TaskConstMeta(debugName: "get_mint_info", argNames: ["mintUrl"]); + + @override + String crateApiKeysGetPubKey({required String secret}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(secret, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 43)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiKeysGetPubKeyConstMeta, + argValues: [secret], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiKeysGetPubKeyConstMeta => + const TaskConstMeta(debugName: "get_pub_key", argNames: ["secret"]); + + @override + Uint8List crateApiKeysMnemonicToSeed({required String mnemonic}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(mnemonic, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 44)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiKeysMnemonicToSeedConstMeta, + argValues: [mnemonic], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiKeysMnemonicToSeedConstMeta => const TaskConstMeta( + debugName: "mnemonic_to_seed", + argNames: ["mnemonic"], + ); + + @override + Future crateApiMintInfoPingMint({required String mintUrl}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(mintUrl, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 45, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_bool, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiMintInfoPingMintConstMeta, + argValues: [mintUrl], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiMintInfoPingMintConstMeta => + const TaskConstMeta(debugName: "ping_mint", argNames: ["mintUrl"]); + + @override + Future crateApiWalletReceiveOptionsDefault() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 46, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_receive_options, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletReceiveOptionsDefaultConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletReceiveOptionsDefaultConstMeta => + const TaskConstMeta(debugName: "receive_options_default", argNames: []); + + @override + Future crateApiWalletSendOptionsDefault() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 47, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_send_options, + decodeErrorData: null, + ), + constMeta: kCrateApiWalletSendOptionsDefaultConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiWalletSendOptionsDefaultConstMeta => + const TaskConstMeta(debugName: "send_options_default", argNames: []); + + @override + Token crateApiTokenTokenFromRawBytes({required List raw}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_list_prim_u_8_loose(raw, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 48)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_token, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiTokenTokenFromRawBytesConstMeta, + argValues: [raw], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiTokenTokenFromRawBytesConstMeta => + const TaskConstMeta(debugName: "token_from_raw_bytes", argNames: ["raw"]); + + @override + Token crateApiTokenTokenParse({required String encoded}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(encoded, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 49)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_token, + decodeErrorData: sse_decode_error, + ), + constMeta: kCrateApiTokenTokenParseConstMeta, + argValues: [encoded], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiTokenTokenParseConstMeta => + const TaskConstMeta(debugName: "token_parse", argNames: ["encoded"]); + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_PreparedSend => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_PreparedSend => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_TokenDecoder => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_TokenDecoder => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_Wallet => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_Wallet => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_WalletDatabase => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_WalletDatabase => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase; + @protected - int sse_decode_i_32(SseDeserializer deserializer) { + AnyhowException dco_decode_AnyhowException(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return AnyhowException(raw as String); + } + + @protected + PreparedSend + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return PreparedSendImpl.frbInternalDcoDecode(raw as List); + } + + @protected + TokenDecoder + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TokenDecoderImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Wallet + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return WalletImpl.frbInternalDcoDecode(raw as List); + } + + @protected + WalletDatabase + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return WalletDatabaseImpl.frbInternalDcoDecode(raw as List); + } + + @protected + PreparedSend + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return PreparedSendImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Wallet + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return WalletImpl.frbInternalDcoDecode(raw as List); + } + + @protected + WalletDatabase + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return WalletDatabaseImpl.frbInternalDcoDecode(raw as List); + } + + @protected + PreparedSend + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return PreparedSendImpl.frbInternalDcoDecode(raw as List); + } + + @protected + TokenDecoder + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TokenDecoderImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Wallet + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return WalletImpl.frbInternalDcoDecode(raw as List); + } + + @protected + WalletDatabase + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return WalletDatabaseImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Map dco_decode_Map_String_String_None(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return Map.fromEntries( + dco_decode_list_record_string_string( + raw, + ).map((e) => MapEntry(e.$1, e.$2)), + ); + } + + @protected + PreparedSend + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return PreparedSendImpl.frbInternalDcoDecode(raw as List); + } + + @protected + TokenDecoder + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TokenDecoderImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Wallet + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return WalletImpl.frbInternalDcoDecode(raw as List); + } + + @protected + WalletDatabase + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return WalletDatabaseImpl.frbInternalDcoDecode(raw as List); + } + + @protected + RustStreamSink dco_decode_StreamSink_mint_quote_Sse(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + throw UnimplementedError(); + } + + @protected + RustStreamSink dco_decode_StreamSink_u_64_Sse(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + throw UnimplementedError(); + } + + @protected + String dco_decode_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as String; + } + + @protected + bool dco_decode_bool(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as bool; + } + + @protected + bool dco_decode_box_autoadd_bool(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as bool; + } + + @protected + MeltQuote dco_decode_box_autoadd_melt_quote(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_melt_quote(raw); + } + + @protected + MintInfo dco_decode_box_autoadd_mint_info(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_mint_info(raw); + } + + @protected + MintVersion dco_decode_box_autoadd_mint_version(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_mint_version(raw); + } + + @protected + ReceiveOptions dco_decode_box_autoadd_receive_options(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_receive_options(raw); + } + + @protected + SendOptions dco_decode_box_autoadd_send_options(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_send_options(raw); + } + + @protected + Token dco_decode_box_autoadd_token(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_token(raw); + } + + @protected + TransactionDirection dco_decode_box_autoadd_transaction_direction( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_transaction_direction(raw); + } + + @protected + BigInt dco_decode_box_autoadd_u_64(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_u_64(raw); + } + + @protected + BigInt dco_decode_box_autoadd_usize(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dco_decode_usize(raw); + } + + @protected + ContactInfo dco_decode_contact_info(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 ContactInfo( + method: dco_decode_String(arr[0]), + info: dco_decode_String(arr[1]), + ); + } + + @protected + Error dco_decode_error(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + switch (raw[0]) { + case 0: + return Error_Cdk(dco_decode_String(raw[1])); + case 1: + return Error_Database(dco_decode_String(raw[1])); + case 2: + return Error_InvalidInput(); + case 3: + return Error_Network(dco_decode_String(raw[1])); + case 4: + return Error_Ur(dco_decode_String(raw[1])); + default: + throw Exception("unreachable"); + } + } + + @protected + int dco_decode_i_32(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @protected + KeysetInfo dco_decode_keyset_info(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 KeysetInfo( + id: dco_decode_String(arr[0]), + unit: dco_decode_String(arr[1]), + active: dco_decode_bool(arr[2]), + ); + } + + @protected + List dco_decode_list_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_String).toList(); + } + + @protected + List dco_decode_list_contact_info(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_contact_info).toList(); + } + + @protected + List dco_decode_list_keyset_info(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_keyset_info).toList(); + } + + @protected + List dco_decode_list_melt_method_settings(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_melt_method_settings).toList(); + } + + @protected + List dco_decode_list_mint_method_settings(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_mint_method_settings).toList(); + } + + @protected + List dco_decode_list_prim_u_8_loose(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as List; + } + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as Uint8List; + } + + @protected + List<(String, String)> dco_decode_list_record_string_string(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_record_string_string).toList(); + } + + @protected + List dco_decode_list_transaction(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_transaction).toList(); + } + + @protected + MeltMethodSettings dco_decode_melt_method_settings(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 MeltMethodSettings( + method: dco_decode_String(arr[0]), + unit: dco_decode_String(arr[1]), + minAmount: dco_decode_opt_box_autoadd_u_64(arr[2]), + maxAmount: dco_decode_opt_box_autoadd_u_64(arr[3]), + ); + } + + @protected + MeltQuote dco_decode_melt_quote(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 MeltQuote( + id: dco_decode_String(arr[0]), + request: dco_decode_String(arr[1]), + amount: dco_decode_u_64(arr[2]), + feeReserve: dco_decode_u_64(arr[3]), + expiry: dco_decode_u_64(arr[4]), + ); + } + + @protected + MintInfo dco_decode_mint_info(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 MintInfo( + name: dco_decode_opt_String(arr[0]), + pubkey: dco_decode_opt_String(arr[1]), + version: dco_decode_opt_box_autoadd_mint_version(arr[2]), + description: dco_decode_opt_String(arr[3]), + descriptionLong: dco_decode_opt_String(arr[4]), + contact: dco_decode_opt_list_contact_info(arr[5]), + nuts: dco_decode_nuts(arr[6]), + iconUrl: dco_decode_opt_String(arr[7]), + urls: dco_decode_opt_list_String(arr[8]), + motd: dco_decode_opt_String(arr[9]), + time: dco_decode_opt_box_autoadd_u_64(arr[10]), + tosUrl: dco_decode_opt_String(arr[11]), + ); + } + + @protected + MintMethodSettings dco_decode_mint_method_settings(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 MintMethodSettings( + method: dco_decode_String(arr[0]), + unit: dco_decode_String(arr[1]), + minAmount: dco_decode_opt_box_autoadd_u_64(arr[2]), + maxAmount: dco_decode_opt_box_autoadd_u_64(arr[3]), + ); + } + + @protected + MintQuote dco_decode_mint_quote(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 MintQuote( + id: dco_decode_String(arr[0]), + request: dco_decode_String(arr[1]), + amount: dco_decode_opt_box_autoadd_u_64(arr[2]), + expiry: dco_decode_opt_box_autoadd_u_64(arr[3]), + state: dco_decode_mint_quote_state(arr[4]), + token: dco_decode_opt_box_autoadd_token(arr[5]), + error: dco_decode_opt_String(arr[6]), + ); + } + + @protected + MintQuoteState dco_decode_mint_quote_state(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return MintQuoteState.values[raw as int]; + } + + @protected + MintVersion dco_decode_mint_version(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 MintVersion( + name: dco_decode_String(arr[0]), + version: dco_decode_String(arr[1]), + ); + } + + @protected + Nut04Settings dco_decode_nut_04_settings(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 Nut04Settings( + methods: dco_decode_list_mint_method_settings(arr[0]), + disabled: dco_decode_bool(arr[1]), + ); + } + + @protected + Nut05Settings dco_decode_nut_05_settings(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 Nut05Settings( + methods: dco_decode_list_melt_method_settings(arr[0]), + disabled: dco_decode_bool(arr[1]), + ); + } + + @protected + Nuts dco_decode_nuts(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 10) + throw Exception('unexpected arr length: expect 10 but see ${arr.length}'); + return Nuts( + nut04: dco_decode_nut_04_settings(arr[0]), + nut05: dco_decode_nut_05_settings(arr[1]), + nut07: dco_decode_supported_settings(arr[2]), + nut08: dco_decode_supported_settings(arr[3]), + nut09: dco_decode_supported_settings(arr[4]), + nut10: dco_decode_supported_settings(arr[5]), + nut11: dco_decode_supported_settings(arr[6]), + nut12: dco_decode_supported_settings(arr[7]), + nut14: dco_decode_supported_settings(arr[8]), + nut20: dco_decode_supported_settings(arr[9]), + ); + } + + @protected + String? dco_decode_opt_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_String(raw); + } + + @protected + bool? dco_decode_opt_box_autoadd_bool(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_bool(raw); + } + + @protected + MintInfo? dco_decode_opt_box_autoadd_mint_info(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_mint_info(raw); + } + + @protected + MintVersion? dco_decode_opt_box_autoadd_mint_version(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_mint_version(raw); + } + + @protected + ReceiveOptions? dco_decode_opt_box_autoadd_receive_options(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_receive_options(raw); + } + + @protected + SendOptions? dco_decode_opt_box_autoadd_send_options(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_send_options(raw); + } + + @protected + Token? dco_decode_opt_box_autoadd_token(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_token(raw); + } + + @protected + TransactionDirection? dco_decode_opt_box_autoadd_transaction_direction( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null + ? null + : dco_decode_box_autoadd_transaction_direction(raw); + } + + @protected + BigInt? dco_decode_opt_box_autoadd_u_64(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_u_64(raw); + } + + @protected + BigInt? dco_decode_opt_box_autoadd_usize(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_box_autoadd_usize(raw); + } + + @protected + List? dco_decode_opt_list_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_list_String(raw); + } + + @protected + List? dco_decode_opt_list_contact_info(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_list_contact_info(raw); + } + + @protected + Uint8List? dco_decode_opt_list_prim_u_8_strict(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw == null ? null : dco_decode_list_prim_u_8_strict(raw); + } + + @protected + ReceiveOptions dco_decode_receive_options(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 ReceiveOptions( + signingKeys: dco_decode_opt_list_String(arr[0]), + preimages: dco_decode_opt_list_String(arr[1]), + ); + } + + @protected + (String, String) dco_decode_record_string_string(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_String(arr[0]), dco_decode_String(arr[1])); + } + + @protected + SendOptions dco_decode_send_options(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 SendOptions( + pubkey: dco_decode_opt_String(arr[0]), + includeFee: dco_decode_opt_box_autoadd_bool(arr[1]), + ); + } + + @protected + SupportedSettings dco_decode_supported_settings(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 1) + throw Exception('unexpected arr length: expect 1 but see ${arr.length}'); + return SupportedSettings(supported: dco_decode_bool(arr[0])); + } + + @protected + Token dco_decode_token(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 Token( + encoded: dco_decode_String(arr[0]), + raw: dco_decode_opt_list_prim_u_8_strict(arr[1]), + amount: dco_decode_u_64(arr[2]), + mintUrl: dco_decode_String(arr[3]), + ); + } + + @protected + Transaction dco_decode_transaction(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + final arr = raw as List; + if (arr.length != 11) + throw Exception('unexpected arr length: expect 11 but see ${arr.length}'); + return Transaction( + id: dco_decode_String(arr[0]), + mintUrl: dco_decode_String(arr[1]), + direction: dco_decode_transaction_direction(arr[2]), + amount: dco_decode_u_64(arr[3]), + fee: dco_decode_u_64(arr[4]), + unit: dco_decode_String(arr[5]), + ys: dco_decode_list_String(arr[6]), + timestamp: dco_decode_u_64(arr[7]), + memo: dco_decode_opt_String(arr[8]), + metadata: dco_decode_Map_String_String_None(arr[9]), + status: dco_decode_transaction_status(arr[10]), + ); + } + + @protected + TransactionDirection dco_decode_transaction_direction(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TransactionDirection.values[raw as int]; + } + + @protected + TransactionStatus dco_decode_transaction_status(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TransactionStatus.values[raw as int]; + } + + @protected + BigInt dco_decode_u_64(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dcoDecodeU64(raw); + } + + @protected + int dco_decode_u_8(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @protected + void dco_decode_unit(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return; + } + + @protected + BigInt dco_decode_usize(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return dcoDecodeU64(raw); + } + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getInt32(); + var inner = sse_decode_String(deserializer); + return AnyhowException(inner); + } + + @protected + PreparedSend + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return PreparedSendImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + TokenDecoder + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return TokenDecoderImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Wallet + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return WalletImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + WalletDatabase + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return WalletDatabaseImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + PreparedSend + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return PreparedSendImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Wallet + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return WalletImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + WalletDatabase + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return WalletDatabaseImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + PreparedSend + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return PreparedSendImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + TokenDecoder + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return TokenDecoderImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Wallet + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return WalletImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + WalletDatabase + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return WalletDatabaseImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Map sse_decode_Map_String_String_None( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_list_record_string_string(deserializer); + return Map.fromEntries(inner.map((e) => MapEntry(e.$1, e.$2))); + } + + @protected + PreparedSend + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return PreparedSendImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + TokenDecoder + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return TokenDecoderImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Wallet + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return WalletImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + WalletDatabase + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return WalletDatabaseImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RustStreamSink sse_decode_StreamSink_mint_quote_Sse( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + throw UnimplementedError('Unreachable ()'); + } + + @protected + RustStreamSink sse_decode_StreamSink_u_64_Sse( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + throw UnimplementedError('Unreachable ()'); + } + + @protected + String sse_decode_String(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_list_prim_u_8_strict(deserializer); + return utf8.decoder.convert(inner); } @protected @@ -96,9 +2835,916 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_i_32(int self, SseSerializer serializer) { + bool sse_decode_box_autoadd_bool(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putInt32(self); + return (sse_decode_bool(deserializer)); + } + + @protected + MeltQuote sse_decode_box_autoadd_melt_quote(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_melt_quote(deserializer)); + } + + @protected + MintInfo sse_decode_box_autoadd_mint_info(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_mint_info(deserializer)); + } + + @protected + MintVersion sse_decode_box_autoadd_mint_version( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_mint_version(deserializer)); + } + + @protected + ReceiveOptions sse_decode_box_autoadd_receive_options( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_receive_options(deserializer)); + } + + @protected + SendOptions sse_decode_box_autoadd_send_options( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_send_options(deserializer)); + } + + @protected + Token sse_decode_box_autoadd_token(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_token(deserializer)); + } + + @protected + TransactionDirection sse_decode_box_autoadd_transaction_direction( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_transaction_direction(deserializer)); + } + + @protected + BigInt sse_decode_box_autoadd_u_64(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_u_64(deserializer)); + } + + @protected + BigInt sse_decode_box_autoadd_usize(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return (sse_decode_usize(deserializer)); + } + + @protected + ContactInfo sse_decode_contact_info(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_method = sse_decode_String(deserializer); + var var_info = sse_decode_String(deserializer); + return ContactInfo(method: var_method, info: var_info); + } + + @protected + Error sse_decode_error(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var tag_ = sse_decode_i_32(deserializer); + switch (tag_) { + case 0: + var var_field0 = sse_decode_String(deserializer); + return Error_Cdk(var_field0); + case 1: + var var_field0 = sse_decode_String(deserializer); + return Error_Database(var_field0); + case 2: + return Error_InvalidInput(); + case 3: + var var_field0 = sse_decode_String(deserializer); + return Error_Network(var_field0); + case 4: + var var_field0 = sse_decode_String(deserializer); + return Error_Ur(var_field0); + default: + throw UnimplementedError(''); + } + } + + @protected + int sse_decode_i_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getInt32(); + } + + @protected + KeysetInfo sse_decode_keyset_info(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_id = sse_decode_String(deserializer); + var var_unit = sse_decode_String(deserializer); + var var_active = sse_decode_bool(deserializer); + return KeysetInfo(id: var_id, unit: var_unit, active: var_active); + } + + @protected + List sse_decode_list_String(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_String(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_contact_info(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_contact_info(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_keyset_info(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_keyset_info(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_melt_method_settings( + 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_melt_method_settings(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_mint_method_settings( + 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_mint_method_settings(deserializer)); + } + return ans_; + } + + @protected + 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.getUint8List(len_); + } + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var len_ = sse_decode_i_32(deserializer); + return deserializer.buffer.getUint8List(len_); + } + + @protected + List<(String, String)> sse_decode_list_record_string_string( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + var len_ = sse_decode_i_32(deserializer); + var ans_ = <(String, String)>[]; + for (var idx_ = 0; idx_ < len_; ++idx_) { + ans_.add(sse_decode_record_string_string(deserializer)); + } + return ans_; + } + + @protected + List sse_decode_list_transaction(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_transaction(deserializer)); + } + return ans_; + } + + @protected + MeltMethodSettings sse_decode_melt_method_settings( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_method = sse_decode_String(deserializer); + var var_unit = sse_decode_String(deserializer); + var var_minAmount = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_maxAmount = sse_decode_opt_box_autoadd_u_64(deserializer); + return MeltMethodSettings( + method: var_method, + unit: var_unit, + minAmount: var_minAmount, + maxAmount: var_maxAmount, + ); + } + + @protected + MeltQuote sse_decode_melt_quote(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_id = sse_decode_String(deserializer); + var var_request = sse_decode_String(deserializer); + var var_amount = sse_decode_u_64(deserializer); + var var_feeReserve = sse_decode_u_64(deserializer); + var var_expiry = sse_decode_u_64(deserializer); + return MeltQuote( + id: var_id, + request: var_request, + amount: var_amount, + feeReserve: var_feeReserve, + expiry: var_expiry, + ); + } + + @protected + MintInfo sse_decode_mint_info(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_name = sse_decode_opt_String(deserializer); + var var_pubkey = sse_decode_opt_String(deserializer); + var var_version = sse_decode_opt_box_autoadd_mint_version(deserializer); + var var_description = sse_decode_opt_String(deserializer); + var var_descriptionLong = sse_decode_opt_String(deserializer); + var var_contact = sse_decode_opt_list_contact_info(deserializer); + var var_nuts = sse_decode_nuts(deserializer); + var var_iconUrl = sse_decode_opt_String(deserializer); + var var_urls = sse_decode_opt_list_String(deserializer); + var var_motd = sse_decode_opt_String(deserializer); + var var_time = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_tosUrl = sse_decode_opt_String(deserializer); + return MintInfo( + name: var_name, + pubkey: var_pubkey, + version: var_version, + description: var_description, + descriptionLong: var_descriptionLong, + contact: var_contact, + nuts: var_nuts, + iconUrl: var_iconUrl, + urls: var_urls, + motd: var_motd, + time: var_time, + tosUrl: var_tosUrl, + ); + } + + @protected + MintMethodSettings sse_decode_mint_method_settings( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_method = sse_decode_String(deserializer); + var var_unit = sse_decode_String(deserializer); + var var_minAmount = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_maxAmount = sse_decode_opt_box_autoadd_u_64(deserializer); + return MintMethodSettings( + method: var_method, + unit: var_unit, + minAmount: var_minAmount, + maxAmount: var_maxAmount, + ); + } + + @protected + MintQuote sse_decode_mint_quote(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_id = sse_decode_String(deserializer); + var var_request = sse_decode_String(deserializer); + var var_amount = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_expiry = sse_decode_opt_box_autoadd_u_64(deserializer); + var var_state = sse_decode_mint_quote_state(deserializer); + var var_token = sse_decode_opt_box_autoadd_token(deserializer); + var var_error = sse_decode_opt_String(deserializer); + return MintQuote( + id: var_id, + request: var_request, + amount: var_amount, + expiry: var_expiry, + state: var_state, + token: var_token, + error: var_error, + ); + } + + @protected + MintQuoteState sse_decode_mint_quote_state(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_i_32(deserializer); + return MintQuoteState.values[inner]; + } + + @protected + MintVersion sse_decode_mint_version(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_name = sse_decode_String(deserializer); + var var_version = sse_decode_String(deserializer); + return MintVersion(name: var_name, version: var_version); + } + + @protected + Nut04Settings sse_decode_nut_04_settings(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_methods = sse_decode_list_mint_method_settings(deserializer); + var var_disabled = sse_decode_bool(deserializer); + return Nut04Settings(methods: var_methods, disabled: var_disabled); + } + + @protected + Nut05Settings sse_decode_nut_05_settings(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_methods = sse_decode_list_melt_method_settings(deserializer); + var var_disabled = sse_decode_bool(deserializer); + return Nut05Settings(methods: var_methods, disabled: var_disabled); + } + + @protected + Nuts sse_decode_nuts(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_nut04 = sse_decode_nut_04_settings(deserializer); + var var_nut05 = sse_decode_nut_05_settings(deserializer); + var var_nut07 = sse_decode_supported_settings(deserializer); + var var_nut08 = sse_decode_supported_settings(deserializer); + var var_nut09 = sse_decode_supported_settings(deserializer); + var var_nut10 = sse_decode_supported_settings(deserializer); + var var_nut11 = sse_decode_supported_settings(deserializer); + var var_nut12 = sse_decode_supported_settings(deserializer); + var var_nut14 = sse_decode_supported_settings(deserializer); + var var_nut20 = sse_decode_supported_settings(deserializer); + return Nuts( + nut04: var_nut04, + nut05: var_nut05, + nut07: var_nut07, + nut08: var_nut08, + nut09: var_nut09, + nut10: var_nut10, + nut11: var_nut11, + nut12: var_nut12, + nut14: var_nut14, + nut20: var_nut20, + ); + } + + @protected + String? sse_decode_opt_String(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_String(deserializer)); + } else { + return null; + } + } + + @protected + bool? sse_decode_opt_box_autoadd_bool(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_bool(deserializer)); + } else { + return null; + } + } + + @protected + MintInfo? sse_decode_opt_box_autoadd_mint_info(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_mint_info(deserializer)); + } else { + return null; + } + } + + @protected + MintVersion? sse_decode_opt_box_autoadd_mint_version( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_mint_version(deserializer)); + } else { + return null; + } + } + + @protected + ReceiveOptions? sse_decode_opt_box_autoadd_receive_options( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_receive_options(deserializer)); + } else { + return null; + } + } + + @protected + SendOptions? sse_decode_opt_box_autoadd_send_options( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_send_options(deserializer)); + } else { + return null; + } + } + + @protected + Token? sse_decode_opt_box_autoadd_token(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_token(deserializer)); + } else { + return null; + } + } + + @protected + TransactionDirection? sse_decode_opt_box_autoadd_transaction_direction( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_transaction_direction(deserializer)); + } else { + return null; + } + } + + @protected + BigInt? sse_decode_opt_box_autoadd_u_64(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_u_64(deserializer)); + } else { + return null; + } + } + + @protected + BigInt? sse_decode_opt_box_autoadd_usize(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_box_autoadd_usize(deserializer)); + } else { + return null; + } + } + + @protected + List? sse_decode_opt_list_String(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_list_String(deserializer)); + } else { + return null; + } + } + + @protected + List? sse_decode_opt_list_contact_info( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_list_contact_info(deserializer)); + } else { + return null; + } + } + + @protected + Uint8List? sse_decode_opt_list_prim_u_8_strict(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + if (sse_decode_bool(deserializer)) { + return (sse_decode_list_prim_u_8_strict(deserializer)); + } else { + return null; + } + } + + @protected + ReceiveOptions sse_decode_receive_options(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_signingKeys = sse_decode_opt_list_String(deserializer); + var var_preimages = sse_decode_opt_list_String(deserializer); + return ReceiveOptions( + signingKeys: var_signingKeys, + preimages: var_preimages, + ); + } + + @protected + (String, String) sse_decode_record_string_string( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_field0 = sse_decode_String(deserializer); + var var_field1 = sse_decode_String(deserializer); + return (var_field0, var_field1); + } + + @protected + SendOptions sse_decode_send_options(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_pubkey = sse_decode_opt_String(deserializer); + var var_includeFee = sse_decode_opt_box_autoadd_bool(deserializer); + return SendOptions(pubkey: var_pubkey, includeFee: var_includeFee); + } + + @protected + SupportedSettings sse_decode_supported_settings( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_supported = sse_decode_bool(deserializer); + return SupportedSettings(supported: var_supported); + } + + @protected + Token sse_decode_token(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_encoded = sse_decode_String(deserializer); + var var_raw = sse_decode_opt_list_prim_u_8_strict(deserializer); + var var_amount = sse_decode_u_64(deserializer); + var var_mintUrl = sse_decode_String(deserializer); + return Token( + encoded: var_encoded, + raw: var_raw, + amount: var_amount, + mintUrl: var_mintUrl, + ); + } + + @protected + Transaction sse_decode_transaction(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_id = sse_decode_String(deserializer); + var var_mintUrl = sse_decode_String(deserializer); + var var_direction = sse_decode_transaction_direction(deserializer); + var var_amount = sse_decode_u_64(deserializer); + var var_fee = sse_decode_u_64(deserializer); + var var_unit = sse_decode_String(deserializer); + var var_ys = sse_decode_list_String(deserializer); + var var_timestamp = sse_decode_u_64(deserializer); + var var_memo = sse_decode_opt_String(deserializer); + var var_metadata = sse_decode_Map_String_String_None(deserializer); + var var_status = sse_decode_transaction_status(deserializer); + return Transaction( + id: var_id, + mintUrl: var_mintUrl, + direction: var_direction, + amount: var_amount, + fee: var_fee, + unit: var_unit, + ys: var_ys, + timestamp: var_timestamp, + memo: var_memo, + metadata: var_metadata, + status: var_status, + ); + } + + @protected + TransactionDirection sse_decode_transaction_direction( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_i_32(deserializer); + return TransactionDirection.values[inner]; + } + + @protected + TransactionStatus sse_decode_transaction_status( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_i_32(deserializer); + return TransactionStatus.values[inner]; + } + + @protected + BigInt sse_decode_u_64(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getBigUint64(); + } + + @protected + int sse_decode_u_8(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint8(); + } + + @protected + void sse_decode_unit(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + } + + @protected + BigInt sse_decode_usize(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getBigUint64(); + } + + @protected + void sse_encode_AnyhowException( + AnyhowException self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.message, serializer); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as PreparedSendImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + TokenDecoder self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as TokenDecoderImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as WalletImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as WalletDatabaseImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as PreparedSendImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as WalletImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as WalletDatabaseImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as PreparedSendImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + TokenDecoder self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as TokenDecoderImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as WalletImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as WalletDatabaseImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void sse_encode_Map_String_String_None( + Map self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_list_record_string_string( + self.entries.map((e) => (e.key, e.value)).toList(), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as PreparedSendImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + TokenDecoder self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as TokenDecoderImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as WalletImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as WalletDatabaseImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void sse_encode_StreamSink_mint_quote_Sse( + RustStreamSink self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String( + self.setupAndSerialize( + codec: SseCodec( + decodeSuccessData: sse_decode_mint_quote, + decodeErrorData: sse_decode_AnyhowException, + ), + ), + serializer, + ); + } + + @protected + void sse_encode_StreamSink_u_64_Sse( + RustStreamSink self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String( + self.setupAndSerialize( + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: sse_decode_AnyhowException, + ), + ), + serializer, + ); + } + + @protected + void sse_encode_String(String self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_list_prim_u_8_strict(utf8.encoder.convert(self), serializer); } @protected @@ -106,4 +3752,820 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { // Codec=Sse (Serialization based), see doc to use other codecs serializer.buffer.putUint8(self ? 1 : 0); } + + @protected + void sse_encode_box_autoadd_bool(bool self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_bool(self, serializer); + } + + @protected + void sse_encode_box_autoadd_melt_quote( + MeltQuote self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_melt_quote(self, serializer); + } + + @protected + void sse_encode_box_autoadd_mint_info( + MintInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_mint_info(self, serializer); + } + + @protected + void sse_encode_box_autoadd_mint_version( + MintVersion self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_mint_version(self, serializer); + } + + @protected + void sse_encode_box_autoadd_receive_options( + ReceiveOptions self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_receive_options(self, serializer); + } + + @protected + void sse_encode_box_autoadd_send_options( + SendOptions self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_send_options(self, serializer); + } + + @protected + void sse_encode_box_autoadd_token(Token self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_token(self, serializer); + } + + @protected + void sse_encode_box_autoadd_transaction_direction( + TransactionDirection self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_transaction_direction(self, serializer); + } + + @protected + void sse_encode_box_autoadd_u_64(BigInt self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_u_64(self, serializer); + } + + @protected + void sse_encode_box_autoadd_usize(BigInt self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize(self, serializer); + } + + @protected + void sse_encode_contact_info(ContactInfo self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.method, serializer); + sse_encode_String(self.info, serializer); + } + + @protected + void sse_encode_error(Error self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + switch (self) { + case Error_Cdk(field0: final field0): + sse_encode_i_32(0, serializer); + sse_encode_String(field0, serializer); + case Error_Database(field0: final field0): + sse_encode_i_32(1, serializer); + sse_encode_String(field0, serializer); + case Error_InvalidInput(): + sse_encode_i_32(2, serializer); + case Error_Network(field0: final field0): + sse_encode_i_32(3, serializer); + sse_encode_String(field0, serializer); + case Error_Ur(field0: final field0): + sse_encode_i_32(4, serializer); + sse_encode_String(field0, serializer); + } + } + + @protected + void sse_encode_i_32(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putInt32(self); + } + + @protected + void sse_encode_keyset_info(KeysetInfo self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.id, serializer); + sse_encode_String(self.unit, serializer); + sse_encode_bool(self.active, serializer); + } + + @protected + void sse_encode_list_String(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_String(item, serializer); + } + } + + @protected + void sse_encode_list_contact_info( + 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_contact_info(item, serializer); + } + } + + @protected + void sse_encode_list_keyset_info( + 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_keyset_info(item, serializer); + } + } + + @protected + void sse_encode_list_melt_method_settings( + 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_melt_method_settings(item, serializer); + } + } + + @protected + void sse_encode_list_mint_method_settings( + 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_mint_method_settings(item, serializer); + } + } + + @protected + 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.putUint8List( + self is Uint8List ? self : Uint8List.fromList(self), + ); + } + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + serializer.buffer.putUint8List(self); + } + + @protected + void sse_encode_list_record_string_string( + List<(String, String)> 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_record_string_string(item, serializer); + } + } + + @protected + void sse_encode_list_transaction( + 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_transaction(item, serializer); + } + } + + @protected + void sse_encode_melt_method_settings( + MeltMethodSettings self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.method, serializer); + sse_encode_String(self.unit, serializer); + sse_encode_opt_box_autoadd_u_64(self.minAmount, serializer); + sse_encode_opt_box_autoadd_u_64(self.maxAmount, serializer); + } + + @protected + void sse_encode_melt_quote(MeltQuote self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.id, serializer); + sse_encode_String(self.request, serializer); + sse_encode_u_64(self.amount, serializer); + sse_encode_u_64(self.feeReserve, serializer); + sse_encode_u_64(self.expiry, serializer); + } + + @protected + void sse_encode_mint_info(MintInfo self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_opt_String(self.name, serializer); + sse_encode_opt_String(self.pubkey, serializer); + sse_encode_opt_box_autoadd_mint_version(self.version, serializer); + sse_encode_opt_String(self.description, serializer); + sse_encode_opt_String(self.descriptionLong, serializer); + sse_encode_opt_list_contact_info(self.contact, serializer); + sse_encode_nuts(self.nuts, serializer); + sse_encode_opt_String(self.iconUrl, serializer); + sse_encode_opt_list_String(self.urls, serializer); + sse_encode_opt_String(self.motd, serializer); + sse_encode_opt_box_autoadd_u_64(self.time, serializer); + sse_encode_opt_String(self.tosUrl, serializer); + } + + @protected + void sse_encode_mint_method_settings( + MintMethodSettings self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.method, serializer); + sse_encode_String(self.unit, serializer); + sse_encode_opt_box_autoadd_u_64(self.minAmount, serializer); + sse_encode_opt_box_autoadd_u_64(self.maxAmount, serializer); + } + + @protected + void sse_encode_mint_quote(MintQuote self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.id, serializer); + sse_encode_String(self.request, serializer); + sse_encode_opt_box_autoadd_u_64(self.amount, serializer); + sse_encode_opt_box_autoadd_u_64(self.expiry, serializer); + sse_encode_mint_quote_state(self.state, serializer); + sse_encode_opt_box_autoadd_token(self.token, serializer); + sse_encode_opt_String(self.error, serializer); + } + + @protected + void sse_encode_mint_quote_state( + MintQuoteState self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.index, serializer); + } + + @protected + void sse_encode_mint_version(MintVersion self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.name, serializer); + sse_encode_String(self.version, serializer); + } + + @protected + void sse_encode_nut_04_settings( + Nut04Settings self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_list_mint_method_settings(self.methods, serializer); + sse_encode_bool(self.disabled, serializer); + } + + @protected + void sse_encode_nut_05_settings( + Nut05Settings self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_list_melt_method_settings(self.methods, serializer); + sse_encode_bool(self.disabled, serializer); + } + + @protected + void sse_encode_nuts(Nuts self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_nut_04_settings(self.nut04, serializer); + sse_encode_nut_05_settings(self.nut05, serializer); + sse_encode_supported_settings(self.nut07, serializer); + sse_encode_supported_settings(self.nut08, serializer); + sse_encode_supported_settings(self.nut09, serializer); + sse_encode_supported_settings(self.nut10, serializer); + sse_encode_supported_settings(self.nut11, serializer); + sse_encode_supported_settings(self.nut12, serializer); + sse_encode_supported_settings(self.nut14, serializer); + sse_encode_supported_settings(self.nut20, serializer); + } + + @protected + void sse_encode_opt_String(String? self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_String(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_bool(bool? 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_bool(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_mint_info( + MintInfo? 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_mint_info(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_mint_version( + MintVersion? 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_mint_version(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_receive_options( + ReceiveOptions? 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_receive_options(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_send_options( + SendOptions? 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_send_options(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_token(Token? 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_token(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_transaction_direction( + TransactionDirection? 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_transaction_direction(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_u_64(BigInt? 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_u_64(self, serializer); + } + } + + @protected + void sse_encode_opt_box_autoadd_usize( + BigInt? 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_usize(self, serializer); + } + } + + @protected + void sse_encode_opt_list_String( + List? self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_list_String(self, serializer); + } + } + + @protected + void sse_encode_opt_list_contact_info( + List? self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_list_contact_info(self, serializer); + } + } + + @protected + void sse_encode_opt_list_prim_u_8_strict( + Uint8List? self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + + sse_encode_bool(self != null, serializer); + if (self != null) { + sse_encode_list_prim_u_8_strict(self, serializer); + } + } + + @protected + void sse_encode_receive_options( + ReceiveOptions self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_opt_list_String(self.signingKeys, serializer); + sse_encode_opt_list_String(self.preimages, serializer); + } + + @protected + void sse_encode_record_string_string( + (String, String) self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.$1, serializer); + sse_encode_String(self.$2, serializer); + } + + @protected + void sse_encode_send_options(SendOptions self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_opt_String(self.pubkey, serializer); + sse_encode_opt_box_autoadd_bool(self.includeFee, serializer); + } + + @protected + void sse_encode_supported_settings( + SupportedSettings self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_bool(self.supported, serializer); + } + + @protected + void sse_encode_token(Token self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.encoded, serializer); + sse_encode_opt_list_prim_u_8_strict(self.raw, serializer); + sse_encode_u_64(self.amount, serializer); + sse_encode_String(self.mintUrl, serializer); + } + + @protected + void sse_encode_transaction(Transaction self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.id, serializer); + sse_encode_String(self.mintUrl, serializer); + sse_encode_transaction_direction(self.direction, serializer); + sse_encode_u_64(self.amount, serializer); + sse_encode_u_64(self.fee, serializer); + sse_encode_String(self.unit, serializer); + sse_encode_list_String(self.ys, serializer); + sse_encode_u_64(self.timestamp, serializer); + sse_encode_opt_String(self.memo, serializer); + sse_encode_Map_String_String_None(self.metadata, serializer); + sse_encode_transaction_status(self.status, serializer); + } + + @protected + void sse_encode_transaction_direction( + TransactionDirection self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.index, serializer); + } + + @protected + void sse_encode_transaction_status( + TransactionStatus self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.index, serializer); + } + + @protected + void sse_encode_u_64(BigInt self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putBigUint64(self); + } + + @protected + void sse_encode_u_8(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint8(self); + } + + @protected + void sse_encode_unit(void self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + } + + @protected + void sse_encode_usize(BigInt self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putBigUint64(self); + } +} + +@sealed +class PreparedSendImpl extends RustOpaque implements PreparedSend { + // Not to be used by end users + PreparedSendImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + PreparedSendImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_PreparedSend, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_PreparedSend, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_PreparedSendPtr, + ); + + BigInt get amount => RustLib.instance.api + .crateApiWalletPreparedSendAutoAccessorGetAmount(that: this); + + BigInt get fee => RustLib.instance.api + .crateApiWalletPreparedSendAutoAccessorGetFee(that: this); + + BigInt get sendFee => RustLib.instance.api + .crateApiWalletPreparedSendAutoAccessorGetSendFee(that: this); + + BigInt get swapFee => RustLib.instance.api + .crateApiWalletPreparedSendAutoAccessorGetSwapFee(that: this); + + set amount(BigInt amount) => + RustLib.instance.api.crateApiWalletPreparedSendAutoAccessorSetAmount( + that: this, + amount: amount, + ); + + set fee(BigInt fee) => RustLib.instance.api + .crateApiWalletPreparedSendAutoAccessorSetFee(that: this, fee: fee); + + set sendFee(BigInt sendFee) => + RustLib.instance.api.crateApiWalletPreparedSendAutoAccessorSetSendFee( + that: this, + sendFee: sendFee, + ); + + set swapFee(BigInt swapFee) => + RustLib.instance.api.crateApiWalletPreparedSendAutoAccessorSetSwapFee( + that: this, + swapFee: swapFee, + ); +} + +@sealed +class TokenDecoderImpl extends RustOpaque implements TokenDecoder { + // Not to be used by end users + TokenDecoderImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + TokenDecoderImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_TokenDecoder, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_TokenDecoder, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_TokenDecoderPtr, + ); + + bool isComplete() => + RustLib.instance.api.crateApiTokenTokenDecoderIsComplete(that: this); + + void receive({required String input}) => RustLib.instance.api + .crateApiTokenTokenDecoderReceive(that: this, input: input); + + Token? value() => + RustLib.instance.api.crateApiTokenTokenDecoderValue(that: this); +} + +@sealed +class WalletDatabaseImpl extends RustOpaque implements WalletDatabase { + // Not to be used by end users + WalletDatabaseImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + WalletDatabaseImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_WalletDatabase, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_WalletDatabase, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_WalletDatabasePtr, + ); + + String get path => RustLib.instance.api + .crateApiWalletWalletDatabaseAutoAccessorGetPath(that: this); + + set path(String path) => RustLib.instance.api + .crateApiWalletWalletDatabaseAutoAccessorSetPath(that: this, path: path); + + Future removeMint({required String mintUrl}) => RustLib.instance.api + .crateApiWalletWalletDatabaseRemoveMint(that: this, mintUrl: mintUrl); +} + +@sealed +class WalletImpl extends RustOpaque implements Wallet { + // Not to be used by end users + WalletImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + WalletImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_Wallet, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_Wallet, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_WalletPtr, + ); + + String get mintUrl => RustLib.instance.api + .crateApiWalletWalletAutoAccessorGetMintUrl(that: this); + + String get unit => + RustLib.instance.api.crateApiWalletWalletAutoAccessorGetUnit(that: this); + + set mintUrl(String mintUrl) => RustLib.instance.api + .crateApiWalletWalletAutoAccessorSetMintUrl(that: this, mintUrl: mintUrl); + + set unit(String unit) => RustLib.instance.api + .crateApiWalletWalletAutoAccessorSetUnit(that: this, unit: unit); + + Future balance() => + RustLib.instance.api.crateApiWalletWalletBalance(that: this); + + Future cancelSend({required PreparedSend send}) => RustLib.instance.api + .crateApiWalletWalletCancelSend(that: this, send: send); + + Future checkAllMintQuotes() => + RustLib.instance.api.crateApiWalletWalletCheckAllMintQuotes(that: this); + + Future checkPendingTransactions() => RustLib.instance.api + .crateApiWalletWalletCheckPendingTransactions(that: this); + + Future finalizePendingMelts() => + RustLib.instance.api.crateApiWalletWalletFinalizePendingMelts(that: this); + + Future getMint() => + RustLib.instance.api.crateApiWalletWalletGetMint(that: this); + + Future isTokenSpent({required Token token}) => RustLib.instance.api + .crateApiWalletWalletIsTokenSpent(that: this, token: token); + + Future> listTransactions({ + TransactionDirection? direction, + }) => RustLib.instance.api.crateApiWalletWalletListTransactions( + that: this, + direction: direction, + ); + + Future melt({required MeltQuote quote}) => + RustLib.instance.api.crateApiWalletWalletMelt(that: this, quote: quote); + + Future meltQuote({required String request}) => RustLib.instance.api + .crateApiWalletWalletMeltQuote(that: this, request: request); + + Stream mint({required BigInt amount, String? description}) => + RustLib.instance.api.crateApiWalletWalletMint( + that: this, + amount: amount, + description: description, + ); + + Future prepareSend({ + required BigInt amount, + SendOptions? opts, + }) => RustLib.instance.api.crateApiWalletWalletPrepareSend( + that: this, + amount: amount, + opts: opts, + ); + + Future receive({required Token token, ReceiveOptions? opts}) => + RustLib.instance.api.crateApiWalletWalletReceive( + that: this, + token: token, + opts: opts, + ); + + Future recoverIncompleteSagas() => RustLib.instance.api + .crateApiWalletWalletRecoverIncompleteSagas(that: this); + + Future restore() => + RustLib.instance.api.crateApiWalletWalletRestore(that: this); + + Future send({ + required PreparedSend send, + String? memo, + bool? includeMemo, + }) => RustLib.instance.api.crateApiWalletWalletSend( + that: this, + send: send, + memo: memo, + includeMemo: includeMemo, + ); + + Stream streamBalance() => + RustLib.instance.api.crateApiWalletWalletStreamBalance(that: this); } diff --git a/lib/src/rust/frb_generated.io.dart b/lib/src/rust/frb_generated.io.dart index aacebf8..0ff01d9 100644 --- a/lib/src/rust/frb_generated.io.dart +++ b/lib/src/rust/frb_generated.io.dart @@ -3,6 +3,11 @@ // ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field +import 'api/error.dart'; +import 'api/keys.dart'; +import 'api/mint_info.dart'; +import 'api/token.dart'; +import 'api/wallet.dart'; import 'dart:async'; import 'dart:convert'; import 'dart:ffi' as ffi; @@ -17,17 +22,1016 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { required super.portManager, }); + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_PreparedSendPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSendPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_TokenDecoderPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoderPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_WalletPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_WalletDatabasePtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabasePtr; + @protected - int sse_decode_i_32(SseDeserializer deserializer); + AnyhowException dco_decode_AnyhowException(dynamic raw); + + @protected + PreparedSend + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ); + + @protected + TokenDecoder + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + dynamic raw, + ); + + @protected + Wallet + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ); + + @protected + WalletDatabase + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ); + + @protected + PreparedSend + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ); + + @protected + Wallet + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ); + + @protected + WalletDatabase + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ); + + @protected + PreparedSend + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ); + + @protected + TokenDecoder + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + dynamic raw, + ); + + @protected + Wallet + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ); + + @protected + WalletDatabase + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ); + + @protected + Map dco_decode_Map_String_String_None(dynamic raw); + + @protected + PreparedSend + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ); + + @protected + TokenDecoder + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + dynamic raw, + ); + + @protected + Wallet + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ); + + @protected + WalletDatabase + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ); + + @protected + RustStreamSink dco_decode_StreamSink_mint_quote_Sse(dynamic raw); + + @protected + RustStreamSink dco_decode_StreamSink_u_64_Sse(dynamic raw); + + @protected + String dco_decode_String(dynamic raw); + + @protected + bool dco_decode_bool(dynamic raw); + + @protected + bool dco_decode_box_autoadd_bool(dynamic raw); + + @protected + MeltQuote dco_decode_box_autoadd_melt_quote(dynamic raw); + + @protected + MintInfo dco_decode_box_autoadd_mint_info(dynamic raw); + + @protected + MintVersion dco_decode_box_autoadd_mint_version(dynamic raw); + + @protected + ReceiveOptions dco_decode_box_autoadd_receive_options(dynamic raw); + + @protected + SendOptions dco_decode_box_autoadd_send_options(dynamic raw); + + @protected + Token dco_decode_box_autoadd_token(dynamic raw); + + @protected + TransactionDirection dco_decode_box_autoadd_transaction_direction( + dynamic raw, + ); + + @protected + BigInt dco_decode_box_autoadd_u_64(dynamic raw); + + @protected + BigInt dco_decode_box_autoadd_usize(dynamic raw); + + @protected + ContactInfo dco_decode_contact_info(dynamic raw); + + @protected + Error dco_decode_error(dynamic raw); + + @protected + int dco_decode_i_32(dynamic raw); + + @protected + KeysetInfo dco_decode_keyset_info(dynamic raw); + + @protected + List dco_decode_list_String(dynamic raw); + + @protected + List dco_decode_list_contact_info(dynamic raw); + + @protected + List dco_decode_list_keyset_info(dynamic raw); + + @protected + List dco_decode_list_melt_method_settings(dynamic raw); + + @protected + List dco_decode_list_mint_method_settings(dynamic raw); + + @protected + List dco_decode_list_prim_u_8_loose(dynamic raw); + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); + + @protected + List<(String, String)> dco_decode_list_record_string_string(dynamic raw); + + @protected + List dco_decode_list_transaction(dynamic raw); + + @protected + MeltMethodSettings dco_decode_melt_method_settings(dynamic raw); + + @protected + MeltQuote dco_decode_melt_quote(dynamic raw); + + @protected + MintInfo dco_decode_mint_info(dynamic raw); + + @protected + MintMethodSettings dco_decode_mint_method_settings(dynamic raw); + + @protected + MintQuote dco_decode_mint_quote(dynamic raw); + + @protected + MintQuoteState dco_decode_mint_quote_state(dynamic raw); + + @protected + MintVersion dco_decode_mint_version(dynamic raw); + + @protected + Nut04Settings dco_decode_nut_04_settings(dynamic raw); + + @protected + Nut05Settings dco_decode_nut_05_settings(dynamic raw); + + @protected + Nuts dco_decode_nuts(dynamic raw); + + @protected + String? dco_decode_opt_String(dynamic raw); + + @protected + bool? dco_decode_opt_box_autoadd_bool(dynamic raw); + + @protected + MintInfo? dco_decode_opt_box_autoadd_mint_info(dynamic raw); + + @protected + MintVersion? dco_decode_opt_box_autoadd_mint_version(dynamic raw); + + @protected + ReceiveOptions? dco_decode_opt_box_autoadd_receive_options(dynamic raw); + + @protected + SendOptions? dco_decode_opt_box_autoadd_send_options(dynamic raw); + + @protected + Token? dco_decode_opt_box_autoadd_token(dynamic raw); + + @protected + TransactionDirection? dco_decode_opt_box_autoadd_transaction_direction( + dynamic raw, + ); + + @protected + BigInt? dco_decode_opt_box_autoadd_u_64(dynamic raw); + + @protected + BigInt? dco_decode_opt_box_autoadd_usize(dynamic raw); + + @protected + List? dco_decode_opt_list_String(dynamic raw); + + @protected + List? dco_decode_opt_list_contact_info(dynamic raw); + + @protected + Uint8List? dco_decode_opt_list_prim_u_8_strict(dynamic raw); + + @protected + ReceiveOptions dco_decode_receive_options(dynamic raw); + + @protected + (String, String) dco_decode_record_string_string(dynamic raw); + + @protected + SendOptions dco_decode_send_options(dynamic raw); + + @protected + SupportedSettings dco_decode_supported_settings(dynamic raw); + + @protected + Token dco_decode_token(dynamic raw); + + @protected + Transaction dco_decode_transaction(dynamic raw); + + @protected + TransactionDirection dco_decode_transaction_direction(dynamic raw); + + @protected + TransactionStatus dco_decode_transaction_status(dynamic raw); + + @protected + BigInt dco_decode_u_64(dynamic raw); + + @protected + int dco_decode_u_8(dynamic raw); + + @protected + void dco_decode_unit(dynamic raw); + + @protected + BigInt dco_decode_usize(dynamic raw); + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer); + + @protected + PreparedSend + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ); + + @protected + TokenDecoder + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + SseDeserializer deserializer, + ); + + @protected + Wallet + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ); + + @protected + WalletDatabase + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ); + + @protected + PreparedSend + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ); + + @protected + Wallet + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ); + + @protected + WalletDatabase + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ); + + @protected + PreparedSend + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ); + + @protected + TokenDecoder + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + SseDeserializer deserializer, + ); + + @protected + Wallet + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ); + + @protected + WalletDatabase + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ); + + @protected + Map sse_decode_Map_String_String_None( + SseDeserializer deserializer, + ); + + @protected + PreparedSend + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ); + + @protected + TokenDecoder + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + SseDeserializer deserializer, + ); + + @protected + Wallet + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ); + + @protected + WalletDatabase + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ); + + @protected + RustStreamSink sse_decode_StreamSink_mint_quote_Sse( + SseDeserializer deserializer, + ); + + @protected + RustStreamSink sse_decode_StreamSink_u_64_Sse( + SseDeserializer deserializer, + ); + + @protected + String sse_decode_String(SseDeserializer deserializer); @protected bool sse_decode_bool(SseDeserializer deserializer); @protected - void sse_encode_i_32(int self, SseSerializer serializer); + bool sse_decode_box_autoadd_bool(SseDeserializer deserializer); + + @protected + MeltQuote sse_decode_box_autoadd_melt_quote(SseDeserializer deserializer); + + @protected + MintInfo sse_decode_box_autoadd_mint_info(SseDeserializer deserializer); + + @protected + MintVersion sse_decode_box_autoadd_mint_version(SseDeserializer deserializer); + + @protected + ReceiveOptions sse_decode_box_autoadd_receive_options( + SseDeserializer deserializer, + ); + + @protected + SendOptions sse_decode_box_autoadd_send_options(SseDeserializer deserializer); + + @protected + Token sse_decode_box_autoadd_token(SseDeserializer deserializer); + + @protected + TransactionDirection sse_decode_box_autoadd_transaction_direction( + SseDeserializer deserializer, + ); + + @protected + BigInt sse_decode_box_autoadd_u_64(SseDeserializer deserializer); + + @protected + BigInt sse_decode_box_autoadd_usize(SseDeserializer deserializer); + + @protected + ContactInfo sse_decode_contact_info(SseDeserializer deserializer); + + @protected + Error sse_decode_error(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(SseDeserializer deserializer); + + @protected + KeysetInfo sse_decode_keyset_info(SseDeserializer deserializer); + + @protected + List sse_decode_list_String(SseDeserializer deserializer); + + @protected + List sse_decode_list_contact_info(SseDeserializer deserializer); + + @protected + List sse_decode_list_keyset_info(SseDeserializer deserializer); + + @protected + List sse_decode_list_melt_method_settings( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_mint_method_settings( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + List<(String, String)> sse_decode_list_record_string_string( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_transaction(SseDeserializer deserializer); + + @protected + MeltMethodSettings sse_decode_melt_method_settings( + SseDeserializer deserializer, + ); + + @protected + MeltQuote sse_decode_melt_quote(SseDeserializer deserializer); + + @protected + MintInfo sse_decode_mint_info(SseDeserializer deserializer); + + @protected + MintMethodSettings sse_decode_mint_method_settings( + SseDeserializer deserializer, + ); + + @protected + MintQuote sse_decode_mint_quote(SseDeserializer deserializer); + + @protected + MintQuoteState sse_decode_mint_quote_state(SseDeserializer deserializer); + + @protected + MintVersion sse_decode_mint_version(SseDeserializer deserializer); + + @protected + Nut04Settings sse_decode_nut_04_settings(SseDeserializer deserializer); + + @protected + Nut05Settings sse_decode_nut_05_settings(SseDeserializer deserializer); + + @protected + Nuts sse_decode_nuts(SseDeserializer deserializer); + + @protected + String? sse_decode_opt_String(SseDeserializer deserializer); + + @protected + bool? sse_decode_opt_box_autoadd_bool(SseDeserializer deserializer); + + @protected + MintInfo? sse_decode_opt_box_autoadd_mint_info(SseDeserializer deserializer); + + @protected + MintVersion? sse_decode_opt_box_autoadd_mint_version( + SseDeserializer deserializer, + ); + + @protected + ReceiveOptions? sse_decode_opt_box_autoadd_receive_options( + SseDeserializer deserializer, + ); + + @protected + SendOptions? sse_decode_opt_box_autoadd_send_options( + SseDeserializer deserializer, + ); + + @protected + Token? sse_decode_opt_box_autoadd_token(SseDeserializer deserializer); + + @protected + TransactionDirection? sse_decode_opt_box_autoadd_transaction_direction( + SseDeserializer deserializer, + ); + + @protected + BigInt? sse_decode_opt_box_autoadd_u_64(SseDeserializer deserializer); + + @protected + BigInt? sse_decode_opt_box_autoadd_usize(SseDeserializer deserializer); + + @protected + List? sse_decode_opt_list_String(SseDeserializer deserializer); + + @protected + List? sse_decode_opt_list_contact_info( + SseDeserializer deserializer, + ); + + @protected + Uint8List? sse_decode_opt_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + ReceiveOptions sse_decode_receive_options(SseDeserializer deserializer); + + @protected + (String, String) sse_decode_record_string_string( + SseDeserializer deserializer, + ); + + @protected + SendOptions sse_decode_send_options(SseDeserializer deserializer); + + @protected + SupportedSettings sse_decode_supported_settings(SseDeserializer deserializer); + + @protected + Token sse_decode_token(SseDeserializer deserializer); + + @protected + Transaction sse_decode_transaction(SseDeserializer deserializer); + + @protected + TransactionDirection sse_decode_transaction_direction( + SseDeserializer deserializer, + ); + + @protected + TransactionStatus sse_decode_transaction_status(SseDeserializer deserializer); + + @protected + BigInt sse_decode_u_64(SseDeserializer deserializer); + + @protected + int sse_decode_u_8(SseDeserializer deserializer); + + @protected + void sse_decode_unit(SseDeserializer deserializer); + + @protected + BigInt sse_decode_usize(SseDeserializer deserializer); + + @protected + void sse_encode_AnyhowException( + AnyhowException self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + TokenDecoder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + TokenDecoder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ); + + @protected + void sse_encode_Map_String_String_None( + Map self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + TokenDecoder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ); + + @protected + void sse_encode_StreamSink_mint_quote_Sse( + RustStreamSink self, + SseSerializer serializer, + ); + + @protected + void sse_encode_StreamSink_u_64_Sse( + RustStreamSink self, + SseSerializer serializer, + ); + + @protected + void sse_encode_String(String self, SseSerializer serializer); @protected void sse_encode_bool(bool self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_bool(bool self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_melt_quote( + MeltQuote self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_mint_info( + MintInfo self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_mint_version( + MintVersion self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_receive_options( + ReceiveOptions self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_send_options( + SendOptions self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_token(Token self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_transaction_direction( + TransactionDirection self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_u_64(BigInt self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_usize(BigInt self, SseSerializer serializer); + + @protected + void sse_encode_contact_info(ContactInfo self, SseSerializer serializer); + + @protected + void sse_encode_error(Error self, SseSerializer serializer); + + @protected + void sse_encode_i_32(int self, SseSerializer serializer); + + @protected + void sse_encode_keyset_info(KeysetInfo self, SseSerializer serializer); + + @protected + void sse_encode_list_String(List self, SseSerializer serializer); + + @protected + void sse_encode_list_contact_info( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_keyset_info( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_melt_method_settings( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_mint_method_settings( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_record_string_string( + List<(String, String)> self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_transaction( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_melt_method_settings( + MeltMethodSettings self, + SseSerializer serializer, + ); + + @protected + void sse_encode_melt_quote(MeltQuote self, SseSerializer serializer); + + @protected + void sse_encode_mint_info(MintInfo self, SseSerializer serializer); + + @protected + void sse_encode_mint_method_settings( + MintMethodSettings self, + SseSerializer serializer, + ); + + @protected + void sse_encode_mint_quote(MintQuote self, SseSerializer serializer); + + @protected + void sse_encode_mint_quote_state( + MintQuoteState self, + SseSerializer serializer, + ); + + @protected + void sse_encode_mint_version(MintVersion self, SseSerializer serializer); + + @protected + void sse_encode_nut_04_settings(Nut04Settings self, SseSerializer serializer); + + @protected + void sse_encode_nut_05_settings(Nut05Settings self, SseSerializer serializer); + + @protected + void sse_encode_nuts(Nuts self, SseSerializer serializer); + + @protected + void sse_encode_opt_String(String? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_bool(bool? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_mint_info( + MintInfo? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_mint_version( + MintVersion? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_receive_options( + ReceiveOptions? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_send_options( + SendOptions? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_token(Token? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_transaction_direction( + TransactionDirection? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_u_64(BigInt? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_usize(BigInt? self, SseSerializer serializer); + + @protected + void sse_encode_opt_list_String(List? self, SseSerializer serializer); + + @protected + void sse_encode_opt_list_contact_info( + List? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_list_prim_u_8_strict( + Uint8List? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_receive_options( + ReceiveOptions self, + SseSerializer serializer, + ); + + @protected + void sse_encode_record_string_string( + (String, String) self, + SseSerializer serializer, + ); + + @protected + void sse_encode_send_options(SendOptions self, SseSerializer serializer); + + @protected + void sse_encode_supported_settings( + SupportedSettings self, + SseSerializer serializer, + ); + + @protected + void sse_encode_token(Token self, SseSerializer serializer); + + @protected + void sse_encode_transaction(Transaction self, SseSerializer serializer); + + @protected + void sse_encode_transaction_direction( + TransactionDirection self, + SseSerializer serializer, + ); + + @protected + void sse_encode_transaction_status( + TransactionStatus self, + SseSerializer serializer, + ); + + @protected + void sse_encode_u_64(BigInt self, SseSerializer serializer); + + @protected + void sse_encode_u_8(int self, SseSerializer serializer); + + @protected + void sse_encode_unit(void self, SseSerializer serializer); + + @protected + void sse_encode_usize(BigInt self, SseSerializer serializer); } // Section: wire_class @@ -43,4 +1047,140 @@ class RustLibWire implements BaseWire { /// The symbols are looked up in [dynamicLibrary]. RustLibWire(ffi.DynamicLibrary dynamicLibrary) : _lookup = dynamicLibrary.lookup; + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSendPtr = + _lookup)>>( + 'frbgen_elcaju_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSendPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSendPtr = + _lookup)>>( + 'frbgen_elcaju_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSendPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoderPtr = + _lookup)>>( + 'frbgen_elcaju_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoderPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoderPtr = + _lookup)>>( + 'frbgen_elcaju_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoderPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletPtr = + _lookup)>>( + 'frbgen_elcaju_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletPtr = + _lookup)>>( + 'frbgen_elcaju_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabasePtr = + _lookup)>>( + 'frbgen_elcaju_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabasePtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabasePtr = + _lookup)>>( + 'frbgen_elcaju_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabasePtr + .asFunction)>(); } diff --git a/lib/src/rust/frb_generated.web.dart b/lib/src/rust/frb_generated.web.dart index 95c7d97..2405698 100644 --- a/lib/src/rust/frb_generated.web.dart +++ b/lib/src/rust/frb_generated.web.dart @@ -6,6 +6,11 @@ // Static analysis wrongly picks the IO variant, thus ignore this // ignore_for_file: argument_type_not_assignable +import 'api/error.dart'; +import 'api/keys.dart'; +import 'api/mint_info.dart'; +import 'api/token.dart'; +import 'api/wallet.dart'; import 'dart:async'; import 'dart:convert'; import 'frb_generated.dart'; @@ -19,23 +24,1086 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { required super.portManager, }); + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_PreparedSendPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_TokenDecoderPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_WalletPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_WalletDatabasePtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase; + @protected - int sse_decode_i_32(SseDeserializer deserializer); + AnyhowException dco_decode_AnyhowException(dynamic raw); + + @protected + PreparedSend + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ); + + @protected + TokenDecoder + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + dynamic raw, + ); + + @protected + Wallet + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ); + + @protected + WalletDatabase + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ); + + @protected + PreparedSend + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ); + + @protected + Wallet + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ); + + @protected + WalletDatabase + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ); + + @protected + PreparedSend + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ); + + @protected + TokenDecoder + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + dynamic raw, + ); + + @protected + Wallet + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ); + + @protected + WalletDatabase + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ); + + @protected + Map dco_decode_Map_String_String_None(dynamic raw); + + @protected + PreparedSend + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + dynamic raw, + ); + + @protected + TokenDecoder + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + dynamic raw, + ); + + @protected + Wallet + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + dynamic raw, + ); + + @protected + WalletDatabase + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + dynamic raw, + ); + + @protected + RustStreamSink dco_decode_StreamSink_mint_quote_Sse(dynamic raw); + + @protected + RustStreamSink dco_decode_StreamSink_u_64_Sse(dynamic raw); + + @protected + String dco_decode_String(dynamic raw); + + @protected + bool dco_decode_bool(dynamic raw); + + @protected + bool dco_decode_box_autoadd_bool(dynamic raw); + + @protected + MeltQuote dco_decode_box_autoadd_melt_quote(dynamic raw); + + @protected + MintInfo dco_decode_box_autoadd_mint_info(dynamic raw); + + @protected + MintVersion dco_decode_box_autoadd_mint_version(dynamic raw); + + @protected + ReceiveOptions dco_decode_box_autoadd_receive_options(dynamic raw); + + @protected + SendOptions dco_decode_box_autoadd_send_options(dynamic raw); + + @protected + Token dco_decode_box_autoadd_token(dynamic raw); + + @protected + TransactionDirection dco_decode_box_autoadd_transaction_direction( + dynamic raw, + ); + + @protected + BigInt dco_decode_box_autoadd_u_64(dynamic raw); + + @protected + BigInt dco_decode_box_autoadd_usize(dynamic raw); + + @protected + ContactInfo dco_decode_contact_info(dynamic raw); + + @protected + Error dco_decode_error(dynamic raw); + + @protected + int dco_decode_i_32(dynamic raw); + + @protected + KeysetInfo dco_decode_keyset_info(dynamic raw); + + @protected + List dco_decode_list_String(dynamic raw); + + @protected + List dco_decode_list_contact_info(dynamic raw); + + @protected + List dco_decode_list_keyset_info(dynamic raw); + + @protected + List dco_decode_list_melt_method_settings(dynamic raw); + + @protected + List dco_decode_list_mint_method_settings(dynamic raw); + + @protected + List dco_decode_list_prim_u_8_loose(dynamic raw); + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); + + @protected + List<(String, String)> dco_decode_list_record_string_string(dynamic raw); + + @protected + List dco_decode_list_transaction(dynamic raw); + + @protected + MeltMethodSettings dco_decode_melt_method_settings(dynamic raw); + + @protected + MeltQuote dco_decode_melt_quote(dynamic raw); + + @protected + MintInfo dco_decode_mint_info(dynamic raw); + + @protected + MintMethodSettings dco_decode_mint_method_settings(dynamic raw); + + @protected + MintQuote dco_decode_mint_quote(dynamic raw); + + @protected + MintQuoteState dco_decode_mint_quote_state(dynamic raw); + + @protected + MintVersion dco_decode_mint_version(dynamic raw); + + @protected + Nut04Settings dco_decode_nut_04_settings(dynamic raw); + + @protected + Nut05Settings dco_decode_nut_05_settings(dynamic raw); + + @protected + Nuts dco_decode_nuts(dynamic raw); + + @protected + String? dco_decode_opt_String(dynamic raw); + + @protected + bool? dco_decode_opt_box_autoadd_bool(dynamic raw); + + @protected + MintInfo? dco_decode_opt_box_autoadd_mint_info(dynamic raw); + + @protected + MintVersion? dco_decode_opt_box_autoadd_mint_version(dynamic raw); + + @protected + ReceiveOptions? dco_decode_opt_box_autoadd_receive_options(dynamic raw); + + @protected + SendOptions? dco_decode_opt_box_autoadd_send_options(dynamic raw); + + @protected + Token? dco_decode_opt_box_autoadd_token(dynamic raw); + + @protected + TransactionDirection? dco_decode_opt_box_autoadd_transaction_direction( + dynamic raw, + ); + + @protected + BigInt? dco_decode_opt_box_autoadd_u_64(dynamic raw); + + @protected + BigInt? dco_decode_opt_box_autoadd_usize(dynamic raw); + + @protected + List? dco_decode_opt_list_String(dynamic raw); + + @protected + List? dco_decode_opt_list_contact_info(dynamic raw); + + @protected + Uint8List? dco_decode_opt_list_prim_u_8_strict(dynamic raw); + + @protected + ReceiveOptions dco_decode_receive_options(dynamic raw); + + @protected + (String, String) dco_decode_record_string_string(dynamic raw); + + @protected + SendOptions dco_decode_send_options(dynamic raw); + + @protected + SupportedSettings dco_decode_supported_settings(dynamic raw); + + @protected + Token dco_decode_token(dynamic raw); + + @protected + Transaction dco_decode_transaction(dynamic raw); + + @protected + TransactionDirection dco_decode_transaction_direction(dynamic raw); + + @protected + TransactionStatus dco_decode_transaction_status(dynamic raw); + + @protected + BigInt dco_decode_u_64(dynamic raw); + + @protected + int dco_decode_u_8(dynamic raw); + + @protected + void dco_decode_unit(dynamic raw); + + @protected + BigInt dco_decode_usize(dynamic raw); + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer); + + @protected + PreparedSend + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ); + + @protected + TokenDecoder + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + SseDeserializer deserializer, + ); + + @protected + Wallet + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ); + + @protected + WalletDatabase + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ); + + @protected + PreparedSend + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ); + + @protected + Wallet + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ); + + @protected + WalletDatabase + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ); + + @protected + PreparedSend + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ); + + @protected + TokenDecoder + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + SseDeserializer deserializer, + ); + + @protected + Wallet + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ); + + @protected + WalletDatabase + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ); + + @protected + Map sse_decode_Map_String_String_None( + SseDeserializer deserializer, + ); + + @protected + PreparedSend + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + SseDeserializer deserializer, + ); + + @protected + TokenDecoder + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + SseDeserializer deserializer, + ); + + @protected + Wallet + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + SseDeserializer deserializer, + ); + + @protected + WalletDatabase + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + SseDeserializer deserializer, + ); + + @protected + RustStreamSink sse_decode_StreamSink_mint_quote_Sse( + SseDeserializer deserializer, + ); + + @protected + RustStreamSink sse_decode_StreamSink_u_64_Sse( + SseDeserializer deserializer, + ); + + @protected + String sse_decode_String(SseDeserializer deserializer); @protected bool sse_decode_bool(SseDeserializer deserializer); @protected - void sse_encode_i_32(int self, SseSerializer serializer); + bool sse_decode_box_autoadd_bool(SseDeserializer deserializer); + + @protected + MeltQuote sse_decode_box_autoadd_melt_quote(SseDeserializer deserializer); + + @protected + MintInfo sse_decode_box_autoadd_mint_info(SseDeserializer deserializer); + + @protected + MintVersion sse_decode_box_autoadd_mint_version(SseDeserializer deserializer); + + @protected + ReceiveOptions sse_decode_box_autoadd_receive_options( + SseDeserializer deserializer, + ); + + @protected + SendOptions sse_decode_box_autoadd_send_options(SseDeserializer deserializer); + + @protected + Token sse_decode_box_autoadd_token(SseDeserializer deserializer); + + @protected + TransactionDirection sse_decode_box_autoadd_transaction_direction( + SseDeserializer deserializer, + ); + + @protected + BigInt sse_decode_box_autoadd_u_64(SseDeserializer deserializer); + + @protected + BigInt sse_decode_box_autoadd_usize(SseDeserializer deserializer); + + @protected + ContactInfo sse_decode_contact_info(SseDeserializer deserializer); + + @protected + Error sse_decode_error(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(SseDeserializer deserializer); + + @protected + KeysetInfo sse_decode_keyset_info(SseDeserializer deserializer); + + @protected + List sse_decode_list_String(SseDeserializer deserializer); + + @protected + List sse_decode_list_contact_info(SseDeserializer deserializer); + + @protected + List sse_decode_list_keyset_info(SseDeserializer deserializer); + + @protected + List sse_decode_list_melt_method_settings( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_mint_method_settings( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + List<(String, String)> sse_decode_list_record_string_string( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_transaction(SseDeserializer deserializer); + + @protected + MeltMethodSettings sse_decode_melt_method_settings( + SseDeserializer deserializer, + ); + + @protected + MeltQuote sse_decode_melt_quote(SseDeserializer deserializer); + + @protected + MintInfo sse_decode_mint_info(SseDeserializer deserializer); + + @protected + MintMethodSettings sse_decode_mint_method_settings( + SseDeserializer deserializer, + ); + + @protected + MintQuote sse_decode_mint_quote(SseDeserializer deserializer); + + @protected + MintQuoteState sse_decode_mint_quote_state(SseDeserializer deserializer); + + @protected + MintVersion sse_decode_mint_version(SseDeserializer deserializer); + + @protected + Nut04Settings sse_decode_nut_04_settings(SseDeserializer deserializer); + + @protected + Nut05Settings sse_decode_nut_05_settings(SseDeserializer deserializer); + + @protected + Nuts sse_decode_nuts(SseDeserializer deserializer); + + @protected + String? sse_decode_opt_String(SseDeserializer deserializer); + + @protected + bool? sse_decode_opt_box_autoadd_bool(SseDeserializer deserializer); + + @protected + MintInfo? sse_decode_opt_box_autoadd_mint_info(SseDeserializer deserializer); + + @protected + MintVersion? sse_decode_opt_box_autoadd_mint_version( + SseDeserializer deserializer, + ); + + @protected + ReceiveOptions? sse_decode_opt_box_autoadd_receive_options( + SseDeserializer deserializer, + ); + + @protected + SendOptions? sse_decode_opt_box_autoadd_send_options( + SseDeserializer deserializer, + ); + + @protected + Token? sse_decode_opt_box_autoadd_token(SseDeserializer deserializer); + + @protected + TransactionDirection? sse_decode_opt_box_autoadd_transaction_direction( + SseDeserializer deserializer, + ); + + @protected + BigInt? sse_decode_opt_box_autoadd_u_64(SseDeserializer deserializer); + + @protected + BigInt? sse_decode_opt_box_autoadd_usize(SseDeserializer deserializer); + + @protected + List? sse_decode_opt_list_String(SseDeserializer deserializer); + + @protected + List? sse_decode_opt_list_contact_info( + SseDeserializer deserializer, + ); + + @protected + Uint8List? sse_decode_opt_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + ReceiveOptions sse_decode_receive_options(SseDeserializer deserializer); + + @protected + (String, String) sse_decode_record_string_string( + SseDeserializer deserializer, + ); + + @protected + SendOptions sse_decode_send_options(SseDeserializer deserializer); + + @protected + SupportedSettings sse_decode_supported_settings(SseDeserializer deserializer); + + @protected + Token sse_decode_token(SseDeserializer deserializer); + + @protected + Transaction sse_decode_transaction(SseDeserializer deserializer); + + @protected + TransactionDirection sse_decode_transaction_direction( + SseDeserializer deserializer, + ); + + @protected + TransactionStatus sse_decode_transaction_status(SseDeserializer deserializer); + + @protected + BigInt sse_decode_u_64(SseDeserializer deserializer); + + @protected + int sse_decode_u_8(SseDeserializer deserializer); + + @protected + void sse_decode_unit(SseDeserializer deserializer); + + @protected + BigInt sse_decode_usize(SseDeserializer deserializer); + + @protected + void sse_encode_AnyhowException( + AnyhowException self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + TokenDecoder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + TokenDecoder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ); + + @protected + void sse_encode_Map_String_String_None( + Map self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + PreparedSend self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + TokenDecoder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + Wallet self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + WalletDatabase self, + SseSerializer serializer, + ); + + @protected + void sse_encode_StreamSink_mint_quote_Sse( + RustStreamSink self, + SseSerializer serializer, + ); + + @protected + void sse_encode_StreamSink_u_64_Sse( + RustStreamSink self, + SseSerializer serializer, + ); + + @protected + void sse_encode_String(String self, SseSerializer serializer); @protected void sse_encode_bool(bool self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_bool(bool self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_melt_quote( + MeltQuote self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_mint_info( + MintInfo self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_mint_version( + MintVersion self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_receive_options( + ReceiveOptions self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_send_options( + SendOptions self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_token(Token self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_transaction_direction( + TransactionDirection self, + SseSerializer serializer, + ); + + @protected + void sse_encode_box_autoadd_u_64(BigInt self, SseSerializer serializer); + + @protected + void sse_encode_box_autoadd_usize(BigInt self, SseSerializer serializer); + + @protected + void sse_encode_contact_info(ContactInfo self, SseSerializer serializer); + + @protected + void sse_encode_error(Error self, SseSerializer serializer); + + @protected + void sse_encode_i_32(int self, SseSerializer serializer); + + @protected + void sse_encode_keyset_info(KeysetInfo self, SseSerializer serializer); + + @protected + void sse_encode_list_String(List self, SseSerializer serializer); + + @protected + void sse_encode_list_contact_info( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_keyset_info( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_melt_method_settings( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_mint_method_settings( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_record_string_string( + List<(String, String)> self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_transaction( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_melt_method_settings( + MeltMethodSettings self, + SseSerializer serializer, + ); + + @protected + void sse_encode_melt_quote(MeltQuote self, SseSerializer serializer); + + @protected + void sse_encode_mint_info(MintInfo self, SseSerializer serializer); + + @protected + void sse_encode_mint_method_settings( + MintMethodSettings self, + SseSerializer serializer, + ); + + @protected + void sse_encode_mint_quote(MintQuote self, SseSerializer serializer); + + @protected + void sse_encode_mint_quote_state( + MintQuoteState self, + SseSerializer serializer, + ); + + @protected + void sse_encode_mint_version(MintVersion self, SseSerializer serializer); + + @protected + void sse_encode_nut_04_settings(Nut04Settings self, SseSerializer serializer); + + @protected + void sse_encode_nut_05_settings(Nut05Settings self, SseSerializer serializer); + + @protected + void sse_encode_nuts(Nuts self, SseSerializer serializer); + + @protected + void sse_encode_opt_String(String? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_bool(bool? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_mint_info( + MintInfo? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_mint_version( + MintVersion? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_receive_options( + ReceiveOptions? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_send_options( + SendOptions? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_token(Token? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_transaction_direction( + TransactionDirection? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_box_autoadd_u_64(BigInt? self, SseSerializer serializer); + + @protected + void sse_encode_opt_box_autoadd_usize(BigInt? self, SseSerializer serializer); + + @protected + void sse_encode_opt_list_String(List? self, SseSerializer serializer); + + @protected + void sse_encode_opt_list_contact_info( + List? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_opt_list_prim_u_8_strict( + Uint8List? self, + SseSerializer serializer, + ); + + @protected + void sse_encode_receive_options( + ReceiveOptions self, + SseSerializer serializer, + ); + + @protected + void sse_encode_record_string_string( + (String, String) self, + SseSerializer serializer, + ); + + @protected + void sse_encode_send_options(SendOptions self, SseSerializer serializer); + + @protected + void sse_encode_supported_settings( + SupportedSettings self, + SseSerializer serializer, + ); + + @protected + void sse_encode_token(Token self, SseSerializer serializer); + + @protected + void sse_encode_transaction(Transaction self, SseSerializer serializer); + + @protected + void sse_encode_transaction_direction( + TransactionDirection self, + SseSerializer serializer, + ); + + @protected + void sse_encode_transaction_status( + TransactionStatus self, + SseSerializer serializer, + ); + + @protected + void sse_encode_u_64(BigInt self, SseSerializer serializer); + + @protected + void sse_encode_u_8(int self, SseSerializer serializer); + + @protected + void sse_encode_unit(void self, SseSerializer serializer); + + @protected + void sse_encode_usize(BigInt self, SseSerializer serializer); } // Section: wire_class class RustLibWire implements BaseWire { RustLibWire.fromExternalLibrary(ExternalLibrary lib); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + ptr, + ); } @JS('wasm_bindgen') @@ -43,4 +1111,44 @@ external RustLibWasmModule get wasmModule; @JS() @anonymous -extension type RustLibWasmModule._(JSObject _) implements JSObject {} +extension type RustLibWasmModule._(JSObject _) implements JSObject { + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + int ptr, + ); +} diff --git a/pubspec.lock b/pubspec.lock index e09cc82..311564b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,22 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + url: "https://pub.dev" + source: hosted + version: "85.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" + url: "https://pub.dev" + source: hosted + version: "7.7.1" ansicolor: dependency: transitive description: @@ -65,6 +81,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.2" + build: + dependency: transitive + description: + name: build + sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" + url: "https://pub.dev" + source: hosted + version: "2.5.4" build_cli_annotations: dependency: transitive description: @@ -73,6 +97,62 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.0" + build_config: + dependency: transitive + description: + name: build_config + sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: bf05f6e12cfea92d3c09308d7bcdab1906cd8a179b023269eed00c071004b957 + url: "https://pub.dev" + source: hosted + version: "4.1.1" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" + url: "https://pub.dev" + source: hosted + version: "9.1.2" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: "0730c18c770d05636a8f945c32a4d7d81cb6e0f0148c8db4ad12e7748f7e49af" + url: "https://pub.dev" + source: hosted + version: "8.12.5" cbor: dependency: "direct main" description: @@ -122,6 +202,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d" + url: "https://pub.dev" + source: hosted + version: "4.11.1" collection: dependency: transitive description: @@ -170,6 +258,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.8" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" + url: "https://pub.dev" + source: hosted + version: "3.1.1" fake_async: dependency: transitive description: @@ -302,14 +398,38 @@ packages: description: flutter source: sdk version: "0.0.0" + freezed: + dependency: "direct dev" + description: + name: freezed + sha256: "59a584c24b3acdc5250bb856d0d3e9c0b798ed14a4af1ddb7dc1c7b41df91c9c" + url: "https://pub.dev" + source: hosted + version: "2.5.8" freezed_annotation: - dependency: transitive + dependency: "direct main" description: name: freezed_annotation sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 url: "https://pub.dev" source: hosted version: "2.4.4" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" google_fonts: dependency: "direct main" description: @@ -318,6 +438,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.3.0" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" hex: dependency: transitive description: @@ -342,6 +470,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.6.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" http_parser: dependency: transitive description: @@ -374,6 +510,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.20.2" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" js: dependency: transitive description: @@ -422,6 +566,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.1.1" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" lucide_icons: dependency: "direct main" description: @@ -494,6 +646,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.1" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" package_info_plus: dependency: "direct main" description: @@ -598,6 +758,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.9.1" + pool: + dependency: transitive + description: + name: pool + sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" + url: "https://pub.dev" + source: hosted + version: "1.5.2" posix: dependency: transitive description: @@ -614,6 +782,22 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.5+1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" + url: "https://pub.dev" + source: hosted + version: "1.5.0" qr: dependency: transitive description: @@ -702,11 +886,35 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.1" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" + url: "https://pub.dev" + source: hosted + version: "3.0.0" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.0" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + url: "https://pub.dev" + source: hosted + version: "2.0.0" source_span: dependency: transitive description: @@ -787,6 +995,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 + url: "https://pub.dev" + source: hosted + version: "2.1.1" string_scanner: dependency: transitive description: @@ -819,6 +1035,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.10" + timing: + dependency: transitive + description: + name: timing + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" + url: "https://pub.dev" + source: hosted + version: "1.0.2" typed_data: dependency: transitive description: @@ -923,6 +1147,14 @@ packages: url: "https://pub.dev" source: hosted version: "14.3.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" + url: "https://pub.dev" + source: hosted + version: "1.2.1" web: dependency: transitive description: @@ -931,6 +1163,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index c95371b..f1627df 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,6 +64,7 @@ dependencies: bip32: ^2.0.0 package_info_plus: ^9.0.0 flutter_rust_bridge: 2.11.1 + freezed_annotation: ^2.4.4 dev_dependencies: flutter_test: @@ -71,6 +72,8 @@ dev_dependencies: flutter_lints: ^5.0.0 flutter_launcher_icons: ^0.14.3 flutter_native_splash: ^2.4.4 + freezed: ^2.5.8 + build_runner: ^2.5.4 # App Icon configuration flutter_launcher_icons: diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 384ad77..133ba87 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -951,11 +951,13 @@ dependencies = [ "cdk-common", "cdk-sqlite", "flutter_rust_bridge", + "getrandom 0.3.4", "log", "oslog", "reqwest", "serde_json", "tokio", + "uuid", ] [[package]] diff --git a/rust/Cargo.toml b/rust/Cargo.toml index 765599f..5854290 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -28,6 +28,9 @@ bc-ur = { version = "0.12.0", default-features = false } # Mnemonic bip39 = { version = "2.1", default-features = false, features = ["std"] } +# Entropy +getrandom = { version = "0.3", default-features = false, features = ["std"] } + # Async runtime tokio = { version = "1", default-features = false } @@ -43,6 +46,9 @@ reqwest = { version = "0.12", default-features = false, features = [ # Serialización serde_json = { version = "1.0", default-features = false, features = ["std"] } +# UUID (for PreparedSend operation_id) +uuid = { version = "1", default-features = false } + # Logging log = { version = "0.4", default-features = false } diff --git a/rust/src/api/error.rs b/rust/src/api/error.rs index bfe8f75..97ad4b0 100644 --- a/rust/src/api/error.rs +++ b/rust/src/api/error.rs @@ -11,6 +11,8 @@ pub enum Error { InvalidInput, /// Error de red (HTTP, conexión) Network(String), + /// Error de UR (QR multiframe) + Ur(String), } impl fmt::Display for Error { @@ -20,18 +22,65 @@ impl fmt::Display for Error { Error::Database(msg) => write!(f, "Database error: {msg}"), Error::InvalidInput => write!(f, "Invalid input"), Error::Network(msg) => write!(f, "Network error: {msg}"), + Error::Ur(msg) => write!(f, "UR error: {msg}"), } } } impl std::error::Error for Error {} +// --- cdk errors --- + impl From for Error { fn from(e: cdk::error::Error) -> Self { Error::Cdk(e.to_string()) } } +impl From for Error { + fn from(e: cdk::amount::Error) -> Self { + Error::Cdk(e.to_string()) + } +} + +impl From for Error { + fn from(e: cdk::cdk_database::Error) -> Self { + Error::Database(e.to_string()) + } +} + +impl From for Error { + fn from(e: cdk::mint_url::Error) -> Self { + Error::Network(e.to_string()) + } +} + +impl From for Error { + fn from(e: cdk::nuts::nut00::Error) -> Self { + Error::Cdk(e.to_string()) + } +} + +impl From for Error { + fn from(e: cdk::nuts::nut01::Error) -> Self { + Error::Cdk(e.to_string()) + } +} + +impl From for Error { + fn from(e: cdk::nuts::nut11::Error) -> Self { + Error::Cdk(e.to_string()) + } +} + +// --- external errors --- + +impl From for Error { + fn from(e: bc_ur::Error) -> Self { + Error::Ur(e.to_string()) + } +} + impl From for Error { fn from(e: reqwest::Error) -> Self { Error::Network(e.to_string()) @@ -43,3 +92,9 @@ impl From for Error { Error::Cdk(e.to_string()) } } + +impl From for Error { + fn from(e: std::string::FromUtf8Error) -> Self { + Error::Cdk(e.to_string()) + } +} diff --git a/rust/src/api/keys.rs b/rust/src/api/keys.rs new file mode 100644 index 0000000..59a9ed7 --- /dev/null +++ b/rust/src/api/keys.rs @@ -0,0 +1,30 @@ +use std::str::FromStr; + +use bip39::Mnemonic; +use cdk_common::SecretKey; +use flutter_rust_bridge::frb; + +use super::error::Error; + +/// Generate a new 12-word BIP39 mnemonic +#[frb(sync)] +pub fn generate_mnemonic() -> String { + let mut entropy = [0u8; 16]; // 128 bits → 12 words + getrandom::fill(&mut entropy).expect("Failed to generate entropy"); + Mnemonic::from_entropy(&entropy).unwrap().to_string() +} + +/// Convert a mnemonic to a 64-byte seed +#[frb(sync)] +pub fn mnemonic_to_seed(mnemonic: String) -> Result, Error> { + let mnemonic = Mnemonic::parse(&mnemonic).map_err(|_| Error::InvalidInput)?; + Ok(mnemonic.to_seed("").to_vec()) +} + +/// Derive the public key (hex) from a secret key (hex) +#[frb(sync)] +pub fn get_pub_key(secret: String) -> Result { + let secret = SecretKey::from_str(&secret)?; + let pub_key = secret.public_key(); + Ok(pub_key.to_string()) +} diff --git a/rust/src/api/mint_info.rs b/rust/src/api/mint_info.rs new file mode 100644 index 0000000..c2082d6 --- /dev/null +++ b/rust/src/api/mint_info.rs @@ -0,0 +1,243 @@ +use std::str::FromStr; + +use cdk::{ + nuts::{nut04, nut05, nut06}, + wallet::{HttpClient, MintConnector}, +}; +use cdk_common::{ + mint_url::MintUrl, ContactInfo as CdkContactInfo, MintInfo as CdkMintInfo, + MintVersion as CdkMintVersion, Nuts as CdkNuts, +}; + +use super::error::Error; + +// === MintInfo structs === + +pub struct MintInfo { + pub name: Option, + pub pubkey: Option, + pub version: Option, + pub description: Option, + pub description_long: Option, + pub contact: Option>, + pub nuts: Nuts, + pub icon_url: Option, + pub urls: Option>, + pub motd: Option, + pub time: Option, + pub tos_url: Option, +} + +impl From for MintInfo { + fn from(value: CdkMintInfo) -> Self { + Self { + name: value.name, + pubkey: value.pubkey.map(|p| p.to_string()), + version: value.version.map(|v| v.into()), + description: value.description, + description_long: value.description_long, + contact: value + .contact + .map(|c| c.into_iter().map(|c| c.into()).collect()), + nuts: value.nuts.into(), + icon_url: value.icon_url, + urls: value.urls, + motd: value.motd, + time: value.time, + tos_url: value.tos_url, + } + } +} + +pub struct MintVersion { + pub name: String, + pub version: String, +} + +impl From for MintVersion { + fn from(value: CdkMintVersion) -> Self { + Self { + name: value.name, + version: value.version, + } + } +} + +pub struct ContactInfo { + pub method: String, + pub info: String, +} + +impl From for ContactInfo { + fn from(c: CdkContactInfo) -> Self { + Self { + method: c.method, + info: c.info, + } + } +} + +// === NUT settings === + +pub struct Nuts { + pub nut04: Nut04Settings, + pub nut05: Nut05Settings, + pub nut07: SupportedSettings, + pub nut08: SupportedSettings, + pub nut09: SupportedSettings, + pub nut10: SupportedSettings, + pub nut11: SupportedSettings, + pub nut12: SupportedSettings, + pub nut14: SupportedSettings, + pub nut20: SupportedSettings, +} + +impl From for Nuts { + fn from(value: CdkNuts) -> Self { + Self { + nut04: value.nut04.into(), + nut05: value.nut05.into(), + nut07: value.nut07.into(), + nut08: value.nut08.into(), + nut09: value.nut09.into(), + nut10: value.nut10.into(), + nut11: value.nut11.into(), + nut12: value.nut12.into(), + nut14: value.nut14.into(), + nut20: value.nut20.into(), + } + } +} + +pub struct SupportedSettings { + pub supported: bool, +} + +impl From for SupportedSettings { + fn from(value: nut06::SupportedSettings) -> Self { + Self { + supported: value.supported, + } + } +} + +pub struct Nut04Settings { + pub methods: Vec, + pub disabled: bool, +} + +impl From for Nut04Settings { + fn from(value: nut04::Settings) -> Self { + Self { + methods: value.methods.into_iter().map(|m| m.into()).collect(), + disabled: value.disabled, + } + } +} + +pub struct MintMethodSettings { + pub method: String, + pub unit: String, + pub min_amount: Option, + pub max_amount: Option, +} + +impl From for MintMethodSettings { + fn from(value: nut04::MintMethodSettings) -> Self { + Self { + method: value.method.to_string(), + unit: value.unit.to_string(), + min_amount: value.min_amount.map(|v| v.into()), + max_amount: value.max_amount.map(|v| v.into()), + } + } +} + +pub struct Nut05Settings { + pub methods: Vec, + pub disabled: bool, +} + +impl From for Nut05Settings { + fn from(value: nut05::Settings) -> Self { + Self { + methods: value.methods.into_iter().map(|m| m.into()).collect(), + disabled: value.disabled, + } + } +} + +pub struct MeltMethodSettings { + pub method: String, + pub unit: String, + pub min_amount: Option, + pub max_amount: Option, +} + +impl From for MeltMethodSettings { + fn from(value: nut05::MeltMethodSettings) -> Self { + Self { + method: value.method.to_string(), + unit: value.unit.to_string(), + min_amount: value.min_amount.map(|v| v.into()), + max_amount: value.max_amount.map(|v| v.into()), + } + } +} + +// === API functions === + +/// Fetch full mint info from a mint URL +pub async fn get_mint_info(mint_url: &str) -> Result { + let mint_url = MintUrl::from_str(mint_url)?; + let client = HttpClient::new(mint_url, None); + Ok(client.get_mint_info().await?.into()) +} + +/// Ping a mint to check if it's reachable (replaces Dart HTTP call) +pub async fn ping_mint(mint_url: &str) -> Result { + let url = format!("{}/v1/info", mint_url.trim_end_matches('/')); + let resp = reqwest::Client::new() + .get(&url) + .timeout(std::time::Duration::from_secs(3)) + .send() + .await; + match resp { + Ok(r) => Ok(r.status().is_success()), + Err(_) => Ok(false), + } +} + +/// Keyset info returned by fetch_keysets +pub struct KeysetInfo { + pub id: String, + pub unit: String, + pub active: bool, +} + +/// Fetch keysets from a mint (replaces Dart HTTP call) +pub async fn fetch_keysets(mint_url: &str) -> Result, Error> { + let url = format!("{}/v1/keysets", mint_url.trim_end_matches('/')); + let resp = reqwest::Client::new() + .get(&url) + .timeout(std::time::Duration::from_secs(5)) + .send() + .await? + .text() + .await?; + + let data: serde_json::Value = serde_json::from_str(&resp)?; + let keysets = data["keysets"] + .as_array() + .ok_or(Error::InvalidInput)? + .iter() + .filter_map(|ks| { + Some(KeysetInfo { + id: ks["id"].as_str()?.to_string(), + unit: ks["unit"].as_str()?.to_string(), + active: ks["active"].as_bool().unwrap_or(false), + }) + }) + .collect(); + Ok(keysets) +} diff --git a/rust/src/api/mod.rs b/rust/src/api/mod.rs index a91e735..3f4f34e 100644 --- a/rust/src/api/mod.rs +++ b/rust/src/api/mod.rs @@ -1 +1,5 @@ pub mod error; +pub mod keys; +pub mod mint_info; +pub mod token; +pub mod wallet; diff --git a/rust/src/api/token.rs b/rust/src/api/token.rs new file mode 100644 index 0000000..405546c --- /dev/null +++ b/rust/src/api/token.rs @@ -0,0 +1,151 @@ +use std::{ + str::FromStr, + sync::{Arc, RwLock}, +}; + +use bc_ur::{prelude::CBOR, MultipartDecoder, MultipartEncoder, UR}; +use cdk::nuts::Token as CdkToken; +use cdk_common::{KeySetInfo, Proofs}; +use flutter_rust_bridge::frb; + +use super::error::Error; + +pub struct Token { + pub encoded: String, + pub raw: Option>, + pub amount: u64, + pub mint_url: String, +} + +impl Token { + #[frb(sync)] + pub fn parse(encoded: &str) -> Result { + let encoded = encoded.strip_prefix("cashu:").unwrap_or(encoded); + let token = CdkToken::from_str(encoded)?; + Token::try_from(token) + } + + #[frb(sync)] + pub fn from_raw_bytes(raw: Vec) -> Result { + let token = CdkToken::try_from(&raw)?; + Token::try_from(token) + } + + pub(crate) fn proofs(&self, mint_keysets: &[KeySetInfo]) -> Result { + let token: CdkToken = self.try_into()?; + Ok(token.proofs(mint_keysets)?) + } +} + +impl std::fmt::Display for Token { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.encoded) + } +} + +impl FromStr for Token { + type Err = Error; + + fn from_str(s: &str) -> Result { + Token::parse(s) + } +} + +impl TryFrom for Token { + type Error = Error; + + fn try_from(token: CdkToken) -> Result { + match token { + CdkToken::TokenV3(token_v3) => Ok(Token { + encoded: token_v3.to_string(), + raw: None, + amount: token_v3.value()?.into(), + mint_url: token_v3.mint_urls().first().unwrap().to_string(), + }), + CdkToken::TokenV4(token_v4) => Ok(Token { + encoded: token_v4.to_string(), + raw: Some(token_v4.to_raw_bytes()?), + amount: token_v4.value()?.into(), + mint_url: token_v4.mint_url.to_string(), + }), + } + } +} + +impl TryInto for Token { + type Error = Error; + + fn try_into(self) -> Result { + Ok(CdkToken::from_str(&self.encoded)?) + } +} + +impl TryInto for &Token { + type Error = Error; + + fn try_into(self) -> Result { + Ok(CdkToken::from_str(&self.encoded)?) + } +} + +// === QR Multiframe (bc-ur) === + +pub struct TokenDecoder { + decoder: Arc>, +} + +impl TokenDecoder { + #[frb(sync)] + pub fn new() -> Self { + Self { + decoder: Arc::new(RwLock::new(MultipartDecoder::default())), + } + } + + #[frb(sync)] + pub fn is_complete(&self) -> bool { + let decoder = self.decoder.read().expect("Lock poisoned"); + decoder.is_complete() + } + + #[frb(sync)] + pub fn receive(&self, input: String) -> Result<(), Error> { + let mut decoder = self.decoder.write().expect("Lock poisoned"); + decoder.receive(&input)?; + Ok(()) + } + + #[frb(sync)] + pub fn value(&self) -> Result, Error> { + let decoder = self.decoder.read().expect("Lock poisoned"); + let ur = decoder.message()?; + match ur { + Some(ur) => { + let bytes = ur + .cbor() + .try_byte_string() + .map_err(|e| Error::Ur(format!("Failed to decode CBOR byte string: {}", e)))?; + let utf8_encoded = String::from_utf8(bytes)?; + let token = Token::from_str(&utf8_encoded)?; + Ok(Some(token)) + } + None => Ok(None), + } + } +} + +#[frb(sync)] +pub fn encode_qr_token( + token: &Token, + max_fragment_length: Option, +) -> Result, Error> { + let ur = UR::new("", CBOR::to_byte_string(&token.encoded))?; + let mut encoder = MultipartEncoder::new(&ur, max_fragment_length.unwrap_or(150))?; + let mut parts = Vec::new(); + for _ in 0..encoder.parts_count() { + if let Ok(part) = encoder.next_part() { + parts.push(part); + } + } + Ok(parts) +} diff --git a/rust/src/api/wallet.rs b/rust/src/api/wallet.rs new file mode 100644 index 0000000..fb04cf7 --- /dev/null +++ b/rust/src/api/wallet.rs @@ -0,0 +1,649 @@ +use std::{collections::HashMap, str::FromStr, sync::Arc, time::Duration}; + +use bip39::Mnemonic; +use cdk::{ + amount::{Amount, SplitTarget}, + cdk_database::WalletDatabase as _, + mint_url::MintUrl, + nuts::{ + nut00::ProofsMethods, CurrencyUnit, MintQuoteState as CdkMintQuoteState, PaymentMethod, + PublicKey, SecretKey, SpendingConditions, State as ProofState, Token as CdkToken, + }, + wallet::{ + MeltQuote as CdkMeltQuote, MintQuote as CdkMintQuote, PreparedSend as CdkPreparedSend, + ReceiveOptions as CdkReceiveOptions, SendMemo, SendOptions as CdkSendOptions, + Wallet as CdkWallet, + }, +}; +use cdk_common::{ + util::unix_time, + wallet::{ + Transaction as CdkTransaction, TransactionDirection as CdkTransactionDirection, + }, +}; +use cdk_sqlite::WalletSqliteDatabase; +use flutter_rust_bridge::frb; +use log::info; +use tokio::{sync::broadcast, time::sleep}; +use uuid::Uuid; + +use crate::frb_generated::StreamSink; + +use super::{ + error::Error, + mint_info::MintInfo, + token::Token, +}; + +// ======================================================================== +// Wallet +// ======================================================================== + +#[derive(Clone)] +pub struct Wallet { + pub mint_url: String, + pub unit: String, + + balance_broadcast: broadcast::Sender, + inner: CdkWallet, + seed: [u8; 64], +} + +impl Wallet { + #[frb(sync)] + pub fn new( + mint_url: String, + unit: String, + mnemonic: String, + target_proof_count: Option, + db: &WalletDatabase, + ) -> Result { + let mnemonic = Mnemonic::parse(&mnemonic).map_err(|_| Error::InvalidInput)?; + let seed: [u8; 64] = mnemonic.to_seed("").into(); + let unit = CurrencyUnit::from_str(&unit).unwrap_or(CurrencyUnit::Custom(unit.to_string())); + Ok(Self { + mint_url: mint_url.clone(), + unit: unit.to_string(), + balance_broadcast: broadcast::channel(1).0, + inner: CdkWallet::new( + &mint_url, + unit, + db.inner.clone(), + seed, + target_proof_count, + )?, + seed, + }) + } + + // === Balance === + + pub async fn balance(&self) -> Result { + Ok(self.inner.total_balance().await?.into()) + } + + pub async fn stream_balance(&self, sink: StreamSink) -> Result<(), Error> { + let mut receiver = self.balance_broadcast.subscribe(); + let _ = sink.add(self.balance().await?); + flutter_rust_bridge::spawn(async move { + loop { + match receiver.recv().await { + Ok(balance) => { + if sink.add(balance).is_err() { + break; + } + } + Err(_) => break, + } + } + }); + Ok(()) + } + + // === Receive === + + pub async fn receive(&self, token: Token, opts: Option) -> Result { + let amount = self + .inner + .receive(&token.encoded, opts.unwrap_or_default().try_into()?) + .await? + .into(); + self.update_balance_streams().await; + Ok(amount) + } + + // === Send === + + pub async fn prepare_send( + &self, + amount: u64, + opts: Option, + ) -> Result { + let prepared_send = self + .inner + .prepare_send(amount.into(), opts.unwrap_or_default().try_into()?) + .await?; + Ok(prepared_send.into()) + } + + pub async fn send( + &self, + send: PreparedSend, + memo: Option, + include_memo: Option, + ) -> Result { + let send_memo = memo.map(|m| SendMemo { + memo: m, + include_memo: include_memo.unwrap_or_default(), + }); + let token = self + .inner + .confirm_send( + send.operation_id, + send.cdk_amount, + send.cdk_options, + send.proofs_to_swap, + send.proofs_to_send, + send.cdk_swap_fee, + send.cdk_send_fee, + send_memo, + ) + .await? + .to_string(); + self.update_balance_streams().await; + Ok(Token::from_str(&token)?) + } + + pub async fn cancel_send(&self, send: PreparedSend) -> Result<(), Error> { + self.inner + .cancel_send( + send.operation_id, + send.proofs_to_swap, + send.proofs_to_send, + ) + .await?; + Ok(()) + } + + // === Lightning Deposit (NUT-04) === + + pub async fn mint( + &self, + amount: u64, + description: Option, + sink: StreamSink, + ) -> Result<(), Error> { + let mint_url = self.mint_url()?; + let unit = self.unit(); + let quote = self + .inner + .mint_quote(PaymentMethod::BOLT11, Some(amount.into()), description, None) + .await?; + let _ = sink.add(MintQuote::from(quote.clone())); + + let _self = self.clone(); + flutter_rust_bridge::spawn(async move { + loop { + sleep(Duration::from_secs(3)).await; + info!("Checking mint quote state for {}", quote.id); + match _self.inner.check_mint_quote_status("e.id).await { + Ok(state_res) => match state_res.state { + CdkMintQuoteState::Unpaid => { + if state_res.expiry < unix_time() { + let _ = sink.add(MintQuote { + id: quote.id, + request: quote.request, + amount: quote.amount.map(|a| a.into()), + expiry: Some(state_res.expiry), + state: MintQuoteState::Error, + token: None, + error: Some("Quote expired".to_string()), + }); + break; + } + continue; + } + CdkMintQuoteState::Issued => { + break; + } + CdkMintQuoteState::Paid => { + let _ = sink.add(MintQuote { + id: quote.id.clone(), + request: quote.request.clone(), + amount: quote.amount.map(|a| a.into()), + expiry: Some(quote.expiry), + state: CdkMintQuoteState::Paid.into(), + token: None, + error: None, + }); + match _self + .inner + .mint("e.id, SplitTarget::None, None) + .await + { + Ok(mint_proofs) => { + let mint_amount = + mint_proofs.total_amount().unwrap_or_default(); + let _ = sink.add(MintQuote { + id: quote.id, + request: quote.request, + amount: Some(mint_amount.into()), + expiry: Some(quote.expiry), + state: CdkMintQuoteState::Issued.into(), + token: Token::try_from(CdkToken::new( + mint_url, + mint_proofs, + None, + unit, + )) + .ok(), + error: None, + }); + _self.update_balance_streams().await; + break; + } + Err(e) => { + let _ = sink.add(MintQuote { + id: quote.id, + request: quote.request, + amount: quote.amount.map(|a| a.into()), + expiry: Some(quote.expiry), + state: MintQuoteState::Error, + token: None, + error: Some(e.to_string()), + }); + break; + } + } + } + }, + Err(e) => { + let _ = sink.add(MintQuote { + id: quote.id, + request: quote.request, + amount: quote.amount.map(|a| a.into()), + expiry: Some(quote.expiry), + state: MintQuoteState::Error, + token: None, + error: Some(e.to_string()), + }); + break; + } + } + } + }); + Ok(()) + } + + pub async fn check_all_mint_quotes(&self) -> Result<(), Error> { + let minted = self.inner.mint_unissued_quotes().await?; + if minted > Amount::ZERO { + self.update_balance_streams().await; + } + Ok(()) + } + + // === Lightning Withdrawal (NUT-05) === + + pub async fn melt_quote(&self, request: String) -> Result { + Ok(self + .inner + .melt_quote(PaymentMethod::BOLT11, request, None, None) + .await? + .into()) + } + + pub async fn melt(&self, quote: MeltQuote) -> Result { + let melted = self + .inner + .prepare_melt("e.id, HashMap::new()) + .await? + .confirm() + .await?; + self.update_balance_streams().await; + Ok(melted.total_amount().into()) + } + + // === Transactions === + + pub async fn list_transactions( + &self, + direction: Option, + ) -> Result, Error> { + let pending_ys = self + .inner + .get_pending_spent_proofs() + .await? + .into_iter() + .map(|p| p.y()) + .collect::, _>>()?; + + let cdk_txs = self + .inner + .list_transactions(direction.map(|d| d.into())) + .await?; + + let mut txs = Vec::new(); + for tx in cdk_txs { + let status = if pending_ys.iter().any(|y| tx.ys.contains(y)) { + TransactionStatus::Pending + } else { + TransactionStatus::Settled + }; + let mut transaction: Transaction = tx.into(); + transaction.status = status; + txs.push(transaction); + } + Ok(txs) + } + + pub async fn check_pending_transactions(&self) -> Result<(), Error> { + self.inner.check_all_pending_proofs().await?; + self.update_balance_streams().await; + Ok(()) + } + + // === Recovery === + + pub async fn restore(&self) -> Result<(), Error> { + self.inner.restore().await?; + self.update_balance_streams().await; + Ok(()) + } + + pub async fn recover_incomplete_sagas(&self) -> Result<(), Error> { + self.inner.recover_incomplete_sagas().await?; + self.update_balance_streams().await; + Ok(()) + } + + pub async fn finalize_pending_melts(&self) -> Result<(), Error> { + self.inner.finalize_pending_melts().await?; + self.update_balance_streams().await; + Ok(()) + } + + // === Utility === + + pub async fn is_token_spent(&self, token: Token) -> Result { + let token: CdkToken = token.try_into()?; + let mint_keysets = self.inner.get_mint_keysets().await?; + let proof_states = self + .inner + .check_proofs_spent(token.proofs(&mint_keysets)?) + .await?; + Ok(proof_states + .iter() + .any(|state| state.state == ProofState::Spent)) + } + + pub async fn get_mint(&self) -> Result, Error> { + Ok(self.inner.fetch_mint_info().await?.map(|info| info.into())) + } + + // === Internal helpers === + + fn mint_url(&self) -> Result { + Ok(MintUrl::from_str(&self.mint_url)?) + } + + fn unit(&self) -> CurrencyUnit { + CurrencyUnit::from_str(&self.unit).unwrap_or(CurrencyUnit::Custom(self.unit.clone())) + } + + async fn update_balance_streams(&self) { + let balance = self + .inner + .total_balance() + .await + .unwrap_or(Amount::ZERO) + .into(); + let _ = self.balance_broadcast.send(balance); + } +} + +// ======================================================================== +// Types +// ======================================================================== + +pub struct MintQuote { + pub id: String, + pub request: String, + pub amount: Option, + pub expiry: Option, + pub state: MintQuoteState, + pub token: Option, + pub error: Option, +} + +impl From for MintQuote { + fn from(quote: CdkMintQuote) -> Self { + Self { + id: quote.id, + request: quote.request, + amount: quote.amount.map(|a| a.into()), + expiry: Some(quote.expiry), + state: quote.state.into(), + token: None, + error: None, + } + } +} + +pub enum MintQuoteState { + Unpaid, + Paid, + Issued, + Error, +} + +impl From for MintQuoteState { + fn from(state: CdkMintQuoteState) -> Self { + match state { + CdkMintQuoteState::Unpaid => Self::Unpaid, + CdkMintQuoteState::Paid => Self::Paid, + CdkMintQuoteState::Issued => Self::Issued, + } + } +} + +pub struct MeltQuote { + pub id: String, + pub request: String, + pub amount: u64, + pub fee_reserve: u64, + pub expiry: u64, +} + +impl From for MeltQuote { + fn from(quote: CdkMeltQuote) -> Self { + Self { + id: quote.id, + request: quote.request, + amount: quote.amount.into(), + fee_reserve: quote.fee_reserve.into(), + expiry: quote.expiry, + } + } +} + +pub struct PreparedSend { + pub amount: u64, + pub swap_fee: u64, + pub send_fee: u64, + pub fee: u64, + + operation_id: Uuid, + cdk_amount: Amount, + cdk_options: CdkSendOptions, + proofs_to_swap: cdk::nuts::Proofs, + proofs_to_send: cdk::nuts::Proofs, + cdk_swap_fee: Amount, + cdk_send_fee: Amount, +} + +impl<'a> From> for PreparedSend { + fn from(ps: CdkPreparedSend<'a>) -> Self { + let amount = ps.amount(); + let swap_fee = ps.swap_fee(); + let send_fee = ps.send_fee(); + let fee = ps.fee(); + Self { + amount: amount.into(), + swap_fee: swap_fee.into(), + send_fee: send_fee.into(), + fee: fee.into(), + operation_id: ps.operation_id(), + cdk_amount: amount, + cdk_options: ps.options().clone(), + proofs_to_swap: ps.proofs_to_swap().to_vec(), + proofs_to_send: ps.proofs_to_send().to_vec(), + cdk_swap_fee: swap_fee, + cdk_send_fee: send_fee, + } + } +} + +#[derive(Default)] +pub struct ReceiveOptions { + pub signing_keys: Option>, + pub preimages: Option>, +} + +impl TryInto for ReceiveOptions { + type Error = Error; + + fn try_into(self) -> Result { + let p2pk_signing_keys = self + .signing_keys + .unwrap_or_default() + .into_iter() + .map(|s| SecretKey::from_str(&s)) + .collect::, _>>()?; + Ok(CdkReceiveOptions { + p2pk_signing_keys, + preimages: self.preimages.unwrap_or_default(), + ..Default::default() + }) + } +} + +#[derive(Default)] +pub struct SendOptions { + pub pubkey: Option, + pub include_fee: Option, +} + +impl TryInto for SendOptions { + type Error = Error; + + fn try_into(self) -> Result { + let pubkey = self.pubkey.map(|s| PublicKey::from_str(&s)).transpose()?; + Ok(CdkSendOptions { + conditions: pubkey.map(|pubkey| SpendingConditions::new_p2pk(pubkey, None)), + include_fee: self.include_fee.unwrap_or_default(), + ..Default::default() + }) + } +} + +#[derive(PartialEq, Eq)] +pub struct Transaction { + pub id: String, + pub mint_url: String, + pub direction: TransactionDirection, + pub amount: u64, + pub fee: u64, + pub unit: String, + pub ys: Vec, + pub timestamp: u64, + pub memo: Option, + pub metadata: HashMap, + pub status: TransactionStatus, +} + +impl From for Transaction { + fn from(tx: CdkTransaction) -> Self { + Self { + id: tx.id().to_string(), + mint_url: tx.mint_url.to_string(), + direction: tx.direction.into(), + amount: tx.amount.into(), + fee: tx.fee.into(), + unit: tx.unit.to_string(), + ys: tx.ys.iter().map(|y| y.to_string()).collect(), + timestamp: tx.timestamp, + memo: tx.memo, + metadata: tx.metadata, + status: TransactionStatus::Settled, + } + } +} + +impl PartialOrd for Transaction { + fn partial_cmp(&self, other: &Self) -> Option { + Some(self.cmp(other)) + } +} + +impl Ord for Transaction { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + self.timestamp.cmp(&other.timestamp).reverse() + } +} + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub enum TransactionDirection { + Incoming, + Outgoing, +} + +impl From for TransactionDirection { + fn from(direction: CdkTransactionDirection) -> Self { + match direction { + CdkTransactionDirection::Incoming => Self::Incoming, + CdkTransactionDirection::Outgoing => Self::Outgoing, + } + } +} + +impl Into for TransactionDirection { + fn into(self) -> CdkTransactionDirection { + match self { + Self::Incoming => CdkTransactionDirection::Incoming, + Self::Outgoing => CdkTransactionDirection::Outgoing, + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum TransactionStatus { + Pending, + Settled, +} + +// ======================================================================== +// WalletDatabase +// ======================================================================== + +#[derive(Clone)] +pub struct WalletDatabase { + pub path: String, + inner: Arc, +} + +impl WalletDatabase { + pub async fn new_instance(path: String) -> Result { + let inner = WalletSqliteDatabase::new(path.as_str()).await?; + Ok(Self { + inner: Arc::new(inner), + path, + }) + } + + pub async fn remove_mint(&self, mint_url: &str) -> Result<(), Error> { + let mint_url = MintUrl::from_str(mint_url)?; + self.inner.remove_mint(mint_url).await?; + Ok(()) + } +} diff --git a/rust/src/frb_generated.rs b/rust/src/frb_generated.rs index fad0e21..87172db 100644 --- a/rust/src/frb_generated.rs +++ b/rust/src/frb_generated.rs @@ -25,6 +25,8 @@ // Section: imports +use crate::api::token::*; +use crate::api::wallet::*; use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt}; use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; use flutter_rust_bridge::{Handler, IntoIntoDart}; @@ -37,14 +39,2566 @@ flutter_rust_bridge::frb_generated_boilerplate!( default_rust_auto_opaque = RustAutoOpaqueMoi, ); pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.11.1"; -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -291292710; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -625377011; // Section: executor flutter_rust_bridge::frb_generated_default_handler!(); +// Section: wire_funcs + +fn wire__crate__api__wallet__PreparedSend_auto_accessor_get_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: "PreparedSend_auto_accessor_get_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( + &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.amount.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__PreparedSend_auto_accessor_get_fee_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: "PreparedSend_auto_accessor_get_fee", + 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.fee.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__PreparedSend_auto_accessor_get_send_fee_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: "PreparedSend_auto_accessor_get_send_fee", + 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.send_fee.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__PreparedSend_auto_accessor_get_swap_fee_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: "PreparedSend_auto_accessor_get_swap_fee", + 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.swap_fee.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__PreparedSend_auto_accessor_set_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: "PreparedSend_auto_accessor_set_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_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.amount = api_amount; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__PreparedSend_auto_accessor_set_fee_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: "PreparedSend_auto_accessor_set_fee", + 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 = ::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 = api_fee; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__PreparedSend_auto_accessor_set_send_fee_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: "PreparedSend_auto_accessor_set_send_fee", + 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_send_fee = ::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.send_fee = api_send_fee; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__PreparedSend_auto_accessor_set_swap_fee_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: "PreparedSend_auto_accessor_set_swap_fee", + 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_swap_fee = ::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.swap_fee = api_swap_fee; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__token__TokenDecoder_is_complete_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: "TokenDecoder_is_complete", + 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::api::token::TokenDecoder::is_complete( + &*api_that_guard, + ))?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__token__TokenDecoder_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: "TokenDecoder_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::api::token::TokenDecoder::new())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__token__TokenDecoder_receive_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: "TokenDecoder_receive", + 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_input = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, crate::api::error::Error>((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 = + crate::api::token::TokenDecoder::receive(&*api_that_guard, api_input)?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__token__TokenDecoder_value_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: "TokenDecoder_value", + 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::<_, crate::api::error::Error>((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 = crate::api::token::TokenDecoder::value(&*api_that_guard)?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__WalletDatabase_auto_accessor_get_path_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: "WalletDatabase_auto_accessor_get_path", + 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.path.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__WalletDatabase_auto_accessor_set_path_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: "WalletDatabase_auto_accessor_set_path", + 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_path = ::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.path = api_path; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__WalletDatabase_new_instance_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: "WalletDatabase_new_instance", + 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_path = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::Error>( + (move || async move { + let output_ok = + crate::api::wallet::WalletDatabase::new_instance(api_path).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__WalletDatabase_remove_mint_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: "WalletDatabase_remove_mint", + 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_mint_url = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::WalletDatabase::remove_mint( + &*api_that_guard, + &api_mint_url, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_auto_accessor_get_mint_url_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: "Wallet_auto_accessor_get_mint_url", + 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.mint_url.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__Wallet_auto_accessor_get_unit_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: "Wallet_auto_accessor_get_unit", + 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.unit.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__Wallet_auto_accessor_set_mint_url_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: "Wallet_auto_accessor_set_mint_url", + 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_mint_url = ::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.mint_url = api_mint_url; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__Wallet_auto_accessor_set_unit_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: "Wallet_auto_accessor_set_unit", + 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_unit = ::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.unit = api_unit; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__Wallet_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: "Wallet_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_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::balance(&*api_that_guard).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_cancel_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: "Wallet_cancel_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_that = , + >>::sse_decode(&mut deserializer); + let api_send = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::cancel_send(&*api_that_guard, api_send) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_check_all_mint_quotes_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: "Wallet_check_all_mint_quotes", + 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::<_, crate::api::error::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::api::wallet::Wallet::check_all_mint_quotes(&*api_that_guard) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_check_pending_transactions_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: "Wallet_check_pending_transactions", + 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::<_, crate::api::error::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::api::wallet::Wallet::check_pending_transactions( + &*api_that_guard, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_finalize_pending_melts_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: "Wallet_finalize_pending_melts", + 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::<_, crate::api::error::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::api::wallet::Wallet::finalize_pending_melts(&*api_that_guard) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_get_mint_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: "Wallet_get_mint", + 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::<_, crate::api::error::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::api::wallet::Wallet::get_mint(&*api_that_guard).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_is_token_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: "Wallet_is_token_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_that = , + >>::sse_decode(&mut deserializer); + let api_token = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::is_token_spent(&*api_that_guard, api_token) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_list_transactions_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: "Wallet_list_transactions", + 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_direction = + >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::list_transactions( + &*api_that_guard, + api_direction, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_melt_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: "Wallet_melt", + 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_quote = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::melt(&*api_that_guard, api_quote).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_melt_quote_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: "Wallet_melt_quote", + 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_request = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::melt_quote(&*api_that_guard, api_request) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_mint_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: "Wallet_mint", + 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_amount = ::sse_decode(&mut deserializer); + let api_description = >::sse_decode(&mut deserializer); + let api_sink = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::mint( + &*api_that_guard, + api_amount, + api_description, + api_sink, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_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: "Wallet_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); + let api_mint_url = ::sse_decode(&mut deserializer); + let api_unit = ::sse_decode(&mut deserializer); + let api_mnemonic = ::sse_decode(&mut deserializer); + let api_target_proof_count = >::sse_decode(&mut deserializer); + let api_db = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, crate::api::error::Error>((move || { + let mut api_db_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_db, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_db_guard = Some(api_db.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_db_guard = api_db_guard.unwrap(); + let output_ok = crate::api::wallet::Wallet::new( + api_mint_url, + api_unit, + api_mnemonic, + api_target_proof_count, + &*api_db_guard, + )?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__wallet__Wallet_prepare_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: "Wallet_prepare_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_that = , + >>::sse_decode(&mut deserializer); + let api_amount = ::sse_decode(&mut deserializer); + let api_opts = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::prepare_send( + &*api_that_guard, + api_amount, + api_opts, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_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: "Wallet_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_that = , + >>::sse_decode(&mut deserializer); + let api_token = ::sse_decode(&mut deserializer); + let api_opts = + >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::receive( + &*api_that_guard, + api_token, + api_opts, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_recover_incomplete_sagas_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: "Wallet_recover_incomplete_sagas", + 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::<_, crate::api::error::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::api::wallet::Wallet::recover_incomplete_sagas(&*api_that_guard) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_restore_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: "Wallet_restore", + 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::<_, crate::api::error::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::api::wallet::Wallet::restore(&*api_that_guard).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_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: "Wallet_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_that = , + >>::sse_decode(&mut deserializer); + let api_send = ::sse_decode(&mut deserializer); + let api_memo = >::sse_decode(&mut deserializer); + let api_include_memo = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::send( + &*api_that_guard, + api_send, + api_memo, + api_include_memo, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__Wallet_stream_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: "Wallet_stream_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_that = , + >>::sse_decode(&mut deserializer); + let api_sink = + >::sse_decode( + &mut deserializer, + ); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::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::api::wallet::Wallet::stream_balance(&*api_that_guard, api_sink) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__token__encode_qr_token_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: "encode_qr_token", + 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_token = ::sse_decode(&mut deserializer); + let api_max_fragment_length = >::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, crate::api::error::Error>((move || { + let output_ok = + crate::api::token::encode_qr_token(&api_token, api_max_fragment_length)?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__mint_info__fetch_keysets_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_keysets", + 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_mint_url = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::Error>( + (move || async move { + let output_ok = crate::api::mint_info::fetch_keysets(&api_mint_url).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__keys__generate_mnemonic_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: "generate_mnemonic", + 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::api::keys::generate_mnemonic())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__mint_info__get_mint_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: "get_mint_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_mint_url = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::Error>( + (move || async move { + let output_ok = crate::api::mint_info::get_mint_info(&api_mint_url).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__keys__get_pub_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: "get_pub_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_secret = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, crate::api::error::Error>((move || { + let output_ok = crate::api::keys::get_pub_key(api_secret)?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__keys__mnemonic_to_seed_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: "mnemonic_to_seed", + 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_mnemonic = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, crate::api::error::Error>((move || { + let output_ok = crate::api::keys::mnemonic_to_seed(api_mnemonic)?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__mint_info__ping_mint_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: "ping_mint", + 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_mint_url = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, crate::api::error::Error>( + (move || async move { + let output_ok = crate::api::mint_info::ping_mint(&api_mint_url).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__wallet__receive_options_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: "receive_options_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::api::wallet::ReceiveOptions::default())?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__wallet__send_options_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: "send_options_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::api::wallet::SendOptions::default())?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__token__token_from_raw_bytes_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: "token_from_raw_bytes", + 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_raw = >::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, crate::api::error::Error>((move || { + let output_ok = crate::api::token::Token::from_raw_bytes(api_raw)?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__token__token_parse_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: "token_parse", + 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_encoded = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, crate::api::error::Error>((move || { + let output_ok = crate::api::token::Token::parse(&api_encoded)?; + Ok(output_ok) + })()) + }, + ) +} + +// Section: related_funcs + +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 +); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); + // Section: dart2rust +impl SseDecode for flutter_rust_bridge::for_generated::anyhow::Error { + // 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::anyhow::anyhow!("{}", inner); + } +} + +impl SseDecode for PreparedSend { + // 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 TokenDecoder { + // 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 Wallet { + // 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 WalletDatabase { + // 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 std::collections::HashMap { + // 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 inner.into_iter().collect(); + } +} + +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> +{ + // 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> { + // 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> +{ + // 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 StreamSink +{ + // 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 StreamSink::deserialize(inner); + } +} + +impl SseDecode for StreamSink { + // 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 StreamSink::deserialize(inner); + } +} + +impl SseDecode for String { + // 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 String::from_utf8(inner).unwrap(); + } +} + +impl SseDecode for bool { + // 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_u8().unwrap() != 0 + } +} + +impl SseDecode for crate::api::mint_info::ContactInfo { + // 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_method = ::sse_decode(deserializer); + let mut var_info = ::sse_decode(deserializer); + return crate::api::mint_info::ContactInfo { + method: var_method, + info: var_info, + }; + } +} + +impl SseDecode for crate::api::error::Error { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut tag_ = ::sse_decode(deserializer); + match tag_ { + 0 => { + let mut var_field0 = ::sse_decode(deserializer); + return crate::api::error::Error::Cdk(var_field0); + } + 1 => { + let mut var_field0 = ::sse_decode(deserializer); + return crate::api::error::Error::Database(var_field0); + } + 2 => { + return crate::api::error::Error::InvalidInput; + } + 3 => { + let mut var_field0 = ::sse_decode(deserializer); + return crate::api::error::Error::Network(var_field0); + } + 4 => { + let mut var_field0 = ::sse_decode(deserializer); + return crate::api::error::Error::Ur(var_field0); + } + _ => { + unimplemented!(""); + } + } + } +} + 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 { @@ -52,10 +2606,599 @@ impl SseDecode for i32 { } } -impl SseDecode for bool { +impl SseDecode for crate::api::mint_info::KeysetInfo { // 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_u8().unwrap() != 0 + let mut var_id = ::sse_decode(deserializer); + let mut var_unit = ::sse_decode(deserializer); + let mut var_active = ::sse_decode(deserializer); + return crate::api::mint_info::KeysetInfo { + id: var_id, + unit: var_unit, + active: var_active, + }; + } +} + +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 { + 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 { + 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<(String, String)> { + // 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(<(String, String)>::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 crate::api::mint_info::MeltMethodSettings { + // 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_method = ::sse_decode(deserializer); + let mut var_unit = ::sse_decode(deserializer); + let mut var_minAmount = >::sse_decode(deserializer); + let mut var_maxAmount = >::sse_decode(deserializer); + return crate::api::mint_info::MeltMethodSettings { + method: var_method, + unit: var_unit, + min_amount: var_minAmount, + max_amount: var_maxAmount, + }; + } +} + +impl SseDecode for crate::api::wallet::MeltQuote { + // 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_id = ::sse_decode(deserializer); + let mut var_request = ::sse_decode(deserializer); + let mut var_amount = ::sse_decode(deserializer); + let mut var_feeReserve = ::sse_decode(deserializer); + let mut var_expiry = ::sse_decode(deserializer); + return crate::api::wallet::MeltQuote { + id: var_id, + request: var_request, + amount: var_amount, + fee_reserve: var_feeReserve, + expiry: var_expiry, + }; + } +} + +impl SseDecode for crate::api::mint_info::MintInfo { + // 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_name = >::sse_decode(deserializer); + let mut var_pubkey = >::sse_decode(deserializer); + let mut var_version = + >::sse_decode(deserializer); + let mut var_description = >::sse_decode(deserializer); + let mut var_descriptionLong = >::sse_decode(deserializer); + let mut var_contact = + >>::sse_decode(deserializer); + let mut var_nuts = ::sse_decode(deserializer); + let mut var_iconUrl = >::sse_decode(deserializer); + let mut var_urls = >>::sse_decode(deserializer); + let mut var_motd = >::sse_decode(deserializer); + let mut var_time = >::sse_decode(deserializer); + let mut var_tosUrl = >::sse_decode(deserializer); + return crate::api::mint_info::MintInfo { + name: var_name, + pubkey: var_pubkey, + version: var_version, + description: var_description, + description_long: var_descriptionLong, + contact: var_contact, + nuts: var_nuts, + icon_url: var_iconUrl, + urls: var_urls, + motd: var_motd, + time: var_time, + tos_url: var_tosUrl, + }; + } +} + +impl SseDecode for crate::api::mint_info::MintMethodSettings { + // 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_method = ::sse_decode(deserializer); + let mut var_unit = ::sse_decode(deserializer); + let mut var_minAmount = >::sse_decode(deserializer); + let mut var_maxAmount = >::sse_decode(deserializer); + return crate::api::mint_info::MintMethodSettings { + method: var_method, + unit: var_unit, + min_amount: var_minAmount, + max_amount: var_maxAmount, + }; + } +} + +impl SseDecode for crate::api::wallet::MintQuote { + // 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_id = ::sse_decode(deserializer); + let mut var_request = ::sse_decode(deserializer); + let mut var_amount = >::sse_decode(deserializer); + let mut var_expiry = >::sse_decode(deserializer); + let mut var_state = ::sse_decode(deserializer); + let mut var_token = >::sse_decode(deserializer); + let mut var_error = >::sse_decode(deserializer); + return crate::api::wallet::MintQuote { + id: var_id, + request: var_request, + amount: var_amount, + expiry: var_expiry, + state: var_state, + token: var_token, + error: var_error, + }; + } +} + +impl SseDecode for crate::api::wallet::MintQuoteState { + // 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::api::wallet::MintQuoteState::Unpaid, + 1 => crate::api::wallet::MintQuoteState::Paid, + 2 => crate::api::wallet::MintQuoteState::Issued, + 3 => crate::api::wallet::MintQuoteState::Error, + _ => unreachable!("Invalid variant for MintQuoteState: {}", inner), + }; + } +} + +impl SseDecode for crate::api::mint_info::MintVersion { + // 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_name = ::sse_decode(deserializer); + let mut var_version = ::sse_decode(deserializer); + return crate::api::mint_info::MintVersion { + name: var_name, + version: var_version, + }; + } +} + +impl SseDecode for crate::api::mint_info::Nut04Settings { + // 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_methods = + >::sse_decode(deserializer); + let mut var_disabled = ::sse_decode(deserializer); + return crate::api::mint_info::Nut04Settings { + methods: var_methods, + disabled: var_disabled, + }; + } +} + +impl SseDecode for crate::api::mint_info::Nut05Settings { + // 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_methods = + >::sse_decode(deserializer); + let mut var_disabled = ::sse_decode(deserializer); + return crate::api::mint_info::Nut05Settings { + methods: var_methods, + disabled: var_disabled, + }; + } +} + +impl SseDecode for crate::api::mint_info::Nuts { + // 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_nut04 = ::sse_decode(deserializer); + let mut var_nut05 = ::sse_decode(deserializer); + let mut var_nut07 = ::sse_decode(deserializer); + let mut var_nut08 = ::sse_decode(deserializer); + let mut var_nut09 = ::sse_decode(deserializer); + let mut var_nut10 = ::sse_decode(deserializer); + let mut var_nut11 = ::sse_decode(deserializer); + let mut var_nut12 = ::sse_decode(deserializer); + let mut var_nut14 = ::sse_decode(deserializer); + let mut var_nut20 = ::sse_decode(deserializer); + return crate::api::mint_info::Nuts { + nut04: var_nut04, + nut05: var_nut05, + nut07: var_nut07, + nut08: var_nut08, + nut09: var_nut09, + nut10: var_nut10, + nut11: var_nut11, + nut12: var_nut12, + nut14: var_nut14, + nut20: var_nut20, + }; + } +} + +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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + 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 { + if (::sse_decode(deserializer)) { + return Some(>::sse_decode(deserializer)); + } else { + return None; + } + } +} + +impl SseDecode for crate::api::wallet::ReceiveOptions { + // 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_signingKeys = >>::sse_decode(deserializer); + let mut var_preimages = >>::sse_decode(deserializer); + return crate::api::wallet::ReceiveOptions { + signing_keys: var_signingKeys, + preimages: var_preimages, + }; + } +} + +impl SseDecode for (String, String) { + // 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); + return (var_field0, var_field1); + } +} + +impl SseDecode for crate::api::wallet::SendOptions { + // 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_pubkey = >::sse_decode(deserializer); + let mut var_includeFee = >::sse_decode(deserializer); + return crate::api::wallet::SendOptions { + pubkey: var_pubkey, + include_fee: var_includeFee, + }; + } +} + +impl SseDecode for crate::api::mint_info::SupportedSettings { + // 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_supported = ::sse_decode(deserializer); + return crate::api::mint_info::SupportedSettings { + supported: var_supported, + }; + } +} + +impl SseDecode for crate::api::token::Token { + // 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_encoded = ::sse_decode(deserializer); + let mut var_raw = >>::sse_decode(deserializer); + let mut var_amount = ::sse_decode(deserializer); + let mut var_mintUrl = ::sse_decode(deserializer); + return crate::api::token::Token { + encoded: var_encoded, + raw: var_raw, + amount: var_amount, + mint_url: var_mintUrl, + }; + } +} + +impl SseDecode for crate::api::wallet::Transaction { + // 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_id = ::sse_decode(deserializer); + let mut var_mintUrl = ::sse_decode(deserializer); + let mut var_direction = + ::sse_decode(deserializer); + let mut var_amount = ::sse_decode(deserializer); + let mut var_fee = ::sse_decode(deserializer); + let mut var_unit = ::sse_decode(deserializer); + let mut var_ys = >::sse_decode(deserializer); + let mut var_timestamp = ::sse_decode(deserializer); + let mut var_memo = >::sse_decode(deserializer); + let mut var_metadata = + >::sse_decode(deserializer); + let mut var_status = ::sse_decode(deserializer); + return crate::api::wallet::Transaction { + id: var_id, + mint_url: var_mintUrl, + direction: var_direction, + amount: var_amount, + fee: var_fee, + unit: var_unit, + ys: var_ys, + timestamp: var_timestamp, + memo: var_memo, + metadata: var_metadata, + status: var_status, + }; + } +} + +impl SseDecode for crate::api::wallet::TransactionDirection { + // 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::api::wallet::TransactionDirection::Incoming, + 1 => crate::api::wallet::TransactionDirection::Outgoing, + _ => unreachable!("Invalid variant for TransactionDirection: {}", inner), + }; + } +} + +impl SseDecode for crate::api::wallet::TransactionStatus { + // 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::api::wallet::TransactionStatus::Pending, + 1 => crate::api::wallet::TransactionStatus::Settled, + _ => unreachable!("Invalid variant for TransactionStatus: {}", inner), + }; + } +} + +impl SseDecode for u64 { + // 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_u64::().unwrap() + } +} + +impl SseDecode for u8 { + // 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_u8().unwrap() + } +} + +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 {} +} + +impl SseDecode for usize { + // 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_u64::().unwrap() as _ } } @@ -68,6 +3211,76 @@ fn pde_ffi_dispatcher_primary_impl( ) { // Codec=Pde (Serialization + dispatch), see doc to use other codecs match func_id { + 15 => wire__crate__api__wallet__WalletDatabase_new_instance_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 16 => wire__crate__api__wallet__WalletDatabase_remove_mint_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 21 => wire__crate__api__wallet__Wallet_balance_impl(port, ptr, rust_vec_len, data_len), + 22 => wire__crate__api__wallet__Wallet_cancel_send_impl(port, ptr, rust_vec_len, data_len), + 23 => wire__crate__api__wallet__Wallet_check_all_mint_quotes_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 24 => wire__crate__api__wallet__Wallet_check_pending_transactions_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 25 => wire__crate__api__wallet__Wallet_finalize_pending_melts_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 26 => wire__crate__api__wallet__Wallet_get_mint_impl(port, ptr, rust_vec_len, data_len), + 27 => { + wire__crate__api__wallet__Wallet_is_token_spent_impl(port, ptr, rust_vec_len, data_len) + } + 28 => wire__crate__api__wallet__Wallet_list_transactions_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 29 => wire__crate__api__wallet__Wallet_melt_impl(port, ptr, rust_vec_len, data_len), + 30 => wire__crate__api__wallet__Wallet_melt_quote_impl(port, ptr, rust_vec_len, data_len), + 31 => wire__crate__api__wallet__Wallet_mint_impl(port, ptr, rust_vec_len, data_len), + 33 => wire__crate__api__wallet__Wallet_prepare_send_impl(port, ptr, rust_vec_len, data_len), + 34 => wire__crate__api__wallet__Wallet_receive_impl(port, ptr, rust_vec_len, data_len), + 35 => wire__crate__api__wallet__Wallet_recover_incomplete_sagas_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 36 => wire__crate__api__wallet__Wallet_restore_impl(port, ptr, rust_vec_len, data_len), + 37 => wire__crate__api__wallet__Wallet_send_impl(port, ptr, rust_vec_len, data_len), + 38 => { + wire__crate__api__wallet__Wallet_stream_balance_impl(port, ptr, rust_vec_len, data_len) + } + 40 => wire__crate__api__mint_info__fetch_keysets_impl(port, ptr, rust_vec_len, data_len), + 42 => wire__crate__api__mint_info__get_mint_info_impl(port, ptr, rust_vec_len, data_len), + 45 => wire__crate__api__mint_info__ping_mint_impl(port, ptr, rust_vec_len, data_len), + 46 => wire__crate__api__wallet__receive_options_default_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 47 => { + wire__crate__api__wallet__send_options_default_impl(port, ptr, rust_vec_len, data_len) + } _ => unreachable!(), } } @@ -80,12 +3293,760 @@ fn pde_ffi_dispatcher_sync_impl( ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { // Codec=Pde (Serialization + dispatch), see doc to use other codecs match func_id { + 1 => wire__crate__api__wallet__PreparedSend_auto_accessor_get_amount_impl( + ptr, + rust_vec_len, + data_len, + ), + 2 => wire__crate__api__wallet__PreparedSend_auto_accessor_get_fee_impl( + ptr, + rust_vec_len, + data_len, + ), + 3 => wire__crate__api__wallet__PreparedSend_auto_accessor_get_send_fee_impl( + ptr, + rust_vec_len, + data_len, + ), + 4 => wire__crate__api__wallet__PreparedSend_auto_accessor_get_swap_fee_impl( + ptr, + rust_vec_len, + data_len, + ), + 5 => wire__crate__api__wallet__PreparedSend_auto_accessor_set_amount_impl( + ptr, + rust_vec_len, + data_len, + ), + 6 => wire__crate__api__wallet__PreparedSend_auto_accessor_set_fee_impl( + ptr, + rust_vec_len, + data_len, + ), + 7 => wire__crate__api__wallet__PreparedSend_auto_accessor_set_send_fee_impl( + ptr, + rust_vec_len, + data_len, + ), + 8 => wire__crate__api__wallet__PreparedSend_auto_accessor_set_swap_fee_impl( + ptr, + rust_vec_len, + data_len, + ), + 9 => wire__crate__api__token__TokenDecoder_is_complete_impl(ptr, rust_vec_len, data_len), + 10 => wire__crate__api__token__TokenDecoder_new_impl(ptr, rust_vec_len, data_len), + 11 => wire__crate__api__token__TokenDecoder_receive_impl(ptr, rust_vec_len, data_len), + 12 => wire__crate__api__token__TokenDecoder_value_impl(ptr, rust_vec_len, data_len), + 13 => wire__crate__api__wallet__WalletDatabase_auto_accessor_get_path_impl( + ptr, + rust_vec_len, + data_len, + ), + 14 => wire__crate__api__wallet__WalletDatabase_auto_accessor_set_path_impl( + ptr, + rust_vec_len, + data_len, + ), + 17 => wire__crate__api__wallet__Wallet_auto_accessor_get_mint_url_impl( + ptr, + rust_vec_len, + data_len, + ), + 18 => wire__crate__api__wallet__Wallet_auto_accessor_get_unit_impl( + ptr, + rust_vec_len, + data_len, + ), + 19 => wire__crate__api__wallet__Wallet_auto_accessor_set_mint_url_impl( + ptr, + rust_vec_len, + data_len, + ), + 20 => wire__crate__api__wallet__Wallet_auto_accessor_set_unit_impl( + ptr, + rust_vec_len, + data_len, + ), + 32 => wire__crate__api__wallet__Wallet_new_impl(ptr, rust_vec_len, data_len), + 39 => wire__crate__api__token__encode_qr_token_impl(ptr, rust_vec_len, data_len), + 41 => wire__crate__api__keys__generate_mnemonic_impl(ptr, rust_vec_len, data_len), + 43 => wire__crate__api__keys__get_pub_key_impl(ptr, rust_vec_len, data_len), + 44 => wire__crate__api__keys__mnemonic_to_seed_impl(ptr, rust_vec_len, data_len), + 48 => wire__crate__api__token__token_from_raw_bytes_impl(ptr, rust_vec_len, data_len), + 49 => wire__crate__api__token__token_parse_impl(ptr, rust_vec_len, data_len), _ => unreachable!(), } } // Section: rust2dart +// 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 PreparedSend { + 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 { + 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 TokenDecoder { + 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 { + 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 Wallet { + 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 { + 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 WalletDatabase { + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} + +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::ContactInfo { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.method.into_into_dart().into_dart(), + self.info.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::mint_info::ContactInfo +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::ContactInfo +{ + fn into_into_dart(self) -> crate::api::mint_info::ContactInfo { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::error::Error { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + crate::api::error::Error::Cdk(field0) => { + [0.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } + crate::api::error::Error::Database(field0) => { + [1.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } + crate::api::error::Error::InvalidInput => [2.into_dart()].into_dart(), + crate::api::error::Error::Network(field0) => { + [3.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } + crate::api::error::Error::Ur(field0) => { + [4.into_dart(), field0.into_into_dart().into_dart()].into_dart() + } + _ => { + unimplemented!(""); + } + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::error::Error {} +impl flutter_rust_bridge::IntoIntoDart for crate::api::error::Error { + fn into_into_dart(self) -> crate::api::error::Error { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::KeysetInfo { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.id.into_into_dart().into_dart(), + self.unit.into_into_dart().into_dart(), + self.active.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::mint_info::KeysetInfo +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::KeysetInfo +{ + fn into_into_dart(self) -> crate::api::mint_info::KeysetInfo { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::MeltMethodSettings { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.method.into_into_dart().into_dart(), + self.unit.into_into_dart().into_dart(), + self.min_amount.into_into_dart().into_dart(), + self.max_amount.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::mint_info::MeltMethodSettings +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::MeltMethodSettings +{ + fn into_into_dart(self) -> crate::api::mint_info::MeltMethodSettings { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::wallet::MeltQuote { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.id.into_into_dart().into_dart(), + self.request.into_into_dart().into_dart(), + self.amount.into_into_dart().into_dart(), + self.fee_reserve.into_into_dart().into_dart(), + self.expiry.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::wallet::MeltQuote {} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::wallet::MeltQuote +{ + fn into_into_dart(self) -> crate::api::wallet::MeltQuote { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::MintInfo { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.name.into_into_dart().into_dart(), + self.pubkey.into_into_dart().into_dart(), + self.version.into_into_dart().into_dart(), + self.description.into_into_dart().into_dart(), + self.description_long.into_into_dart().into_dart(), + self.contact.into_into_dart().into_dart(), + self.nuts.into_into_dart().into_dart(), + self.icon_url.into_into_dart().into_dart(), + self.urls.into_into_dart().into_dart(), + self.motd.into_into_dart().into_dart(), + self.time.into_into_dart().into_dart(), + self.tos_url.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::mint_info::MintInfo +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::MintInfo +{ + fn into_into_dart(self) -> crate::api::mint_info::MintInfo { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::MintMethodSettings { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.method.into_into_dart().into_dart(), + self.unit.into_into_dart().into_dart(), + self.min_amount.into_into_dart().into_dart(), + self.max_amount.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::mint_info::MintMethodSettings +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::MintMethodSettings +{ + fn into_into_dart(self) -> crate::api::mint_info::MintMethodSettings { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::wallet::MintQuote { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.id.into_into_dart().into_dart(), + self.request.into_into_dart().into_dart(), + self.amount.into_into_dart().into_dart(), + self.expiry.into_into_dart().into_dart(), + self.state.into_into_dart().into_dart(), + self.token.into_into_dart().into_dart(), + self.error.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::wallet::MintQuote {} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::wallet::MintQuote +{ + fn into_into_dart(self) -> crate::api::wallet::MintQuote { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::wallet::MintQuoteState { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + Self::Unpaid => 0.into_dart(), + Self::Paid => 1.into_dart(), + Self::Issued => 2.into_dart(), + Self::Error => 3.into_dart(), + _ => unreachable!(), + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::wallet::MintQuoteState +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::wallet::MintQuoteState +{ + fn into_into_dart(self) -> crate::api::wallet::MintQuoteState { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::MintVersion { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + 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::api::mint_info::MintVersion +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::MintVersion +{ + fn into_into_dart(self) -> crate::api::mint_info::MintVersion { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::Nut04Settings { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.methods.into_into_dart().into_dart(), + self.disabled.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::mint_info::Nut04Settings +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::Nut04Settings +{ + fn into_into_dart(self) -> crate::api::mint_info::Nut04Settings { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::Nut05Settings { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.methods.into_into_dart().into_dart(), + self.disabled.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::mint_info::Nut05Settings +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::Nut05Settings +{ + fn into_into_dart(self) -> crate::api::mint_info::Nut05Settings { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::Nuts { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.nut04.into_into_dart().into_dart(), + self.nut05.into_into_dart().into_dart(), + self.nut07.into_into_dart().into_dart(), + self.nut08.into_into_dart().into_dart(), + self.nut09.into_into_dart().into_dart(), + self.nut10.into_into_dart().into_dart(), + self.nut11.into_into_dart().into_dart(), + self.nut12.into_into_dart().into_dart(), + self.nut14.into_into_dart().into_dart(), + self.nut20.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::mint_info::Nuts {} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::Nuts +{ + fn into_into_dart(self) -> crate::api::mint_info::Nuts { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::wallet::ReceiveOptions { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.signing_keys.into_into_dart().into_dart(), + self.preimages.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::wallet::ReceiveOptions +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::wallet::ReceiveOptions +{ + fn into_into_dart(self) -> crate::api::wallet::ReceiveOptions { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::wallet::SendOptions { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.pubkey.into_into_dart().into_dart(), + self.include_fee.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::wallet::SendOptions +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::wallet::SendOptions +{ + fn into_into_dart(self) -> crate::api::wallet::SendOptions { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::mint_info::SupportedSettings { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [self.supported.into_into_dart().into_dart()].into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::mint_info::SupportedSettings +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::mint_info::SupportedSettings +{ + fn into_into_dart(self) -> crate::api::mint_info::SupportedSettings { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::token::Token { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.encoded.into_into_dart().into_dart(), + self.raw.into_into_dart().into_dart(), + self.amount.into_into_dart().into_dart(), + self.mint_url.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::token::Token {} +impl flutter_rust_bridge::IntoIntoDart for crate::api::token::Token { + fn into_into_dart(self) -> crate::api::token::Token { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::wallet::Transaction { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.id.into_into_dart().into_dart(), + self.mint_url.into_into_dart().into_dart(), + self.direction.into_into_dart().into_dart(), + self.amount.into_into_dart().into_dart(), + self.fee.into_into_dart().into_dart(), + self.unit.into_into_dart().into_dart(), + self.ys.into_into_dart().into_dart(), + self.timestamp.into_into_dart().into_dart(), + self.memo.into_into_dart().into_dart(), + self.metadata.into_into_dart().into_dart(), + self.status.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::wallet::Transaction +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::wallet::Transaction +{ + fn into_into_dart(self) -> crate::api::wallet::Transaction { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::wallet::TransactionDirection { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + Self::Incoming => 0.into_dart(), + Self::Outgoing => 1.into_dart(), + _ => unreachable!(), + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::wallet::TransactionDirection +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::wallet::TransactionDirection +{ + fn into_into_dart(self) -> crate::api::wallet::TransactionDirection { + self + } +} +// Codec=Dco (DartCObject based), see doc to use other codecs +impl flutter_rust_bridge::IntoDart for crate::api::wallet::TransactionStatus { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self { + Self::Pending => 0.into_dart(), + Self::Settled => 1.into_dart(), + _ => unreachable!(), + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for crate::api::wallet::TransactionStatus +{ +} +impl flutter_rust_bridge::IntoIntoDart + for crate::api::wallet::TransactionStatus +{ + fn into_into_dart(self) -> crate::api::wallet::TransactionStatus { + self + } +} + +impl SseEncode for flutter_rust_bridge::for_generated::anyhow::Error { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(format!("{:?}", self), serializer); + } +} + +impl SseEncode for PreparedSend { + // 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 TokenDecoder { + // 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 Wallet { + // 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 WalletDatabase { + // 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 std::collections::HashMap { + // 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.into_iter().collect(), serializer); + } +} + +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> +{ + // 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> { + // 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> +{ + // 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 StreamSink +{ + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + unimplemented!("") + } +} + +impl SseEncode for StreamSink { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + unimplemented!("") + } +} + +impl SseEncode for String { + // 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.into_bytes(), serializer); + } +} + +impl SseEncode for bool { + // 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_u8(self as _).unwrap(); + } +} + +impl SseEncode for crate::api::mint_info::ContactInfo { + // 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.method, serializer); + ::sse_encode(self.info, serializer); + } +} + +impl SseEncode for crate::api::error::Error { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + match self { + crate::api::error::Error::Cdk(field0) => { + ::sse_encode(0, serializer); + ::sse_encode(field0, serializer); + } + crate::api::error::Error::Database(field0) => { + ::sse_encode(1, serializer); + ::sse_encode(field0, serializer); + } + crate::api::error::Error::InvalidInput => { + ::sse_encode(2, serializer); + } + crate::api::error::Error::Network(field0) => { + ::sse_encode(3, serializer); + ::sse_encode(field0, serializer); + } + crate::api::error::Error::Ur(field0) => { + ::sse_encode(4, serializer); + ::sse_encode(field0, serializer); + } + _ => { + unimplemented!(""); + } + } + } +} + 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) { @@ -93,10 +4054,461 @@ impl SseEncode for i32 { } } -impl SseEncode for bool { +impl SseEncode for crate::api::mint_info::KeysetInfo { // 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_u8(self as _).unwrap(); + ::sse_encode(self.id, serializer); + ::sse_encode(self.unit, serializer); + ::sse_encode(self.active, 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) { + ::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) { + ::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) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + +impl SseEncode for Vec<(String, String)> { + // 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 { + <(String, String)>::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 crate::api::mint_info::MeltMethodSettings { + // 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.method, serializer); + ::sse_encode(self.unit, serializer); + >::sse_encode(self.min_amount, serializer); + >::sse_encode(self.max_amount, serializer); + } +} + +impl SseEncode for crate::api::wallet::MeltQuote { + // 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.id, serializer); + ::sse_encode(self.request, serializer); + ::sse_encode(self.amount, serializer); + ::sse_encode(self.fee_reserve, serializer); + ::sse_encode(self.expiry, serializer); + } +} + +impl SseEncode for crate::api::mint_info::MintInfo { + // 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.name, serializer); + >::sse_encode(self.pubkey, serializer); + >::sse_encode(self.version, serializer); + >::sse_encode(self.description, serializer); + >::sse_encode(self.description_long, serializer); + >>::sse_encode(self.contact, serializer); + ::sse_encode(self.nuts, serializer); + >::sse_encode(self.icon_url, serializer); + >>::sse_encode(self.urls, serializer); + >::sse_encode(self.motd, serializer); + >::sse_encode(self.time, serializer); + >::sse_encode(self.tos_url, serializer); + } +} + +impl SseEncode for crate::api::mint_info::MintMethodSettings { + // 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.method, serializer); + ::sse_encode(self.unit, serializer); + >::sse_encode(self.min_amount, serializer); + >::sse_encode(self.max_amount, serializer); + } +} + +impl SseEncode for crate::api::wallet::MintQuote { + // 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.id, serializer); + ::sse_encode(self.request, serializer); + >::sse_encode(self.amount, serializer); + >::sse_encode(self.expiry, serializer); + ::sse_encode(self.state, serializer); + >::sse_encode(self.token, serializer); + >::sse_encode(self.error, serializer); + } +} + +impl SseEncode for crate::api::wallet::MintQuoteState { + // 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::api::wallet::MintQuoteState::Unpaid => 0, + crate::api::wallet::MintQuoteState::Paid => 1, + crate::api::wallet::MintQuoteState::Issued => 2, + crate::api::wallet::MintQuoteState::Error => 3, + _ => { + unimplemented!(""); + } + }, + serializer, + ); + } +} + +impl SseEncode for crate::api::mint_info::MintVersion { + // 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.name, serializer); + ::sse_encode(self.version, serializer); + } +} + +impl SseEncode for crate::api::mint_info::Nut04Settings { + // 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.methods, serializer); + ::sse_encode(self.disabled, serializer); + } +} + +impl SseEncode for crate::api::mint_info::Nut05Settings { + // 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.methods, serializer); + ::sse_encode(self.disabled, serializer); + } +} + +impl SseEncode for crate::api::mint_info::Nuts { + // 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.nut04, serializer); + ::sse_encode(self.nut05, serializer); + ::sse_encode(self.nut07, serializer); + ::sse_encode(self.nut08, serializer); + ::sse_encode(self.nut09, serializer); + ::sse_encode(self.nut10, serializer); + ::sse_encode(self.nut11, serializer); + ::sse_encode(self.nut12, serializer); + ::sse_encode(self.nut14, serializer); + ::sse_encode(self.nut20, 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) { + ::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) { + ::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) { + ::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) { + ::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) { + ::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) { + ::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) { + ::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) { + ::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) { + ::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) { + ::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) { + ::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) { + ::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) { + ::sse_encode(self.is_some(), serializer); + if let Some(value) = self { + >::sse_encode(value, serializer); + } + } +} + +impl SseEncode for crate::api::wallet::ReceiveOptions { + // 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.signing_keys, serializer); + >>::sse_encode(self.preimages, serializer); + } +} + +impl SseEncode for (String, String) { + // 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); + } +} + +impl SseEncode for crate::api::wallet::SendOptions { + // 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.pubkey, serializer); + >::sse_encode(self.include_fee, serializer); + } +} + +impl SseEncode for crate::api::mint_info::SupportedSettings { + // 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.supported, serializer); + } +} + +impl SseEncode for crate::api::token::Token { + // 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.encoded, serializer); + >>::sse_encode(self.raw, serializer); + ::sse_encode(self.amount, serializer); + ::sse_encode(self.mint_url, serializer); + } +} + +impl SseEncode for crate::api::wallet::Transaction { + // 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.id, serializer); + ::sse_encode(self.mint_url, serializer); + ::sse_encode(self.direction, serializer); + ::sse_encode(self.amount, serializer); + ::sse_encode(self.fee, serializer); + ::sse_encode(self.unit, serializer); + >::sse_encode(self.ys, serializer); + ::sse_encode(self.timestamp, serializer); + >::sse_encode(self.memo, serializer); + >::sse_encode(self.metadata, serializer); + ::sse_encode(self.status, serializer); + } +} + +impl SseEncode for crate::api::wallet::TransactionDirection { + // 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::api::wallet::TransactionDirection::Incoming => 0, + crate::api::wallet::TransactionDirection::Outgoing => 1, + _ => { + unimplemented!(""); + } + }, + serializer, + ); + } +} + +impl SseEncode for crate::api::wallet::TransactionStatus { + // 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::api::wallet::TransactionStatus::Pending => 0, + crate::api::wallet::TransactionStatus::Settled => 1, + _ => { + unimplemented!(""); + } + }, + serializer, + ); + } +} + +impl SseEncode for u64 { + // 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_u64::(self).unwrap(); + } +} + +impl SseEncode for u8 { + // 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_u8(self).unwrap(); + } +} + +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) {} +} + +impl SseEncode for usize { + // 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_u64::(self as _) + .unwrap(); } } @@ -108,6 +4520,8 @@ mod io { // Section: imports use super::*; + use crate::api::token::*; + use crate::api::wallet::*; use flutter_rust_bridge::for_generated::byteorder::{ NativeEndian, ReadBytesExt, WriteBytesExt, }; @@ -117,6 +4531,62 @@ mod io { // Section: boilerplate flutter_rust_bridge::frb_generated_boilerplate_io!(); + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_elcaju_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_elcaju_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_elcaju_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_elcaju_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenDecoder( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_elcaju_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_elcaju_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWallet( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_elcaju_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_elcaju_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerWalletDatabase( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } } #[cfg(not(target_family = "wasm"))] pub use io::*; @@ -130,6 +4600,8 @@ mod web { // Section: imports use super::*; + use crate::api::token::*; + use crate::api::wallet::*; use flutter_rust_bridge::for_generated::byteorder::{ NativeEndian, ReadBytesExt, WriteBytesExt, }; @@ -141,6 +4613,62 @@ mod web { // Section: boilerplate flutter_rust_bridge::frb_generated_boilerplate_web!(); + + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPreparedSend( + 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_generatedRustAutoOpaqueInnerPreparedSend( + 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_generatedRustAutoOpaqueInnerTokenDecoder( + 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_generatedRustAutoOpaqueInnerTokenDecoder( + 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_generatedRustAutoOpaqueInnerWallet( + 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_generatedRustAutoOpaqueInnerWallet( + 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_generatedRustAutoOpaqueInnerWalletDatabase( + 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_generatedRustAutoOpaqueInnerWalletDatabase( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } } #[cfg(target_family = "wasm")] pub use web::*; From 1f629d45b3e53643652eda4b600f474897333f51 Mon Sep 17 00:00:00 2001 From: Forte11Cuba Date: Sat, 28 Mar 2026 03:30:56 -0600 Subject: [PATCH 2/3] fix: remove panics in generate_mnemonic and token parsing --- lib/src/rust/frb_generated.dart | 2 +- rust/src/api/keys.rs | 7 ++++--- rust/src/api/token.rs | 10 ++++++---- rust/src/frb_generated.rs | 4 ++-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/src/rust/frb_generated.dart b/lib/src/rust/frb_generated.dart index 6afbe7d..56706ec 100644 --- a/lib/src/rust/frb_generated.dart +++ b/lib/src/rust/frb_generated.dart @@ -1680,7 +1680,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { }, codec: SseCodec( decodeSuccessData: sse_decode_String, - decodeErrorData: null, + decodeErrorData: sse_decode_error, ), constMeta: kCrateApiKeysGenerateMnemonicConstMeta, argValues: [], diff --git a/rust/src/api/keys.rs b/rust/src/api/keys.rs index 59a9ed7..14766c5 100644 --- a/rust/src/api/keys.rs +++ b/rust/src/api/keys.rs @@ -8,10 +8,11 @@ use super::error::Error; /// Generate a new 12-word BIP39 mnemonic #[frb(sync)] -pub fn generate_mnemonic() -> String { +pub fn generate_mnemonic() -> Result { let mut entropy = [0u8; 16]; // 128 bits → 12 words - getrandom::fill(&mut entropy).expect("Failed to generate entropy"); - Mnemonic::from_entropy(&entropy).unwrap().to_string() + getrandom::fill(&mut entropy).map_err(|_| Error::InvalidInput)?; + let mnemonic = Mnemonic::from_entropy(&entropy).map_err(|_| Error::InvalidInput)?; + Ok(mnemonic.to_string()) } /// Convert a mnemonic to a 64-byte seed diff --git a/rust/src/api/token.rs b/rust/src/api/token.rs index 405546c..7e39eee 100644 --- a/rust/src/api/token.rs +++ b/rust/src/api/token.rs @@ -60,7 +60,11 @@ impl TryFrom for Token { encoded: token_v3.to_string(), raw: None, amount: token_v3.value()?.into(), - mint_url: token_v3.mint_urls().first().unwrap().to_string(), + mint_url: token_v3 + .mint_urls() + .first() + .ok_or(Error::InvalidInput)? + .to_string(), }), CdkToken::TokenV4(token_v4) => Ok(Token { encoded: token_v4.to_string(), @@ -143,9 +147,7 @@ pub fn encode_qr_token( let mut encoder = MultipartEncoder::new(&ur, max_fragment_length.unwrap_or(150))?; let mut parts = Vec::new(); for _ in 0..encoder.parts_count() { - if let Ok(part) = encoder.next_part() { - parts.push(part); - } + parts.push(encoder.next_part()?); } Ok(parts) } diff --git a/rust/src/frb_generated.rs b/rust/src/frb_generated.rs index 87172db..fa537a2 100644 --- a/rust/src/frb_generated.rs +++ b/rust/src/frb_generated.rs @@ -2146,8 +2146,8 @@ fn wire__crate__api__keys__generate_mnemonic_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::api::keys::generate_mnemonic())?; + transform_result_sse::<_, crate::api::error::Error>((move || { + let output_ok = crate::api::keys::generate_mnemonic()?; Ok(output_ok) })()) }, From 07c0a7be895670385160af9d08752e68cf3edf53 Mon Sep 17 00:00:00 2001 From: Forte11Cuba Date: Sat, 28 Mar 2026 03:45:56 -0600 Subject: [PATCH 3/3] fix: remove panic paths in TokenDecoder lock handling --- rust/src/api/token.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/rust/src/api/token.rs b/rust/src/api/token.rs index 7e39eee..7eba0ff 100644 --- a/rust/src/api/token.rs +++ b/rust/src/api/token.rs @@ -108,20 +108,28 @@ impl TokenDecoder { #[frb(sync)] pub fn is_complete(&self) -> bool { - let decoder = self.decoder.read().expect("Lock poisoned"); - decoder.is_complete() + self.decoder + .read() + .map(|decoder| decoder.is_complete()) + .unwrap_or(false) } #[frb(sync)] pub fn receive(&self, input: String) -> Result<(), Error> { - let mut decoder = self.decoder.write().expect("Lock poisoned"); + let mut decoder = self + .decoder + .write() + .map_err(|_| Error::Ur("Token decoder lock poisoned".to_string()))?; decoder.receive(&input)?; Ok(()) } #[frb(sync)] pub fn value(&self) -> Result, Error> { - let decoder = self.decoder.read().expect("Lock poisoned"); + let decoder = self + .decoder + .read() + .map_err(|_| Error::Ur("Token decoder lock poisoned".to_string()))?; let ur = decoder.message()?; match ur { Some(ur) => {