From 10fff4f745737a59f10cffa20a3f80f5ab6885eb Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 2 Sep 2025 16:40:18 +0100 Subject: [PATCH 01/49] move to package format for easier decoupling --- flutter_rust_bridge.yaml | 4 +- lib/core/rust/frb_generated.dart | 2375 ----------------- lib/core/rust/frb_generated.io.dart | 843 ------ lib/core/rust/frb_generated.web.dart | 779 ------ lib/core/rust/lib.dart | 10 - .../rust/third_party/zoe_client/client.dart | 166 -- .../rust/third_party/zoe_client/frb_api.dart | 34 - lib/main.dart | 4 +- linux/flutter/generated_plugins.cmake | 2 +- .../zoe_native}/.gitignore | 6 +- packages/zoe_native/.metadata | 42 + packages/zoe_native/CHANGELOG.md | 3 + packages/zoe_native/LICENSE | 1 + packages/zoe_native/README.md | 92 + packages/zoe_native/analysis_options.yaml | 4 + .../zoe_native}/android/.gitignore | 0 .../zoe_native}/android/build.gradle | 8 +- packages/zoe_native/android/settings.gradle | 1 + .../android/src/main/AndroidManifest.xml | 2 +- .../zoe_native}/cargokit/.gitignore | 0 .../zoe_native}/cargokit/LICENSE | 0 .../zoe_native}/cargokit/README | 0 .../zoe_native}/cargokit/build_pod.sh | 0 .../zoe_native}/cargokit/build_tool/README.md | 0 .../cargokit/build_tool/analysis_options.yaml | 0 .../cargokit/build_tool/bin/build_tool.dart | 0 .../cargokit/build_tool/lib/build_tool.dart | 0 .../lib/src/android_environment.dart | 0 .../lib/src/artifacts_provider.dart | 0 .../build_tool/lib/src/build_cmake.dart | 0 .../build_tool/lib/src/build_gradle.dart | 0 .../build_tool/lib/src/build_pod.dart | 0 .../build_tool/lib/src/build_tool.dart | 0 .../cargokit/build_tool/lib/src/builder.dart | 2 +- .../cargokit/build_tool/lib/src/cargo.dart | 0 .../build_tool/lib/src/crate_hash.dart | 0 .../build_tool/lib/src/environment.dart | 0 .../cargokit/build_tool/lib/src/logging.dart | 0 .../cargokit/build_tool/lib/src/options.dart | 0 .../lib/src/precompile_binaries.dart | 0 .../cargokit/build_tool/lib/src/rustup.dart | 0 .../cargokit/build_tool/lib/src/target.dart | 0 .../cargokit/build_tool/lib/src/util.dart | 0 .../build_tool/lib/src/verify_binaries.dart | 0 .../cargokit/build_tool/pubspec.lock | 0 .../cargokit/build_tool/pubspec.yaml | 0 .../zoe_native}/cargokit/cmake/cargokit.cmake | 0 .../cargokit/cmake/resolve_symlinks.ps1 | 0 .../zoe_native}/cargokit/gradle/plugin.gradle | 0 .../zoe_native}/cargokit/run_build_tool.cmd | 0 .../zoe_native}/cargokit/run_build_tool.sh | 0 packages/zoe_native/flutter_rust_bridge.yaml | 3 + .../zoe_native}/ios/Classes/dummy_file.c | 0 .../zoe_native/ios/zoe_native.podspec | 10 +- .../zoe_native/lib/src}/rust/api/simple.dart | 0 .../lib/src/rust/frb_generated.dart | 242 ++ .../lib/src/rust/frb_generated.io.dart | 86 + .../lib/src/rust/frb_generated.web.dart | 86 + packages/zoe_native/lib/src/support.dart | 0 packages/zoe_native/lib/zoe_native.dart | 5 + .../zoe_native}/linux/CMakeLists.txt | 6 +- .../zoe_native}/macos/Classes/dummy_file.c | 0 .../zoe_native/macos/zoe_native.podspec | 10 +- packages/zoe_native/pubspec.yaml | 84 + {rust => packages/zoe_native/rust}/.gitignore | 0 {rust => packages/zoe_native/rust}/Cargo.lock | 1228 +++++++-- {rust => packages/zoe_native/rust}/Cargo.toml | 4 +- .../zoe_native/rust}/src/api/mod.rs | 0 .../zoe_native/rust}/src/api/simple.rs | 0 packages/zoe_native/rust/src/frb_generated.rs | 276 ++ packages/zoe_native/rust/src/lib.rs | 2 + .../test_driver/integration_test.dart | 3 + .../zoe_native}/windows/.gitignore | 0 .../zoe_native}/windows/CMakeLists.txt | 6 +- pubspec.lock | 16 +- pubspec.yaml | 4 +- rust/src/frb_generated.rs | 2140 --------------- rust/src/lib.rs | 10 - rust_builder/README.md | 1 - rust_builder/android/settings.gradle | 1 - rust_builder/pubspec.yaml | 34 - windows/flutter/generated_plugins.cmake | 2 +- 82 files changed, 1948 insertions(+), 6689 deletions(-) delete mode 100644 lib/core/rust/frb_generated.dart delete mode 100644 lib/core/rust/frb_generated.io.dart delete mode 100644 lib/core/rust/frb_generated.web.dart delete mode 100644 lib/core/rust/lib.dart delete mode 100644 lib/core/rust/third_party/zoe_client/client.dart delete mode 100644 lib/core/rust/third_party/zoe_client/frb_api.dart rename {rust_builder => packages/zoe_native}/.gitignore (88%) create mode 100644 packages/zoe_native/.metadata create mode 100644 packages/zoe_native/CHANGELOG.md create mode 100644 packages/zoe_native/LICENSE create mode 100644 packages/zoe_native/README.md create mode 100644 packages/zoe_native/analysis_options.yaml rename {rust_builder => packages/zoe_native}/android/.gitignore (100%) rename {rust_builder => packages/zoe_native}/android/build.gradle (88%) create mode 100644 packages/zoe_native/android/settings.gradle rename {rust_builder => packages/zoe_native}/android/src/main/AndroidManifest.xml (60%) rename {rust_builder => packages/zoe_native}/cargokit/.gitignore (100%) rename {rust_builder => packages/zoe_native}/cargokit/LICENSE (100%) rename {rust_builder => packages/zoe_native}/cargokit/README (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_pod.sh (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/README.md (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/analysis_options.yaml (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/bin/build_tool.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/build_tool.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/android_environment.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/artifacts_provider.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/build_cmake.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/build_gradle.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/build_pod.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/build_tool.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/builder.dart (98%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/cargo.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/crate_hash.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/environment.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/logging.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/options.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/precompile_binaries.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/rustup.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/target.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/util.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/lib/src/verify_binaries.dart (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/pubspec.lock (100%) rename {rust_builder => packages/zoe_native}/cargokit/build_tool/pubspec.yaml (100%) rename {rust_builder => packages/zoe_native}/cargokit/cmake/cargokit.cmake (100%) rename {rust_builder => packages/zoe_native}/cargokit/cmake/resolve_symlinks.ps1 (100%) rename {rust_builder => packages/zoe_native}/cargokit/gradle/plugin.gradle (100%) rename {rust_builder => packages/zoe_native}/cargokit/run_build_tool.cmd (100%) rename {rust_builder => packages/zoe_native}/cargokit/run_build_tool.sh (100%) create mode 100644 packages/zoe_native/flutter_rust_bridge.yaml rename {rust_builder => packages/zoe_native}/ios/Classes/dummy_file.c (100%) rename rust_builder/ios/rust_lib_zoe.podspec => packages/zoe_native/ios/zoe_native.podspec (83%) rename {lib/core => packages/zoe_native/lib/src}/rust/api/simple.dart (100%) create mode 100644 packages/zoe_native/lib/src/rust/frb_generated.dart create mode 100644 packages/zoe_native/lib/src/rust/frb_generated.io.dart create mode 100644 packages/zoe_native/lib/src/rust/frb_generated.web.dart create mode 100644 packages/zoe_native/lib/src/support.dart create mode 100644 packages/zoe_native/lib/zoe_native.dart rename {rust_builder => packages/zoe_native}/linux/CMakeLists.txt (82%) rename {rust_builder => packages/zoe_native}/macos/Classes/dummy_file.c (100%) rename rust_builder/macos/rust_lib_zoe.podspec => packages/zoe_native/macos/zoe_native.podspec (83%) create mode 100644 packages/zoe_native/pubspec.yaml rename {rust => packages/zoe_native/rust}/.gitignore (100%) rename {rust => packages/zoe_native/rust}/Cargo.lock (84%) rename {rust => packages/zoe_native/rust}/Cargo.toml (83%) rename {rust => packages/zoe_native/rust}/src/api/mod.rs (100%) rename {rust => packages/zoe_native/rust}/src/api/simple.rs (100%) create mode 100644 packages/zoe_native/rust/src/frb_generated.rs create mode 100644 packages/zoe_native/rust/src/lib.rs create mode 100644 packages/zoe_native/test_driver/integration_test.dart rename {rust_builder => packages/zoe_native}/windows/.gitignore (100%) rename {rust_builder => packages/zoe_native}/windows/CMakeLists.txt (82%) delete mode 100644 rust/src/frb_generated.rs delete mode 100644 rust/src/lib.rs delete mode 100644 rust_builder/README.md delete mode 100644 rust_builder/android/settings.gradle delete mode 100644 rust_builder/pubspec.yaml diff --git a/flutter_rust_bridge.yaml b/flutter_rust_bridge.yaml index f18d63f8..d5660617 100644 --- a/flutter_rust_bridge.yaml +++ b/flutter_rust_bridge.yaml @@ -1,3 +1,3 @@ rust_input: crate::api,zoe-client::client,zoe-client::frb_api -rust_root: rust/ -dart_output: lib/core/rust \ No newline at end of file +rust_root: packages/zoe_native/rust/ +dart_output: packages/zoe_native/lib/src/rust \ No newline at end of file diff --git a/lib/core/rust/frb_generated.dart b/lib/core/rust/frb_generated.dart deleted file mode 100644 index 95e0dcb2..00000000 --- a/lib/core/rust/frb_generated.dart +++ /dev/null @@ -1,2375 +0,0 @@ -// This file is automatically generated, so please do not edit it. -// @generated by `flutter_rust_bridge`@ 2.11.1. - -// 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/simple.dart'; -import 'dart:async'; -import 'dart:convert'; -import 'frb_generated.dart'; -import 'frb_generated.io.dart' - if (dart.library.js_interop) 'frb_generated.web.dart'; -import 'lib.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; -import 'third_party/zoe_client/client.dart'; -import 'third_party/zoe_client/frb_api.dart'; - -/// Main entrypoint of the Rust API -class RustLib extends BaseEntrypoint { - @internal - static final instance = RustLib._(); - - RustLib._(); - - /// Initialize flutter_rust_bridge - static Future init({ - RustLibApi? api, - BaseHandler? handler, - ExternalLibrary? externalLibrary, - bool forceSameCodegenVersion = true, - }) async { - await instance.initImpl( - api: api, - handler: handler, - externalLibrary: externalLibrary, - forceSameCodegenVersion: forceSameCodegenVersion, - ); - } - - /// Initialize flutter_rust_bridge in mock mode. - /// No libraries for FFI are loaded. - static void initMock({required RustLibApi api}) { - instance.initMockImpl(api: api); - } - - /// Dispose flutter_rust_bridge - /// - /// The call to this function is optional, since flutter_rust_bridge (and everything else) - /// is automatically disposed when the app stops. - static void dispose() => instance.disposeImpl(); - - @override - ApiImplConstructor get apiImplConstructor => - RustLibApiImpl.new; - - @override - WireConstructor get wireConstructor => - RustLibWire.fromExternalLibrary; - - @override - Future executeRustInitializers() async { - await api.crateApiSimpleInitApp(); - } - - @override - ExternalLibraryLoaderConfig get defaultExternalLibraryLoaderConfig => - kDefaultExternalLibraryLoaderConfig; - - @override - String get codegenVersion => '2.11.1'; - - @override - int get rustContentHash => 1257752319; - - static const kDefaultExternalLibraryLoaderConfig = - ExternalLibraryLoaderConfig( - stem: 'rust_lib_zoe', - ioDirectory: 'rust/target/release/', - webPrefix: 'pkg/', - ); -} - -abstract class RustLibApi extends BaseApi { - Future zoeClientClientClientBuilderBuild({ - required ClientBuilder that, - }); - - Future zoeClientClientClientBuilderClientSecret({ - required ClientBuilder that, - required ClientSecret secret, - }); - - Future zoeClientClientClientBuilderDefault(); - - Future zoeClientClientClientBuilderMediaStoragePath({ - required ClientBuilder that, - required String mediaStoragePath, - }); - - Future zoeClientClientClientBuilderServerInfo({ - required ClientBuilder that, - required VerifyingKey serverPublicKey, - required SocketAddr serverAddr, - }); - - Future zoeClientClientClientSecretAsHex({required ClientSecret that}); - - Future zoeClientClientClientSecretFromHex({ - required String value, - }); - - Future zoeClientClientClientSecretNew({ - required SigningKey signingKey, - required VerifyingKey serverPublicKey, - required SocketAddr serverAddr, - }); - - Future zoeClientClientClientBuilder(); - - Future zoeClientClientClientHasFile({ - required Client that, - required FileRef storedInfo, - }); - - Future zoeClientClientClientRetrieveFile({ - required Client that, - required FileRef fileRef, - required PathBuf outputPath, - }); - - Future zoeClientClientClientRetrieveFileBytes({ - required Client that, - required FileRef fileRef, - }); - - Future zoeClientClientClientStoreData({ - required Client that, - required List data, - required String referenceName, - String? contentType, - }); - - Future zoeClientClientClientStoreFile({ - required Client that, - required PathBuf filePath, - }); - - Future zoeClientFrbApiCreateSigningKeyRandom(); - - Future zoeClientFrbApiCreateSocketAddr({ - required String ip, - required int port, - }); - - String crateApiSimpleGreet({required String name}); - - Future crateApiSimpleInitApp(); - - Future zoeClientFrbApiSigningKeyFromHex({required String hex}); - - Future zoeClientFrbApiSigningKeyToVerifyingKey({ - required String signingKeyHex, - }); - - Future zoeClientFrbApiSocketAddrIp({required SocketAddr addr}); - - Future zoeClientFrbApiSocketAddrPort({required SocketAddr addr}); - - Future zoeClientFrbApiSocketAddrToString({required SocketAddr addr}); - - Future zoeClientFrbApiVerifyingKeyFromHex({required String hex}); - - RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_Client; - - RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_Client; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_ClientPtr; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_ClientBuilder; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_ClientBuilder; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_ClientBuilderPtr; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_ClientSecret; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_ClientSecret; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_ClientSecretPtr; - - RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_FileRef; - - RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_FileRef; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_FileRefPtr; - - RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_PathBuf; - - RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_PathBuf; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_PathBufPtr; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_SigningKey; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_SigningKey; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SigningKeyPtr; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_SocketAddr; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_SocketAddr; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SocketAddrPtr; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_VerifyingKey; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_VerifyingKey; - - CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_VerifyingKeyPtr; -} - -class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { - RustLibApiImpl({ - required super.handler, - required super.wire, - required super.generalizedFrbRustBinding, - required super.portManager, - }); - - @override - Future zoeClientClientClientBuilderBuild({ - required ClientBuilder that, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - that, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 1, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kZoeClientClientClientBuilderBuildConstMeta, - argValues: [that], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientBuilderBuildConstMeta => - const TaskConstMeta(debugName: "ClientBuilder_build", argNames: ["that"]); - - @override - Future zoeClientClientClientBuilderClientSecret({ - required ClientBuilder that, - required ClientSecret secret, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - that, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - secret, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 2, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kZoeClientClientClientBuilderClientSecretConstMeta, - argValues: [that, secret], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientBuilderClientSecretConstMeta => - const TaskConstMeta( - debugName: "ClientBuilder_client_secret", - argNames: ["that", "secret"], - ); - - @override - Future zoeClientClientClientBuilderDefault() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 3, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder, - decodeErrorData: null, - ), - constMeta: kZoeClientClientClientBuilderDefaultConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientBuilderDefaultConstMeta => - const TaskConstMeta(debugName: "ClientBuilder_default", argNames: []); - - @override - Future zoeClientClientClientBuilderMediaStoragePath({ - required ClientBuilder that, - required String mediaStoragePath, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - that, - serializer, - ); - sse_encode_String(mediaStoragePath, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 4, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kZoeClientClientClientBuilderMediaStoragePathConstMeta, - argValues: [that, mediaStoragePath], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientBuilderMediaStoragePathConstMeta => - const TaskConstMeta( - debugName: "ClientBuilder_media_storage_path", - argNames: ["that", "mediaStoragePath"], - ); - - @override - Future zoeClientClientClientBuilderServerInfo({ - required ClientBuilder that, - required VerifyingKey serverPublicKey, - required SocketAddr serverAddr, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - that, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - serverPublicKey, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - serverAddr, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 5, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kZoeClientClientClientBuilderServerInfoConstMeta, - argValues: [that, serverPublicKey, serverAddr], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientBuilderServerInfoConstMeta => - const TaskConstMeta( - debugName: "ClientBuilder_server_info", - argNames: ["that", "serverPublicKey", "serverAddr"], - ); - - @override - Future zoeClientClientClientSecretAsHex({ - required ClientSecret that, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - that, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 6, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kZoeClientClientClientSecretAsHexConstMeta, - argValues: [that], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientSecretAsHexConstMeta => - const TaskConstMeta(debugName: "ClientSecret_as_hex", argNames: ["that"]); - - @override - Future zoeClientClientClientSecretFromHex({ - required String value, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(value, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 7, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kZoeClientClientClientSecretFromHexConstMeta, - argValues: [value], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientSecretFromHexConstMeta => - const TaskConstMeta( - debugName: "ClientSecret_from_hex", - argNames: ["value"], - ); - - @override - Future zoeClientClientClientSecretNew({ - required SigningKey signingKey, - required VerifyingKey serverPublicKey, - required SocketAddr serverAddr, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - signingKey, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - serverPublicKey, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - serverAddr, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 8, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret, - decodeErrorData: null, - ), - constMeta: kZoeClientClientClientSecretNewConstMeta, - argValues: [signingKey, serverPublicKey, serverAddr], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientSecretNewConstMeta => - const TaskConstMeta( - debugName: "ClientSecret_new", - argNames: ["signingKey", "serverPublicKey", "serverAddr"], - ); - - @override - Future zoeClientClientClientBuilder() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 9, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder, - decodeErrorData: null, - ), - constMeta: kZoeClientClientClientBuilderConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientBuilderConstMeta => - const TaskConstMeta(debugName: "Client_builder", argNames: []); - - @override - Future zoeClientClientClientHasFile({ - required Client that, - required FileRef storedInfo, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - that, - serializer, - ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - storedInfo, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 10, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kZoeClientClientClientHasFileConstMeta, - argValues: [that, storedInfo], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientHasFileConstMeta => - const TaskConstMeta( - debugName: "Client_has_file", - argNames: ["that", "storedInfo"], - ); - - @override - Future zoeClientClientClientRetrieveFile({ - required Client that, - required FileRef fileRef, - required PathBuf outputPath, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - that, - serializer, - ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - fileRef, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - outputPath, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 11, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kZoeClientClientClientRetrieveFileConstMeta, - argValues: [that, fileRef, outputPath], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientRetrieveFileConstMeta => - const TaskConstMeta( - debugName: "Client_retrieve_file", - argNames: ["that", "fileRef", "outputPath"], - ); - - @override - Future zoeClientClientClientRetrieveFileBytes({ - required Client that, - required FileRef fileRef, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - that, - serializer, - ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - fileRef, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 12, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_list_prim_u_8_strict, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kZoeClientClientClientRetrieveFileBytesConstMeta, - argValues: [that, fileRef], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientRetrieveFileBytesConstMeta => - const TaskConstMeta( - debugName: "Client_retrieve_file_bytes", - argNames: ["that", "fileRef"], - ); - - @override - Future zoeClientClientClientStoreData({ - required Client that, - required List data, - required String referenceName, - String? contentType, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - that, - serializer, - ); - sse_encode_list_prim_u_8_loose(data, serializer); - sse_encode_String(referenceName, serializer); - sse_encode_opt_String(contentType, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 13, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kZoeClientClientClientStoreDataConstMeta, - argValues: [that, data, referenceName, contentType], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientStoreDataConstMeta => - const TaskConstMeta( - debugName: "Client_store_data", - argNames: ["that", "data", "referenceName", "contentType"], - ); - - @override - Future zoeClientClientClientStoreFile({ - required Client that, - required PathBuf filePath, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - that, - serializer, - ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - filePath, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 14, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kZoeClientClientClientStoreFileConstMeta, - argValues: [that, filePath], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientClientClientStoreFileConstMeta => - const TaskConstMeta( - debugName: "Client_store_file", - argNames: ["that", "filePath"], - ); - - @override - Future zoeClientFrbApiCreateSigningKeyRandom() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 15, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: null, - ), - constMeta: kZoeClientFrbApiCreateSigningKeyRandomConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientFrbApiCreateSigningKeyRandomConstMeta => - const TaskConstMeta(debugName: "create_signing_key_random", argNames: []); - - @override - Future zoeClientFrbApiCreateSocketAddr({ - required String ip, - required int port, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(ip, serializer); - sse_encode_u_16(port, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 16, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr, - decodeErrorData: sse_decode_String, - ), - constMeta: kZoeClientFrbApiCreateSocketAddrConstMeta, - argValues: [ip, port], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientFrbApiCreateSocketAddrConstMeta => - const TaskConstMeta( - debugName: "create_socket_addr", - argNames: ["ip", "port"], - ); - - @override - String crateApiSimpleGreet({required String name}) { - return handler.executeSync( - SyncTask( - callFfi: () { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(name, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 17)!; - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: null, - ), - constMeta: kCrateApiSimpleGreetConstMeta, - argValues: [name], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateApiSimpleGreetConstMeta => - const TaskConstMeta(debugName: "greet", argNames: ["name"]); - - @override - Future crateApiSimpleInitApp() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 18, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kCrateApiSimpleInitAppConstMeta, - argValues: [], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kCrateApiSimpleInitAppConstMeta => - const TaskConstMeta(debugName: "init_app", argNames: []); - - @override - Future zoeClientFrbApiSigningKeyFromHex({required String hex}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(hex, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 19, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_String, - ), - constMeta: kZoeClientFrbApiSigningKeyFromHexConstMeta, - argValues: [hex], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientFrbApiSigningKeyFromHexConstMeta => - const TaskConstMeta(debugName: "signing_key_from_hex", argNames: ["hex"]); - - @override - Future zoeClientFrbApiSigningKeyToVerifyingKey({ - required String signingKeyHex, - }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(signingKeyHex, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 20, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_String, - ), - constMeta: kZoeClientFrbApiSigningKeyToVerifyingKeyConstMeta, - argValues: [signingKeyHex], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientFrbApiSigningKeyToVerifyingKeyConstMeta => - const TaskConstMeta( - debugName: "signing_key_to_verifying_key", - argNames: ["signingKeyHex"], - ); - - @override - Future zoeClientFrbApiSocketAddrIp({required SocketAddr addr}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - addr, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 21, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: null, - ), - constMeta: kZoeClientFrbApiSocketAddrIpConstMeta, - argValues: [addr], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientFrbApiSocketAddrIpConstMeta => - const TaskConstMeta(debugName: "socket_addr_ip", argNames: ["addr"]); - - @override - Future zoeClientFrbApiSocketAddrPort({required SocketAddr addr}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - addr, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 22, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_u_16, - decodeErrorData: null, - ), - constMeta: kZoeClientFrbApiSocketAddrPortConstMeta, - argValues: [addr], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientFrbApiSocketAddrPortConstMeta => - const TaskConstMeta(debugName: "socket_addr_port", argNames: ["addr"]); - - @override - Future zoeClientFrbApiSocketAddrToString({required SocketAddr addr}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - addr, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 23, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: null, - ), - constMeta: kZoeClientFrbApiSocketAddrToStringConstMeta, - argValues: [addr], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientFrbApiSocketAddrToStringConstMeta => - const TaskConstMeta( - debugName: "socket_addr_to_string", - argNames: ["addr"], - ); - - @override - Future zoeClientFrbApiVerifyingKeyFromHex({required String hex}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(hex, serializer); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 24, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_String, - ), - constMeta: kZoeClientFrbApiVerifyingKeyFromHexConstMeta, - argValues: [hex], - apiImpl: this, - ), - ); - } - - TaskConstMeta get kZoeClientFrbApiVerifyingKeyFromHexConstMeta => - const TaskConstMeta( - debugName: "verifying_key_from_hex", - argNames: ["hex"], - ); - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_Client => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_Client => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_ClientBuilder => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_ClientBuilder => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_ClientSecret => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_ClientSecret => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_FileRef => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_FileRef => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_PathBuf => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_PathBuf => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_SigningKey => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_SigningKey => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_SocketAddr => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_SocketAddr => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr; - - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_VerifyingKey => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey; - - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_VerifyingKey => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey; - - @protected - AnyhowException dco_decode_AnyhowException(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return AnyhowException(raw as String); - } - - @protected - Client - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientImpl.frbInternalDcoDecode(raw as List); - } - - @protected - ClientBuilder - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientBuilderImpl.frbInternalDcoDecode(raw as List); - } - - @protected - ClientSecret - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientSecretImpl.frbInternalDcoDecode(raw as List); - } - - @protected - FileRef - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return FileRefImpl.frbInternalDcoDecode(raw as List); - } - - @protected - PathBuf - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return PathBufImpl.frbInternalDcoDecode(raw as List); - } - - @protected - SigningKey - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return SigningKeyImpl.frbInternalDcoDecode(raw as List); - } - - @protected - SocketAddr - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return SocketAddrImpl.frbInternalDcoDecode(raw as List); - } - - @protected - VerifyingKey - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return VerifyingKeyImpl.frbInternalDcoDecode(raw as List); - } - - @protected - ClientBuilder - dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientBuilderImpl.frbInternalDcoDecode(raw as List); - } - - @protected - Client - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientImpl.frbInternalDcoDecode(raw as List); - } - - @protected - ClientSecret - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientSecretImpl.frbInternalDcoDecode(raw as List); - } - - @protected - FileRef - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return FileRefImpl.frbInternalDcoDecode(raw as List); - } - - @protected - SocketAddr - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return SocketAddrImpl.frbInternalDcoDecode(raw as List); - } - - @protected - Client - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientImpl.frbInternalDcoDecode(raw as List); - } - - @protected - ClientBuilder - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientBuilderImpl.frbInternalDcoDecode(raw as List); - } - - @protected - ClientSecret - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientSecretImpl.frbInternalDcoDecode(raw as List); - } - - @protected - FileRef - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return FileRefImpl.frbInternalDcoDecode(raw as List); - } - - @protected - PathBuf - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return PathBufImpl.frbInternalDcoDecode(raw as List); - } - - @protected - SigningKey - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return SigningKeyImpl.frbInternalDcoDecode(raw as List); - } - - @protected - SocketAddr - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return SocketAddrImpl.frbInternalDcoDecode(raw as List); - } - - @protected - VerifyingKey - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - dynamic raw, - ) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return VerifyingKeyImpl.frbInternalDcoDecode(raw as List); - } - - @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 - 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 - 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 - int dco_decode_u_16(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return raw as int; - } - - @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 - var inner = sse_decode_String(deserializer); - return AnyhowException(inner); - } - - @protected - Client - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return ClientImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - ClientBuilder - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return ClientBuilderImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - ClientSecret - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return ClientSecretImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - FileRef - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return FileRefImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - PathBuf - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return PathBufImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - SigningKey - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return SigningKeyImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - SocketAddr - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return SocketAddrImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - VerifyingKey - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return VerifyingKeyImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - ClientBuilder - sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return ClientBuilderImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - Client - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return ClientImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - ClientSecret - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return ClientSecretImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - FileRef - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return FileRefImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - SocketAddr - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return SocketAddrImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - Client - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return ClientImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - ClientBuilder - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return ClientBuilderImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - ClientSecret - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return ClientSecretImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - FileRef - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return FileRefImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - PathBuf - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return PathBufImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - SigningKey - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return SigningKeyImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - SocketAddr - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return SocketAddrImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @protected - VerifyingKey - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - SseDeserializer deserializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - return VerifyingKeyImpl.frbInternalSseDecode( - sse_decode_usize(deserializer), - sse_decode_i_32(deserializer), - ); - } - - @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 - bool sse_decode_bool(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getUint8() != 0; - } - - @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 - 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 - int sse_decode_u_16(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getUint16(); - } - - @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 - int sse_decode_i_32(SseDeserializer deserializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getInt32(); - } - - @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_generatedRustAutoOpaqueInnerClient( - Client self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as ClientImpl).frbInternalSseEncode(move: true), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ClientBuilder self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as ClientBuilderImpl).frbInternalSseEncode(move: true), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as ClientSecretImpl).frbInternalSseEncode(move: true), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as FileRefImpl).frbInternalSseEncode(move: true), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - PathBuf self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as PathBufImpl).frbInternalSseEncode(move: true), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SigningKey self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as SigningKeyImpl).frbInternalSseEncode(move: true), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SocketAddr self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as SocketAddrImpl).frbInternalSseEncode(move: true), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - VerifyingKey self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as VerifyingKeyImpl).frbInternalSseEncode(move: true), - serializer, - ); - } - - @protected - void - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ClientBuilder self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as ClientBuilderImpl).frbInternalSseEncode(move: false), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - Client self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as ClientImpl).frbInternalSseEncode(move: false), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as ClientSecretImpl).frbInternalSseEncode(move: false), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as FileRefImpl).frbInternalSseEncode(move: false), - serializer, - ); - } - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SocketAddr self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as SocketAddrImpl).frbInternalSseEncode(move: false), - serializer, - ); - } - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - Client self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as ClientImpl).frbInternalSseEncode(move: null), - serializer, - ); - } - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ClientBuilder self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as ClientBuilderImpl).frbInternalSseEncode(move: null), - serializer, - ); - } - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as ClientSecretImpl).frbInternalSseEncode(move: null), - serializer, - ); - } - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as FileRefImpl).frbInternalSseEncode(move: null), - serializer, - ); - } - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - PathBuf self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as PathBufImpl).frbInternalSseEncode(move: null), - serializer, - ); - } - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SigningKey self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as SigningKeyImpl).frbInternalSseEncode(move: null), - serializer, - ); - } - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SocketAddr self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as SocketAddrImpl).frbInternalSseEncode(move: null), - serializer, - ); - } - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - VerifyingKey self, - SseSerializer serializer, - ) { - // Codec=Sse (Serialization based), see doc to use other codecs - sse_encode_usize( - (self as VerifyingKeyImpl).frbInternalSseEncode(move: null), - 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 - void sse_encode_bool(bool self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putUint8(self ? 1 : 0); - } - - @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_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_u_16(int self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putUint16(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); - } - - @protected - void sse_encode_i_32(int self, SseSerializer serializer) { - // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putInt32(self); - } -} - -@sealed -class ClientBuilderImpl extends RustOpaque implements ClientBuilder { - // Not to be used by end users - ClientBuilderImpl.frbInternalDcoDecode(List wire) - : super.frbInternalDcoDecode(wire, _kStaticData); - - // Not to be used by end users - ClientBuilderImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) - : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); - - static final _kStaticData = RustArcStaticData( - rustArcIncrementStrongCount: - RustLib.instance.api.rust_arc_increment_strong_count_ClientBuilder, - rustArcDecrementStrongCount: - RustLib.instance.api.rust_arc_decrement_strong_count_ClientBuilder, - rustArcDecrementStrongCountPtr: - RustLib.instance.api.rust_arc_decrement_strong_count_ClientBuilderPtr, - ); - - Future build() => - RustLib.instance.api.zoeClientClientClientBuilderBuild(that: this); - - Future clientSecret({required ClientSecret secret}) => RustLib - .instance - .api - .zoeClientClientClientBuilderClientSecret(that: this, secret: secret); - - Future mediaStoragePath({required String mediaStoragePath}) => - RustLib.instance.api.zoeClientClientClientBuilderMediaStoragePath( - that: this, - mediaStoragePath: mediaStoragePath, - ); - - Future serverInfo({ - required VerifyingKey serverPublicKey, - required SocketAddr serverAddr, - }) => RustLib.instance.api.zoeClientClientClientBuilderServerInfo( - that: this, - serverPublicKey: serverPublicKey, - serverAddr: serverAddr, - ); -} - -@sealed -class ClientImpl extends RustOpaque implements Client { - // Not to be used by end users - ClientImpl.frbInternalDcoDecode(List wire) - : super.frbInternalDcoDecode(wire, _kStaticData); - - // Not to be used by end users - ClientImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) - : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); - - static final _kStaticData = RustArcStaticData( - rustArcIncrementStrongCount: - RustLib.instance.api.rust_arc_increment_strong_count_Client, - rustArcDecrementStrongCount: - RustLib.instance.api.rust_arc_decrement_strong_count_Client, - rustArcDecrementStrongCountPtr: - RustLib.instance.api.rust_arc_decrement_strong_count_ClientPtr, - ); - - /// Check if a file exists in storage - /// - /// # Arguments - /// - /// * `stored_info` - Metadata from when the file was stored - /// - /// # Returns - /// - /// `true` if the file exists in storage, `false` otherwise - Future hasFile({required FileRef storedInfo}) => RustLib.instance.api - .zoeClientClientClientHasFile(that: this, storedInfo: storedInfo); - - /// Retrieve a file from storage and save it to disk - /// - /// This method: - /// 1. Retrieves the encrypted data from blob storage using the FileRef - /// 2. Decrypts the content - /// 3. Writes the decrypted content to the specified path - /// - /// # Arguments - /// - /// * `file_ref` - Metadata for the file to retrieve - /// * `output_path` - Path where the decrypted file should be saved - /// - /// # Errors - /// - /// Returns an error if: - /// - The file cannot be found in storage - /// - Decryption fails - /// - Writing to disk fails - Future retrieveFile({ - required FileRef fileRef, - required PathBuf outputPath, - }) => RustLib.instance.api.zoeClientClientClientRetrieveFile( - that: this, - fileRef: fileRef, - outputPath: outputPath, - ); - - /// Retrieve a file from storage as bytes - /// - /// This method: - /// 1. Retrieves the encrypted data from blob storage using the FileRef - /// 2. Decrypts the content - /// 3. Returns the decrypted content as bytes - /// - /// # Arguments - /// - /// * `file_ref` - Metadata for the file to retrieve - /// - /// # Returns - /// - /// The decrypted file content as `Vec` - /// - /// # Errors - /// - /// Returns an error if: - /// - The file cannot be found in storage - /// - Decryption fails - Future retrieveFileBytes({required FileRef fileRef}) => RustLib - .instance - .api - .zoeClientClientClientRetrieveFileBytes(that: this, fileRef: fileRef); - - /// Store raw data (not from a file) with encryption and blob storage - /// - /// This method allows storing arbitrary data without reading from disk. - /// - /// # Arguments - /// - /// * `data` - The raw data to store - /// * `reference_name` - A reference name for the data (used in metadata) - /// * `content_type` - Optional content type for metadata - /// - /// # Returns - /// - /// `FileRef` containing the blob hash, encryption info, and metadata - Future storeData({ - required List data, - required String referenceName, - String? contentType, - }) => RustLib.instance.api.zoeClientClientClientStoreData( - that: this, - data: data, - referenceName: referenceName, - contentType: contentType, - ); - - /// Store a file by reading from disk, encrypting, and storing in blob storage - /// - /// This method: - /// 1. Reads the file from the provided path - /// 2. Encrypts the content using convergent encryption - /// 3. Stores the encrypted data in the blob store - /// 4. Returns metadata needed to retrieve the file later - /// - /// # Arguments - /// - /// * `file_path` - Path to the file to store - /// - /// # Returns - /// - /// A `FileRef` containing the metadata needed to retrieve the file - /// - /// # Errors - /// - /// Returns an error if: - /// - The file cannot be read - /// - Encryption fails - /// - Blob storage operation fails - Future storeFile({required PathBuf filePath}) => RustLib.instance.api - .zoeClientClientClientStoreFile(that: this, filePath: filePath); -} - -@sealed -class ClientSecretImpl extends RustOpaque implements ClientSecret { - // Not to be used by end users - ClientSecretImpl.frbInternalDcoDecode(List wire) - : super.frbInternalDcoDecode(wire, _kStaticData); - - // Not to be used by end users - ClientSecretImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) - : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); - - static final _kStaticData = RustArcStaticData( - rustArcIncrementStrongCount: - RustLib.instance.api.rust_arc_increment_strong_count_ClientSecret, - rustArcDecrementStrongCount: - RustLib.instance.api.rust_arc_decrement_strong_count_ClientSecret, - rustArcDecrementStrongCountPtr: - RustLib.instance.api.rust_arc_decrement_strong_count_ClientSecretPtr, - ); - - Future asHex() => - RustLib.instance.api.zoeClientClientClientSecretAsHex(that: this); -} - -@sealed -class FileRefImpl extends RustOpaque implements FileRef { - // Not to be used by end users - FileRefImpl.frbInternalDcoDecode(List wire) - : super.frbInternalDcoDecode(wire, _kStaticData); - - // Not to be used by end users - FileRefImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) - : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); - - static final _kStaticData = RustArcStaticData( - rustArcIncrementStrongCount: - RustLib.instance.api.rust_arc_increment_strong_count_FileRef, - rustArcDecrementStrongCount: - RustLib.instance.api.rust_arc_decrement_strong_count_FileRef, - rustArcDecrementStrongCountPtr: - RustLib.instance.api.rust_arc_decrement_strong_count_FileRefPtr, - ); -} - -@sealed -class PathBufImpl extends RustOpaque implements PathBuf { - // Not to be used by end users - PathBufImpl.frbInternalDcoDecode(List wire) - : super.frbInternalDcoDecode(wire, _kStaticData); - - // Not to be used by end users - PathBufImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) - : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); - - static final _kStaticData = RustArcStaticData( - rustArcIncrementStrongCount: - RustLib.instance.api.rust_arc_increment_strong_count_PathBuf, - rustArcDecrementStrongCount: - RustLib.instance.api.rust_arc_decrement_strong_count_PathBuf, - rustArcDecrementStrongCountPtr: - RustLib.instance.api.rust_arc_decrement_strong_count_PathBufPtr, - ); -} - -@sealed -class SigningKeyImpl extends RustOpaque implements SigningKey { - // Not to be used by end users - SigningKeyImpl.frbInternalDcoDecode(List wire) - : super.frbInternalDcoDecode(wire, _kStaticData); - - // Not to be used by end users - SigningKeyImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) - : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); - - static final _kStaticData = RustArcStaticData( - rustArcIncrementStrongCount: - RustLib.instance.api.rust_arc_increment_strong_count_SigningKey, - rustArcDecrementStrongCount: - RustLib.instance.api.rust_arc_decrement_strong_count_SigningKey, - rustArcDecrementStrongCountPtr: - RustLib.instance.api.rust_arc_decrement_strong_count_SigningKeyPtr, - ); -} - -@sealed -class SocketAddrImpl extends RustOpaque implements SocketAddr { - // Not to be used by end users - SocketAddrImpl.frbInternalDcoDecode(List wire) - : super.frbInternalDcoDecode(wire, _kStaticData); - - // Not to be used by end users - SocketAddrImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) - : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); - - static final _kStaticData = RustArcStaticData( - rustArcIncrementStrongCount: - RustLib.instance.api.rust_arc_increment_strong_count_SocketAddr, - rustArcDecrementStrongCount: - RustLib.instance.api.rust_arc_decrement_strong_count_SocketAddr, - rustArcDecrementStrongCountPtr: - RustLib.instance.api.rust_arc_decrement_strong_count_SocketAddrPtr, - ); -} - -@sealed -class VerifyingKeyImpl extends RustOpaque implements VerifyingKey { - // Not to be used by end users - VerifyingKeyImpl.frbInternalDcoDecode(List wire) - : super.frbInternalDcoDecode(wire, _kStaticData); - - // Not to be used by end users - VerifyingKeyImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) - : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); - - static final _kStaticData = RustArcStaticData( - rustArcIncrementStrongCount: - RustLib.instance.api.rust_arc_increment_strong_count_VerifyingKey, - rustArcDecrementStrongCount: - RustLib.instance.api.rust_arc_decrement_strong_count_VerifyingKey, - rustArcDecrementStrongCountPtr: - RustLib.instance.api.rust_arc_decrement_strong_count_VerifyingKeyPtr, - ); -} diff --git a/lib/core/rust/frb_generated.io.dart b/lib/core/rust/frb_generated.io.dart deleted file mode 100644 index 5d180a95..00000000 --- a/lib/core/rust/frb_generated.io.dart +++ /dev/null @@ -1,843 +0,0 @@ -// This file is automatically generated, so please do not edit it. -// @generated by `flutter_rust_bridge`@ 2.11.1. - -// 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/simple.dart'; -import 'dart:async'; -import 'dart:convert'; -import 'dart:ffi' as ffi; -import 'frb_generated.dart'; -import 'lib.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; -import 'third_party/zoe_client/client.dart'; -import 'third_party/zoe_client/frb_api.dart'; - -abstract class RustLibApiImplPlatform extends BaseApiImpl { - RustLibApiImplPlatform({ - required super.handler, - required super.wire, - required super.generalizedFrbRustBinding, - required super.portManager, - }); - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_ClientPtr => wire - ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_ClientBuilderPtr => wire - ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_ClientSecretPtr => wire - ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_FileRefPtr => wire - ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_PathBufPtr => wire - ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_SigningKeyPtr => wire - ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_SocketAddrPtr => wire - ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_VerifyingKeyPtr => wire - ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr; - - @protected - AnyhowException dco_decode_AnyhowException(dynamic raw); - - @protected - Client - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - dynamic raw, - ); - - @protected - ClientBuilder - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - dynamic raw, - ); - - @protected - ClientSecret - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - dynamic raw, - ); - - @protected - FileRef - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - dynamic raw, - ); - - @protected - PathBuf - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - dynamic raw, - ); - - @protected - SigningKey - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - dynamic raw, - ); - - @protected - SocketAddr - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - dynamic raw, - ); - - @protected - VerifyingKey - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - dynamic raw, - ); - - @protected - ClientBuilder - dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - dynamic raw, - ); - - @protected - Client - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - dynamic raw, - ); - - @protected - ClientSecret - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - dynamic raw, - ); - - @protected - FileRef - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - dynamic raw, - ); - - @protected - SocketAddr - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - dynamic raw, - ); - - @protected - Client - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - dynamic raw, - ); - - @protected - ClientBuilder - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - dynamic raw, - ); - - @protected - ClientSecret - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - dynamic raw, - ); - - @protected - FileRef - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - dynamic raw, - ); - - @protected - PathBuf - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - dynamic raw, - ); - - @protected - SigningKey - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - dynamic raw, - ); - - @protected - SocketAddr - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - dynamic raw, - ); - - @protected - VerifyingKey - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - dynamic raw, - ); - - @protected - String dco_decode_String(dynamic raw); - - @protected - bool dco_decode_bool(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 - String? dco_decode_opt_String(dynamic raw); - - @protected - int dco_decode_u_16(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 - Client - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - SseDeserializer deserializer, - ); - - @protected - ClientBuilder - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - SseDeserializer deserializer, - ); - - @protected - ClientSecret - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - SseDeserializer deserializer, - ); - - @protected - FileRef - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - SseDeserializer deserializer, - ); - - @protected - PathBuf - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - SseDeserializer deserializer, - ); - - @protected - SigningKey - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SseDeserializer deserializer, - ); - - @protected - SocketAddr - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SseDeserializer deserializer, - ); - - @protected - VerifyingKey - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - SseDeserializer deserializer, - ); - - @protected - ClientBuilder - sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - SseDeserializer deserializer, - ); - - @protected - Client - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - SseDeserializer deserializer, - ); - - @protected - ClientSecret - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - SseDeserializer deserializer, - ); - - @protected - FileRef - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - SseDeserializer deserializer, - ); - - @protected - SocketAddr - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SseDeserializer deserializer, - ); - - @protected - Client - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - SseDeserializer deserializer, - ); - - @protected - ClientBuilder - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - SseDeserializer deserializer, - ); - - @protected - ClientSecret - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - SseDeserializer deserializer, - ); - - @protected - FileRef - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - SseDeserializer deserializer, - ); - - @protected - PathBuf - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - SseDeserializer deserializer, - ); - - @protected - SigningKey - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SseDeserializer deserializer, - ); - - @protected - SocketAddr - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SseDeserializer deserializer, - ); - - @protected - VerifyingKey - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - SseDeserializer deserializer, - ); - - @protected - String sse_decode_String(SseDeserializer deserializer); - - @protected - bool sse_decode_bool(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 - String? sse_decode_opt_String(SseDeserializer deserializer); - - @protected - int sse_decode_u_16(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 - int sse_decode_i_32(SseDeserializer deserializer); - - @protected - void sse_encode_AnyhowException( - AnyhowException self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - Client self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ClientBuilder self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - PathBuf self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SigningKey self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SocketAddr self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - VerifyingKey self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ClientBuilder self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - Client self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SocketAddr self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - Client self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ClientBuilder self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - PathBuf self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SigningKey self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SocketAddr self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - VerifyingKey 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_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_opt_String(String? self, SseSerializer serializer); - - @protected - void sse_encode_u_16(int 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); - - @protected - void sse_encode_i_32(int self, SseSerializer serializer); -} - -// Section: wire_class - -class RustLibWire implements BaseWire { - factory RustLibWire.fromExternalLibrary(ExternalLibrary lib) => - RustLibWire(lib.ffiDynamicLibrary); - - /// Holds the symbol lookup function. - final ffi.Pointer Function(String symbolName) - _lookup; - - /// The symbols are looked up in [dynamicLibrary]. - RustLibWire(ffi.DynamicLibrary dynamicLibrary) - : _lookup = dynamicLibrary.lookup; - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - ffi.Pointer ptr, - ) { - return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - ptr, - ); - } - - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient', - ); - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient = - _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr - .asFunction)>(); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - ffi.Pointer ptr, - ) { - return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - ptr, - ); - } - - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient', - ); - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient = - _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr - .asFunction)>(); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ffi.Pointer ptr, - ) { - return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ptr, - ); - } - - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder', - ); - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder = - _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr - .asFunction)>(); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ffi.Pointer ptr, - ) { - return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ptr, - ); - } - - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder', - ); - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder = - _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr - .asFunction)>(); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ffi.Pointer ptr, - ) { - return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ptr, - ); - } - - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret', - ); - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret = - _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr - .asFunction)>(); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ffi.Pointer ptr, - ) { - return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ptr, - ); - } - - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret', - ); - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret = - _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr - .asFunction)>(); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - ffi.Pointer ptr, - ) { - return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - ptr, - ); - } - - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef', - ); - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef = - _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr - .asFunction)>(); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - ffi.Pointer ptr, - ) { - return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - ptr, - ); - } - - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef', - ); - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef = - _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr - .asFunction)>(); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - ffi.Pointer ptr, - ) { - return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - ptr, - ); - } - - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf', - ); - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf = - _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr - .asFunction)>(); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - ffi.Pointer ptr, - ) { - return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - ptr, - ); - } - - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf', - ); - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf = - _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr - .asFunction)>(); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - ffi.Pointer ptr, - ) { - return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - ptr, - ); - } - - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey', - ); - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey = - _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr - .asFunction)>(); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - ffi.Pointer ptr, - ) { - return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - ptr, - ); - } - - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey', - ); - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey = - _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr - .asFunction)>(); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - ffi.Pointer ptr, - ) { - return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - ptr, - ); - } - - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr', - ); - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr = - _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr - .asFunction)>(); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - ffi.Pointer ptr, - ) { - return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - ptr, - ); - } - - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr', - ); - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr = - _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr - .asFunction)>(); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - ffi.Pointer ptr, - ) { - return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - ptr, - ); - } - - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey', - ); - late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey = - _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr - .asFunction)>(); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - ffi.Pointer ptr, - ) { - return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - ptr, - ); - } - - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr = - _lookup)>>( - 'frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey', - ); - late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey = - _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr - .asFunction)>(); -} diff --git a/lib/core/rust/frb_generated.web.dart b/lib/core/rust/frb_generated.web.dart deleted file mode 100644 index 883d2d18..00000000 --- a/lib/core/rust/frb_generated.web.dart +++ /dev/null @@ -1,779 +0,0 @@ -// This file is automatically generated, so please do not edit it. -// @generated by `flutter_rust_bridge`@ 2.11.1. - -// 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 - -// Static analysis wrongly picks the IO variant, thus ignore this -// ignore_for_file: argument_type_not_assignable - -import 'api/simple.dart'; -import 'dart:async'; -import 'dart:convert'; -import 'frb_generated.dart'; -import 'lib.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; -import 'third_party/zoe_client/client.dart'; -import 'third_party/zoe_client/frb_api.dart'; - -abstract class RustLibApiImplPlatform extends BaseApiImpl { - RustLibApiImplPlatform({ - required super.handler, - required super.wire, - required super.generalizedFrbRustBinding, - required super.portManager, - }); - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_ClientPtr => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_ClientBuilderPtr => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_ClientSecretPtr => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_FileRefPtr => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_PathBufPtr => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_SigningKeyPtr => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_SocketAddrPtr => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr; - - CrossPlatformFinalizerArg - get rust_arc_decrement_strong_count_VerifyingKeyPtr => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey; - - @protected - AnyhowException dco_decode_AnyhowException(dynamic raw); - - @protected - Client - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - dynamic raw, - ); - - @protected - ClientBuilder - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - dynamic raw, - ); - - @protected - ClientSecret - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - dynamic raw, - ); - - @protected - FileRef - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - dynamic raw, - ); - - @protected - PathBuf - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - dynamic raw, - ); - - @protected - SigningKey - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - dynamic raw, - ); - - @protected - SocketAddr - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - dynamic raw, - ); - - @protected - VerifyingKey - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - dynamic raw, - ); - - @protected - ClientBuilder - dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - dynamic raw, - ); - - @protected - Client - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - dynamic raw, - ); - - @protected - ClientSecret - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - dynamic raw, - ); - - @protected - FileRef - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - dynamic raw, - ); - - @protected - SocketAddr - dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - dynamic raw, - ); - - @protected - Client - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - dynamic raw, - ); - - @protected - ClientBuilder - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - dynamic raw, - ); - - @protected - ClientSecret - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - dynamic raw, - ); - - @protected - FileRef - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - dynamic raw, - ); - - @protected - PathBuf - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - dynamic raw, - ); - - @protected - SigningKey - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - dynamic raw, - ); - - @protected - SocketAddr - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - dynamic raw, - ); - - @protected - VerifyingKey - dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - dynamic raw, - ); - - @protected - String dco_decode_String(dynamic raw); - - @protected - bool dco_decode_bool(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 - String? dco_decode_opt_String(dynamic raw); - - @protected - int dco_decode_u_16(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 - Client - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - SseDeserializer deserializer, - ); - - @protected - ClientBuilder - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - SseDeserializer deserializer, - ); - - @protected - ClientSecret - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - SseDeserializer deserializer, - ); - - @protected - FileRef - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - SseDeserializer deserializer, - ); - - @protected - PathBuf - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - SseDeserializer deserializer, - ); - - @protected - SigningKey - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SseDeserializer deserializer, - ); - - @protected - SocketAddr - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SseDeserializer deserializer, - ); - - @protected - VerifyingKey - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - SseDeserializer deserializer, - ); - - @protected - ClientBuilder - sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - SseDeserializer deserializer, - ); - - @protected - Client - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - SseDeserializer deserializer, - ); - - @protected - ClientSecret - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - SseDeserializer deserializer, - ); - - @protected - FileRef - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - SseDeserializer deserializer, - ); - - @protected - SocketAddr - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SseDeserializer deserializer, - ); - - @protected - Client - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - SseDeserializer deserializer, - ); - - @protected - ClientBuilder - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - SseDeserializer deserializer, - ); - - @protected - ClientSecret - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - SseDeserializer deserializer, - ); - - @protected - FileRef - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - SseDeserializer deserializer, - ); - - @protected - PathBuf - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - SseDeserializer deserializer, - ); - - @protected - SigningKey - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SseDeserializer deserializer, - ); - - @protected - SocketAddr - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SseDeserializer deserializer, - ); - - @protected - VerifyingKey - sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - SseDeserializer deserializer, - ); - - @protected - String sse_decode_String(SseDeserializer deserializer); - - @protected - bool sse_decode_bool(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 - String? sse_decode_opt_String(SseDeserializer deserializer); - - @protected - int sse_decode_u_16(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 - int sse_decode_i_32(SseDeserializer deserializer); - - @protected - void sse_encode_AnyhowException( - AnyhowException self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - Client self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ClientBuilder self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - PathBuf self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SigningKey self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SocketAddr self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - VerifyingKey self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ClientBuilder self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - Client self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SocketAddr self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - Client self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ClientBuilder self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - PathBuf self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - SigningKey self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - SocketAddr self, - SseSerializer serializer, - ); - - @protected - void - sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - VerifyingKey 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_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_opt_String(String? self, SseSerializer serializer); - - @protected - void sse_encode_u_16(int 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); - - @protected - void sse_encode_i_32(int self, SseSerializer serializer); -} - -// Section: wire_class - -class RustLibWire implements BaseWire { - RustLibWire.fromExternalLibrary(ExternalLibrary lib); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - ptr, - ); - - void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - int ptr, - ) => wasmModule - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - ptr, - ); - - void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - int ptr, - ) => wasmModule - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - ptr, - ); -} - -@JS('wasm_bindgen') -external RustLibWasmModule get wasmModule; - -@JS() -@anonymous -extension type RustLibWasmModule._(JSObject _) implements JSObject { - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - int ptr, - ); - - external void - rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - int ptr, - ); - - external void - rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - int ptr, - ); -} diff --git a/lib/core/rust/lib.dart b/lib/core/rust/lib.dart deleted file mode 100644 index 64eaf406..00000000 --- a/lib/core/rust/lib.dart +++ /dev/null @@ -1,10 +0,0 @@ -// 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'; - -// Rust type: RustOpaqueMoi> -abstract class SigningKey implements RustOpaqueInterface {} diff --git a/lib/core/rust/third_party/zoe_client/client.dart b/lib/core/rust/third_party/zoe_client/client.dart deleted file mode 100644 index d9c11cf1..00000000 --- a/lib/core/rust/third_party/zoe_client/client.dart +++ /dev/null @@ -1,166 +0,0 @@ -// 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 '../../lib.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - -// These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `ClientInner` -// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `clone`, `try_from` -// These functions are ignored (category: IgnoreBecauseExplicitAttribute): `blob_client`, `signing_key` - -// Rust type: RustOpaqueMoi> -abstract class Client implements RustOpaqueInterface { - /// Create a new ClientBuilder for constructing a Client - static Future builder() => - RustLib.instance.api.zoeClientClientClientBuilder(); - - /// Check if a file exists in storage - /// - /// # Arguments - /// - /// * `stored_info` - Metadata from when the file was stored - /// - /// # Returns - /// - /// `true` if the file exists in storage, `false` otherwise - Future hasFile({required FileRef storedInfo}); - - /// Retrieve a file from storage and save it to disk - /// - /// This method: - /// 1. Retrieves the encrypted data from blob storage using the FileRef - /// 2. Decrypts the content - /// 3. Writes the decrypted content to the specified path - /// - /// # Arguments - /// - /// * `file_ref` - Metadata for the file to retrieve - /// * `output_path` - Path where the decrypted file should be saved - /// - /// # Errors - /// - /// Returns an error if: - /// - The file cannot be found in storage - /// - Decryption fails - /// - Writing to disk fails - Future retrieveFile({ - required FileRef fileRef, - required PathBuf outputPath, - }); - - /// Retrieve a file from storage as bytes - /// - /// This method: - /// 1. Retrieves the encrypted data from blob storage using the FileRef - /// 2. Decrypts the content - /// 3. Returns the decrypted content as bytes - /// - /// # Arguments - /// - /// * `file_ref` - Metadata for the file to retrieve - /// - /// # Returns - /// - /// The decrypted file content as `Vec` - /// - /// # Errors - /// - /// Returns an error if: - /// - The file cannot be found in storage - /// - Decryption fails - Future retrieveFileBytes({required FileRef fileRef}); - - /// Store raw data (not from a file) with encryption and blob storage - /// - /// This method allows storing arbitrary data without reading from disk. - /// - /// # Arguments - /// - /// * `data` - The raw data to store - /// * `reference_name` - A reference name for the data (used in metadata) - /// * `content_type` - Optional content type for metadata - /// - /// # Returns - /// - /// `FileRef` containing the blob hash, encryption info, and metadata - Future storeData({ - required List data, - required String referenceName, - String? contentType, - }); - - /// Store a file by reading from disk, encrypting, and storing in blob storage - /// - /// This method: - /// 1. Reads the file from the provided path - /// 2. Encrypts the content using convergent encryption - /// 3. Stores the encrypted data in the blob store - /// 4. Returns metadata needed to retrieve the file later - /// - /// # Arguments - /// - /// * `file_path` - Path to the file to store - /// - /// # Returns - /// - /// A `FileRef` containing the metadata needed to retrieve the file - /// - /// # Errors - /// - /// Returns an error if: - /// - The file cannot be read - /// - Encryption fails - /// - Blob storage operation fails - Future storeFile({required PathBuf filePath}); -} - -// Rust type: RustOpaqueMoi> -abstract class ClientBuilder implements RustOpaqueInterface { - Future build(); - - Future clientSecret({required ClientSecret secret}); - - static Future default_() => - RustLib.instance.api.zoeClientClientClientBuilderDefault(); - - Future mediaStoragePath({required String mediaStoragePath}); - - Future serverInfo({ - required VerifyingKey serverPublicKey, - required SocketAddr serverAddr, - }); -} - -// Rust type: RustOpaqueMoi> -abstract class ClientSecret implements RustOpaqueInterface { - Future asHex(); - - static Future fromHex({required String value}) => - RustLib.instance.api.zoeClientClientClientSecretFromHex(value: value); - - // HINT: Make it `#[frb(sync)]` to let it become the default constructor of Dart class. - static Future newInstance({ - required SigningKey signingKey, - required VerifyingKey serverPublicKey, - required SocketAddr serverAddr, - }) => RustLib.instance.api.zoeClientClientClientSecretNew( - signingKey: signingKey, - serverPublicKey: serverPublicKey, - serverAddr: serverAddr, - ); -} - -// Rust type: RustOpaqueMoi> -abstract class FileRef implements RustOpaqueInterface {} - -// Rust type: RustOpaqueMoi> -abstract class PathBuf implements RustOpaqueInterface {} - -// Rust type: RustOpaqueMoi> -abstract class SocketAddr implements RustOpaqueInterface {} - -// Rust type: RustOpaqueMoi> -abstract class VerifyingKey implements RustOpaqueInterface {} diff --git a/lib/core/rust/third_party/zoe_client/frb_api.dart b/lib/core/rust/third_party/zoe_client/frb_api.dart deleted file mode 100644 index 54e4047c..00000000 --- a/lib/core/rust/third_party/zoe_client/frb_api.dart +++ /dev/null @@ -1,34 +0,0 @@ -// 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 'client.dart'; -import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; - -Future createSocketAddr({required String ip, required int port}) => - RustLib.instance.api.zoeClientFrbApiCreateSocketAddr(ip: ip, port: port); - -Future socketAddrToString({required SocketAddr addr}) => - RustLib.instance.api.zoeClientFrbApiSocketAddrToString(addr: addr); - -Future socketAddrIp({required SocketAddr addr}) => - RustLib.instance.api.zoeClientFrbApiSocketAddrIp(addr: addr); - -Future socketAddrPort({required SocketAddr addr}) => - RustLib.instance.api.zoeClientFrbApiSocketAddrPort(addr: addr); - -Future createSigningKeyRandom() => - RustLib.instance.api.zoeClientFrbApiCreateSigningKeyRandom(); - -Future signingKeyFromHex({required String hex}) => - RustLib.instance.api.zoeClientFrbApiSigningKeyFromHex(hex: hex); - -Future signingKeyToVerifyingKey({required String signingKeyHex}) => - RustLib.instance.api.zoeClientFrbApiSigningKeyToVerifyingKey( - signingKeyHex: signingKeyHex, - ); - -Future verifyingKeyFromHex({required String hex}) => - RustLib.instance.api.zoeClientFrbApiVerifyingKeyFromHex(hex: hex); diff --git a/lib/main.dart b/lib/main.dart index c35d2373..3e550c93 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -6,15 +6,15 @@ import 'package:zoe/core/preference_service/preferences_service.dart'; import 'package:zoe/features/settings/providers/local_provider.dart'; import 'package:zoe/features/settings/providers/theme_provider.dart'; import 'package:zoe/l10n/generated/l10n.dart'; +import 'package:zoe_native/zoe_native.dart'; import 'core/routing/app_router.dart'; -import 'core/rust/frb_generated.dart'; import 'core/theme/app_theme.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); await RustLib.init(); await PreferencesService().init(); - + runApp(const ProviderScope(child: MyApp())); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 6b6fb270..949ca595 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -10,7 +10,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST - rust_lib_zoe + zoe_native ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/rust_builder/.gitignore b/packages/zoe_native/.gitignore similarity index 88% rename from rust_builder/.gitignore rename to packages/zoe_native/.gitignore index ac5aa989..b9d7f25b 100644 --- a/rust_builder/.gitignore +++ b/packages/zoe_native/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related @@ -26,4 +28,6 @@ migrate_working_dir/ /pubspec.lock **/doc/api/ .dart_tool/ -build/ +.flutter-plugins-dependencies +/build/ +/coverage/ diff --git a/packages/zoe_native/.metadata b/packages/zoe_native/.metadata new file mode 100644 index 00000000..113a4194 --- /dev/null +++ b/packages/zoe_native/.metadata @@ -0,0 +1,42 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "05db9689081f091050f01aed79f04dce0c750154" + channel: "stable" + +project_type: plugin_ffi + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 05db9689081f091050f01aed79f04dce0c750154 + base_revision: 05db9689081f091050f01aed79f04dce0c750154 + - platform: android + create_revision: 05db9689081f091050f01aed79f04dce0c750154 + base_revision: 05db9689081f091050f01aed79f04dce0c750154 + - platform: ios + create_revision: 05db9689081f091050f01aed79f04dce0c750154 + base_revision: 05db9689081f091050f01aed79f04dce0c750154 + - platform: linux + create_revision: 05db9689081f091050f01aed79f04dce0c750154 + base_revision: 05db9689081f091050f01aed79f04dce0c750154 + - platform: macos + create_revision: 05db9689081f091050f01aed79f04dce0c750154 + base_revision: 05db9689081f091050f01aed79f04dce0c750154 + - platform: windows + create_revision: 05db9689081f091050f01aed79f04dce0c750154 + base_revision: 05db9689081f091050f01aed79f04dce0c750154 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/zoe_native/CHANGELOG.md b/packages/zoe_native/CHANGELOG.md new file mode 100644 index 00000000..41cc7d81 --- /dev/null +++ b/packages/zoe_native/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/packages/zoe_native/LICENSE b/packages/zoe_native/LICENSE new file mode 100644 index 00000000..ba75c69f --- /dev/null +++ b/packages/zoe_native/LICENSE @@ -0,0 +1 @@ +TODO: Add your license here. diff --git a/packages/zoe_native/README.md b/packages/zoe_native/README.md new file mode 100644 index 00000000..f12ec79b --- /dev/null +++ b/packages/zoe_native/README.md @@ -0,0 +1,92 @@ +# zoe_native + +A new Flutter FFI plugin project. + +## Getting Started + +This project is a starting point for a Flutter +[FFI plugin](https://flutter.dev/to/ffi-package), +a specialized package that includes native code directly invoked with Dart FFI. + +## Project structure + +This template uses the following structure: + +* `src`: Contains the native source code, and a CmakeFile.txt file for building + that source code into a dynamic library. + +* `lib`: Contains the Dart code that defines the API of the plugin, and which + calls into the native code using `dart:ffi`. + +* platform folders (`android`, `ios`, `windows`, etc.): Contains the build files + for building and bundling the native code library with the platform application. + +## Building and bundling native code + +The `pubspec.yaml` specifies FFI plugins as follows: + +```yaml + plugin: + platforms: + some_platform: + ffiPlugin: true +``` + +This configuration invokes the native build for the various target platforms +and bundles the binaries in Flutter applications using these FFI plugins. + +This can be combined with dartPluginClass, such as when FFI is used for the +implementation of one platform in a federated plugin: + +```yaml + plugin: + implements: some_other_plugin + platforms: + some_platform: + dartPluginClass: SomeClass + ffiPlugin: true +``` + +A plugin can have both FFI and method channels: + +```yaml + plugin: + platforms: + some_platform: + pluginClass: SomeName + ffiPlugin: true +``` + +The native build systems that are invoked by FFI (and method channel) plugins are: + +* For Android: Gradle, which invokes the Android NDK for native builds. + * See the documentation in android/build.gradle. +* For iOS and MacOS: Xcode, via CocoaPods. + * See the documentation in ios/zoe_native.podspec. + * See the documentation in macos/zoe_native.podspec. +* For Linux and Windows: CMake. + * See the documentation in linux/CMakeLists.txt. + * See the documentation in windows/CMakeLists.txt. + +## Binding to native code + +To use the native code, bindings in Dart are needed. +To avoid writing these by hand, they are generated from the header file +(`src/zoe_native.h`) by `package:ffigen`. +Regenerate the bindings by running `dart run ffigen --config ffigen.yaml`. + +## Invoking native code + +Very short-running native functions can be directly invoked from any isolate. +For example, see `sum` in `lib/zoe_native.dart`. + +Longer-running functions should be invoked on a helper isolate to avoid +dropping frames in Flutter applications. +For example, see `sumAsync` in `lib/zoe_native.dart`. + +## Flutter help + +For help getting started with Flutter, view our +[online documentation](https://docs.flutter.dev), which offers tutorials, +samples, guidance on mobile development, and a full API reference. + diff --git a/packages/zoe_native/analysis_options.yaml b/packages/zoe_native/analysis_options.yaml new file mode 100644 index 00000000..a5744c1c --- /dev/null +++ b/packages/zoe_native/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/rust_builder/android/.gitignore b/packages/zoe_native/android/.gitignore similarity index 100% rename from rust_builder/android/.gitignore rename to packages/zoe_native/android/.gitignore diff --git a/rust_builder/android/build.gradle b/packages/zoe_native/android/build.gradle similarity index 88% rename from rust_builder/android/build.gradle rename to packages/zoe_native/android/build.gradle index b4ff071a..b6eb4f4c 100644 --- a/rust_builder/android/build.gradle +++ b/packages/zoe_native/android/build.gradle @@ -1,6 +1,6 @@ // The Android Gradle Plugin builds the native code with the Android NDK. -group 'com.flutter_rust_bridge.rust_lib_zoe' +group 'com.flutter_rust_bridge.zoe_native' version '1.0' buildscript { @@ -26,7 +26,7 @@ apply plugin: 'com.android.library' android { if (project.android.hasProperty("namespace")) { - namespace 'com.flutter_rust_bridge.rust_lib_zoe' + namespace 'com.flutter_rust_bridge.zoe_native' } // Bumping the plugin compileSdkVersion requires all clients of this plugin @@ -51,6 +51,6 @@ android { apply from: "../cargokit/gradle/plugin.gradle" cargokit { - manifestDir = "../../rust" - libname = "rust_lib_zoe" + manifestDir = "../rust" + libname = "zoe_native" } diff --git a/packages/zoe_native/android/settings.gradle b/packages/zoe_native/android/settings.gradle new file mode 100644 index 00000000..f143999b --- /dev/null +++ b/packages/zoe_native/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'zoe_native' diff --git a/rust_builder/android/src/main/AndroidManifest.xml b/packages/zoe_native/android/src/main/AndroidManifest.xml similarity index 60% rename from rust_builder/android/src/main/AndroidManifest.xml rename to packages/zoe_native/android/src/main/AndroidManifest.xml index 524f8436..e8679361 100644 --- a/rust_builder/android/src/main/AndroidManifest.xml +++ b/packages/zoe_native/android/src/main/AndroidManifest.xml @@ -1,3 +1,3 @@ + package="com.flutter_rust_bridge.zoe_native"> diff --git a/rust_builder/cargokit/.gitignore b/packages/zoe_native/cargokit/.gitignore similarity index 100% rename from rust_builder/cargokit/.gitignore rename to packages/zoe_native/cargokit/.gitignore diff --git a/rust_builder/cargokit/LICENSE b/packages/zoe_native/cargokit/LICENSE similarity index 100% rename from rust_builder/cargokit/LICENSE rename to packages/zoe_native/cargokit/LICENSE diff --git a/rust_builder/cargokit/README b/packages/zoe_native/cargokit/README similarity index 100% rename from rust_builder/cargokit/README rename to packages/zoe_native/cargokit/README diff --git a/rust_builder/cargokit/build_pod.sh b/packages/zoe_native/cargokit/build_pod.sh similarity index 100% rename from rust_builder/cargokit/build_pod.sh rename to packages/zoe_native/cargokit/build_pod.sh diff --git a/rust_builder/cargokit/build_tool/README.md b/packages/zoe_native/cargokit/build_tool/README.md similarity index 100% rename from rust_builder/cargokit/build_tool/README.md rename to packages/zoe_native/cargokit/build_tool/README.md diff --git a/rust_builder/cargokit/build_tool/analysis_options.yaml b/packages/zoe_native/cargokit/build_tool/analysis_options.yaml similarity index 100% rename from rust_builder/cargokit/build_tool/analysis_options.yaml rename to packages/zoe_native/cargokit/build_tool/analysis_options.yaml diff --git a/rust_builder/cargokit/build_tool/bin/build_tool.dart b/packages/zoe_native/cargokit/build_tool/bin/build_tool.dart similarity index 100% rename from rust_builder/cargokit/build_tool/bin/build_tool.dart rename to packages/zoe_native/cargokit/build_tool/bin/build_tool.dart diff --git a/rust_builder/cargokit/build_tool/lib/build_tool.dart b/packages/zoe_native/cargokit/build_tool/lib/build_tool.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/build_tool.dart rename to packages/zoe_native/cargokit/build_tool/lib/build_tool.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/android_environment.dart b/packages/zoe_native/cargokit/build_tool/lib/src/android_environment.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/android_environment.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/android_environment.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/artifacts_provider.dart b/packages/zoe_native/cargokit/build_tool/lib/src/artifacts_provider.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/artifacts_provider.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/artifacts_provider.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/build_cmake.dart b/packages/zoe_native/cargokit/build_tool/lib/src/build_cmake.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/build_cmake.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/build_cmake.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/build_gradle.dart b/packages/zoe_native/cargokit/build_tool/lib/src/build_gradle.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/build_gradle.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/build_gradle.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/build_pod.dart b/packages/zoe_native/cargokit/build_tool/lib/src/build_pod.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/build_pod.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/build_pod.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/build_tool.dart b/packages/zoe_native/cargokit/build_tool/lib/src/build_tool.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/build_tool.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/build_tool.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/builder.dart b/packages/zoe_native/cargokit/build_tool/lib/src/builder.dart similarity index 98% rename from rust_builder/cargokit/build_tool/lib/src/builder.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/builder.dart index 6fe341f6..84c46e4f 100644 --- a/rust_builder/cargokit/build_tool/lib/src/builder.dart +++ b/packages/zoe_native/cargokit/build_tool/lib/src/builder.dart @@ -133,7 +133,7 @@ class RustBuilder { CargoBuildOptions? get _buildOptions => environment.crateOptions.cargo[environment.configuration]; - String get _toolchain => _buildOptions?.toolchain.name ?? 'nightly'; + String get _toolchain => _buildOptions?.toolchain.name ?? 'stable'; /// Returns the path of directory containing build artifacts. Future build() async { diff --git a/rust_builder/cargokit/build_tool/lib/src/cargo.dart b/packages/zoe_native/cargokit/build_tool/lib/src/cargo.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/cargo.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/cargo.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/crate_hash.dart b/packages/zoe_native/cargokit/build_tool/lib/src/crate_hash.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/crate_hash.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/crate_hash.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/environment.dart b/packages/zoe_native/cargokit/build_tool/lib/src/environment.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/environment.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/environment.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/logging.dart b/packages/zoe_native/cargokit/build_tool/lib/src/logging.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/logging.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/logging.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/options.dart b/packages/zoe_native/cargokit/build_tool/lib/src/options.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/options.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/options.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/precompile_binaries.dart b/packages/zoe_native/cargokit/build_tool/lib/src/precompile_binaries.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/precompile_binaries.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/precompile_binaries.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/rustup.dart b/packages/zoe_native/cargokit/build_tool/lib/src/rustup.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/rustup.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/rustup.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/target.dart b/packages/zoe_native/cargokit/build_tool/lib/src/target.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/target.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/target.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/util.dart b/packages/zoe_native/cargokit/build_tool/lib/src/util.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/util.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/util.dart diff --git a/rust_builder/cargokit/build_tool/lib/src/verify_binaries.dart b/packages/zoe_native/cargokit/build_tool/lib/src/verify_binaries.dart similarity index 100% rename from rust_builder/cargokit/build_tool/lib/src/verify_binaries.dart rename to packages/zoe_native/cargokit/build_tool/lib/src/verify_binaries.dart diff --git a/rust_builder/cargokit/build_tool/pubspec.lock b/packages/zoe_native/cargokit/build_tool/pubspec.lock similarity index 100% rename from rust_builder/cargokit/build_tool/pubspec.lock rename to packages/zoe_native/cargokit/build_tool/pubspec.lock diff --git a/rust_builder/cargokit/build_tool/pubspec.yaml b/packages/zoe_native/cargokit/build_tool/pubspec.yaml similarity index 100% rename from rust_builder/cargokit/build_tool/pubspec.yaml rename to packages/zoe_native/cargokit/build_tool/pubspec.yaml diff --git a/rust_builder/cargokit/cmake/cargokit.cmake b/packages/zoe_native/cargokit/cmake/cargokit.cmake similarity index 100% rename from rust_builder/cargokit/cmake/cargokit.cmake rename to packages/zoe_native/cargokit/cmake/cargokit.cmake diff --git a/rust_builder/cargokit/cmake/resolve_symlinks.ps1 b/packages/zoe_native/cargokit/cmake/resolve_symlinks.ps1 similarity index 100% rename from rust_builder/cargokit/cmake/resolve_symlinks.ps1 rename to packages/zoe_native/cargokit/cmake/resolve_symlinks.ps1 diff --git a/rust_builder/cargokit/gradle/plugin.gradle b/packages/zoe_native/cargokit/gradle/plugin.gradle similarity index 100% rename from rust_builder/cargokit/gradle/plugin.gradle rename to packages/zoe_native/cargokit/gradle/plugin.gradle diff --git a/rust_builder/cargokit/run_build_tool.cmd b/packages/zoe_native/cargokit/run_build_tool.cmd similarity index 100% rename from rust_builder/cargokit/run_build_tool.cmd rename to packages/zoe_native/cargokit/run_build_tool.cmd diff --git a/rust_builder/cargokit/run_build_tool.sh b/packages/zoe_native/cargokit/run_build_tool.sh similarity index 100% rename from rust_builder/cargokit/run_build_tool.sh rename to packages/zoe_native/cargokit/run_build_tool.sh diff --git a/packages/zoe_native/flutter_rust_bridge.yaml b/packages/zoe_native/flutter_rust_bridge.yaml new file mode 100644 index 00000000..e15ed916 --- /dev/null +++ b/packages/zoe_native/flutter_rust_bridge.yaml @@ -0,0 +1,3 @@ +rust_input: crate::api +rust_root: rust/ +dart_output: lib/src/rust \ No newline at end of file diff --git a/rust_builder/ios/Classes/dummy_file.c b/packages/zoe_native/ios/Classes/dummy_file.c similarity index 100% rename from rust_builder/ios/Classes/dummy_file.c rename to packages/zoe_native/ios/Classes/dummy_file.c diff --git a/rust_builder/ios/rust_lib_zoe.podspec b/packages/zoe_native/ios/zoe_native.podspec similarity index 83% rename from rust_builder/ios/rust_lib_zoe.podspec rename to packages/zoe_native/ios/zoe_native.podspec index 2c16d754..355c09d5 100644 --- a/rust_builder/ios/rust_lib_zoe.podspec +++ b/packages/zoe_native/ios/zoe_native.podspec @@ -1,9 +1,9 @@ # # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint rust_lib_zoe.podspec` to validate before publishing. +# Run `pod lib lint zoe_native.podspec` to validate before publishing. # Pod::Spec.new do |s| - s.name = 'rust_lib_zoe' + s.name = 'zoe_native' s.version = '0.0.1' s.summary = 'A new Flutter FFI plugin project.' s.description = <<-DESC @@ -29,17 +29,17 @@ A new Flutter FFI plugin project. s.script_phase = { :name => 'Build Rust library', # First argument is relative path to the `rust` folder, second is name of rust library - :script => 'sh "$PODS_TARGET_SRCROOT/../cargokit/build_pod.sh" ../../rust rust_lib_zoe', + :script => 'sh "$PODS_TARGET_SRCROOT/../cargokit/build_pod.sh" ../rust zoe_native', :execution_position => :before_compile, :input_files => ['${BUILT_PRODUCTS_DIR}/cargokit_phony'], # Let XCode know that the static library referenced in -force_load below is # created by this build step. - :output_files => ["${BUILT_PRODUCTS_DIR}/librust_lib_zoe.a"], + :output_files => ["${BUILT_PRODUCTS_DIR}/libzoe_native.a"], } s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', # Flutter.framework does not contain a i386 slice. 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', - 'OTHER_LDFLAGS' => '-force_load ${BUILT_PRODUCTS_DIR}/librust_lib_zoe.a -lc++ -framework SystemConfiguration', + 'OTHER_LDFLAGS' => '-force_load ${BUILT_PRODUCTS_DIR}/libzoe_native.a', } end \ No newline at end of file diff --git a/lib/core/rust/api/simple.dart b/packages/zoe_native/lib/src/rust/api/simple.dart similarity index 100% rename from lib/core/rust/api/simple.dart rename to packages/zoe_native/lib/src/rust/api/simple.dart diff --git a/packages/zoe_native/lib/src/rust/frb_generated.dart b/packages/zoe_native/lib/src/rust/frb_generated.dart new file mode 100644 index 00000000..72b7ec39 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/frb_generated.dart @@ -0,0 +1,242 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// 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/simple.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'frb_generated.dart'; +import 'frb_generated.io.dart' + if (dart.library.js_interop) 'frb_generated.web.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +/// Main entrypoint of the Rust API +class RustLib extends BaseEntrypoint { + @internal + static final instance = RustLib._(); + + RustLib._(); + + /// Initialize flutter_rust_bridge + static Future init({ + RustLibApi? api, + BaseHandler? handler, + ExternalLibrary? externalLibrary, + bool forceSameCodegenVersion = true, + }) async { + await instance.initImpl( + api: api, + handler: handler, + externalLibrary: externalLibrary, + forceSameCodegenVersion: forceSameCodegenVersion, + ); + } + + /// Initialize flutter_rust_bridge in mock mode. + /// No libraries for FFI are loaded. + static void initMock({required RustLibApi api}) { + instance.initMockImpl(api: api); + } + + /// Dispose flutter_rust_bridge + /// + /// The call to this function is optional, since flutter_rust_bridge (and everything else) + /// is automatically disposed when the app stops. + static void dispose() => instance.disposeImpl(); + + @override + ApiImplConstructor get apiImplConstructor => + RustLibApiImpl.new; + + @override + WireConstructor get wireConstructor => + RustLibWire.fromExternalLibrary; + + @override + Future executeRustInitializers() async { + await api.crateApiSimpleInitApp(); + } + + @override + ExternalLibraryLoaderConfig get defaultExternalLibraryLoaderConfig => + kDefaultExternalLibraryLoaderConfig; + + @override + String get codegenVersion => '2.11.1'; + + @override + int get rustContentHash => -1918914929; + + static const kDefaultExternalLibraryLoaderConfig = + ExternalLibraryLoaderConfig( + stem: 'zoe_native', + ioDirectory: 'rust/target/release/', + webPrefix: 'pkg/', + ); +} + +abstract class RustLibApi extends BaseApi { + String crateApiSimpleGreet({required String name}); + + Future crateApiSimpleInitApp(); +} + +class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { + RustLibApiImpl({ + required super.handler, + required super.wire, + required super.generalizedFrbRustBinding, + required super.portManager, + }); + + @override + String crateApiSimpleGreet({required String name}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(name, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 1)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kCrateApiSimpleGreetConstMeta, + argValues: [name], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSimpleGreetConstMeta => + const TaskConstMeta(debugName: "greet", argNames: ["name"]); + + @override + Future crateApiSimpleInitApp() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 2, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiSimpleInitAppConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSimpleInitAppConstMeta => + const TaskConstMeta(debugName: "init_app", argNames: []); + + @protected + String dco_decode_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as String; + } + + @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 + 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 + 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 + 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 + 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 + int sse_decode_i_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getInt32(); + } + + @protected + bool sse_decode_bool(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint8() != 0; + } + + @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 + 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_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_i_32(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putInt32(self); + } + + @protected + void sse_encode_bool(bool self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint8(self ? 1 : 0); + } +} diff --git a/packages/zoe_native/lib/src/rust/frb_generated.io.dart b/packages/zoe_native/lib/src/rust/frb_generated.io.dart new file mode 100644 index 00000000..d7973515 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/frb_generated.io.dart @@ -0,0 +1,86 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// 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/simple.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'dart:ffi' as ffi; +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; + +abstract class RustLibApiImplPlatform extends BaseApiImpl { + RustLibApiImplPlatform({ + required super.handler, + required super.wire, + required super.generalizedFrbRustBinding, + required super.portManager, + }); + + @protected + String dco_decode_String(dynamic raw); + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); + + @protected + int dco_decode_u_8(dynamic raw); + + @protected + void dco_decode_unit(dynamic raw); + + @protected + String sse_decode_String(SseDeserializer deserializer); + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + int sse_decode_u_8(SseDeserializer deserializer); + + @protected + void sse_decode_unit(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(SseDeserializer deserializer); + + @protected + bool sse_decode_bool(SseDeserializer deserializer); + + @protected + void sse_encode_String(String self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List 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_i_32(int self, SseSerializer serializer); + + @protected + void sse_encode_bool(bool self, SseSerializer serializer); +} + +// Section: wire_class + +class RustLibWire implements BaseWire { + factory RustLibWire.fromExternalLibrary(ExternalLibrary lib) => + RustLibWire(lib.ffiDynamicLibrary); + + /// Holds the symbol lookup function. + final ffi.Pointer Function(String symbolName) + _lookup; + + /// The symbols are looked up in [dynamicLibrary]. + RustLibWire(ffi.DynamicLibrary dynamicLibrary) + : _lookup = dynamicLibrary.lookup; +} diff --git a/packages/zoe_native/lib/src/rust/frb_generated.web.dart b/packages/zoe_native/lib/src/rust/frb_generated.web.dart new file mode 100644 index 00000000..431eaa95 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/frb_generated.web.dart @@ -0,0 +1,86 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// 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 + +// Static analysis wrongly picks the IO variant, thus ignore this +// ignore_for_file: argument_type_not_assignable + +import 'api/simple.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; + +abstract class RustLibApiImplPlatform extends BaseApiImpl { + RustLibApiImplPlatform({ + required super.handler, + required super.wire, + required super.generalizedFrbRustBinding, + required super.portManager, + }); + + @protected + String dco_decode_String(dynamic raw); + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); + + @protected + int dco_decode_u_8(dynamic raw); + + @protected + void dco_decode_unit(dynamic raw); + + @protected + String sse_decode_String(SseDeserializer deserializer); + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + int sse_decode_u_8(SseDeserializer deserializer); + + @protected + void sse_decode_unit(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(SseDeserializer deserializer); + + @protected + bool sse_decode_bool(SseDeserializer deserializer); + + @protected + void sse_encode_String(String self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List 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_i_32(int self, SseSerializer serializer); + + @protected + void sse_encode_bool(bool self, SseSerializer serializer); +} + +// Section: wire_class + +class RustLibWire implements BaseWire { + RustLibWire.fromExternalLibrary(ExternalLibrary lib); +} + +@JS('wasm_bindgen') +external RustLibWasmModule get wasmModule; + +@JS() +@anonymous +extension type RustLibWasmModule._(JSObject _) implements JSObject {} diff --git a/packages/zoe_native/lib/src/support.dart b/packages/zoe_native/lib/src/support.dart new file mode 100644 index 00000000..e69de29b diff --git a/packages/zoe_native/lib/zoe_native.dart b/packages/zoe_native/lib/zoe_native.dart new file mode 100644 index 00000000..48a11c3b --- /dev/null +++ b/packages/zoe_native/lib/zoe_native.dart @@ -0,0 +1,5 @@ +library; + +export 'src/rust/api/simple.dart'; +export 'src/support.dart'; +export 'src/rust/frb_generated.dart' show RustLib; diff --git a/rust_builder/linux/CMakeLists.txt b/packages/zoe_native/linux/CMakeLists.txt similarity index 82% rename from rust_builder/linux/CMakeLists.txt rename to packages/zoe_native/linux/CMakeLists.txt index 13dc75a7..b60dd5ff 100644 --- a/rust_builder/linux/CMakeLists.txt +++ b/packages/zoe_native/linux/CMakeLists.txt @@ -4,16 +4,16 @@ cmake_minimum_required(VERSION 3.10) # Project-level configuration. -set(PROJECT_NAME "rust_lib_zoe") +set(PROJECT_NAME "zoe_native") project(${PROJECT_NAME} LANGUAGES CXX) include("../cargokit/cmake/cargokit.cmake") -apply_cargokit(${PROJECT_NAME} ../../rust rust_lib_zoe "") +apply_cargokit(${PROJECT_NAME} ../rust zoe_native "") # List of absolute paths to libraries that should be bundled with the plugin. # This list could contain prebuilt libraries, or libraries created by an # external build triggered from this build file. -set(rust_lib_zoe_bundled_libraries +set(zoe_native_bundled_libraries "${${PROJECT_NAME}_cargokit_lib}" PARENT_SCOPE ) diff --git a/rust_builder/macos/Classes/dummy_file.c b/packages/zoe_native/macos/Classes/dummy_file.c similarity index 100% rename from rust_builder/macos/Classes/dummy_file.c rename to packages/zoe_native/macos/Classes/dummy_file.c diff --git a/rust_builder/macos/rust_lib_zoe.podspec b/packages/zoe_native/macos/zoe_native.podspec similarity index 83% rename from rust_builder/macos/rust_lib_zoe.podspec rename to packages/zoe_native/macos/zoe_native.podspec index fab20677..1b76fb64 100644 --- a/rust_builder/macos/rust_lib_zoe.podspec +++ b/packages/zoe_native/macos/zoe_native.podspec @@ -1,9 +1,9 @@ # # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint rust_lib_zoe.podspec` to validate before publishing. +# Run `pod lib lint zoe_native.podspec` to validate before publishing. # Pod::Spec.new do |s| - s.name = 'rust_lib_zoe' + s.name = 'zoe_native' s.version = '0.0.1' s.summary = 'A new Flutter FFI plugin project.' s.description = <<-DESC @@ -28,17 +28,17 @@ A new Flutter FFI plugin project. s.script_phase = { :name => 'Build Rust library', # First argument is relative path to the `rust` folder, second is name of rust library - :script => 'sh "$PODS_TARGET_SRCROOT/../cargokit/build_pod.sh" ../../rust rust_lib_zoe', + :script => 'sh "$PODS_TARGET_SRCROOT/../cargokit/build_pod.sh" ../rust zoe_native', :execution_position => :before_compile, :input_files => ['${BUILT_PRODUCTS_DIR}/cargokit_phony'], # Let XCode know that the static library referenced in -force_load below is # created by this build step. - :output_files => ["${BUILT_PRODUCTS_DIR}/librust_lib_zoe.a"], + :output_files => ["${BUILT_PRODUCTS_DIR}/libzoe_native.a"], } s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', # Flutter.framework does not contain a i386 slice. 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', - 'OTHER_LDFLAGS' => '-force_load ${BUILT_PRODUCTS_DIR}/librust_lib_zoe.a -lc++ -framework SystemConfiguration', + 'OTHER_LDFLAGS' => '-force_load ${BUILT_PRODUCTS_DIR}/libzoe_native.a', } end \ No newline at end of file diff --git a/packages/zoe_native/pubspec.yaml b/packages/zoe_native/pubspec.yaml new file mode 100644 index 00000000..6eeb30c7 --- /dev/null +++ b/packages/zoe_native/pubspec.yaml @@ -0,0 +1,84 @@ +name: zoe_native +description: "A new Flutter FFI plugin project." +version: 0.0.1 +homepage: + +environment: + sdk: ^3.9.0 + flutter: '>=3.3.0' + +dependencies: + flutter: + sdk: flutter + flutter_rust_bridge: 2.11.1 + plugin_platform_interface: ^2.0.2 + +dev_dependencies: + ffi: ^2.1.3 + ffigen: ^13.0.0 + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + integration_test: + sdk: flutter + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + # This section identifies this Flutter project as a plugin project. + # The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.) + # which should be registered in the plugin registry. This is required for + # using method channels. + # The Android 'package' specifies package in which the registered class is. + # This is required for using method channels on Android. + # The 'ffiPlugin' specifies that native code should be built and bundled. + # This is required for using `dart:ffi`. + # All these are used by the tooling to maintain consistency when + # adding or updating assets for this project. + # + # Please refer to README.md for a detailed explanation. + plugin: + platforms: + android: + ffiPlugin: true + ios: + ffiPlugin: true + linux: + ffiPlugin: true + macos: + ffiPlugin: true + windows: + ffiPlugin: true + + # To add assets to your plugin package, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + # + # For details regarding assets in packages, see + # https://flutter.dev/to/asset-from-package + # + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # To add custom fonts to your plugin package, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts in packages, see + # https://flutter.dev/to/font-from-package diff --git a/rust/.gitignore b/packages/zoe_native/rust/.gitignore similarity index 100% rename from rust/.gitignore rename to packages/zoe_native/rust/.gitignore diff --git a/rust/Cargo.lock b/packages/zoe_native/rust/Cargo.lock similarity index 84% rename from rust/Cargo.lock rename to packages/zoe_native/rust/Cargo.lock index 174174ae..00809fe3 100644 --- a/rust/Cargo.lock +++ b/packages/zoe_native/rust/Cargo.lock @@ -4,18 +4,18 @@ version = 4 [[package]] name = "addr2line" -version = "0.24.2" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] [[package]] -name = "adler2" -version = "2.0.1" +name = "adler" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aead" @@ -53,11 +53,23 @@ dependencies = [ "subtle", ] +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -250,9 +262,9 @@ dependencies = [ [[package]] name = "async-compat" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bab94bde396a3f7b4962e396fdad640e241ed797d4d8d77fc8c237d14c58fc0" +checksum = "a1ba85bc55464dcbf728b56d97e119d673f4cf9062be330a9a26f3acf504a590" dependencies = [ "futures-core", "futures-io", @@ -261,6 +273,34 @@ dependencies = [ "tokio", ] +[[package]] +name = "async-once-cell" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a" + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "async-trait" version = "0.1.89" @@ -318,9 +358,32 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.5.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "aws-lc-rs" +version = "1.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" +dependencies = [ + "aws-lc-sys", + "zeroize", +] + +[[package]] +name = "aws-lc-sys" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" +dependencies = [ + "bindgen", + "cc", + "cmake", + "dunce", + "fs_extra", +] [[package]] name = "backon" @@ -335,17 +398,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.75" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", + "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", - "windows-targets 0.52.6", ] [[package]] @@ -412,6 +475,29 @@ dependencies = [ "serde", ] +[[package]] +name = "bindgen" +version = "0.69.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools", + "lazy_static", + "lazycell", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.106", + "which", +] + [[package]] name = "bip39" version = "2.2.0" @@ -447,9 +533,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.2" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "blake2" @@ -524,15 +610,15 @@ checksum = "832133bbabbbaa9fbdba793456a2827627a7d2b8fb96032fa1e7666d7895832b" [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bytemuck" -version = "1.23.2" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" @@ -540,6 +626,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +[[package]] +name = "byteorder-lite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + [[package]] name = "bytes" version = "1.10.1" @@ -551,10 +643,13 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.33" +version = "1.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee0f8803222ba5a7e2777dd72ca451868909b1ac410621b676adf07280e9b5f" +checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3" dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", "shlex", ] @@ -564,11 +659,20 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cfg_aliases" @@ -626,11 +730,22 @@ dependencies = [ "zeroize", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" -version = "4.5.45" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318" +checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57" dependencies = [ "clap_builder", "clap_derive", @@ -638,9 +753,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.44" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8" +checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41" dependencies = [ "anstream", "anstyle", @@ -666,20 +781,29 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" +[[package]] +name = "cmake" +version = "0.1.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" +dependencies = [ + "cc", +] + [[package]] name = "cobs" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" dependencies = [ - "thiserror 2.0.15", + "thiserror 2.0.16", ] [[package]] name = "color-backtrace" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2123a5984bd52ca861c66f66a9ab9883b27115c607f801f86c1bc2a84eb69f0f" +checksum = "e49b1973af2a47b5b44f7dd0a344598da95c872e1556b045607888784e973b91" dependencies = [ "backtrace", "btparse", @@ -760,6 +884,27 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core-models" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94950e87ea550d6d68f1993f3e7bebc8cb7235157bff84337d46195c3aa0b3f0" +dependencies = [ + "hax-lib", + "pastey", + "rand 0.9.2", +] + +[[package]] +name = "core-models" +version = "0.0.3" +source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +dependencies = [ + "hax-lib", + "pastey", + "rand 0.9.2", +] + [[package]] name = "cpufeatures" version = "0.2.17" @@ -942,6 +1087,7 @@ checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "der_derive", + "flagset", "pem-rfc7468", "zeroize", ] @@ -973,9 +1119,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" +checksum = "d630bccd429a5bb5a64b5e94f693bfc48c9f8566418fda4c494cc94f911f87cc" dependencies = [ "powerfmt", ] @@ -1070,6 +1216,12 @@ dependencies = [ "litrs", ] +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clone" version = "1.0.20" @@ -1114,6 +1266,12 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + [[package]] name = "embedded-io" version = "0.4.0" @@ -1213,22 +1371,41 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "eyeball" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93bd0ebf93d61d6332d3c09a96e97975968a44e19a64c947bde06e6baff383f" +dependencies = [ + "futures-core", + "readlock", + "readlock-tokio", + "tokio", + "tokio-util", +] + [[package]] name = "fallible-iterator" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + [[package]] name = "fastbloom" -version = "0.9.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27cea6e7f512d43b098939ff4d5a5d6fe3db07971e1d05176fe26c642d33f5b8" +checksum = "18c1ddb9231d8554c2d6bdf4cfaabf0c59251658c68b6c95cd52dd0c513a912a" dependencies = [ "getrandom 0.3.3", + "libm", "rand 0.9.2", "siphasher", - "wide", ] [[package]] @@ -1243,6 +1420,18 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" +[[package]] +name = "find-msvc-tools" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650" + +[[package]] +name = "flagset" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe" + [[package]] name = "flutter_rust_bridge" version = "2.11.1" @@ -1314,9 +1503,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -1324,7 +1513,7 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#0cc6ad49975104512f1c50fd489e2c9237ff54bc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" dependencies = [ "postcard", "proc-macro2", @@ -1333,6 +1522,12 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "futures" version = "0.3.31" @@ -1481,9 +1676,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.5" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" +checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" dependencies = [ "cc", "cfg-if", @@ -1527,7 +1722,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.3+wasi-0.2.4", "wasm-bindgen", ] @@ -1543,9 +1738,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.1" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glob" @@ -1617,6 +1812,9 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", +] [[package]] name = "hashbrown" @@ -1629,6 +1827,52 @@ dependencies = [ "foldhash", ] +[[package]] +name = "hashlink" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" +dependencies = [ + "hashbrown 0.14.5", +] + +[[package]] +name = "hax-lib" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6b593135257620169c44108facfc774a48336238af6783d630a8b77b7913de" +dependencies = [ + "hax-lib-macros", + "num-bigint", + "num-traits", +] + +[[package]] +name = "hax-lib-macros" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f50d2b609faca4ebb2522d96d36372cf5f879247e713c28134d7205f1ad427" +dependencies = [ + "hax-lib-macros-types", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "hax-lib-macros-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd4c5887d0a4d4c907a05c29d83d317363b0f9f29df90cc5c716c2ef8909132" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_json", + "uuid", +] + [[package]] name = "heapless" version = "0.7.17" @@ -1651,9 +1895,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.5.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -1685,7 +1929,7 @@ dependencies = [ "once_cell", "rand 0.9.2", "ring", - "thiserror 2.0.15", + "thiserror 2.0.16", "tinyvec", "tokio", "tracing", @@ -1708,11 +1952,20 @@ dependencies = [ "rand 0.9.2", "resolv-conf", "smallvec", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", ] +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + [[package]] name = "hmac" version = "0.12.1" @@ -1738,6 +1991,15 @@ version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad6880c8d4a9ebf39c6e8b77007ce223f646a4d21ce29d99f70cb16420545425" +[[package]] +name = "home" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "hostname-validator" version = "1.1.1" @@ -1844,13 +2106,14 @@ dependencies = [ [[package]] name = "hyper" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "h2 0.4.12", "http 1.3.1", "http-body 1.0.1", @@ -1858,6 +2121,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -1870,7 +2134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ "http 1.3.1", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "rustls", "rustls-pki-types", @@ -1906,7 +2170,7 @@ dependencies = [ "futures-util", "http 1.3.1", "http-body 1.0.1", - "hyper 1.6.0", + "hyper 1.7.0", "ipnet", "libc", "percent-encoding", @@ -2029,9 +2293,9 @@ dependencies = [ [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -2060,7 +2324,7 @@ dependencies = [ "futures", "http 1.3.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "log", "rand 0.9.2", @@ -2069,11 +2333,22 @@ dependencies = [ "xmltree", ] +[[package]] +name = "image" +version = "0.25.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +dependencies = [ + "bytemuck", + "byteorder-lite", + "num-traits", +] + [[package]] name = "indexmap" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", "hashbrown 0.15.5", @@ -2111,11 +2386,11 @@ dependencies = [ [[package]] name = "io-uring" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "cfg-if", "libc", ] @@ -2150,9 +2425,9 @@ dependencies = [ [[package]] name = "iroh" -version = "0.91.1" +version = "0.91.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a98c47bb5f720edeb77be502a8acd238a3c0755f0b1ad865a716224d794a59" +checksum = "e52be9b8f33833ec080042f82035f87e90762c44be67b8c1aa0c593ff31a97d3" dependencies = [ "aead", "backon", @@ -2211,9 +2486,9 @@ dependencies = [ [[package]] name = "iroh-base" -version = "0.91.1" +version = "0.91.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78bde4e612191173e8ade55e3aa719044514edfff952292ffbf581be35cbb59c" +checksum = "42393ff3628e5c765acdceb7da693d5f7869ec4c92599a83fa62368b15b0034e" dependencies = [ "curve25519-dalek", "data-encoding", @@ -2318,10 +2593,10 @@ dependencies = [ "iroh-quinn-proto", "iroh-quinn-udp", "pin-project-lite", - "rustc-hash", + "rustc-hash 2.1.1", "rustls", "socket2 0.5.10", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "web-time", @@ -2337,12 +2612,12 @@ dependencies = [ "getrandom 0.2.16", "rand 0.8.5", "ring", - "rustc-hash", + "rustc-hash 2.1.1", "rustls", "rustls-pki-types", - "rustls-platform-verifier", + "rustls-platform-verifier 0.5.3", "slab", - "thiserror 2.0.15", + "thiserror 2.0.16", "tinyvec", "tracing", "web-time", @@ -2364,9 +2639,9 @@ dependencies = [ [[package]] name = "iroh-relay" -version = "0.91.1" +version = "0.91.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f19e43de2cfc04748054e1cbf7854ae1e192ddc45a4adeae7be7076a8f1fd43" +checksum = "af1e4930e35b95957524aa08af0d27347156ff947f238f2b20d3e6da899fbdba" dependencies = [ "blake3", "bytes", @@ -2377,7 +2652,7 @@ dependencies = [ "hickory-resolver", "http 1.3.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-util", "iroh-base", "iroh-metrics", @@ -2429,7 +2704,7 @@ dependencies = [ "rustls", "serde", "smallvec", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tokio-util", "tracing", @@ -2452,7 +2727,7 @@ dependencies = [ "rustls", "serde", "smallvec", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tokio-util", "tracing", @@ -2486,6 +2761,15 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.15" @@ -2514,6 +2798,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.3", + "libc", +] + [[package]] name = "js-sys" version = "0.3.77" @@ -2530,12 +2824,171 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +[[package]] +name = "libcrux-intrinsics" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d3b41dcbc21a5fb7efbbb5af7405b2e79c4bfe443924e90b13afc0080318d31" +dependencies = [ + "core-models 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "hax-lib", +] + +[[package]] +name = "libcrux-intrinsics" +version = "0.0.3" +source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +dependencies = [ + "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", + "hax-lib", +] + +[[package]] +name = "libcrux-macros" +version = "0.0.3" +source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +dependencies = [ + "quote", + "syn 2.0.106", +] + +[[package]] +name = "libcrux-ml-dsa" +version = "0.0.3" +source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +dependencies = [ + "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", + "hax-lib", + "libcrux-intrinsics 0.0.3 (git+https://github.com/cryspen/libcrux)", + "libcrux-macros", + "libcrux-platform 0.0.2 (git+https://github.com/cryspen/libcrux)", + "libcrux-sha3 0.0.3 (git+https://github.com/cryspen/libcrux)", +] + +[[package]] +name = "libcrux-ml-kem" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d368d3e8d6a74e277178d54921eca112a1e6b7837d7d8bc555091acb5d817f5" +dependencies = [ + "hax-lib", + "libcrux-intrinsics 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libcrux-platform 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libcrux-secrets 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libcrux-sha3 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.9.2", +] + +[[package]] +name = "libcrux-platform" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db82d058aa76ea315a3b2092f69dfbd67ddb0e462038a206e1dcd73f058c0778" +dependencies = [ + "libc", +] + +[[package]] +name = "libcrux-platform" +version = "0.0.2" +source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +dependencies = [ + "libc", +] + +[[package]] +name = "libcrux-secrets" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "332737e629fe6ba7547f5c0f90559eac865d5dbecf98138ffae8f16ab8cbe33f" +dependencies = [ + "hax-lib", +] + +[[package]] +name = "libcrux-secrets" +version = "0.0.3" +source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +dependencies = [ + "hax-lib", +] + +[[package]] +name = "libcrux-sha3" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29d95de4257eafdfaf3bffecadb615219b0ca920c553722b3646d32dde76c797" +dependencies = [ + "hax-lib", + "libcrux-intrinsics 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", + "libcrux-platform 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libcrux-sha3" +version = "0.0.3" +source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +dependencies = [ + "hax-lib", + "libcrux-intrinsics 0.0.3 (git+https://github.com/cryspen/libcrux)", + "libcrux-platform 0.0.2 (git+https://github.com/cryspen/libcrux)", + "libcrux-traits", +] + +[[package]] +name = "libcrux-traits" +version = "0.0.3" +source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +dependencies = [ + "libcrux-secrets 0.0.3 (git+https://github.com/cryspen/libcrux)", + "rand 0.9.2", +] + +[[package]] +name = "libloading" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" +dependencies = [ + "cfg-if", + "windows-targets 0.53.3", +] + +[[package]] +name = "libm" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" + +[[package]] +name = "libsqlite3-sys" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.9.4" @@ -2600,11 +3053,11 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -2625,9 +3078,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.7.5" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "mime" @@ -2643,11 +3096,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.9" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ - "adler2", + "adler", ] [[package]] @@ -2789,7 +3242,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc0e7987b28514adf555dc1f9a5c30dfc3e50750bbaffb1aec41ca7b23dcd8e4" dependencies = [ "anyhow", - "bitflags 2.9.2", + "bitflags 2.9.4", "byteorder", "libc", "log", @@ -2804,7 +3257,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56d83370a96813d7c977f8b63054f1162df6e5784f1c598d689236564fb5a6f2" dependencies = [ "anyhow", - "bitflags 2.9.2", + "bitflags 2.9.4", "byteorder", "libc", "log", @@ -2835,7 +3288,7 @@ dependencies = [ "log", "netlink-packet-core", "netlink-sys", - "thiserror 2.0.15", + "thiserror 2.0.16", ] [[package]] @@ -2919,12 +3372,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -2963,9 +3415,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.17.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ "hermit-abi", "libc", @@ -2995,9 +3447,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.7" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -3039,7 +3491,7 @@ version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "cfg-if", "foreign-types", "libc", @@ -3125,12 +3577,6 @@ dependencies = [ "log", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "parking" version = "2.2.1" @@ -3177,6 +3623,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" + [[package]] name = "path-clean" version = "0.1.0" @@ -3204,9 +3656,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" @@ -3215,7 +3667,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 2.0.15", + "thiserror 2.0.16", "ucd-trie", ] @@ -3318,7 +3770,7 @@ dependencies = [ "serde", "sha1_smol", "simple-dns", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -3480,9 +3932,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -3536,6 +3988,16 @@ dependencies = [ "ucd-parse", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.106", +] + [[package]] name = "proc-macro-crate" version = "3.3.0" @@ -3554,21 +4016,43 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a5b4b77fdb63c1eca72173d68d24501c54ab1269409f6b672c85deb18af69de" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "syn-mid", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", ] [[package]] -name = "proc-macro-error-attr" -version = "0.4.12" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a5b4b77fdb63c1eca72173d68d24501c54ab1269409f6b672c85deb18af69de" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ + "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 1.0.109", - "syn-mid", - "version_check", + "syn 2.0.106", ] [[package]] @@ -3586,21 +4070,30 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "qrcode" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d68782463e408eb1e668cf6152704bd856c78c5b6417adaee3203d8f4c1fc9ec" +dependencies = [ + "image", +] + [[package]] name = "quinn" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash", + "rustc-hash 2.1.1", "rustls", - "socket2 0.5.10", - "thiserror 2.0.15", + "socket2 0.6.0", + "thiserror 2.0.16", "tokio", "tracing", "web-time", @@ -3608,9 +4101,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", "fastbloom", @@ -3618,12 +4111,12 @@ dependencies = [ "lru-slab", "rand 0.9.2", "ring", - "rustc-hash", + "rustc-hash 2.1.1", "rustls", "rustls-pki-types", - "rustls-platform-verifier", + "rustls-platform-verifier 0.6.1", "slab", - "thiserror 2.0.15", + "thiserror 2.0.16", "tinyvec", "tracing", "web-time", @@ -3631,16 +4124,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.5.10", + "socket2 0.6.0", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -3765,6 +4258,21 @@ dependencies = [ "yasna", ] +[[package]] +name = "readlock" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "188bbae3aa4739bd264e9204da5919b2c91dd87dcce5049cf04bdf6aa17c5012" + +[[package]] +name = "readlock-tokio" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29b1800712c0d75de4b0bda5483d46eaf8df757b81df5ca2bde53d5ac2e2c5b2" +dependencies = [ + "tokio", +] + [[package]] name = "redb" version = "2.4.0" @@ -3780,7 +4288,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", ] [[package]] @@ -3803,6 +4311,50 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "refinery" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ba5d693abf62492c37268512ff35b77655d2e957ca53dab85bf993fe9172d15" +dependencies = [ + "refinery-core", + "refinery-macros", +] + +[[package]] +name = "refinery-core" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a83581f18c1a4c3a6ebd7a174bdc665f17f618d79f7edccb6a0ac67e660b319" +dependencies = [ + "async-trait", + "cfg-if", + "log", + "regex", + "rusqlite", + "serde", + "siphasher", + "thiserror 1.0.69", + "time", + "toml", + "url", + "walkdir", +] + +[[package]] +name = "refinery-macros" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c225407d8e52ef8cf094393781ecda9a99d6544ec28d90a6915751de259264" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "refinery-core", + "regex", + "syn 2.0.106", +] + [[package]] name = "reflink-copy" version = "0.1.26" @@ -3811,59 +4363,44 @@ checksum = "78c81d000a2c524133cc00d2f92f019d399e57906c3b7119271a2495354fe895" dependencies = [ "cfg-if", "libc", - "rustix", + "rustix 1.0.8", "windows", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-lite" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" - -[[package]] -name = "regex-syntax" -version = "0.6.29" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "reqwest" @@ -3918,7 +4455,7 @@ dependencies = [ "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.7.0", "hyper-rustls", "hyper-util", "js-sys", @@ -3967,18 +4504,30 @@ dependencies = [ ] [[package]] -name = "rust_lib_zoe" -version = "0.1.0" +name = "rusqlite" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" dependencies = [ - "flutter_rust_bridge", - "zoe-client", + "bitflags 2.9.4", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", ] [[package]] name = "rustc-demangle" -version = "0.1.26" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" @@ -4004,16 +4553,29 @@ dependencies = [ "nom", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.9.4", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + [[package]] name = "rustix" version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.9.4", "windows-sys 0.60.2", ] @@ -4023,6 +4585,7 @@ version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ + "aws-lc-rs", "log", "once_cell", "ring", @@ -4084,6 +4647,27 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be59af91596cac372a6942530653ad0c3a246cdd491aaa9dcaee47f88d67d5a0" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki", + "security-framework 3.3.0", + "security-framework-sys", + "webpki-root-certs 1.0.2", + "windows-sys 0.59.0", +] + [[package]] name = "rustls-platform-verifier-android" version = "0.1.1" @@ -4096,6 +4680,7 @@ version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ + "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -4113,15 +4698,6 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" -[[package]] -name = "safe_arch" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" -dependencies = [ - "bytemuck", -] - [[package]] name = "salsa20" version = "0.10.2" @@ -4167,7 +4743,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -4180,7 +4756,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -4208,6 +4784,9 @@ name = "semver" version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +dependencies = [ + "serde", +] [[package]] name = "send_wrapper" @@ -4246,9 +4825,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.142" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ "itoa", "memchr", @@ -4256,6 +4835,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -4351,7 +4939,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dee851d0e5e7af3721faea1843e8015e820a234f81fda3dea9247e15bac9a86a" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", ] [[package]] @@ -4362,9 +4950,12 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.11" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] [[package]] name = "smallvec" @@ -4377,9 +4968,9 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "320b01e011bf8d5d7a4a4a4be966d9160968935849c83b918827f6a435e7f627" +checksum = "4800ae0e2ebdfaea32ffb9745642acdc378740dcbd74d3fb3cd87572a34810c6" dependencies = [ "backtrace", "snafu-derive", @@ -4387,9 +4978,9 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.6" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1961e2ef424c1424204d3a5d6975f934f56b6d50ff5732382d84ebf460e147f7" +checksum = "186f5ba9999528053fb497fdf0dd330efcc69cfe4ad03776c9d704bc54fee10f" dependencies = [ "heck", "proc-macro2", @@ -4603,7 +5194,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "core-foundation 0.9.4", "system-configuration-sys 0.6.0", ] @@ -4651,7 +5242,7 @@ dependencies = [ "serde", "static_assertions", "tarpc-plugins", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tokio-serde", "tokio-util", @@ -4672,15 +5263,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix", - "windows-sys 0.59.0", + "rustix 1.0.8", + "windows-sys 0.60.2", ] [[package]] @@ -4703,11 +5294,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.15" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d76d3f064b981389ecb4b6b7f45a0bf9fdac1d5b9204c7bd6714fecc302850" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.15", + "thiserror-impl 2.0.16", ] [[package]] @@ -4723,9 +5314,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.15" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d29feb33e986b6ea906bd9c3559a856983f92371b3eaa5e83782a351623de0" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", @@ -4752,12 +5343,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.41" +version = "0.3.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "8ca967379f9d8eb8058d86ed467d81d03e81acd45757e4ca341c24affbe8e8e3" dependencies = [ "deranged", - "itoa", "js-sys", "num-conv", "powerfmt", @@ -4768,15 +5358,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "a9108bb380861b07264b950ded55a44a14a4adc68b9f5efd85aafc3aa4d40a68" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "7182799245a7264ce590b349d90338f1c1affad93d2639aed5f8f69c090b334c" dependencies = [ "num-conv", "time-core", @@ -4794,9 +5384,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -4807,6 +5397,27 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" +[[package]] +name = "tls_codec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de2e01245e2bb89d6f05801c564fa27624dbd7b1846859876c7dad82e90bf6b" +dependencies = [ + "tls_codec_derive", + "zeroize", +] + +[[package]] +name = "tls_codec_derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "tokio" version = "1.47.1" @@ -4905,9 +5516,9 @@ dependencies = [ [[package]] name = "tokio-websockets" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f29ba084eb43becc9864ba514b4a64f5f65b82f9a6ffbafa5436c1c80605f03" +checksum = "5190767f03b86528ab9f4f6a9158072a6d0ef240d9a9591772eb411f315920f4" dependencies = [ "base64 0.22.1", "bytes", @@ -4925,11 +5536,26 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + [[package]] name = "toml_datetime" version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] [[package]] name = "toml_edit" @@ -4938,10 +5564,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", + "serde", + "serde_spanned", "toml_datetime", + "toml_write", "winnow", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tower" version = "0.5.2" @@ -4963,7 +5598,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.2", + "bitflags 2.9.4", "bytes", "futures-util", "http 1.3.1", @@ -5059,14 +5694,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -5083,9 +5718,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.18.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-parse" @@ -5104,9 +5739,9 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -5141,9 +5776,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", @@ -5165,9 +5800,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.18.0" +version = "1.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" dependencies = [ "getrandom 0.3.3", "js-sys", @@ -5188,9 +5823,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.5" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" @@ -5219,11 +5854,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.3+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -5367,13 +6002,15 @@ dependencies = [ ] [[package]] -name = "wide" -version = "0.7.33" +name = "which" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ - "bytemuck", - "safe_arch", + "either", + "home", + "once_cell", + "rustix 0.38.44", ] [[package]] @@ -5400,11 +6037,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -5814,9 +6451,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -5832,13 +6469,10 @@ dependencies = [ ] [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.2", -] +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" [[package]] name = "wmi" @@ -5850,7 +6484,7 @@ dependencies = [ "futures", "log", "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", "windows", "windows-core", ] @@ -5874,7 +6508,7 @@ dependencies = [ "pharos", "rustc_version", "send_wrapper", - "thiserror 2.0.15", + "thiserror 2.0.16", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -5892,6 +6526,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "x509-cert" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94" +dependencies = [ + "const-oid", + "der", + "spki", + "tls_codec", +] + [[package]] name = "x509-parser" version = "0.16.0" @@ -6060,14 +6706,15 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#0cc6ad49975104512f1c50fd489e2c9237ff54bc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" dependencies = [ "blake3", - "ed25519-dalek", "forward-compatible-enum", + "libcrux-ml-dsa", "postcard", + "qrcode", "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", "zoe-encrypted-storage", "zoe-wire-protocol", ] @@ -6075,7 +6722,7 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#0cc6ad49975104512f1c50fd489e2c9237ff54bc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" dependencies = [ "anyhow", "chrono", @@ -6089,7 +6736,7 @@ dependencies = [ "serde_json", "tarpc", "tempfile", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tracing", "tracing-subscriber", @@ -6099,76 +6746,147 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#0cc6ad49975104512f1c50fd489e2c9237ff54bc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" dependencies = [ "anyhow", + "async-once-cell", + "async-stream", "async-trait", "blake3", "chacha20poly1305", "ed25519-dalek", + "eyeball", "flutter_rust_bridge", "futures", "hex", + "libcrux-ml-dsa", "postcard", "quinn", "rand 0.8.5", "rustls", "serde", + "signature", "tarpc", - "thiserror 2.0.15", + "tempfile", + "thiserror 2.0.16", "tokio", + "tokio-stream", "tokio-util", "tracing", "uuid", "zoe-app-primitives", "zoe-blob-store", + "zoe-client-storage", "zoe-encrypted-storage", + "zoe-state-machine", + "zoe-wire-protocol", +] + +[[package]] +name = "zoe-client-storage" +version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +dependencies = [ + "anyhow", + "async-trait", + "futures", + "hex", + "libcrux-ml-dsa", + "postcard", + "refinery", + "rusqlite", + "serde", + "thiserror 2.0.16", + "tokio", + "tracing", "zoe-wire-protocol", ] [[package]] name = "zoe-encrypted-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#0cc6ad49975104512f1c50fd489e2c9237ff54bc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" dependencies = [ "aead", "aes-gcm", "blake3", "brotli", "serde", - "thiserror 2.0.15", + "thiserror 2.0.16", +] + +[[package]] +name = "zoe-state-machine" +version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +dependencies = [ + "blake3", + "ed25519-dalek", + "libcrux-ml-dsa", + "postcard", + "rand 0.8.5", + "rand_chacha 0.3.1", + "serde", + "thiserror 1.0.69", + "tokio", + "tracing", + "zoe-app-primitives", + "zoe-wire-protocol", ] [[package]] name = "zoe-wire-protocol" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#0cc6ad49975104512f1c50fd489e2c9237ff54bc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" dependencies = [ "anyhow", "argon2", "async-trait", - "base64 0.21.7", + "base64 0.22.1", "bip39", "blake3", "chacha20poly1305", + "const-oid", "curve25519-dalek", + "der", "ed25519-dalek", + "forward-compatible-enum", "heapless", "hex", + "hkdf", + "libcrux-ml-dsa", + "libcrux-ml-kem", + "pem", "postcard", "quinn", "rand 0.8.5", + "rand_chacha 0.3.1", "rcgen 0.12.1", "rustls", + "rustls-pki-types", + "rustls-webpki", + "semver", "serde", + "serde_bytes", + "sha2", + "signature", "socket2 0.5.10", "tarpc", - "thiserror 2.0.15", + "thiserror 2.0.16", "tokio", "tokio-util", "tracing", "uuid", "x25519-dalek", + "x509-cert", "x509-parser", "zeroize", ] + +[[package]] +name = "zoe_native" +version = "0.1.0" +dependencies = [ + "flutter_rust_bridge", + "zoe-client", +] diff --git a/rust/Cargo.toml b/packages/zoe_native/rust/Cargo.toml similarity index 83% rename from rust/Cargo.toml rename to packages/zoe_native/rust/Cargo.toml index b5806301..76a76fdc 100644 --- a/rust/Cargo.toml +++ b/packages/zoe_native/rust/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "rust_lib_zoe" +name = "zoe_native" version = "0.1.0" edition = "2021" @@ -10,7 +10,7 @@ crate-type = ["cdylib", "staticlib"] flutter_rust_bridge = "=2.11.1" [dependencies.zoe-client] -# path = "../../zoeyr/crates/client" +# path = "../../../../zoe-relay/crates/client" features = ["frb-api"] git = "https://github.com/acterglobal/zoe-relay.git" branch = "main" diff --git a/rust/src/api/mod.rs b/packages/zoe_native/rust/src/api/mod.rs similarity index 100% rename from rust/src/api/mod.rs rename to packages/zoe_native/rust/src/api/mod.rs diff --git a/rust/src/api/simple.rs b/packages/zoe_native/rust/src/api/simple.rs similarity index 100% rename from rust/src/api/simple.rs rename to packages/zoe_native/rust/src/api/simple.rs diff --git a/packages/zoe_native/rust/src/frb_generated.rs b/packages/zoe_native/rust/src/frb_generated.rs new file mode 100644 index 00000000..4f41c479 --- /dev/null +++ b/packages/zoe_native/rust/src/frb_generated.rs @@ -0,0 +1,276 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +#![allow( + non_camel_case_types, + unused, + non_snake_case, + clippy::needless_return, + clippy::redundant_closure_call, + clippy::redundant_closure, + clippy::useless_conversion, + clippy::unit_arg, + clippy::unused_unit, + clippy::double_parens, + clippy::let_and_return, + clippy::too_many_arguments, + clippy::match_single_binding, + clippy::clone_on_copy, + clippy::let_unit_value, + clippy::deref_addrof, + clippy::explicit_auto_deref, + clippy::borrow_deref_ref, + clippy::needless_borrow +)] + +// Section: imports + +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}; + +// Section: boilerplate + +flutter_rust_bridge::frb_generated_boilerplate!( + default_stream_sink_codec = SseCodec, + default_rust_opaque = RustOpaqueMoi, + 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 = -1918914929; + +// Section: executor + +flutter_rust_bridge::frb_generated_default_handler!(); + +// Section: wire_funcs + +fn wire__crate__api__simple__greet_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: "greet", + 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_name = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok(crate::api::simple::greet(api_name))?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__simple__init_app_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: "init_app", + 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::simple::init_app(); + })?; + Ok(output_ok) + })()) + } + }, + ) +} + +// Section: dart2rust + +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 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 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 i32 { + // 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_i32::().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 + } +} + +fn pde_ffi_dispatcher_primary_impl( + func_id: i32, + port: flutter_rust_bridge::for_generated::MessagePort, + ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len: i32, + data_len: i32, +) { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + 2 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), + _ => unreachable!(), + } +} + +fn pde_ffi_dispatcher_sync_impl( + func_id: i32, + ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len: i32, + data_len: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + 1 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), + _ => unreachable!(), + } +} + +// Section: rust2dart + +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 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 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 i32 { + // 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_i32::(self).unwrap(); + } +} + +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(); + } +} + +#[cfg(not(target_family = "wasm"))] +mod io { + // This file is automatically generated, so please do not edit it. + // @generated by `flutter_rust_bridge`@ 2.11.1. + + // Section: imports + + use super::*; + 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}; + + // Section: boilerplate + + flutter_rust_bridge::frb_generated_boilerplate_io!(); +} +#[cfg(not(target_family = "wasm"))] +pub use io::*; + +/// cbindgen:ignore +#[cfg(target_family = "wasm")] +mod web { + // This file is automatically generated, so please do not edit it. + // @generated by `flutter_rust_bridge`@ 2.11.1. + + // Section: imports + + use super::*; + use flutter_rust_bridge::for_generated::byteorder::{ + NativeEndian, ReadBytesExt, WriteBytesExt, + }; + use flutter_rust_bridge::for_generated::wasm_bindgen; + use flutter_rust_bridge::for_generated::wasm_bindgen::prelude::*; + use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; + use flutter_rust_bridge::{Handler, IntoIntoDart}; + + // Section: boilerplate + + flutter_rust_bridge::frb_generated_boilerplate_web!(); +} +#[cfg(target_family = "wasm")] +pub use web::*; diff --git a/packages/zoe_native/rust/src/lib.rs b/packages/zoe_native/rust/src/lib.rs new file mode 100644 index 00000000..cbb071f8 --- /dev/null +++ b/packages/zoe_native/rust/src/lib.rs @@ -0,0 +1,2 @@ +pub mod api; +mod frb_generated; diff --git a/packages/zoe_native/test_driver/integration_test.dart b/packages/zoe_native/test_driver/integration_test.dart new file mode 100644 index 00000000..b38629cc --- /dev/null +++ b/packages/zoe_native/test_driver/integration_test.dart @@ -0,0 +1,3 @@ +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); diff --git a/rust_builder/windows/.gitignore b/packages/zoe_native/windows/.gitignore similarity index 100% rename from rust_builder/windows/.gitignore rename to packages/zoe_native/windows/.gitignore diff --git a/rust_builder/windows/CMakeLists.txt b/packages/zoe_native/windows/CMakeLists.txt similarity index 82% rename from rust_builder/windows/CMakeLists.txt rename to packages/zoe_native/windows/CMakeLists.txt index b1dacdfc..41c7b51d 100644 --- a/rust_builder/windows/CMakeLists.txt +++ b/packages/zoe_native/windows/CMakeLists.txt @@ -5,16 +5,16 @@ cmake_minimum_required(VERSION 3.14) # Project-level configuration. -set(PROJECT_NAME "rust_lib_zoe") +set(PROJECT_NAME "zoe_native") project(${PROJECT_NAME} LANGUAGES CXX) include("../cargokit/cmake/cargokit.cmake") -apply_cargokit(${PROJECT_NAME} ../../../../../../rust rust_lib_zoe "") +apply_cargokit(${PROJECT_NAME} ../rust zoe_native "") # List of absolute paths to libraries that should be bundled with the plugin. # This list could contain prebuilt libraries, or libraries created by an # external build triggered from this build file. -set(rust_lib_zoe_bundled_libraries +set(zoe_native_bundled_libraries "${${PROJECT_NAME}_cargokit_lib}" PARENT_SCOPE ) diff --git a/pubspec.lock b/pubspec.lock index 4863e4e3..43303de3 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -845,13 +845,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.6.1" - rust_lib_zoe: - dependency: "direct main" - description: - path: rust_builder - relative: true - source: path - version: "0.0.1" share_plus: dependency: "direct main" description: @@ -1217,6 +1210,13 @@ packages: url: "https://pub.dev" source: hosted version: "6.5.0" + zoe_native: + dependency: "direct main" + description: + path: "packages/zoe_native" + relative: true + source: path + version: "0.0.1" sdks: - dart: ">=3.8.1 <4.0.0" + dart: ">=3.9.0 <4.0.0" flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index 1874335b..68352468 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,8 +34,8 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 - rust_lib_zoe: - path: rust_builder + zoe_native: + path: packages/zoe_native flutter_rust_bridge: 2.11.1 # State management diff --git a/rust/src/frb_generated.rs b/rust/src/frb_generated.rs deleted file mode 100644 index 7ed0c10a..00000000 --- a/rust/src/frb_generated.rs +++ /dev/null @@ -1,2140 +0,0 @@ -// This file is automatically generated, so please do not edit it. -// @generated by `flutter_rust_bridge`@ 2.11.1. - -#![allow( - non_camel_case_types, - unused, - non_snake_case, - clippy::needless_return, - clippy::redundant_closure_call, - clippy::redundant_closure, - clippy::useless_conversion, - clippy::unit_arg, - clippy::unused_unit, - clippy::double_parens, - clippy::let_and_return, - clippy::too_many_arguments, - clippy::match_single_binding, - clippy::clone_on_copy, - clippy::let_unit_value, - clippy::deref_addrof, - clippy::explicit_auto_deref, - clippy::borrow_deref_ref, - clippy::needless_borrow -)] - -// Section: imports - -use crate::*; -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}; -use zoe_client::client::*; - -// Section: boilerplate - -flutter_rust_bridge::frb_generated_boilerplate!( - default_stream_sink_codec = SseCodec, - default_rust_opaque = RustOpaqueMoi, - 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 = 1257752319; - -// Section: executor - -flutter_rust_bridge::frb_generated_default_handler!(); - -// Section: wire_funcs - -fn wire__zoe_client__client__ClientBuilder_build_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: "ClientBuilder_build", - 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::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = zoe_client::client::ClientBuilder::build(api_that).await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__zoe_client__client__ClientBuilder_client_secret_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: "ClientBuilder_client_secret", - 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_secret = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - zoe_client::client::ClientBuilder::client_secret( - &mut *api_that_guard, - api_secret, - ); - })?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__client__ClientBuilder_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: "ClientBuilder_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(zoe_client::client::ClientBuilder::default())?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__client__ClientBuilder_media_storage_path_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: "ClientBuilder_media_storage_path", - 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_media_storage_path = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - zoe_client::client::ClientBuilder::media_storage_path( - &mut *api_that_guard, - api_media_storage_path, - ); - })?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__client__ClientBuilder_server_info_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "ClientBuilder_server_info", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_server_public_key = ::sse_decode(&mut deserializer); - let api_server_addr = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - zoe_client::client::ClientBuilder::server_info( - &mut *api_that_guard, - api_server_public_key, - api_server_addr, - ); - })?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__client__ClientSecret_as_hex_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: "ClientSecret_as_hex", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::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 = zoe_client::client::ClientSecret::as_hex(&*api_that_guard)?; - Ok(output_ok) - })(), - ) - } - }, - ) -} -fn wire__zoe_client__client__ClientSecret_from_hex_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: "ClientSecret_from_hex", - 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_value = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || { - let output_ok = zoe_client::client::ClientSecret::from_hex(api_value)?; - Ok(output_ok) - })(), - ) - } - }, - ) -} -fn wire__zoe_client__client__ClientSecret_new_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "ClientSecret_new", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_signing_key = ::sse_decode(&mut deserializer); - let api_server_public_key = ::sse_decode(&mut deserializer); - let api_server_addr = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(zoe_client::client::ClientSecret::new( - api_signing_key, - api_server_public_key, - api_server_addr, - ))?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__client__Client_builder_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: "Client_builder", - 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(zoe_client::client::Client::builder())?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__client__Client_has_file_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: "Client_has_file", - 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_stored_info = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_that_guard = None; - let mut api_stored_info_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_stored_info, - 1, - false, - ), - ], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - 1 => { - api_stored_info_guard = - Some(api_stored_info.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let api_stored_info_guard = api_stored_info_guard.unwrap(); - let output_ok = zoe_client::client::Client::has_file( - &*api_that_guard, - &*api_stored_info_guard, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__zoe_client__client__Client_retrieve_file_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: "Client_retrieve_file", - 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_file_ref = , - >>::sse_decode(&mut deserializer); - let api_output_path = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_that_guard = None; - let mut api_file_ref_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_file_ref, - 1, - false, - ), - ], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - 1 => { - api_file_ref_guard = - Some(api_file_ref.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let api_file_ref_guard = api_file_ref_guard.unwrap(); - let output_ok = zoe_client::client::Client::retrieve_file( - &*api_that_guard, - &*api_file_ref_guard, - api_output_path, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__zoe_client__client__Client_retrieve_file_bytes_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: "Client_retrieve_file_bytes", - 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_file_ref = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_that_guard = None; - let mut api_file_ref_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_file_ref, - 1, - false, - ), - ], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - 1 => { - api_file_ref_guard = - Some(api_file_ref.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let api_file_ref_guard = api_file_ref_guard.unwrap(); - let output_ok = zoe_client::client::Client::retrieve_file_bytes( - &*api_that_guard, - &*api_file_ref_guard, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__zoe_client__client__Client_store_data_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: "Client_store_data", - 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_data = >::sse_decode(&mut deserializer); - let api_reference_name = ::sse_decode(&mut deserializer); - let api_content_type = >::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_that_guard = None; - let 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 = zoe_client::client::Client::store_data( - &*api_that_guard, - &api_data, - &api_reference_name, - api_content_type, - ) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__zoe_client__client__Client_store_file_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: "Client_store_file", - 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_file_path = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = - zoe_client::client::Client::store_file(&*api_that_guard, api_file_path) - .await?; - Ok(output_ok) - })() - .await, - ) - } - }, - ) -} -fn wire__zoe_client__frb_api__create_signing_key_random_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: "create_signing_key_random", - 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(zoe_client::frb_api::create_signing_key_random())?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__frb_api__create_socket_addr_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: "create_socket_addr", - 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_ip = ::sse_decode(&mut deserializer); - let api_port = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, String>((move || { - let output_ok = zoe_client::frb_api::create_socket_addr(api_ip, api_port)?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__crate__api__simple__greet_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: "greet", - 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_name = ::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::api::simple::greet(api_name))?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__simple__init_app_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: "init_app", - 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::simple::init_app(); - })?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__frb_api__signing_key_from_hex_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: "signing_key_from_hex", - 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_hex = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, String>((move || { - let output_ok = zoe_client::frb_api::signing_key_from_hex(api_hex)?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__frb_api__signing_key_to_verifying_key_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: "signing_key_to_verifying_key", - 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_signing_key_hex = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, String>((move || { - let output_ok = - zoe_client::frb_api::signing_key_to_verifying_key(api_signing_key_hex)?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__frb_api__socket_addr_ip_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: "socket_addr_ip", - 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_addr = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_addr_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_addr, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_addr_guard = api_addr_guard.unwrap(); - let output_ok = - Result::<_, ()>::Ok(zoe_client::frb_api::socket_addr_ip(&*api_addr_guard))?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__frb_api__socket_addr_port_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: "socket_addr_port", - 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_addr = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_addr_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_addr, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_addr_guard = api_addr_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(zoe_client::frb_api::socket_addr_port( - &*api_addr_guard, - ))?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__frb_api__socket_addr_to_string_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: "socket_addr_to_string", - 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_addr = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_addr_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_addr, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_addr_guard = api_addr_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - zoe_client::frb_api::socket_addr_to_string(&*api_addr_guard), - )?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_client__frb_api__verifying_key_from_hex_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: "verifying_key_from_hex", - 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_hex = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, String>((move || { - let output_ok = zoe_client::frb_api::verifying_key_from_hex(api_hex)?; - 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 -); -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 Client { - // 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 ClientBuilder { - // 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 ClientSecret { - // 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 FileRef { - // 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 PathBuf { - // 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 SigningKey { - // 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 SocketAddr { - // 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 VerifyingKey { - // 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 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 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 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 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 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 u16 { - // 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_u16::().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 _ - } -} - -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 { - deserializer.cursor.read_i32::().unwrap() - } -} - -fn pde_ffi_dispatcher_primary_impl( - func_id: i32, - port: flutter_rust_bridge::for_generated::MessagePort, - ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len: i32, - data_len: i32, -) { - // Codec=Pde (Serialization + dispatch), see doc to use other codecs - match func_id { - 1 => wire__zoe_client__client__ClientBuilder_build_impl(port, ptr, rust_vec_len, data_len), - 2 => wire__zoe_client__client__ClientBuilder_client_secret_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 3 => { - wire__zoe_client__client__ClientBuilder_default_impl(port, ptr, rust_vec_len, data_len) - } - 4 => wire__zoe_client__client__ClientBuilder_media_storage_path_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 5 => wire__zoe_client__client__ClientBuilder_server_info_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 6 => wire__zoe_client__client__ClientSecret_as_hex_impl(port, ptr, rust_vec_len, data_len), - 7 => { - wire__zoe_client__client__ClientSecret_from_hex_impl(port, ptr, rust_vec_len, data_len) - } - 8 => wire__zoe_client__client__ClientSecret_new_impl(port, ptr, rust_vec_len, data_len), - 9 => wire__zoe_client__client__Client_builder_impl(port, ptr, rust_vec_len, data_len), - 10 => wire__zoe_client__client__Client_has_file_impl(port, ptr, rust_vec_len, data_len), - 11 => { - wire__zoe_client__client__Client_retrieve_file_impl(port, ptr, rust_vec_len, data_len) - } - 12 => wire__zoe_client__client__Client_retrieve_file_bytes_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 13 => wire__zoe_client__client__Client_store_data_impl(port, ptr, rust_vec_len, data_len), - 14 => wire__zoe_client__client__Client_store_file_impl(port, ptr, rust_vec_len, data_len), - 15 => wire__zoe_client__frb_api__create_signing_key_random_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 16 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), - 18 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), - 19 => { - wire__zoe_client__frb_api__signing_key_from_hex_impl(port, ptr, rust_vec_len, data_len) - } - 20 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 21 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), - 22 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), - 23 => { - wire__zoe_client__frb_api__socket_addr_to_string_impl(port, ptr, rust_vec_len, data_len) - } - 24 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - _ => unreachable!(), - } -} - -fn pde_ffi_dispatcher_sync_impl( - func_id: i32, - ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len: i32, - data_len: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - // Codec=Pde (Serialization + dispatch), see doc to use other codecs - match func_id { - 17 => wire__crate__api__simple__greet_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 Client { - 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 ClientBuilder { - 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 ClientSecret { - 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 FileRef { - 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 PathBuf { - 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 SigningKey { - 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 SocketAddr { - 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 VerifyingKey { - fn into_into_dart(self) -> FrbWrapper { - self.into() - } -} - -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 Client { - // 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 ClientBuilder { - // 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 ClientSecret { - // 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 FileRef { - // 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 PathBuf { - // 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 SigningKey { - // 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 SocketAddr { - // 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 VerifyingKey { - // 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 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 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 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 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 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 u16 { - // 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_u16::(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(); - } -} - -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) { - serializer.cursor.write_i32::(self).unwrap(); - } -} - -#[cfg(not(target_family = "wasm"))] -mod io { - // This file is automatically generated, so please do not edit it. - // @generated by `flutter_rust_bridge`@ 2.11.1. - - // Section: imports - - use super::*; - use crate::*; - 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}; - use zoe_client::client::*; - - // Section: boilerplate - - flutter_rust_bridge::frb_generated_boilerplate_io!(); - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_zoe_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } -} -#[cfg(not(target_family = "wasm"))] -pub use io::*; - -/// cbindgen:ignore -#[cfg(target_family = "wasm")] -mod web { - // This file is automatically generated, so please do not edit it. - // @generated by `flutter_rust_bridge`@ 2.11.1. - - // Section: imports - - use super::*; - use crate::*; - use flutter_rust_bridge::for_generated::byteorder::{ - NativeEndian, ReadBytesExt, WriteBytesExt, - }; - use flutter_rust_bridge::for_generated::wasm_bindgen; - use flutter_rust_bridge::for_generated::wasm_bindgen::prelude::*; - use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; - use flutter_rust_bridge::{Handler, IntoIntoDart}; - use zoe_client::client::*; - - // Section: boilerplate - - flutter_rust_bridge::frb_generated_boilerplate_web!(); - - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - 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_generatedRustAutoOpaqueInnerClient( - 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_generatedRustAutoOpaqueInnerClientBuilder( - 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_generatedRustAutoOpaqueInnerClientBuilder( - 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_generatedRustAutoOpaqueInnerClientSecret( - 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_generatedRustAutoOpaqueInnerClientSecret( - 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_generatedRustAutoOpaqueInnerFileRef( - 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_generatedRustAutoOpaqueInnerFileRef( - 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_generatedRustAutoOpaqueInnerPathBuf( - 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_generatedRustAutoOpaqueInnerPathBuf( - 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_generatedRustAutoOpaqueInnerSigningKey( - 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_generatedRustAutoOpaqueInnerSigningKey( - 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_generatedRustAutoOpaqueInnerSocketAddr( - 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_generatedRustAutoOpaqueInnerSocketAddr( - 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_generatedRustAutoOpaqueInnerVerifyingKey( - 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_generatedRustAutoOpaqueInnerVerifyingKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } -} -#[cfg(target_family = "wasm")] -pub use web::*; diff --git a/rust/src/lib.rs b/rust/src/lib.rs deleted file mode 100644 index c51b2555..00000000 --- a/rust/src/lib.rs +++ /dev/null @@ -1,10 +0,0 @@ -pub mod api; -mod frb_generated; - -// Re-export all the types that FRB needs at the crate root -// This ensures they're available through `use crate::*;` in the generated code -pub use zoe_client::{FileRef, SigningKey, VerifyingKey}; -pub use std::net::SocketAddr; -pub use std::path::PathBuf; -// Note: Don't re-export Path as it's !Sized and FRB can't handle it -// Use PathBuf instead in function signatures diff --git a/rust_builder/README.md b/rust_builder/README.md deleted file mode 100644 index 922615f9..00000000 --- a/rust_builder/README.md +++ /dev/null @@ -1 +0,0 @@ -Please ignore this folder, which is just glue to build Rust with Flutter. \ No newline at end of file diff --git a/rust_builder/android/settings.gradle b/rust_builder/android/settings.gradle deleted file mode 100644 index df1a71d9..00000000 --- a/rust_builder/android/settings.gradle +++ /dev/null @@ -1 +0,0 @@ -rootProject.name = 'rust_lib_zoe' diff --git a/rust_builder/pubspec.yaml b/rust_builder/pubspec.yaml deleted file mode 100644 index 8aae6db5..00000000 --- a/rust_builder/pubspec.yaml +++ /dev/null @@ -1,34 +0,0 @@ -name: rust_lib_zoe -description: "Utility to build Rust code" -version: 0.0.1 -publish_to: none - -environment: - sdk: '>=3.3.0 <4.0.0' - flutter: '>=3.3.0' - -dependencies: - flutter: - sdk: flutter - plugin_platform_interface: ^2.0.2 - -dev_dependencies: - ffi: ^2.0.2 - ffigen: ^11.0.0 - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - plugin: - platforms: - android: - ffiPlugin: true - ios: - ffiPlugin: true - linux: - ffiPlugin: true - macos: - ffiPlugin: true - windows: - ffiPlugin: true diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index f5cfad84..8aa7d50d 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -11,7 +11,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST - rust_lib_zoe + zoe_native ) set(PLUGIN_BUNDLED_LIBRARIES) From 5fd2993b7f4a52d5c72645c521c565276dd13fa4 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Wed, 3 Sep 2025 10:55:53 +0100 Subject: [PATCH 02/49] use latest native to connect to server --- .github/workflows/codegen.yml | 24 +- flutter_rust_bridge.yaml | 3 - .../users/providers/user_providers.dart | 21 +- packages/zoe_native/flutter_rust_bridge.yaml | 10 +- packages/zoe_native/lib/providers.dart | 2 + .../zoe_native/lib/src/providers/client.dart | 6 + .../zoe_native/lib/src/providers/user_id.dart | 8 + .../lib/src/rust/frb_generated.dart | 3795 ++++++++++++++++- .../lib/src/rust/frb_generated.io.dart | 1170 ++++- .../lib/src/rust/frb_generated.web.dart | 1076 ++++- packages/zoe_native/lib/src/rust/lib.dart | 23 + .../rust/third_party/zoe_client/client.dart | 161 + .../rust/third_party/zoe_client/frb_api.dart | 37 + .../src/rust/third_party/zoe_client/util.dart | 11 + .../third_party/zoe_wire_protocol/keys.dart | 200 + packages/zoe_native/lib/src/support.dart | 128 + packages/zoe_native/lib/zoe_native.dart | 4 + packages/zoe_native/pubspec.yaml | 6 + packages/zoe_native/rust/Cargo.lock | 150 +- packages/zoe_native/rust/Cargo.toml | 5 + packages/zoe_native/rust/src/api/simple.rs | 1 + packages/zoe_native/rust/src/frb_generated.rs | 3611 +++++++++++++++- 22 files changed, 10177 insertions(+), 275 deletions(-) delete mode 100644 flutter_rust_bridge.yaml create mode 100644 packages/zoe_native/lib/providers.dart create mode 100644 packages/zoe_native/lib/src/providers/client.dart create mode 100644 packages/zoe_native/lib/src/providers/user_id.dart create mode 100644 packages/zoe_native/lib/src/rust/lib.dart create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_client/frb_api.dart create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_client/util.dart create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/keys.dart diff --git a/.github/workflows/codegen.yml b/.github/workflows/codegen.yml index 0755b0fd..d2ab426a 100644 --- a/.github/workflows/codegen.yml +++ b/.github/workflows/codegen.yml @@ -3,19 +3,20 @@ name: Code Generation on: push: paths: - - 'rust/src/**' - - 'flutter_rust_bridge.yaml' - - 'rust/Cargo.toml' + - 'packages/zoe_native/rust/src/**' + - 'packages/zoe_native/flutter_rust_bridge.yaml' + - 'packages/zoe_native/rust/Cargo.toml' pull_request: paths: - - 'rust/src/**' - - 'flutter_rust_bridge.yaml' - - 'rust/Cargo.toml' + - 'packages/zoe_native/rust/src/**' + - 'packages/zoe_native/flutter_rust_bridge.yaml' + - 'packages/zoe_native/rust/Cargo.toml' workflow_dispatch: env: FLUTTER_VERSION: '3.35.2' RUST_VERSION: '1.85.0' + FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: '2.11.1' jobs: # Validate flutter_rust_bridge code generation @@ -43,12 +44,13 @@ jobs: cache: true - name: Install flutter_rust_bridge_codegen - run: cargo install flutter_rust_bridge_codegen --version 2.11.1 + run: cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_CODEGEN_VERSION }} - name: Install dependencies run: flutter pub get - name: Generate bindings + working-directory: packages/zoe_native run: flutter_rust_bridge_codegen generate - name: Check if generated files are up to date @@ -59,12 +61,12 @@ jobs: fi - name: Verify Rust compilation - run: | - cd rust - cargo check + working-directory: packages/zoe_native/rust + run: cargo check --all - name: Verify Flutter compilation - run: flutter analyze lib/core/rust/ + working-directory: packages/zoe_native/ + run: flutter analyze lib # Test cross-platform compatibility test-codegen-platforms: diff --git a/flutter_rust_bridge.yaml b/flutter_rust_bridge.yaml deleted file mode 100644 index d5660617..00000000 --- a/flutter_rust_bridge.yaml +++ /dev/null @@ -1,3 +0,0 @@ -rust_input: crate::api,zoe-client::client,zoe-client::frb_api -rust_root: packages/zoe_native/rust/ -dart_output: packages/zoe_native/lib/src/rust \ No newline at end of file diff --git a/lib/features/users/providers/user_providers.dart b/lib/features/users/providers/user_providers.dart index e4252bf6..20d62bbf 100644 --- a/lib/features/users/providers/user_providers.dart +++ b/lib/features/users/providers/user_providers.dart @@ -3,15 +3,15 @@ import 'package:zoe/features/users/models/user_model.dart'; import 'package:zoe/features/users/providers/user_notifiers.dart'; import 'package:zoe/core/preference_service/preferences_service.dart'; import 'package:zoe/features/sheet/providers/sheet_providers.dart'; +import 'package:zoe_native/providers.dart'; final isUserLoggedInProvider = FutureProvider((ref) async { - final userId = await PreferencesService().getLoginUserId(); - return userId != null && userId.isNotEmpty; + final userId = await ref.watch(userIdProvider.future); + return userId.isNotEmpty; }); final loggedInUserProvider = FutureProvider((ref) async { - final userId = await PreferencesService().getLoginUserId(); - return userId; + await ref.watch(userIdProvider.future); }); final userListProvider = StateNotifierProvider>( @@ -36,11 +36,8 @@ final getUserByIdProvider = Provider.family((ref, userId) { }); final currentUserProvider = FutureProvider((ref) async { - final userId = await PreferencesService().getLoginUserId(); - if (userId == null || userId.isEmpty) return null; - - final userList = ref.watch(userListProvider); - return userList.where((u) => u.id == userId).firstOrNull; + final userId = await ref.watch(userIdProvider.future); + return UserModel(id: userId, name: userId.substring(0, 8)); }); // Provider that returns user IDs from a list of UserModel objects @@ -53,14 +50,14 @@ final userIdsFromUserModelsProvider = final userDisplayNameProvider = Provider.family((ref, userId) { final currentUserId = ref.watch(loggedInUserProvider).valueOrNull ?? ''; final user = ref.watch(getUserByIdProvider(userId)); - + if (currentUserId == userId) { return 'You'; } - + if (user != null && user.name.isNotEmpty) { return user.name; } - + return userId; }); diff --git a/packages/zoe_native/flutter_rust_bridge.yaml b/packages/zoe_native/flutter_rust_bridge.yaml index e15ed916..d0f1d882 100644 --- a/packages/zoe_native/flutter_rust_bridge.yaml +++ b/packages/zoe_native/flutter_rust_bridge.yaml @@ -1,3 +1,9 @@ -rust_input: crate::api +rust_input: crate::api,zoe-client::client,zoe-client::frb_api,zoe-client::util,zoe-wire-protocol::keys, rust_root: rust/ -dart_output: lib/src/rust \ No newline at end of file +dart_output: lib/src/rust +enable_lifetime: true + +rust_preamble: | + use std::{path::PathBuf, net::SocketAddr, error::Error}; + use zoe_client::{FileRef}; + use zoe_wire_protocol::keys::{KeyPair, VerifyingKey, SigningKey, Signature}; \ No newline at end of file diff --git a/packages/zoe_native/lib/providers.dart b/packages/zoe_native/lib/providers.dart new file mode 100644 index 00000000..d3380412 --- /dev/null +++ b/packages/zoe_native/lib/providers.dart @@ -0,0 +1,2 @@ +export 'src/providers/client.dart'; +export 'src/providers/user_id.dart'; diff --git a/packages/zoe_native/lib/src/providers/client.dart b/packages/zoe_native/lib/src/providers/client.dart new file mode 100644 index 00000000..ed34034d --- /dev/null +++ b/packages/zoe_native/lib/src/providers/client.dart @@ -0,0 +1,6 @@ +import 'package:riverpod/riverpod.dart'; +import 'package:zoe_native/zoe_native.dart'; + +final clientProvider = FutureProvider((ref) async { + return await loadOrGenerateClient(); +}); diff --git a/packages/zoe_native/lib/src/providers/user_id.dart b/packages/zoe_native/lib/src/providers/user_id.dart new file mode 100644 index 00000000..4528c357 --- /dev/null +++ b/packages/zoe_native/lib/src/providers/user_id.dart @@ -0,0 +1,8 @@ +import 'package:riverpod/riverpod.dart'; +import 'package:zoe_native/src/providers/client.dart'; + +/// My user id +final userIdProvider = FutureProvider((ref) async { + final client = await ref.watch(clientProvider.future); + return client.idHex(); +}); diff --git a/packages/zoe_native/lib/src/rust/frb_generated.dart b/packages/zoe_native/lib/src/rust/frb_generated.dart index 72b7ec39..d16f1158 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.dart @@ -9,7 +9,12 @@ import 'dart:convert'; import 'frb_generated.dart'; import 'frb_generated.io.dart' if (dart.library.js_interop) 'frb_generated.web.dart'; +import 'lib.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; +import 'third_party/zoe_client/client.dart'; +import 'third_party/zoe_client/frb_api.dart'; +import 'third_party/zoe_client/util.dart'; +import 'third_party/zoe_wire_protocol/keys.dart'; /// Main entrypoint of the Rust API class RustLib extends BaseEntrypoint { @@ -66,7 +71,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.11.1'; @override - int get rustContentHash => -1918914929; + int get rustContentHash => -929701453; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -77,9 +82,255 @@ class RustLib extends BaseEntrypoint { } abstract class RustLibApi extends BaseApi { + Future zoeClientClientClientBuilderBuild({ + required ClientBuilder that, + }); + + Future zoeClientClientClientBuilderClientSecret({ + required ClientBuilder that, + required ClientSecret secret, + }); + + Future zoeClientClientClientBuilderDbStorageDir({ + required ClientBuilder that, + required String path, + }); + + Future zoeClientClientClientBuilderDefault(); + + Future zoeClientClientClientBuilderEncryptionKey({ + required ClientBuilder that, + required U8Array32 key, + }); + + Future zoeClientClientClientBuilderMediaStorageDir({ + required ClientBuilder that, + required String mediaStorageDir, + }); + + Future zoeClientClientClientBuilderServerInfo({ + required ClientBuilder that, + required VerifyingKey serverPublicKey, + required SocketAddr serverAddr, + }); + + Future zoeClientClientClientSecretFromHex({ + required String hex, + }); + + Future zoeClientClientClientSecretToHex({required ClientSecret that}); + + Future zoeClientClientClientBuilder(); + + Future zoeClientClientClientClientSecretHex({required Client that}); + + Future zoeClientClientClientClose({required Client that}); + + Future zoeClientClientClientHasFile({ + required Client that, + required FileRef storedInfo, + }); + + Future zoeClientClientClientIdHex({required Client that}); + + Future zoeClientClientClientRetrieveFile({ + required Client that, + required FileRef fileRef, + required PathBuf outputPath, + }); + + Future zoeClientClientClientRetrieveFileBytes({ + required Client that, + required FileRef fileRef, + }); + + Future zoeClientClientClientStoreData({ + required Client that, + required List data, + required String referenceName, + String? contentType, + }); + + Future zoeClientClientClientStoreFile({ + required Client that, + required PathBuf filePath, + }); + + Future zoeWireProtocolKeysKeyPairAlgorithm({ + required KeyPair that, + }); + + Future zoeWireProtocolKeysKeyPairFromPem({ + required String pemString, + }); + + Future zoeWireProtocolKeysKeyPairId({required KeyPair that}); + + Future zoeWireProtocolKeysKeyPairPublicKey({ + required KeyPair that, + }); + + Future zoeWireProtocolKeysKeyPairSign({ + required KeyPair that, + required List message, + }); + + Future zoeWireProtocolKeysKeyPairToPem({required KeyPair that}); + + Future zoeWireProtocolKeysSignatureEncode({ + required Signature that, + }); + + Future zoeWireProtocolKeysSignatureId({required Signature that}); + + Future zoeWireProtocolKeysSigningKeySign({ + required SigningKey that, + required List message, + }); + + Future zoeWireProtocolKeysVerifyingKeyAlgorithm({ + required VerifyingKey that, + }); + + Future zoeWireProtocolKeysVerifyingKeyEncode({ + required VerifyingKey that, + }); + + Future zoeWireProtocolKeysVerifyingKeyFromHex({ + required String hex, + }); + + Future zoeWireProtocolKeysVerifyingKeyId({required VerifyingKey that}); + + Future zoeWireProtocolKeysVerifyingKeyToBytes({ + required VerifyingKey that, + }); + + Future zoeWireProtocolKeysVerifyingKeyVerify({ + required VerifyingKey that, + required List message, + required Signature signature, + }); + + Future zoeClientFrbApiCreateSigningKeyRandom(); + + Future zoeClientFrbApiCreateSocketAddr({ + required String ip, + required int port, + }); + + Future zoeClientFrbApiFrbInit(); + String crateApiSimpleGreet({required String name}); Future crateApiSimpleInitApp(); + + Future zoeClientUtilResolveToSocketAddr({required String s}); + + Future zoeClientFrbApiSigningKeyFromHex({required String hex}); + + Future zoeClientFrbApiSigningKeyToVerifyingKey({ + required String signingKeyHex, + }); + + Future zoeClientFrbApiSocketAddrIp({required SocketAddr addr}); + + Future zoeClientFrbApiSocketAddrPort({required SocketAddr addr}); + + Future zoeClientFrbApiSocketAddrToString({required SocketAddr addr}); + + Future zoeClientFrbApiVerifyingKeyFromHex({ + required String hex, + }); + + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_Client; + + RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_Client; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_ClientPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_ClientBuilder; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_ClientBuilder; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_ClientBuilderPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_ClientSecret; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_ClientSecret; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_ClientSecretPtr; + + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_FileRef; + + RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_FileRef; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_FileRefPtr; + + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_KeyPair; + + RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_KeyPair; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeyPairPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_KeyPairError; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_KeyPairError; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeyPairErrorPtr; + + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_PathBuf; + + RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_PathBuf; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_PathBufPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_Signature; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_Signature; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SignaturePtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_SigningKey; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_SigningKey; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SigningKeyPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_SocketAddr; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_SocketAddr; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SocketAddrPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_VerifyError; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_VerifyError; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_VerifyErrorPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_VerifyingKey; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_VerifyingKey; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_VerifyingKeyPtr; } class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { @@ -91,120 +342,2980 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { }); @override - String crateApiSimpleGreet({required String name}) { - return handler.executeSync( - SyncTask( - callFfi: () { + Future zoeClientClientClientBuilderBuild({ + required ClientBuilder that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(name, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 1)!; + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 1, + port: port_, + ); }, codec: SseCodec( - decodeSuccessData: sse_decode_String, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientBuilderBuildConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientBuilderBuildConstMeta => + const TaskConstMeta(debugName: "ClientBuilder_build", argNames: ["that"]); + + @override + Future zoeClientClientClientBuilderClientSecret({ + required ClientBuilder that, + required ClientSecret secret, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + secret, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 2, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateApiSimpleGreetConstMeta, - argValues: [name], + constMeta: kZoeClientClientClientBuilderClientSecretConstMeta, + argValues: [that, secret], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientBuilderClientSecretConstMeta => + const TaskConstMeta( + debugName: "ClientBuilder_client_secret", + argNames: ["that", "secret"], + ); + + @override + Future zoeClientClientClientBuilderDbStorageDir({ + required ClientBuilder that, + required String path, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + that, + serializer, + ); + sse_encode_String(path, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 3, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientBuilderDbStorageDirConstMeta, + argValues: [that, path], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientBuilderDbStorageDirConstMeta => + const TaskConstMeta( + debugName: "ClientBuilder_db_storage_dir", + argNames: ["that", "path"], + ); + + @override + Future zoeClientClientClientBuilderDefault() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 4, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientBuilderDefaultConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientBuilderDefaultConstMeta => + const TaskConstMeta(debugName: "ClientBuilder_default", argNames: []); + + @override + Future zoeClientClientClientBuilderEncryptionKey({ + required ClientBuilder that, + required U8Array32 key, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + that, + serializer, + ); + sse_encode_u_8_array_32(key, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 5, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientBuilderEncryptionKeyConstMeta, + argValues: [that, key], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientBuilderEncryptionKeyConstMeta => + const TaskConstMeta( + debugName: "ClientBuilder_encryption_key", + argNames: ["that", "key"], + ); + + @override + Future zoeClientClientClientBuilderMediaStorageDir({ + required ClientBuilder that, + required String mediaStorageDir, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + that, + serializer, + ); + sse_encode_String(mediaStorageDir, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 6, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientBuilderMediaStorageDirConstMeta, + argValues: [that, mediaStorageDir], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiSimpleGreetConstMeta => - const TaskConstMeta(debugName: "greet", argNames: ["name"]); + TaskConstMeta get kZoeClientClientClientBuilderMediaStorageDirConstMeta => + const TaskConstMeta( + debugName: "ClientBuilder_media_storage_dir", + argNames: ["that", "mediaStorageDir"], + ); + + @override + Future zoeClientClientClientBuilderServerInfo({ + required ClientBuilder that, + required VerifyingKey serverPublicKey, + required SocketAddr serverAddr, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + serverPublicKey, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + serverAddr, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 7, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientBuilderServerInfoConstMeta, + argValues: [that, serverPublicKey, serverAddr], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientBuilderServerInfoConstMeta => + const TaskConstMeta( + debugName: "ClientBuilder_server_info", + argNames: ["that", "serverPublicKey", "serverAddr"], + ); + + @override + Future zoeClientClientClientSecretFromHex({ + required String hex, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(hex, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 8, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientSecretFromHexConstMeta, + argValues: [hex], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientSecretFromHexConstMeta => + const TaskConstMeta( + debugName: "ClientSecret_from_hex", + argNames: ["hex"], + ); + + @override + Future zoeClientClientClientSecretToHex({ + required ClientSecret that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 9, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientSecretToHexConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientSecretToHexConstMeta => + const TaskConstMeta(debugName: "ClientSecret_to_hex", argNames: ["that"]); + + @override + Future zoeClientClientClientBuilder() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 10, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientBuilderConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientBuilderConstMeta => + const TaskConstMeta(debugName: "Client_builder", argNames: []); + + @override + Future zoeClientClientClientClientSecretHex({required Client that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 11, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientClientSecretHexConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientClientSecretHexConstMeta => + const TaskConstMeta( + debugName: "Client_client_secret_hex", + argNames: ["that"], + ); + + @override + Future zoeClientClientClientClose({required Client that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 12, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientCloseConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientCloseConstMeta => + const TaskConstMeta(debugName: "Client_close", argNames: ["that"]); + + @override + Future zoeClientClientClientHasFile({ + required Client that, + required FileRef storedInfo, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + storedInfo, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 13, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_bool, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientHasFileConstMeta, + argValues: [that, storedInfo], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientHasFileConstMeta => + const TaskConstMeta( + debugName: "Client_has_file", + argNames: ["that", "storedInfo"], + ); + + @override + Future zoeClientClientClientIdHex({required Client that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 14, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientIdHexConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientIdHexConstMeta => + const TaskConstMeta(debugName: "Client_id_hex", argNames: ["that"]); + + @override + Future zoeClientClientClientRetrieveFile({ + required Client that, + required FileRef fileRef, + required PathBuf outputPath, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + fileRef, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + outputPath, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 15, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientRetrieveFileConstMeta, + argValues: [that, fileRef, outputPath], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientRetrieveFileConstMeta => + const TaskConstMeta( + debugName: "Client_retrieve_file", + argNames: ["that", "fileRef", "outputPath"], + ); + + @override + Future zoeClientClientClientRetrieveFileBytes({ + required Client that, + required FileRef fileRef, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + fileRef, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 16, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientRetrieveFileBytesConstMeta, + argValues: [that, fileRef], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientRetrieveFileBytesConstMeta => + const TaskConstMeta( + debugName: "Client_retrieve_file_bytes", + argNames: ["that", "fileRef"], + ); + + @override + Future zoeClientClientClientStoreData({ + required Client that, + required List data, + required String referenceName, + String? contentType, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + sse_encode_list_prim_u_8_loose(data, serializer); + sse_encode_String(referenceName, serializer); + sse_encode_opt_String(contentType, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 17, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientStoreDataConstMeta, + argValues: [that, data, referenceName, contentType], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientStoreDataConstMeta => + const TaskConstMeta( + debugName: "Client_store_data", + argNames: ["that", "data", "referenceName", "contentType"], + ); + + @override + Future zoeClientClientClientStoreFile({ + required Client that, + required PathBuf filePath, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + filePath, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 18, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientStoreFileConstMeta, + argValues: [that, filePath], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientStoreFileConstMeta => + const TaskConstMeta( + debugName: "Client_store_file", + argNames: ["that", "filePath"], + ); + + @override + Future zoeWireProtocolKeysKeyPairAlgorithm({ + required KeyPair that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 19, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_algorithm, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysKeyPairAlgorithmConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairAlgorithmConstMeta => + const TaskConstMeta(debugName: "KeyPair_algorithm", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysKeyPairFromPem({ + required String pemString, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(pemString, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 20, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair, + decodeErrorData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError, + ), + constMeta: kZoeWireProtocolKeysKeyPairFromPemConstMeta, + argValues: [pemString], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairFromPemConstMeta => + const TaskConstMeta( + debugName: "KeyPair_from_pem", + argNames: ["pemString"], + ); + + @override + Future zoeWireProtocolKeysKeyPairId({required KeyPair that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 21, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysKeyPairIdConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairIdConstMeta => + const TaskConstMeta(debugName: "KeyPair_id", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysKeyPairPublicKey({ + required KeyPair that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 22, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysKeyPairPublicKeyConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairPublicKeyConstMeta => + const TaskConstMeta(debugName: "KeyPair_public_key", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysKeyPairSign({ + required KeyPair that, + required List message, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + sse_encode_list_prim_u_8_loose(message, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 23, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysKeyPairSignConstMeta, + argValues: [that, message], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairSignConstMeta => + const TaskConstMeta( + debugName: "KeyPair_sign", + argNames: ["that", "message"], + ); + + @override + Future zoeWireProtocolKeysKeyPairToPem({required KeyPair that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 24, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError, + ), + constMeta: kZoeWireProtocolKeysKeyPairToPemConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairToPemConstMeta => + const TaskConstMeta(debugName: "KeyPair_to_pem", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysSignatureEncode({ + required Signature that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 25, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysSignatureEncodeConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysSignatureEncodeConstMeta => + const TaskConstMeta(debugName: "Signature_encode", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysSignatureId({required Signature that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 26, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysSignatureIdConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysSignatureIdConstMeta => + const TaskConstMeta(debugName: "Signature_id", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysSigningKeySign({ + required SigningKey that, + required List message, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + that, + serializer, + ); + sse_encode_list_prim_u_8_loose(message, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 27, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysSigningKeySignConstMeta, + argValues: [that, message], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysSigningKeySignConstMeta => + const TaskConstMeta( + debugName: "SigningKey_sign", + argNames: ["that", "message"], + ); + + @override + Future zoeWireProtocolKeysVerifyingKeyAlgorithm({ + required VerifyingKey that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 28, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_algorithm, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysVerifyingKeyAlgorithmConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysVerifyingKeyAlgorithmConstMeta => + const TaskConstMeta( + debugName: "VerifyingKey_algorithm", + argNames: ["that"], + ); + + @override + Future zoeWireProtocolKeysVerifyingKeyEncode({ + required VerifyingKey that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 29, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysVerifyingKeyEncodeConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysVerifyingKeyEncodeConstMeta => + const TaskConstMeta(debugName: "VerifyingKey_encode", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysVerifyingKeyFromHex({ + required String hex, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(hex, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 30, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey, + decodeErrorData: sse_decode_String, + ), + constMeta: kZoeWireProtocolKeysVerifyingKeyFromHexConstMeta, + argValues: [hex], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysVerifyingKeyFromHexConstMeta => + const TaskConstMeta( + debugName: "VerifyingKey_from_hex", + argNames: ["hex"], + ); + + @override + Future zoeWireProtocolKeysVerifyingKeyId({required VerifyingKey that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 31, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysVerifyingKeyIdConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysVerifyingKeyIdConstMeta => + const TaskConstMeta(debugName: "VerifyingKey_id", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysVerifyingKeyToBytes({ + required VerifyingKey that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 32, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeWireProtocolKeysVerifyingKeyToBytesConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysVerifyingKeyToBytesConstMeta => + const TaskConstMeta( + debugName: "VerifyingKey_to_bytes", + argNames: ["that"], + ); + + @override + Future zoeWireProtocolKeysVerifyingKeyVerify({ + required VerifyingKey that, + required List message, + required Signature signature, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + that, + serializer, + ); + sse_encode_list_prim_u_8_loose(message, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + signature, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 33, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError, + ), + constMeta: kZoeWireProtocolKeysVerifyingKeyVerifyConstMeta, + argValues: [that, message, signature], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysVerifyingKeyVerifyConstMeta => + const TaskConstMeta( + debugName: "VerifyingKey_verify", + argNames: ["that", "message", "signature"], + ); + + @override + Future zoeClientFrbApiCreateSigningKeyRandom() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 34, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kZoeClientFrbApiCreateSigningKeyRandomConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiCreateSigningKeyRandomConstMeta => + const TaskConstMeta(debugName: "create_signing_key_random", argNames: []); + + @override + Future zoeClientFrbApiCreateSocketAddr({ + required String ip, + required int port, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(ip, serializer); + sse_encode_u_16(port, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 35, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr, + decodeErrorData: sse_decode_String, + ), + constMeta: kZoeClientFrbApiCreateSocketAddrConstMeta, + argValues: [ip, port], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiCreateSocketAddrConstMeta => + const TaskConstMeta( + debugName: "create_socket_addr", + argNames: ["ip", "port"], + ); + + @override + Future zoeClientFrbApiFrbInit() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 36, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientFrbApiFrbInitConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiFrbInitConstMeta => + const TaskConstMeta(debugName: "frb_init", argNames: []); + + @override + String crateApiSimpleGreet({required String name}) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(name, serializer); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 37)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kCrateApiSimpleGreetConstMeta, + argValues: [name], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSimpleGreetConstMeta => + const TaskConstMeta(debugName: "greet", argNames: ["name"]); + + @override + Future crateApiSimpleInitApp() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 38, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiSimpleInitAppConstMeta, + argValues: [], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSimpleInitAppConstMeta => + const TaskConstMeta(debugName: "init_app", argNames: []); + + @override + Future zoeClientUtilResolveToSocketAddr({required String s}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(s, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 39, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr, + decodeErrorData: sse_decode_String, + ), + constMeta: kZoeClientUtilResolveToSocketAddrConstMeta, + argValues: [s], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientUtilResolveToSocketAddrConstMeta => + const TaskConstMeta(debugName: "resolve_to_socket_addr", argNames: ["s"]); + + @override + Future zoeClientFrbApiSigningKeyFromHex({required String hex}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(hex, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 40, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_String, + ), + constMeta: kZoeClientFrbApiSigningKeyFromHexConstMeta, + argValues: [hex], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiSigningKeyFromHexConstMeta => + const TaskConstMeta(debugName: "signing_key_from_hex", argNames: ["hex"]); + + @override + Future zoeClientFrbApiSigningKeyToVerifyingKey({ + required String signingKeyHex, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(signingKeyHex, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 41, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_String, + ), + constMeta: kZoeClientFrbApiSigningKeyToVerifyingKeyConstMeta, + argValues: [signingKeyHex], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiSigningKeyToVerifyingKeyConstMeta => + const TaskConstMeta( + debugName: "signing_key_to_verifying_key", + argNames: ["signingKeyHex"], + ); + + @override + Future zoeClientFrbApiSocketAddrIp({required SocketAddr addr}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + addr, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 42, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kZoeClientFrbApiSocketAddrIpConstMeta, + argValues: [addr], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiSocketAddrIpConstMeta => + const TaskConstMeta(debugName: "socket_addr_ip", argNames: ["addr"]); + + @override + Future zoeClientFrbApiSocketAddrPort({required SocketAddr addr}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + addr, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 43, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_16, + decodeErrorData: null, + ), + constMeta: kZoeClientFrbApiSocketAddrPortConstMeta, + argValues: [addr], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiSocketAddrPortConstMeta => + const TaskConstMeta(debugName: "socket_addr_port", argNames: ["addr"]); + + @override + Future zoeClientFrbApiSocketAddrToString({required SocketAddr addr}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + addr, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 44, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kZoeClientFrbApiSocketAddrToStringConstMeta, + argValues: [addr], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiSocketAddrToStringConstMeta => + const TaskConstMeta( + debugName: "socket_addr_to_string", + argNames: ["addr"], + ); + + @override + Future zoeClientFrbApiVerifyingKeyFromHex({ + required String hex, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(hex, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 45, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey, + decodeErrorData: sse_decode_String, + ), + constMeta: kZoeClientFrbApiVerifyingKeyFromHexConstMeta, + argValues: [hex], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiVerifyingKeyFromHexConstMeta => + const TaskConstMeta( + debugName: "verifying_key_from_hex", + argNames: ["hex"], + ); + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_Client => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_Client => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_ClientBuilder => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_ClientBuilder => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_ClientSecret => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_ClientSecret => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_FileRef => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_FileRef => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_KeyPair => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_KeyPair => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_KeyPairError => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_KeyPairError => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_PathBuf => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_PathBuf => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_Signature => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_Signature => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_SigningKey => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_SigningKey => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_SocketAddr => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_SocketAddr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_VerifyError => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_VerifyError => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_VerifyingKey => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_VerifyingKey => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey; + + @protected + AnyhowException dco_decode_AnyhowException(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return AnyhowException(raw as String); + } + + @protected + Client + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientImpl.frbInternalDcoDecode(raw as List); + } + + @protected + ClientBuilder + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientBuilderImpl.frbInternalDcoDecode(raw as List); + } + + @protected + ClientSecret + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientSecretImpl.frbInternalDcoDecode(raw as List); + } + + @protected + FileRef + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return FileRefImpl.frbInternalDcoDecode(raw as List); + } + + @protected + KeyPair + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeyPairImpl.frbInternalDcoDecode(raw as List); + } + + @protected + KeyPairError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeyPairErrorImpl.frbInternalDcoDecode(raw as List); + } + + @protected + PathBuf + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return PathBufImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Signature + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SignatureImpl.frbInternalDcoDecode(raw as List); + } + + @protected + SigningKey + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SigningKeyImpl.frbInternalDcoDecode(raw as List); + } + + @protected + SocketAddr + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SocketAddrImpl.frbInternalDcoDecode(raw as List); + } + + @protected + VerifyError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return VerifyErrorImpl.frbInternalDcoDecode(raw as List); + } + + @protected + VerifyingKey + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return VerifyingKeyImpl.frbInternalDcoDecode(raw as List); + } + + @protected + ClientBuilder + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientBuilderImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Client + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientImpl.frbInternalDcoDecode(raw as List); + } + + @protected + ClientSecret + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientSecretImpl.frbInternalDcoDecode(raw as List); + } + + @protected + FileRef + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return FileRefImpl.frbInternalDcoDecode(raw as List); + } + + @protected + KeyPair + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeyPairImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Signature + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SignatureImpl.frbInternalDcoDecode(raw as List); + } + + @protected + SigningKey + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SigningKeyImpl.frbInternalDcoDecode(raw as List); + } + + @protected + SocketAddr + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SocketAddrImpl.frbInternalDcoDecode(raw as List); + } + + @protected + VerifyingKey + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return VerifyingKeyImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Client + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientImpl.frbInternalDcoDecode(raw as List); + } + + @protected + ClientBuilder + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientBuilderImpl.frbInternalDcoDecode(raw as List); + } + + @protected + ClientSecret + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientSecretImpl.frbInternalDcoDecode(raw as List); + } + + @protected + FileRef + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return FileRefImpl.frbInternalDcoDecode(raw as List); + } + + @protected + KeyPair + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeyPairImpl.frbInternalDcoDecode(raw as List); + } + + @protected + KeyPairError + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeyPairErrorImpl.frbInternalDcoDecode(raw as List); + } + + @protected + PathBuf + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return PathBufImpl.frbInternalDcoDecode(raw as List); + } + + @protected + Signature + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SignatureImpl.frbInternalDcoDecode(raw as List); + } + + @protected + SigningKey + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SigningKeyImpl.frbInternalDcoDecode(raw as List); + } + + @protected + SocketAddr + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SocketAddrImpl.frbInternalDcoDecode(raw as List); + } + + @protected + VerifyError + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return VerifyErrorImpl.frbInternalDcoDecode(raw as List); + } + + @protected + VerifyingKey + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return VerifyingKeyImpl.frbInternalDcoDecode(raw as List); + } + + @protected + String dco_decode_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as String; + } + + @protected + Algorithm dco_decode_algorithm(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return Algorithm.values[raw as int]; + } + + @protected + bool dco_decode_bool(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as bool; + } + + @protected + int dco_decode_i_32(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @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 + 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 + int dco_decode_u_16(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @protected + int dco_decode_u_8(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @protected + U8Array32 dco_decode_u_8_array_32(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return U8Array32(dco_decode_list_prim_u_8_strict(raw)); + } + + @protected + void dco_decode_unit(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + 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 + var inner = sse_decode_String(deserializer); + return AnyhowException(inner); + } + + @protected + Client + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + ClientBuilder + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientBuilderImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + ClientSecret + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientSecretImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + FileRef + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return FileRefImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + KeyPair + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeyPairImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + KeyPairError + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeyPairErrorImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + PathBuf + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return PathBufImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Signature + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SignatureImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + SigningKey + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SigningKeyImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + SocketAddr + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SocketAddrImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + VerifyError + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return VerifyErrorImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + VerifyingKey + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return VerifyingKeyImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + ClientBuilder + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientBuilderImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Client + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + ClientSecret + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientSecretImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + FileRef + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return FileRefImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + KeyPair + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeyPairImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Signature + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SignatureImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + SigningKey + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SigningKeyImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + SocketAddr + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SocketAddrImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + VerifyingKey + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return VerifyingKeyImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Client + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + ClientBuilder + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientBuilderImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + ClientSecret + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientSecretImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + FileRef + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return FileRefImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + KeyPair + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeyPairImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + KeyPairError + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeyPairErrorImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + PathBuf + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return PathBufImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Signature + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SignatureImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + SigningKey + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SigningKeyImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + SocketAddr + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SocketAddrImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + VerifyError + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return VerifyErrorImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + VerifyingKey + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return VerifyingKeyImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @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 + Algorithm sse_decode_algorithm(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_i_32(deserializer); + return Algorithm.values[inner]; + } + + @protected + bool sse_decode_bool(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint8() != 0; + } + + @protected + int sse_decode_i_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getInt32(); + } + + @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 + 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 + int sse_decode_u_16(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint16(); + } + + @protected + int sse_decode_u_8(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint8(); + } + + @protected + U8Array32 sse_decode_u_8_array_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_list_prim_u_8_strict(deserializer); + return U8Array32(inner); + } + + @protected + void sse_decode_unit(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + } + + @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_generatedRustAutoOpaqueInnerClient( + Client self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ClientBuilder self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientBuilderImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientSecretImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as FileRefImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeyPairImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + KeyPairError self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeyPairErrorImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + PathBuf self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as PathBufImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SignatureImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SigningKey self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SigningKeyImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SocketAddr self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SocketAddrImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + VerifyError self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as VerifyErrorImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + VerifyingKey self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as VerifyingKeyImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ClientBuilder self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientBuilderImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + Client self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientSecretImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as FileRefImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeyPairImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SignatureImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SigningKey self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SigningKeyImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SocketAddr self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SocketAddrImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + VerifyingKey self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as VerifyingKeyImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + Client self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ClientBuilder self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientBuilderImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientSecretImpl).frbInternalSseEncode(move: null), + serializer, + ); + } - @override - Future crateApiSimpleInitApp() { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 2, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kCrateApiSimpleInitAppConstMeta, - argValues: [], - apiImpl: this, - ), + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as FileRefImpl).frbInternalSseEncode(move: null), + serializer, ); } - TaskConstMeta get kCrateApiSimpleInitAppConstMeta => - const TaskConstMeta(debugName: "init_app", argNames: []); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeyPairImpl).frbInternalSseEncode(move: null), + serializer, + ); + } @protected - String dco_decode_String(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return raw as String; + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + KeyPairError self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeyPairErrorImpl).frbInternalSseEncode(move: null), + serializer, + ); } @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; + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + PathBuf self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as PathBufImpl).frbInternalSseEncode(move: null), + serializer, + ); } @protected - int dco_decode_u_8(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return raw as int; + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SignatureImpl).frbInternalSseEncode(move: null), + serializer, + ); } @protected - void dco_decode_unit(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - return; + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SigningKey self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SigningKeyImpl).frbInternalSseEncode(move: null), + serializer, + ); } @protected - String sse_decode_String(SseDeserializer deserializer) { + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SocketAddr self, + SseSerializer serializer, + ) { // 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); + sse_encode_usize( + (self as SocketAddrImpl).frbInternalSseEncode(move: null), + serializer, + ); } @protected - Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer) { + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + VerifyError self, + SseSerializer serializer, + ) { // Codec=Sse (Serialization based), see doc to use other codecs - var len_ = sse_decode_i_32(deserializer); - return deserializer.buffer.getUint8List(len_); + sse_encode_usize( + (self as VerifyErrorImpl).frbInternalSseEncode(move: null), + serializer, + ); } @protected - int sse_decode_u_8(SseDeserializer deserializer) { + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + VerifyingKey self, + SseSerializer serializer, + ) { // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getUint8(); + sse_encode_usize( + (self as VerifyingKeyImpl).frbInternalSseEncode(move: null), + serializer, + ); } @protected - void sse_decode_unit(SseDeserializer deserializer) { + 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 - int sse_decode_i_32(SseDeserializer deserializer) { + void sse_encode_algorithm(Algorithm self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getInt32(); + sse_encode_i_32(self.index, serializer); } @protected - bool sse_decode_bool(SseDeserializer deserializer) { + void sse_encode_bool(bool self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - return deserializer.buffer.getUint8() != 0; + serializer.buffer.putUint8(self ? 1 : 0); } @protected - void sse_encode_String(String self, SseSerializer serializer) { + void sse_encode_i_32(int 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); + serializer.buffer.putInt32(self); + } + + @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 @@ -217,6 +3328,22 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { serializer.buffer.putUint8List(self); } + @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_u_16(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint16(self); + } + @protected void sse_encode_u_8(int self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -224,19 +3351,553 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - void sse_encode_unit(void self, SseSerializer serializer) { + void sse_encode_u_8_array_32(U8Array32 self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_list_prim_u_8_strict(self.inner, serializer); } @protected - void sse_encode_i_32(int self, SseSerializer serializer) { + void sse_encode_unit(void self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putInt32(self); } @protected - void sse_encode_bool(bool self, SseSerializer serializer) { + void sse_encode_usize(BigInt self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs - serializer.buffer.putUint8(self ? 1 : 0); + serializer.buffer.putBigUint64(self); } } + +@sealed +class ClientBuilderImpl extends RustOpaque implements ClientBuilder { + // Not to be used by end users + ClientBuilderImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + ClientBuilderImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_ClientBuilder, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_ClientBuilder, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_ClientBuilderPtr, + ); + + Future build() => + RustLib.instance.api.zoeClientClientClientBuilderBuild(that: this); + + Future clientSecret({required ClientSecret secret}) => RustLib + .instance + .api + .zoeClientClientClientBuilderClientSecret(that: this, secret: secret); + + /// Set the storage database path (convenience method) + Future dbStorageDir({required String path}) => RustLib.instance.api + .zoeClientClientClientBuilderDbStorageDir(that: this, path: path); + + /// Set the encryption key for storage + Future encryptionKey({required U8Array32 key}) => RustLib.instance.api + .zoeClientClientClientBuilderEncryptionKey(that: this, key: key); + + Future mediaStorageDir({required String mediaStorageDir}) => + RustLib.instance.api.zoeClientClientClientBuilderMediaStorageDir( + that: this, + mediaStorageDir: mediaStorageDir, + ); + + Future serverInfo({ + required VerifyingKey serverPublicKey, + required SocketAddr serverAddr, + }) => RustLib.instance.api.zoeClientClientClientBuilderServerInfo( + that: this, + serverPublicKey: serverPublicKey, + serverAddr: serverAddr, + ); +} + +@sealed +class ClientImpl extends RustOpaque implements Client { + // Not to be used by end users + ClientImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + ClientImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_Client, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_Client, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_ClientPtr, + ); + + Future clientSecretHex() => + RustLib.instance.api.zoeClientClientClientClientSecretHex(that: this); + + Future close() => + RustLib.instance.api.zoeClientClientClientClose(that: this); + + /// Check if a file exists in storage + /// + /// # Arguments + /// + /// * `stored_info` - Metadata from when the file was stored + /// + /// # Returns + /// + /// `true` if the file exists in storage, `false` otherwise + Future hasFile({required FileRef storedInfo}) => RustLib.instance.api + .zoeClientClientClientHasFile(that: this, storedInfo: storedInfo); + + Future idHex() => + RustLib.instance.api.zoeClientClientClientIdHex(that: this); + + /// Retrieve a file from storage and save it to disk + /// + /// This method: + /// 1. Retrieves the encrypted data from blob storage using the FileRef + /// 2. Decrypts the content + /// 3. Writes the decrypted content to the specified path + /// + /// # Arguments + /// + /// * `file_ref` - Metadata for the file to retrieve + /// * `output_path` - Path where the decrypted file should be saved + /// + /// # Errors + /// + /// Returns an error if: + /// - The file cannot be found in storage + /// - Decryption fails + /// - Writing to disk fails + Future retrieveFile({ + required FileRef fileRef, + required PathBuf outputPath, + }) => RustLib.instance.api.zoeClientClientClientRetrieveFile( + that: this, + fileRef: fileRef, + outputPath: outputPath, + ); + + /// Retrieve a file from storage as bytes + /// + /// This method: + /// 1. Retrieves the encrypted data from blob storage using the FileRef + /// 2. Decrypts the content + /// 3. Returns the decrypted content as bytes + /// + /// # Arguments + /// + /// * `file_ref` - Metadata for the file to retrieve + /// + /// # Returns + /// + /// The decrypted file content as `Vec` + /// + /// # Errors + /// + /// Returns an error if: + /// - The file cannot be found in storage + /// - Decryption fails + Future retrieveFileBytes({required FileRef fileRef}) => RustLib + .instance + .api + .zoeClientClientClientRetrieveFileBytes(that: this, fileRef: fileRef); + + /// Store raw data (not from a file) with encryption and blob storage + /// + /// This method allows storing arbitrary data without reading from disk. + /// + /// # Arguments + /// + /// * `data` - The raw data to store + /// * `reference_name` - A reference name for the data (used in metadata) + /// * `content_type` - Optional content type for metadata + /// + /// # Returns + /// + /// `FileRef` containing the blob hash, encryption info, and metadata + Future storeData({ + required List data, + required String referenceName, + String? contentType, + }) => RustLib.instance.api.zoeClientClientClientStoreData( + that: this, + data: data, + referenceName: referenceName, + contentType: contentType, + ); + + /// Store a file by reading from disk, encrypting, and storing in blob storage + /// + /// This method: + /// 1. Reads the file from the provided path + /// 2. Encrypts the content using convergent encryption + /// 3. Stores the encrypted data in the blob store + /// 4. Returns metadata needed to retrieve the file later + /// + /// # Arguments + /// + /// * `file_path` - Path to the file to store + /// + /// # Returns + /// + /// A `FileRef` containing the metadata needed to retrieve the file + /// + /// # Errors + /// + /// Returns an error if: + /// - The file cannot be read + /// - Encryption fails + /// - Blob storage operation fails + Future storeFile({required PathBuf filePath}) => RustLib.instance.api + .zoeClientClientClientStoreFile(that: this, filePath: filePath); +} + +@sealed +class ClientSecretImpl extends RustOpaque implements ClientSecret { + // Not to be used by end users + ClientSecretImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + ClientSecretImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_ClientSecret, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_ClientSecret, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_ClientSecretPtr, + ); + + Future toHex() => + RustLib.instance.api.zoeClientClientClientSecretToHex(that: this); +} + +@sealed +class FileRefImpl extends RustOpaque implements FileRef { + // Not to be used by end users + FileRefImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + FileRefImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_FileRef, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_FileRef, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_FileRefPtr, + ); +} + +@sealed +class KeyPairErrorImpl extends RustOpaque implements KeyPairError { + // Not to be used by end users + KeyPairErrorImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + KeyPairErrorImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_KeyPairError, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_KeyPairError, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_KeyPairErrorPtr, + ); +} + +@sealed +class KeyPairImpl extends RustOpaque implements KeyPair { + // Not to be used by end users + KeyPairImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + KeyPairImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_KeyPair, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_KeyPair, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_KeyPairPtr, + ); + + /// Get the algorithm for this key type + Future algorithm() => + RustLib.instance.api.zoeWireProtocolKeysKeyPairAlgorithm(that: this); + + Future id() => + RustLib.instance.api.zoeWireProtocolKeysKeyPairId(that: this); + + Future publicKey() => + RustLib.instance.api.zoeWireProtocolKeysKeyPairPublicKey(that: this); + + Future sign({required List message}) => RustLib.instance.api + .zoeWireProtocolKeysKeyPairSign(that: this, message: message); + + /// Encode the KeyPair to a PEM string suitable for environment variables or file storage. + /// + /// This method creates PEM blocks containing: + /// - For Ed25519: Only the private key (public key can be derived) + /// - For ML-DSA: Both private and public keys in separate PEM blocks (hash is derived from public key) + /// + /// All PEM blocks are prefixed with "ZOE" to identify them as Zoe-specific formats. + /// + /// # Returns + /// + /// A PEM-formatted string containing the key data. + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::KeyPair; + /// use rand::rngs::OsRng; + /// + /// let keypair = KeyPair::generate_ed25519(&mut OsRng); + /// let pem_string = keypair.to_pem().unwrap(); + /// + /// // Store in environment variable or file + /// std::env::set_var("MY_PRIVATE_KEY", &pem_string); + /// ``` + Future toPem() => + RustLib.instance.api.zoeWireProtocolKeysKeyPairToPem(that: this); +} + +@sealed +class PathBufImpl extends RustOpaque implements PathBuf { + // Not to be used by end users + PathBufImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + PathBufImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_PathBuf, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_PathBuf, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_PathBufPtr, + ); +} + +@sealed +class SignatureImpl extends RustOpaque implements Signature { + // Not to be used by end users + SignatureImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + SignatureImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_Signature, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_Signature, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_SignaturePtr, + ); + + /// Encode the Signature to bytes for serialization + Future encode() => + RustLib.instance.api.zoeWireProtocolKeysSignatureEncode(that: this); + + Future id() => + RustLib.instance.api.zoeWireProtocolKeysSignatureId(that: this); +} + +@sealed +class SigningKeyImpl extends RustOpaque implements SigningKey { + // Not to be used by end users + SigningKeyImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + SigningKeyImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_SigningKey, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_SigningKey, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_SigningKeyPtr, + ); + + /// Sign a message with this signing key + Future sign({required List message}) => RustLib.instance.api + .zoeWireProtocolKeysSigningKeySign(that: this, message: message); +} + +@sealed +class SocketAddrImpl extends RustOpaque implements SocketAddr { + // Not to be used by end users + SocketAddrImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + SocketAddrImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_SocketAddr, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_SocketAddr, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_SocketAddrPtr, + ); +} + +@sealed +class VerifyErrorImpl extends RustOpaque implements VerifyError { + // Not to be used by end users + VerifyErrorImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + VerifyErrorImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_VerifyError, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_VerifyError, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_VerifyErrorPtr, + ); +} + +@sealed +class VerifyingKeyImpl extends RustOpaque implements VerifyingKey { + // Not to be used by end users + VerifyingKeyImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + VerifyingKeyImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_VerifyingKey, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_VerifyingKey, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_VerifyingKeyPtr, + ); + + /// Get the algorithm for this key type + /// + /// flutter_rust_bridge:opaque + Future algorithm() => + RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyAlgorithm(that: this); + + /// Encode the VerifyingKey to bytes for serialization. + /// + /// This method serializes the key using postcard format for efficient storage + /// and transmission. The resulting bytes can be deserialized back to a + /// `VerifyingKey` using `postcard::from_bytes()`. + /// + /// # Returns + /// + /// A `Vec` containing the serialized key data. + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::{KeyPair, VerifyingKey}; + /// use rand::rngs::OsRng; + /// + /// let keypair = KeyPair::generate_ed25519(&mut OsRng); + /// let verifying_key = keypair.public_key(); + /// + /// // Serialize the key + /// let key_bytes = verifying_key.encode(); + /// + /// // Deserialize it back + /// let restored_key: VerifyingKey = postcard::from_bytes(&key_bytes).unwrap(); + /// assert_eq!(&verifying_key, &restored_key); + /// ``` + /// flutter_rust_bridge:opaque + Future encode() => + RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyEncode(that: this); + + /// flutter_rust_bridge:opaque + Future id() => + RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyId(that: this); + + /// flutter_rust_bridge:opaque + Future toBytes() => + RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyToBytes(that: this); + + /// Verify a signature against a message using the appropriate algorithm. + /// + /// This method automatically matches the signature type with the key type + /// and returns `Ok(false)` if they don't match (rather than an error). + /// + /// # Arguments + /// + /// * `message` - The message bytes that were signed + /// * `signature` - The signature to verify + /// + /// # Returns + /// + /// * `Ok(true)` - Signature is valid for this key and message + /// * `Ok(false)` - Signature is invalid or key/signature types don't match + /// * `Err(_)` - Verification error (malformed signature, etc.) + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::{KeyPair, VerifyingKey, SigningKey}; + /// use rand::rngs::OsRng; + /// + /// # fn example() -> Result<(), Box> { + /// let keypair = KeyPair::generate_ed25519(&mut OsRng); + /// let message = b"Hello, world!"; + /// let signature = keypair.sign(message); + /// let verifying_key = keypair.public_key(); + /// + /// let is_valid = verifying_key.verify(message, &signature)?; + /// assert!(is_valid); + /// # Ok(()) + /// # } + /// ``` + /// flutter_rust_bridge:opaque + Future verify({ + required List message, + required Signature signature, + }) => RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyVerify( + that: this, + message: message, + signature: signature, + ); +} diff --git a/packages/zoe_native/lib/src/rust/frb_generated.io.dart b/packages/zoe_native/lib/src/rust/frb_generated.io.dart index d7973515..e7f194b2 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.io.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.io.dart @@ -8,7 +8,12 @@ import 'dart:async'; import 'dart:convert'; import 'dart:ffi' as ffi; import 'frb_generated.dart'; +import 'lib.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; +import 'third_party/zoe_client/client.dart'; +import 'third_party/zoe_client/frb_api.dart'; +import 'third_party/zoe_client/util.dart'; +import 'third_party/zoe_wire_protocol/keys.dart'; abstract class RustLibApiImplPlatform extends BaseApiImpl { RustLibApiImplPlatform({ @@ -18,56 +23,803 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { required super.portManager, }); + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_ClientPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_ClientBuilderPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_ClientSecretPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_FileRefPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_KeyPairPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_KeyPairErrorPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairErrorPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_PathBufPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_SignaturePtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignaturePtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_SigningKeyPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_SocketAddrPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_VerifyErrorPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyErrorPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_VerifyingKeyPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr; + + @protected + AnyhowException dco_decode_AnyhowException(dynamic raw); + + @protected + Client + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ); + + @protected + ClientBuilder + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ); + + @protected + ClientSecret + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ); + + @protected + FileRef + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ); + + @protected + KeyPair + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ); + + @protected + KeyPairError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + dynamic raw, + ); + + @protected + PathBuf + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + dynamic raw, + ); + + @protected + Signature + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + dynamic raw, + ); + + @protected + SigningKey + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + dynamic raw, + ); + + @protected + SocketAddr + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + dynamic raw, + ); + + @protected + VerifyError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + dynamic raw, + ); + + @protected + VerifyingKey + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + dynamic raw, + ); + + @protected + ClientBuilder + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ); + + @protected + Client + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ); + + @protected + ClientSecret + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ); + + @protected + FileRef + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ); + + @protected + KeyPair + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ); + + @protected + Signature + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + dynamic raw, + ); + + @protected + SigningKey + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + dynamic raw, + ); + + @protected + SocketAddr + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + dynamic raw, + ); + + @protected + VerifyingKey + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + dynamic raw, + ); + + @protected + Client + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ); + + @protected + ClientBuilder + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ); + + @protected + ClientSecret + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ); + + @protected + FileRef + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ); + + @protected + KeyPair + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ); + + @protected + KeyPairError + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + dynamic raw, + ); + + @protected + PathBuf + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + dynamic raw, + ); + + @protected + Signature + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + dynamic raw, + ); + + @protected + SigningKey + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + dynamic raw, + ); + + @protected + SocketAddr + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + dynamic raw, + ); + + @protected + VerifyError + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + dynamic raw, + ); + + @protected + VerifyingKey + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + dynamic raw, + ); + @protected String dco_decode_String(dynamic raw); + @protected + Algorithm dco_decode_algorithm(dynamic raw); + + @protected + bool dco_decode_bool(dynamic raw); + + @protected + int dco_decode_i_32(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 + String? dco_decode_opt_String(dynamic raw); + + @protected + int dco_decode_u_16(dynamic raw); + @protected int dco_decode_u_8(dynamic raw); + @protected + U8Array32 dco_decode_u_8_array_32(dynamic raw); + @protected void dco_decode_unit(dynamic raw); + @protected + BigInt dco_decode_usize(dynamic raw); + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer); + + @protected + Client + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ); + + @protected + ClientBuilder + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ); + + @protected + ClientSecret + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ); + + @protected + FileRef + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + SseDeserializer deserializer, + ); + + @protected + KeyPair + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + SseDeserializer deserializer, + ); + + @protected + KeyPairError + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + SseDeserializer deserializer, + ); + + @protected + PathBuf + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + SseDeserializer deserializer, + ); + + @protected + Signature + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ); + + @protected + SigningKey + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ); + + @protected + SocketAddr + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SseDeserializer deserializer, + ); + + @protected + VerifyError + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + SseDeserializer deserializer, + ); + + @protected + VerifyingKey + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + SseDeserializer deserializer, + ); + + @protected + ClientBuilder + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ); + + @protected + Client + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ); + + @protected + ClientSecret + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ); + + @protected + FileRef + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + SseDeserializer deserializer, + ); + + @protected + KeyPair + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + SseDeserializer deserializer, + ); + + @protected + Signature + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ); + + @protected + SigningKey + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ); + + @protected + SocketAddr + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SseDeserializer deserializer, + ); + + @protected + VerifyingKey + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + SseDeserializer deserializer, + ); + + @protected + Client + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ); + + @protected + ClientBuilder + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ); + + @protected + ClientSecret + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ); + + @protected + FileRef + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + SseDeserializer deserializer, + ); + + @protected + KeyPair + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + SseDeserializer deserializer, + ); + + @protected + KeyPairError + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + SseDeserializer deserializer, + ); + + @protected + PathBuf + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + SseDeserializer deserializer, + ); + + @protected + Signature + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ); + + @protected + SigningKey + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ); + + @protected + SocketAddr + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SseDeserializer deserializer, + ); + + @protected + VerifyError + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + SseDeserializer deserializer, + ); + + @protected + VerifyingKey + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + SseDeserializer deserializer, + ); + @protected String sse_decode_String(SseDeserializer deserializer); + @protected + Algorithm sse_decode_algorithm(SseDeserializer deserializer); + + @protected + bool sse_decode_bool(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(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 + String? sse_decode_opt_String(SseDeserializer deserializer); + + @protected + int sse_decode_u_16(SseDeserializer deserializer); + @protected int sse_decode_u_8(SseDeserializer deserializer); + @protected + U8Array32 sse_decode_u_8_array_32(SseDeserializer deserializer); + @protected void sse_decode_unit(SseDeserializer deserializer); @protected - int sse_decode_i_32(SseDeserializer deserializer); + BigInt sse_decode_usize(SseDeserializer deserializer); @protected - bool sse_decode_bool(SseDeserializer deserializer); + void sse_encode_AnyhowException( + AnyhowException self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + Client self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ClientBuilder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + KeyPairError self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + PathBuf self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SigningKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SocketAddr self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + VerifyError self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + VerifyingKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ClientBuilder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + Client self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SigningKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SocketAddr self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + VerifyingKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + Client self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ClientBuilder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + KeyPairError self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + PathBuf self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SigningKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SocketAddr self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + VerifyError self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + VerifyingKey self, + SseSerializer serializer, + ); @protected void sse_encode_String(String self, SseSerializer serializer); + @protected + void sse_encode_algorithm(Algorithm self, SseSerializer serializer); + + @protected + void sse_encode_bool(bool self, SseSerializer serializer); + + @protected + void sse_encode_i_32(int 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_opt_String(String? self, SseSerializer serializer); + + @protected + void sse_encode_u_16(int self, SseSerializer serializer); + @protected void sse_encode_u_8(int self, SseSerializer serializer); @protected - void sse_encode_unit(void self, SseSerializer serializer); + void sse_encode_u_8_array_32(U8Array32 self, SseSerializer serializer); @protected - void sse_encode_i_32(int self, SseSerializer serializer); + void sse_encode_unit(void self, SseSerializer serializer); @protected - void sse_encode_bool(bool self, SseSerializer serializer); + void sse_encode_usize(BigInt self, SseSerializer serializer); } // Section: wire_class @@ -83,4 +835,412 @@ 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_generatedRustAutoOpaqueInnerClient( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilderPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecretPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairErrorPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairErrorPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairErrorPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairErrorPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignaturePtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignaturePtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignaturePtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignaturePtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKeyPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyErrorPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyErrorPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyErrorPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyErrorPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr + .asFunction)>(); } diff --git a/packages/zoe_native/lib/src/rust/frb_generated.web.dart b/packages/zoe_native/lib/src/rust/frb_generated.web.dart index 431eaa95..9ff2888d 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.web.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.web.dart @@ -10,7 +10,12 @@ import 'api/simple.dart'; import 'dart:async'; import 'dart:convert'; import 'frb_generated.dart'; +import 'lib.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; +import 'third_party/zoe_client/client.dart'; +import 'third_party/zoe_client/frb_api.dart'; +import 'third_party/zoe_client/util.dart'; +import 'third_party/zoe_wire_protocol/keys.dart'; abstract class RustLibApiImplPlatform extends BaseApiImpl { RustLibApiImplPlatform({ @@ -20,62 +25,1001 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { required super.portManager, }); + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_ClientPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_ClientBuilderPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_ClientSecretPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_FileRefPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_KeyPairPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_KeyPairErrorPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_PathBufPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_SignaturePtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_SigningKeyPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_SocketAddrPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_VerifyErrorPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_VerifyingKeyPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey; + + @protected + AnyhowException dco_decode_AnyhowException(dynamic raw); + + @protected + Client + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ); + + @protected + ClientBuilder + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ); + + @protected + ClientSecret + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ); + + @protected + FileRef + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ); + + @protected + KeyPair + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ); + + @protected + KeyPairError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + dynamic raw, + ); + + @protected + PathBuf + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + dynamic raw, + ); + + @protected + Signature + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + dynamic raw, + ); + + @protected + SigningKey + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + dynamic raw, + ); + + @protected + SocketAddr + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + dynamic raw, + ); + + @protected + VerifyError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + dynamic raw, + ); + + @protected + VerifyingKey + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + dynamic raw, + ); + + @protected + ClientBuilder + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ); + + @protected + Client + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ); + + @protected + ClientSecret + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ); + + @protected + FileRef + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ); + + @protected + KeyPair + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ); + + @protected + Signature + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + dynamic raw, + ); + + @protected + SigningKey + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + dynamic raw, + ); + + @protected + SocketAddr + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + dynamic raw, + ); + + @protected + VerifyingKey + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + dynamic raw, + ); + + @protected + Client + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ); + + @protected + ClientBuilder + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ); + + @protected + ClientSecret + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ); + + @protected + FileRef + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ); + + @protected + KeyPair + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ); + + @protected + KeyPairError + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + dynamic raw, + ); + + @protected + PathBuf + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + dynamic raw, + ); + + @protected + Signature + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + dynamic raw, + ); + + @protected + SigningKey + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + dynamic raw, + ); + + @protected + SocketAddr + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + dynamic raw, + ); + + @protected + VerifyError + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + dynamic raw, + ); + + @protected + VerifyingKey + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + dynamic raw, + ); + @protected String dco_decode_String(dynamic raw); + @protected + Algorithm dco_decode_algorithm(dynamic raw); + + @protected + bool dco_decode_bool(dynamic raw); + + @protected + int dco_decode_i_32(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 + String? dco_decode_opt_String(dynamic raw); + + @protected + int dco_decode_u_16(dynamic raw); + @protected int dco_decode_u_8(dynamic raw); + @protected + U8Array32 dco_decode_u_8_array_32(dynamic raw); + @protected void dco_decode_unit(dynamic raw); + @protected + BigInt dco_decode_usize(dynamic raw); + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer); + + @protected + Client + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ); + + @protected + ClientBuilder + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ); + + @protected + ClientSecret + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ); + + @protected + FileRef + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + SseDeserializer deserializer, + ); + + @protected + KeyPair + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + SseDeserializer deserializer, + ); + + @protected + KeyPairError + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + SseDeserializer deserializer, + ); + + @protected + PathBuf + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + SseDeserializer deserializer, + ); + + @protected + Signature + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ); + + @protected + SigningKey + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ); + + @protected + SocketAddr + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SseDeserializer deserializer, + ); + + @protected + VerifyError + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + SseDeserializer deserializer, + ); + + @protected + VerifyingKey + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + SseDeserializer deserializer, + ); + + @protected + ClientBuilder + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ); + + @protected + Client + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ); + + @protected + ClientSecret + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ); + + @protected + FileRef + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + SseDeserializer deserializer, + ); + + @protected + KeyPair + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + SseDeserializer deserializer, + ); + + @protected + Signature + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ); + + @protected + SigningKey + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ); + + @protected + SocketAddr + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SseDeserializer deserializer, + ); + + @protected + VerifyingKey + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + SseDeserializer deserializer, + ); + + @protected + Client + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ); + + @protected + ClientBuilder + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ); + + @protected + ClientSecret + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ); + + @protected + FileRef + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + SseDeserializer deserializer, + ); + + @protected + KeyPair + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + SseDeserializer deserializer, + ); + + @protected + KeyPairError + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + SseDeserializer deserializer, + ); + + @protected + PathBuf + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + SseDeserializer deserializer, + ); + + @protected + Signature + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ); + + @protected + SigningKey + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ); + + @protected + SocketAddr + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SseDeserializer deserializer, + ); + + @protected + VerifyError + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + SseDeserializer deserializer, + ); + + @protected + VerifyingKey + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + SseDeserializer deserializer, + ); + @protected String sse_decode_String(SseDeserializer deserializer); + @protected + Algorithm sse_decode_algorithm(SseDeserializer deserializer); + + @protected + bool sse_decode_bool(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(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 + String? sse_decode_opt_String(SseDeserializer deserializer); + + @protected + int sse_decode_u_16(SseDeserializer deserializer); + @protected int sse_decode_u_8(SseDeserializer deserializer); + @protected + U8Array32 sse_decode_u_8_array_32(SseDeserializer deserializer); + @protected void sse_decode_unit(SseDeserializer deserializer); @protected - int sse_decode_i_32(SseDeserializer deserializer); + BigInt sse_decode_usize(SseDeserializer deserializer); @protected - bool sse_decode_bool(SseDeserializer deserializer); + void sse_encode_AnyhowException( + AnyhowException self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + Client self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ClientBuilder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + KeyPairError self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + PathBuf self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SigningKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SocketAddr self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + VerifyError self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + VerifyingKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ClientBuilder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + Client self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SigningKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SocketAddr self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + VerifyingKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + Client self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ClientBuilder self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + KeyPairError self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + PathBuf self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SigningKey self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + SocketAddr self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + VerifyError self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + VerifyingKey self, + SseSerializer serializer, + ); @protected void sse_encode_String(String self, SseSerializer serializer); + @protected + void sse_encode_algorithm(Algorithm self, SseSerializer serializer); + + @protected + void sse_encode_bool(bool self, SseSerializer serializer); + + @protected + void sse_encode_i_32(int 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_opt_String(String? self, SseSerializer serializer); + + @protected + void sse_encode_u_16(int self, SseSerializer serializer); + @protected void sse_encode_u_8(int self, SseSerializer serializer); @protected - void sse_encode_unit(void self, SseSerializer serializer); + void sse_encode_u_8_array_32(U8Array32 self, SseSerializer serializer); @protected - void sse_encode_i_32(int self, SseSerializer serializer); + void sse_encode_unit(void self, SseSerializer serializer); @protected - void sse_encode_bool(bool self, SseSerializer serializer); + 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_generatedRustAutoOpaqueInnerClient( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + ptr, + ); } @JS('wasm_bindgen') @@ -83,4 +1027,124 @@ 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_generatedRustAutoOpaqueInnerClient( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + int ptr, + ); +} diff --git a/packages/zoe_native/lib/src/rust/lib.dart b/packages/zoe_native/lib/src/rust/lib.dart new file mode 100644 index 00000000..2ff6b29d --- /dev/null +++ b/packages/zoe_native/lib/src/rust/lib.dart @@ -0,0 +1,23 @@ +// 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:collection/collection.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +// Rust type: RustOpaqueMoi> +abstract class SocketAddr implements RustOpaqueInterface {} + +class U8Array32 extends NonGrowableListView { + static const arraySize = 32; + + @internal + Uint8List get inner => _inner; + final Uint8List _inner; + + U8Array32(this._inner) : assert(_inner.length == arraySize), super(_inner); + + U8Array32.init() : this(Uint8List(arraySize)); +} diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart new file mode 100644 index 00000000..9401e412 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart @@ -0,0 +1,161 @@ +// 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 '../../lib.dart'; +import '../zoe_wire_protocol/keys.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): `clone` +// These functions are ignored (category: IgnoreBecauseExplicitAttribute): `blob_client`, `db_storage_dir_pathbuf`, `inner_keypair`, `media_storage_dir_pathbuf` + +// Rust type: RustOpaqueMoi> +abstract class Client implements RustOpaqueInterface { + /// Create a new ClientBuilder for constructing a Client + static Future builder() => + RustLib.instance.api.zoeClientClientClientBuilder(); + + Future clientSecretHex(); + + Future close(); + + /// Check if a file exists in storage + /// + /// # Arguments + /// + /// * `stored_info` - Metadata from when the file was stored + /// + /// # Returns + /// + /// `true` if the file exists in storage, `false` otherwise + Future hasFile({required FileRef storedInfo}); + + Future idHex(); + + /// Retrieve a file from storage and save it to disk + /// + /// This method: + /// 1. Retrieves the encrypted data from blob storage using the FileRef + /// 2. Decrypts the content + /// 3. Writes the decrypted content to the specified path + /// + /// # Arguments + /// + /// * `file_ref` - Metadata for the file to retrieve + /// * `output_path` - Path where the decrypted file should be saved + /// + /// # Errors + /// + /// Returns an error if: + /// - The file cannot be found in storage + /// - Decryption fails + /// - Writing to disk fails + Future retrieveFile({ + required FileRef fileRef, + required PathBuf outputPath, + }); + + /// Retrieve a file from storage as bytes + /// + /// This method: + /// 1. Retrieves the encrypted data from blob storage using the FileRef + /// 2. Decrypts the content + /// 3. Returns the decrypted content as bytes + /// + /// # Arguments + /// + /// * `file_ref` - Metadata for the file to retrieve + /// + /// # Returns + /// + /// The decrypted file content as `Vec` + /// + /// # Errors + /// + /// Returns an error if: + /// - The file cannot be found in storage + /// - Decryption fails + Future retrieveFileBytes({required FileRef fileRef}); + + /// Store raw data (not from a file) with encryption and blob storage + /// + /// This method allows storing arbitrary data without reading from disk. + /// + /// # Arguments + /// + /// * `data` - The raw data to store + /// * `reference_name` - A reference name for the data (used in metadata) + /// * `content_type` - Optional content type for metadata + /// + /// # Returns + /// + /// `FileRef` containing the blob hash, encryption info, and metadata + Future storeData({ + required List data, + required String referenceName, + String? contentType, + }); + + /// Store a file by reading from disk, encrypting, and storing in blob storage + /// + /// This method: + /// 1. Reads the file from the provided path + /// 2. Encrypts the content using convergent encryption + /// 3. Stores the encrypted data in the blob store + /// 4. Returns metadata needed to retrieve the file later + /// + /// # Arguments + /// + /// * `file_path` - Path to the file to store + /// + /// # Returns + /// + /// A `FileRef` containing the metadata needed to retrieve the file + /// + /// # Errors + /// + /// Returns an error if: + /// - The file cannot be read + /// - Encryption fails + /// - Blob storage operation fails + Future storeFile({required PathBuf filePath}); +} + +// Rust type: RustOpaqueMoi> +abstract class ClientBuilder implements RustOpaqueInterface { + Future build(); + + Future clientSecret({required ClientSecret secret}); + + /// Set the storage database path (convenience method) + Future dbStorageDir({required String path}); + + static Future default_() => + RustLib.instance.api.zoeClientClientClientBuilderDefault(); + + /// Set the encryption key for storage + Future encryptionKey({required U8Array32 key}); + + Future mediaStorageDir({required String mediaStorageDir}); + + Future serverInfo({ + required VerifyingKey serverPublicKey, + required SocketAddr serverAddr, + }); +} + +// Rust type: RustOpaqueMoi> +abstract class ClientSecret implements RustOpaqueInterface { + static Future fromHex({required String hex}) => + RustLib.instance.api.zoeClientClientClientSecretFromHex(hex: hex); + + Future toHex(); +} + +// Rust type: RustOpaqueMoi> +abstract class FileRef implements RustOpaqueInterface {} + +// Rust type: RustOpaqueMoi> +abstract class PathBuf implements RustOpaqueInterface {} diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/frb_api.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/frb_api.dart new file mode 100644 index 00000000..1c746d67 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/frb_api.dart @@ -0,0 +1,37 @@ +// 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 '../../lib.dart'; +import '../zoe_wire_protocol/keys.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +Future createSocketAddr({required String ip, required int port}) => + RustLib.instance.api.zoeClientFrbApiCreateSocketAddr(ip: ip, port: port); + +Future socketAddrToString({required SocketAddr addr}) => + RustLib.instance.api.zoeClientFrbApiSocketAddrToString(addr: addr); + +Future socketAddrIp({required SocketAddr addr}) => + RustLib.instance.api.zoeClientFrbApiSocketAddrIp(addr: addr); + +Future socketAddrPort({required SocketAddr addr}) => + RustLib.instance.api.zoeClientFrbApiSocketAddrPort(addr: addr); + +Future frbInit() => RustLib.instance.api.zoeClientFrbApiFrbInit(); + +Future createSigningKeyRandom() => + RustLib.instance.api.zoeClientFrbApiCreateSigningKeyRandom(); + +Future signingKeyFromHex({required String hex}) => + RustLib.instance.api.zoeClientFrbApiSigningKeyFromHex(hex: hex); + +Future signingKeyToVerifyingKey({required String signingKeyHex}) => + RustLib.instance.api.zoeClientFrbApiSigningKeyToVerifyingKey( + signingKeyHex: signingKeyHex, + ); + +Future verifyingKeyFromHex({required String hex}) => + RustLib.instance.api.zoeClientFrbApiVerifyingKeyFromHex(hex: hex); diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/util.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/util.dart new file mode 100644 index 00000000..ce26e71d --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/util.dart @@ -0,0 +1,11 @@ +// 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 '../../lib.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +Future resolveToSocketAddr({required String s}) => + RustLib.instance.api.zoeClientUtilResolveToSocketAddr(s: s); diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/keys.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/keys.dart new file mode 100644 index 00000000..c9d56285 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/keys.dart @@ -0,0 +1,200 @@ +// 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'; + +// These functions are ignored because they have generic arguments: `generate_ed25519`, `generate_for_algorithm`, `generate_ml_dsa44`, `generate_ml_dsa65`, `generate_ml_dsa87`, `generate` +// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `clone`, `clone`, `clone`, `clone`, `cmp`, `eq`, `eq`, `eq`, `eq`, `eq`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `hash`, `partial_cmp`, `partial_cmp`, `source`, `try_from` + +// Rust type: RustOpaqueMoi> +abstract class KeyPair implements RustOpaqueInterface { + /// Get the algorithm for this key type + Future algorithm(); + + /// Decode a KeyPair from a PEM string. + /// + /// This method can parse PEM files created by `to_pem()`, using `parse_many` to + /// read multiple PEM blocks and automatically detecting the key type from the + /// PEM labels to reconstruct the appropriate KeyPair. + /// + /// # Arguments + /// + /// * `pem_string` - The PEM-formatted string containing key data + /// + /// # Returns + /// + /// A `KeyPair` instance reconstructed from the PEM data. + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::KeyPair; + /// use rand::rngs::OsRng; + /// + /// let original = KeyPair::generate_ed25519(&mut OsRng); + /// let pem_string = original.to_pem().unwrap(); + /// let restored = KeyPair::from_pem(&pem_string).unwrap(); + /// + /// assert_eq!(original.public_key(), restored.public_key()); + /// ``` + static Future fromPem({required String pemString}) => RustLib + .instance + .api + .zoeWireProtocolKeysKeyPairFromPem(pemString: pemString); + + Future id(); + + Future publicKey(); + + Future sign({required List message}); + + /// Encode the KeyPair to a PEM string suitable for environment variables or file storage. + /// + /// This method creates PEM blocks containing: + /// - For Ed25519: Only the private key (public key can be derived) + /// - For ML-DSA: Both private and public keys in separate PEM blocks (hash is derived from public key) + /// + /// All PEM blocks are prefixed with "ZOE" to identify them as Zoe-specific formats. + /// + /// # Returns + /// + /// A PEM-formatted string containing the key data. + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::KeyPair; + /// use rand::rngs::OsRng; + /// + /// let keypair = KeyPair::generate_ed25519(&mut OsRng); + /// let pem_string = keypair.to_pem().unwrap(); + /// + /// // Store in environment variable or file + /// std::env::set_var("MY_PRIVATE_KEY", &pem_string); + /// ``` + Future toPem(); +} + +// Rust type: RustOpaqueMoi> +abstract class KeyPairError implements RustOpaqueInterface {} + +// Rust type: RustOpaqueMoi> +abstract class Signature implements RustOpaqueInterface { + /// Encode the Signature to bytes for serialization + Future encode(); + + Future id(); +} + +// Rust type: RustOpaqueMoi> +abstract class SigningKey implements RustOpaqueInterface { + /// Sign a message with this signing key + Future sign({required List message}); +} + +// Rust type: RustOpaqueMoi> +abstract class VerifyError implements RustOpaqueInterface {} + +// Rust type: RustOpaqueMoi> +abstract class VerifyingKey implements RustOpaqueInterface { + /// Get the algorithm for this key type + /// + /// flutter_rust_bridge:opaque + Future algorithm(); + + /// Encode the VerifyingKey to bytes for serialization. + /// + /// This method serializes the key using postcard format for efficient storage + /// and transmission. The resulting bytes can be deserialized back to a + /// `VerifyingKey` using `postcard::from_bytes()`. + /// + /// # Returns + /// + /// A `Vec` containing the serialized key data. + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::{KeyPair, VerifyingKey}; + /// use rand::rngs::OsRng; + /// + /// let keypair = KeyPair::generate_ed25519(&mut OsRng); + /// let verifying_key = keypair.public_key(); + /// + /// // Serialize the key + /// let key_bytes = verifying_key.encode(); + /// + /// // Deserialize it back + /// let restored_key: VerifyingKey = postcard::from_bytes(&key_bytes).unwrap(); + /// assert_eq!(&verifying_key, &restored_key); + /// ``` + /// flutter_rust_bridge:opaque + Future encode(); + + /// flutter_rust_bridge:opaque + static Future fromHex({required String hex}) => + RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyFromHex(hex: hex); + + /// flutter_rust_bridge:opaque + Future id(); + + /// flutter_rust_bridge:opaque + Future toBytes(); + + /// Verify a signature against a message using the appropriate algorithm. + /// + /// This method automatically matches the signature type with the key type + /// and returns `Ok(false)` if they don't match (rather than an error). + /// + /// # Arguments + /// + /// * `message` - The message bytes that were signed + /// * `signature` - The signature to verify + /// + /// # Returns + /// + /// * `Ok(true)` - Signature is valid for this key and message + /// * `Ok(false)` - Signature is invalid or key/signature types don't match + /// * `Err(_)` - Verification error (malformed signature, etc.) + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::{KeyPair, VerifyingKey, SigningKey}; + /// use rand::rngs::OsRng; + /// + /// # fn example() -> Result<(), Box> { + /// let keypair = KeyPair::generate_ed25519(&mut OsRng); + /// let message = b"Hello, world!"; + /// let signature = keypair.sign(message); + /// let verifying_key = keypair.public_key(); + /// + /// let is_valid = verifying_key.verify(message, &signature)?; + /// assert!(is_valid); + /// # Ok(()) + /// # } + /// ``` + /// flutter_rust_bridge:opaque + Future verify({ + required List message, + required Signature signature, + }); +} + +/// Cryptographic algorithm identifier +enum Algorithm { + /// Ed25519 elliptic curve signatures + ed25519, + + /// ML-DSA-44 post-quantum signatures (TLS certificates, ~128-bit security) + mlDsa44, + + /// ML-DSA-65 post-quantum signatures (messages, ~192-bit security) + mlDsa65, + + /// ML-DSA-87 post-quantum signatures (high security, ~256-bit security) + mlDsa87, +} diff --git a/packages/zoe_native/lib/src/support.dart b/packages/zoe_native/lib/src/support.dart index e69de29b..1922ba31 100644 --- a/packages/zoe_native/lib/src/support.dart +++ b/packages/zoe_native/lib/src/support.dart @@ -0,0 +1,128 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter/material.dart'; +// import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +// import 'package:package_info_plus/package_info_plus.dart'; +import 'package:path/path.dart' as p; +import 'package:path_provider/path_provider.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:zoe_native/zoe_native.dart'; + +const rustLogKey = 'RUST_LOG'; +const proxyKey = 'HTTP_PROXY'; +const bool isDevBuild = !bool.fromEnvironment('dart.vm.product'); + +// default development server +const defaultServerAddr = 'a.dev.hellozoe.app:13918'; +const defaultServerKey = + '00201f12f22a1ed75a2e12462c8c106121db49a779d1bd2fb9c96a881835c068f09c'; + +Completer? _sharedPrefCompl; +Completer? _appDirCompl; +Completer? _appCacheDirCompl; +Completer? _clientCompl; + +Future appDir() async { + if (_appDirCompl == null) { + Completer completer = Completer(); + completer.complete(appDirInner()); + _appDirCompl = completer; + } + return _appDirCompl!.future; +} + +Future appCacheDir() async { + if (_appCacheDirCompl == null) { + Completer completer = Completer(); + completer.complete(appCacheDirInner()); + _appCacheDirCompl = completer; + } + return _appCacheDirCompl!.future; +} + +Future appDirInner() async { + Directory appDocDir = await getApplicationSupportDirectory(); + if (isDevBuild) { + // on dev we put this into a subfolder to separate from any installed version + appDocDir = Directory(p.join(appDocDir.path, 'DEV')); + if (!await appDocDir.exists()) { + await appDocDir.create(); + } + } + return appDocDir.path; +} + +Future appCacheDirInner() async { + Directory appCacheDir = await getApplicationCacheDirectory(); + if (isDevBuild) { + // on dev we put this into a subfolder to separate from any installed version + appCacheDir = Directory(p.join(appCacheDir.path, 'DEV')); + if (!await appCacheDir.exists()) { + await appCacheDir.create(); + } + } + return appCacheDir.path; +} + +@visibleForTesting +Future resetSharedPrefs() async { + _sharedPrefCompl = null; +} + +Future sharedPrefs() async { + if (_sharedPrefCompl == null) { + // if (isDevBuild) { + // // on dev we put this into a prefix to separate from any installed version + // SharedPreferences.setPrefix('dev.flutter'); + // } + final Completer completer = + Completer(); + completer.complete(SharedPreferences.getInstance()); + _sharedPrefCompl = completer; + } + + return _sharedPrefCompl!.future; +} + +Future _defaultClientBuilder({ + String? serverAddr, + String? serverKey, +}) async { + ClientBuilder builder = await ClientBuilder.default_(); + + builder.dbStorageDir(path: await appDir()); + builder.mediaStorageDir(mediaStorageDir: await appCacheDir()); + + serverAddr ??= defaultServerAddr; + serverKey ??= defaultServerKey; + + builder.serverInfo( + serverPublicKey: await VerifyingKey.fromHex(hex: serverKey), + serverAddr: await resolveToSocketAddr(s: serverAddr), + ); + return builder; +} + +Future _loadOrGenerateClient() async { + final prefs = await sharedPrefs(); + final clientSecret = prefs.getString('clientSecret'); + final builder = await _defaultClientBuilder(); + if (clientSecret != null) { + builder.clientSecret(secret: await ClientSecret.fromHex(hex: clientSecret)); + return await builder.build(); + } + final client = await builder.build(); + final clientSecretHex = await client.clientSecretHex(); + await prefs.setString('clientSecret', clientSecretHex); + return client; +} + +Future loadOrGenerateClient() async { + if (_clientCompl == null) { + Completer completer = Completer(); + completer.complete(await _loadOrGenerateClient()); + _clientCompl = completer; + } + return _clientCompl!.future; +} diff --git a/packages/zoe_native/lib/zoe_native.dart b/packages/zoe_native/lib/zoe_native.dart index 48a11c3b..c5b3140d 100644 --- a/packages/zoe_native/lib/zoe_native.dart +++ b/packages/zoe_native/lib/zoe_native.dart @@ -1,5 +1,9 @@ library; export 'src/rust/api/simple.dart'; +export 'src/rust/third_party/zoe_client/client.dart'; +export 'src/rust/third_party/zoe_client/frb_api.dart'; +export 'src/rust/third_party/zoe_wire_protocol/keys.dart'; +export 'src/rust/third_party/zoe_client/util.dart'; export 'src/support.dart'; export 'src/rust/frb_generated.dart' show RustLib; diff --git a/packages/zoe_native/pubspec.yaml b/packages/zoe_native/pubspec.yaml index 6eeb30c7..23f8dabf 100644 --- a/packages/zoe_native/pubspec.yaml +++ b/packages/zoe_native/pubspec.yaml @@ -11,7 +11,13 @@ dependencies: flutter: sdk: flutter flutter_rust_bridge: 2.11.1 + flutter_secure_storage: ^9.2.4 + package_info_plus: ^8.3.1 + path: ^1.9.1 + path_provider: ^2.1.5 plugin_platform_interface: ^2.0.2 + riverpod: ^2.6.1 + shared_preferences: ^2.5.3 dev_dependencies: ffi: ^2.1.3 diff --git a/packages/zoe_native/rust/Cargo.lock b/packages/zoe_native/rust/Cargo.lock index 00809fe3..b0f4a648 100644 --- a/packages/zoe_native/rust/Cargo.lock +++ b/packages/zoe_native/rust/Cargo.lock @@ -4,18 +4,18 @@ version = 4 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aead" @@ -67,9 +67,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -358,9 +358,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" @@ -398,17 +398,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -610,15 +610,15 @@ checksum = "832133bbabbbaa9fbdba793456a2827627a7d2b8fb96032fa1e7666d7895832b" [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "3995eaeebcdf32f91f980d360f78732ddc061097ab4e39991ae7a6ace9194677" [[package]] name = "byteorder" @@ -670,9 +670,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -743,9 +743,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.46" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57" +checksum = "7eac00902d9d136acd712710d71823fb8ac8004ca445a89e73a41d45aa712931" dependencies = [ "clap_builder", "clap_derive", @@ -753,9 +753,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.46" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41" +checksum = "2ad9bbf750e73b5884fb8a211a9424a1906c1e156724260fdae972f31d70e1d6" dependencies = [ "anstream", "anstyle", @@ -765,9 +765,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.45" +version = "4.5.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6" +checksum = "bbfd7eae0b0f1a6e63d4b13c9c478de77c2eb546fba158ad50b4203dc24b9f9c" dependencies = [ "heck", "proc-macro2", @@ -1371,6 +1371,17 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "extend" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "311a6d2f1f9d60bff73d2c78a0af97ed27f79672f15c238192a5bbb64db56d00" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "eyeball" version = "0.8.8" @@ -1513,7 +1524,7 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" dependencies = [ "postcard", "proc-macro2", @@ -1738,9 +1749,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" @@ -1895,9 +1906,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -3078,9 +3089,9 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "mime" @@ -3096,11 +3107,11 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ - "adler", + "adler2", ] [[package]] @@ -3415,9 +3426,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -3447,9 +3458,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.1" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -4369,9 +4380,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", @@ -4381,9 +4392,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", @@ -4398,9 +4409,9 @@ checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "reqwest" @@ -4519,9 +4530,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -4950,12 +4961,9 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" @@ -5343,9 +5351,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.42" +version = "0.3.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca967379f9d8eb8058d86ed467d81d03e81acd45757e4ca341c24affbe8e8e3" +checksum = "83bde6f1ec10e72d583d91623c939f623002284ef622b87de38cfd546cbf2031" dependencies = [ "deranged", "js-sys", @@ -5358,15 +5366,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9108bb380861b07264b950ded55a44a14a4adc68b9f5efd85aafc3aa4d40a68" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.23" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7182799245a7264ce590b349d90338f1c1affad93d2639aed5f8f69c090b334c" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -5718,9 +5726,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "ucd-parse" @@ -5739,9 +5747,9 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" @@ -5823,9 +5831,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" @@ -6706,7 +6714,7 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" dependencies = [ "blake3", "forward-compatible-enum", @@ -6722,7 +6730,7 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" dependencies = [ "anyhow", "chrono", @@ -6746,7 +6754,7 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" dependencies = [ "anyhow", "async-once-cell", @@ -6755,6 +6763,7 @@ dependencies = [ "blake3", "chacha20poly1305", "ed25519-dalek", + "extend", "eyeball", "flutter_rust_bridge", "futures", @@ -6785,7 +6794,7 @@ dependencies = [ [[package]] name = "zoe-client-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" dependencies = [ "anyhow", "async-trait", @@ -6805,7 +6814,7 @@ dependencies = [ [[package]] name = "zoe-encrypted-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" dependencies = [ "aead", "aes-gcm", @@ -6818,7 +6827,7 @@ dependencies = [ [[package]] name = "zoe-state-machine" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" dependencies = [ "blake3", "ed25519-dalek", @@ -6837,7 +6846,7 @@ dependencies = [ [[package]] name = "zoe-wire-protocol" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#7a6a04a80322aa56117a46abebe370cd650930ae" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" dependencies = [ "anyhow", "argon2", @@ -6889,4 +6898,5 @@ version = "0.1.0" dependencies = [ "flutter_rust_bridge", "zoe-client", + "zoe-wire-protocol", ] diff --git a/packages/zoe_native/rust/Cargo.toml b/packages/zoe_native/rust/Cargo.toml index 76a76fdc..fd41a6b1 100644 --- a/packages/zoe_native/rust/Cargo.toml +++ b/packages/zoe_native/rust/Cargo.toml @@ -15,5 +15,10 @@ features = ["frb-api"] git = "https://github.com/acterglobal/zoe-relay.git" branch = "main" +[dependencies.zoe-wire-protocol] +# path = "../../../../zoe-relay/crates/wire-protocol" +git = "https://github.com/acterglobal/zoe-relay.git" +branch = "main" + [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] } diff --git a/packages/zoe_native/rust/src/api/simple.rs b/packages/zoe_native/rust/src/api/simple.rs index 4360c82a..308d1415 100644 --- a/packages/zoe_native/rust/src/api/simple.rs +++ b/packages/zoe_native/rust/src/api/simple.rs @@ -7,4 +7,5 @@ pub fn greet(name: String) -> String { pub fn init_app() { // Default utilities - feel free to customize flutter_rust_bridge::setup_default_user_utils(); + zoe_client::frb_api::frb_init(); } diff --git a/packages/zoe_native/rust/src/frb_generated.rs b/packages/zoe_native/rust/src/frb_generated.rs index 4f41c479..3ee75839 100644 --- a/packages/zoe_native/rust/src/frb_generated.rs +++ b/packages/zoe_native/rust/src/frb_generated.rs @@ -25,19 +25,26 @@ // Section: imports +use crate::*; 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}; +use zoe_client::client::*; +use zoe_wire_protocol::keys::*; // Section: boilerplate +use std::{error::Error, net::SocketAddr, path::PathBuf}; +use zoe_client::FileRef; +use zoe_wire_protocol::keys::{KeyPair, Signature, SigningKey, VerifyingKey}; + flutter_rust_bridge::frb_generated_boilerplate!( default_stream_sink_codec = SseCodec, default_rust_opaque = RustOpaqueMoi, 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 = -1918914929; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -929701453; // Section: executor @@ -45,16 +52,17 @@ flutter_rust_bridge::frb_generated_default_handler!(); // Section: wire_funcs -fn wire__crate__api__simple__greet_impl( +fn wire__zoe_client__client__ClientBuilder_build_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "greet", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, + debug_name: "ClientBuilder_build", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, move || { let message = unsafe { @@ -66,126 +74,3123 @@ fn wire__crate__api__simple__greet_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_name = ::sse_decode(&mut deserializer); + let api_that = ::sse_decode(&mut deserializer); deserializer.end(); - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(crate::api::simple::greet(api_name))?; - Ok(output_ok) - })()) + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let output_ok = zoe_client::client::ClientBuilder::build(api_that).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__ClientBuilder_client_secret_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: "ClientBuilder_client_secret", + 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_secret = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + zoe_client::client::ClientBuilder::client_secret( + &mut *api_that_guard, + api_secret, + ); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__client__ClientBuilder_db_storage_dir_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: "ClientBuilder_db_storage_dir", + 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_path = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + zoe_client::client::ClientBuilder::db_storage_dir( + &mut *api_that_guard, + api_path, + ); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__client__ClientBuilder_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: "ClientBuilder_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(zoe_client::client::ClientBuilder::default())?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__client__ClientBuilder_encryption_key_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: "ClientBuilder_encryption_key", + 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_key = <[u8; 32]>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + zoe_client::client::ClientBuilder::encryption_key( + &mut *api_that_guard, + api_key, + ); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__client__ClientBuilder_media_storage_dir_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: "ClientBuilder_media_storage_dir", + 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_media_storage_dir = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + zoe_client::client::ClientBuilder::media_storage_dir( + &mut *api_that_guard, + api_media_storage_dir, + ); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__client__ClientBuilder_server_info_impl( + port_: flutter_rust_bridge::for_generated::MessagePort, + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "ClientBuilder_server_info", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_server_public_key = ::sse_decode(&mut deserializer); + let api_server_addr = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + zoe_client::client::ClientBuilder::server_info( + &mut *api_that_guard, + api_server_public_key, + api_server_addr, + ); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__client__ClientSecret_from_hex_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: "ClientSecret_from_hex", + 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_hex = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || { + let output_ok = zoe_client::client::ClientSecret::from_hex(&api_hex)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__zoe_client__client__ClientSecret_to_hex_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: "ClientSecret_to_hex", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::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 = zoe_client::client::ClientSecret::to_hex(&*api_that_guard)?; + Ok(output_ok) + })(), + ) + } }, ) } -fn wire__crate__api__simple__init_app_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: "init_app", - 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::simple::init_app(); - })?; - Ok(output_ok) - })()) - } - }, - ) +fn wire__zoe_client__client__Client_builder_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: "Client_builder", + 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(zoe_client::client::Client::builder())?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__client__Client_client_secret_hex_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: "Client_client_secret_hex", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::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 = + zoe_client::client::Client::client_secret_hex(&*api_that_guard)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_close_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: "Client_close", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + zoe_client::client::Client::close(&*api_that_guard).await; + })?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_has_file_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: "Client_has_file", + 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_stored_info = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let mut api_stored_info_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_stored_info, + 1, + false, + ), + ], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + 1 => { + api_stored_info_guard = + Some(api_stored_info.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let api_stored_info_guard = api_stored_info_guard.unwrap(); + let output_ok = zoe_client::client::Client::has_file( + &*api_that_guard, + &*api_stored_info_guard, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_id_hex_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: "Client_id_hex", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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(zoe_client::client::Client::id_hex(&*api_that_guard))?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__client__Client_retrieve_file_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: "Client_retrieve_file", + 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_file_ref = , + >>::sse_decode(&mut deserializer); + let api_output_path = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let mut api_file_ref_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_file_ref, + 1, + false, + ), + ], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + 1 => { + api_file_ref_guard = + Some(api_file_ref.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let api_file_ref_guard = api_file_ref_guard.unwrap(); + let output_ok = zoe_client::client::Client::retrieve_file( + &*api_that_guard, + &*api_file_ref_guard, + api_output_path, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_retrieve_file_bytes_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: "Client_retrieve_file_bytes", + 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_file_ref = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let mut api_file_ref_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_file_ref, + 1, + false, + ), + ], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + 1 => { + api_file_ref_guard = + Some(api_file_ref.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let api_file_ref_guard = api_file_ref_guard.unwrap(); + let output_ok = zoe_client::client::Client::retrieve_file_bytes( + &*api_that_guard, + &*api_file_ref_guard, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_store_data_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: "Client_store_data", + 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_data = >::sse_decode(&mut deserializer); + let api_reference_name = ::sse_decode(&mut deserializer); + let api_content_type = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let 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 = zoe_client::client::Client::store_data( + &*api_that_guard, + &api_data, + &api_reference_name, + api_content_type, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_store_file_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: "Client_store_file", + 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_file_path = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = + zoe_client::client::Client::store_file(&*api_that_guard, api_file_path) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_algorithm_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: "KeyPair_algorithm", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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( + zoe_wire_protocol::keys::KeyPair::algorithm(&*api_that_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_from_pem_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: "KeyPair_from_pem", + 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_pem_string = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, KeyPairError>((move || { + let output_ok = zoe_wire_protocol::keys::KeyPair::from_pem(&api_pem_string)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_id_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: "KeyPair_id", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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({ + zoe_wire_protocol::keys::KeyPair::id(&*api_that_guard); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_public_key_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: "KeyPair_public_key", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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( + zoe_wire_protocol::keys::KeyPair::public_key(&*api_that_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_sign_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: "KeyPair_sign", + 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_message = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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(zoe_wire_protocol::keys::KeyPair::sign( + &*api_that_guard, + &api_message, + ))?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_to_pem_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: "KeyPair_to_pem", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, KeyPairError>((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 = zoe_wire_protocol::keys::KeyPair::to_pem(&*api_that_guard)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__Signature_encode_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: "Signature_encode", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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( + zoe_wire_protocol::keys::Signature::encode(&*api_that_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__Signature_id_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: "Signature_id", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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({ + zoe_wire_protocol::keys::Signature::id(&*api_that_guard); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__SigningKey_sign_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: "SigningKey_sign", + 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_message = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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( + zoe_wire_protocol::keys::SigningKey::sign(&*api_that_guard, &api_message), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__VerifyingKey_algorithm_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: "VerifyingKey_algorithm", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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( + zoe_wire_protocol::keys::VerifyingKey::algorithm(&*api_that_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__VerifyingKey_encode_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: "VerifyingKey_encode", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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( + zoe_wire_protocol::keys::VerifyingKey::encode(&*api_that_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__VerifyingKey_from_hex_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: "VerifyingKey_from_hex", + 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_hex = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, String>((move || { + let output_ok = zoe_wire_protocol::keys::VerifyingKey::from_hex(api_hex)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__VerifyingKey_id_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: "VerifyingKey_id", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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({ + zoe_wire_protocol::keys::VerifyingKey::id(&*api_that_guard); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__VerifyingKey_to_bytes_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: "VerifyingKey_to_bytes", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::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 = + zoe_wire_protocol::keys::VerifyingKey::to_bytes(&*api_that_guard)?; + Ok(output_ok) + })(), + ) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__VerifyingKey_verify_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: "VerifyingKey_verify", + 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_message = >::sse_decode(&mut deserializer); + let api_signature = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, VerifyError>((move || { + let mut api_that_guard = None; + let mut api_signature_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_signature, + 1, + false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + 1 => { + api_signature_guard = Some(api_signature.lockable_decode_sync_ref()) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let api_signature_guard = api_signature_guard.unwrap(); + let output_ok = zoe_wire_protocol::keys::VerifyingKey::verify( + &*api_that_guard, + &api_message, + &*api_signature_guard, + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__create_signing_key_random_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: "create_signing_key_random", + 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(zoe_client::frb_api::create_signing_key_random())?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__create_socket_addr_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: "create_socket_addr", + 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_ip = ::sse_decode(&mut deserializer); + let api_port = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, String>((move || { + let output_ok = zoe_client::frb_api::create_socket_addr(api_ip, api_port)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__frb_init_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: "frb_init", + 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({ + zoe_client::frb_api::frb_init(); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__simple__greet_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: "greet", + 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_name = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok(crate::api::simple::greet(api_name))?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__crate__api__simple__init_app_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: "init_app", + 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::simple::init_app(); + })?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__util__resolve_to_socket_addr_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: "resolve_to_socket_addr", + 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_s = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, String>( + (move || async move { + let output_ok = zoe_client::util::resolve_to_socket_addr(&api_s).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__frb_api__signing_key_from_hex_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: "signing_key_from_hex", + 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_hex = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, String>((move || { + let output_ok = zoe_client::frb_api::signing_key_from_hex(api_hex)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__signing_key_to_verifying_key_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: "signing_key_to_verifying_key", + 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_signing_key_hex = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, String>((move || { + let output_ok = + zoe_client::frb_api::signing_key_to_verifying_key(api_signing_key_hex)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__socket_addr_ip_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: "socket_addr_ip", + 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_addr = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_addr_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_addr, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_addr_guard = api_addr_guard.unwrap(); + let output_ok = + Result::<_, ()>::Ok(zoe_client::frb_api::socket_addr_ip(&*api_addr_guard))?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__socket_addr_port_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: "socket_addr_port", + 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_addr = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_addr_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_addr, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_addr_guard = api_addr_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(zoe_client::frb_api::socket_addr_port( + &*api_addr_guard, + ))?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__socket_addr_to_string_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: "socket_addr_to_string", + 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_addr = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_addr_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_addr, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_addr_guard = api_addr_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + zoe_client::frb_api::socket_addr_to_string(&*api_addr_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__verifying_key_from_hex_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: "verifying_key_from_hex", + 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_hex = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, String>((move || { + let output_ok = zoe_client::frb_api::verifying_key_from_hex(api_hex)?; + 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 +); +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 +); +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 Client { + // 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 ClientBuilder { + // 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 ClientSecret { + // 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 FileRef { + // 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 KeyPair { + // 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 KeyPairError { + // 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 PathBuf { + // 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 Signature { + // 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 SigningKey { + // 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 SocketAddr { + // 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 VerifyError { + // 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 VerifyingKey { + // 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 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 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 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 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 zoe_wire_protocol::keys::Algorithm { + // 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 => zoe_wire_protocol::keys::Algorithm::Ed25519, + 1 => zoe_wire_protocol::keys::Algorithm::MlDsa44, + 2 => zoe_wire_protocol::keys::Algorithm::MlDsa65, + 3 => zoe_wire_protocol::keys::Algorithm::MlDsa87, + _ => unreachable!("Invalid variant for Algorithm: {}", inner), + }; + } +} + +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 i32 { + // 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_i32::().unwrap() + } +} + +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 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 u16 { + // 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_u16::().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 [u8; 32] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut inner = >::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::from_vec_to_array(inner); + } +} + +impl SseDecode for () { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {} +} + +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 _ + } +} + +fn pde_ffi_dispatcher_primary_impl( + func_id: i32, + port: flutter_rust_bridge::for_generated::MessagePort, + ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len: i32, + data_len: i32, +) { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + 1 => wire__zoe_client__client__ClientBuilder_build_impl(port, ptr, rust_vec_len, data_len), + 2 => wire__zoe_client__client__ClientBuilder_client_secret_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 3 => wire__zoe_client__client__ClientBuilder_db_storage_dir_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 4 => { + wire__zoe_client__client__ClientBuilder_default_impl(port, ptr, rust_vec_len, data_len) + } + 5 => wire__zoe_client__client__ClientBuilder_encryption_key_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 6 => wire__zoe_client__client__ClientBuilder_media_storage_dir_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 7 => wire__zoe_client__client__ClientBuilder_server_info_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 8 => { + wire__zoe_client__client__ClientSecret_from_hex_impl(port, ptr, rust_vec_len, data_len) + } + 9 => wire__zoe_client__client__ClientSecret_to_hex_impl(port, ptr, rust_vec_len, data_len), + 10 => wire__zoe_client__client__Client_builder_impl(port, ptr, rust_vec_len, data_len), + 11 => wire__zoe_client__client__Client_client_secret_hex_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 12 => wire__zoe_client__client__Client_close_impl(port, ptr, rust_vec_len, data_len), + 13 => wire__zoe_client__client__Client_has_file_impl(port, ptr, rust_vec_len, data_len), + 14 => wire__zoe_client__client__Client_id_hex_impl(port, ptr, rust_vec_len, data_len), + 15 => { + wire__zoe_client__client__Client_retrieve_file_impl(port, ptr, rust_vec_len, data_len) + } + 16 => wire__zoe_client__client__Client_retrieve_file_bytes_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 17 => wire__zoe_client__client__Client_store_data_impl(port, ptr, rust_vec_len, data_len), + 18 => wire__zoe_client__client__Client_store_file_impl(port, ptr, rust_vec_len, data_len), + 19 => { + wire__zoe_wire_protocol__keys__KeyPair_algorithm_impl(port, ptr, rust_vec_len, data_len) + } + 20 => { + wire__zoe_wire_protocol__keys__KeyPair_from_pem_impl(port, ptr, rust_vec_len, data_len) + } + 21 => wire__zoe_wire_protocol__keys__KeyPair_id_impl(port, ptr, rust_vec_len, data_len), + 22 => wire__zoe_wire_protocol__keys__KeyPair_public_key_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 23 => wire__zoe_wire_protocol__keys__KeyPair_sign_impl(port, ptr, rust_vec_len, data_len), + 24 => wire__zoe_wire_protocol__keys__KeyPair_to_pem_impl(port, ptr, rust_vec_len, data_len), + 25 => { + wire__zoe_wire_protocol__keys__Signature_encode_impl(port, ptr, rust_vec_len, data_len) + } + 26 => wire__zoe_wire_protocol__keys__Signature_id_impl(port, ptr, rust_vec_len, data_len), + 27 => { + wire__zoe_wire_protocol__keys__SigningKey_sign_impl(port, ptr, rust_vec_len, data_len) + } + 28 => wire__zoe_wire_protocol__keys__VerifyingKey_algorithm_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 29 => wire__zoe_wire_protocol__keys__VerifyingKey_encode_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 30 => wire__zoe_wire_protocol__keys__VerifyingKey_from_hex_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 31 => { + wire__zoe_wire_protocol__keys__VerifyingKey_id_impl(port, ptr, rust_vec_len, data_len) + } + 32 => wire__zoe_wire_protocol__keys__VerifyingKey_to_bytes_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 33 => wire__zoe_wire_protocol__keys__VerifyingKey_verify_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 34 => wire__zoe_client__frb_api__create_signing_key_random_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 35 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), + 36 => wire__zoe_client__frb_api__frb_init_impl(port, ptr, rust_vec_len, data_len), + 38 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), + 39 => { + wire__zoe_client__util__resolve_to_socket_addr_impl(port, ptr, rust_vec_len, data_len) + } + 40 => { + wire__zoe_client__frb_api__signing_key_from_hex_impl(port, ptr, rust_vec_len, data_len) + } + 41 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 42 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), + 43 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), + 44 => { + wire__zoe_client__frb_api__socket_addr_to_string_impl(port, ptr, rust_vec_len, data_len) + } + 45 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + _ => unreachable!(), + } +} + +fn pde_ffi_dispatcher_sync_impl( + func_id: i32, + ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len: i32, + data_len: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + 37 => wire__crate__api__simple__greet_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 Client { + 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 ClientBuilder { + 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 ClientSecret { + 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 FileRef { + 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 KeyPair { + 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 KeyPairError { + 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 PathBuf { + 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 Signature { + 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 SigningKey { + 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 SocketAddr { + 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 VerifyError { + 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 VerifyingKey { + 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 { + match self.0 { + zoe_wire_protocol::keys::Algorithm::Ed25519 => 0.into_dart(), + zoe_wire_protocol::keys::Algorithm::MlDsa44 => 1.into_dart(), + zoe_wire_protocol::keys::Algorithm::MlDsa65 => 2.into_dart(), + zoe_wire_protocol::keys::Algorithm::MlDsa87 => 3.into_dart(), + _ => unreachable!(), + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for FrbWrapper +{ +} +impl flutter_rust_bridge::IntoIntoDart> + for zoe_wire_protocol::keys::Algorithm +{ + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} + +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 Client { + // 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 ClientBuilder { + // 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 ClientSecret { + // 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 FileRef { + // 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 KeyPair { + // 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 KeyPairError { + // 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 PathBuf { + // 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 Signature { + // 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 SigningKey { + // 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 SocketAddr { + // 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 VerifyError { + // 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); + } } -// Section: dart2rust +impl SseEncode for VerifyingKey { + // 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 SseDecode for String { +impl SseEncode 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 String::from_utf8(inner).unwrap(); + 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 SseDecode for Vec { +impl SseEncode + 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 len_ = ::sse_decode(deserializer); - let mut ans_ = vec![]; - for idx_ in 0..len_ { - ans_.push(::sse_decode(deserializer)); - } - return ans_; + 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 SseDecode for u8 { +impl SseEncode + for RustOpaqueMoi> +{ // 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() + 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 SseDecode for () { +impl SseEncode for RustOpaqueMoi> { // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {} + 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 SseDecode for i32 { +impl SseEncode for RustOpaqueMoi> { // 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_i32::().unwrap() + 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 SseDecode for bool { +impl SseEncode + for RustOpaqueMoi> +{ // 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 + 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); } } -fn pde_ffi_dispatcher_primary_impl( - func_id: i32, - port: flutter_rust_bridge::for_generated::MessagePort, - ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len: i32, - data_len: i32, -) { - // Codec=Pde (Serialization + dispatch), see doc to use other codecs - match func_id { - 2 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), - _ => unreachable!(), +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); } } -fn pde_ffi_dispatcher_sync_impl( - func_id: i32, - ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len: i32, - data_len: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - // Codec=Pde (Serialization + dispatch), see doc to use other codecs - match func_id { - 1 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), - _ => unreachable!(), +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); } } -// Section: rust2dart +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 String { // Codec=Sse (Serialization based), see doc to use other codecs @@ -194,6 +3199,38 @@ impl SseEncode for String { } } +impl SseEncode for zoe_wire_protocol::keys::Algorithm { + // 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 { + zoe_wire_protocol::keys::Algorithm::Ed25519 => 0, + zoe_wire_protocol::keys::Algorithm::MlDsa44 => 1, + zoe_wire_protocol::keys::Algorithm::MlDsa65 => 2, + zoe_wire_protocol::keys::Algorithm::MlDsa87 => 3, + _ => { + unimplemented!(""); + } + }, + 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 i32 { + // 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_i32::(self).unwrap(); + } +} + 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) { @@ -204,29 +3241,55 @@ impl SseEncode for Vec { } } -impl SseEncode for u8 { +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) { - serializer.cursor.write_u8(self).unwrap(); + ::sse_encode(self.is_some(), serializer); + if let Some(value) = self { + ::sse_encode(value, serializer); + } } } -impl SseEncode for () { +impl SseEncode for u16 { // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {} + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + serializer.cursor.write_u16::(self).unwrap(); + } } -impl SseEncode for i32 { +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_i32::(self).unwrap(); + serializer.cursor.write_u8(self).unwrap(); } } -impl SseEncode for bool { +impl SseEncode for [u8; 32] { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - serializer.cursor.write_u8(self as _).unwrap(); + >::sse_encode( + { + let boxed: Box<[_]> = Box::new(self); + boxed.into_vec() + }, + serializer, + ); + } +} + +impl SseEncode for () { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {} +} + +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(); } } @@ -238,15 +3301,190 @@ mod io { // Section: imports use super::*; + use crate::*; 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}; + use zoe_client::client::*; + use zoe_wire_protocol::keys::*; // Section: boilerplate + use std::{error::Error, net::SocketAddr, path::PathBuf}; + use zoe_client::FileRef; + use zoe_wire_protocol::keys::{KeyPair, Signature, SigningKey, VerifyingKey}; + flutter_rust_bridge::frb_generated_boilerplate_io!(); + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } } #[cfg(not(target_family = "wasm"))] pub use io::*; @@ -260,6 +3498,7 @@ mod web { // Section: imports use super::*; + use crate::*; use flutter_rust_bridge::for_generated::byteorder::{ NativeEndian, ReadBytesExt, WriteBytesExt, }; @@ -267,10 +3506,184 @@ mod web { use flutter_rust_bridge::for_generated::wasm_bindgen::prelude::*; use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; use flutter_rust_bridge::{Handler, IntoIntoDart}; + use zoe_client::client::*; + use zoe_wire_protocol::keys::*; // Section: boilerplate + use std::{error::Error, net::SocketAddr, path::PathBuf}; + use zoe_client::FileRef; + use zoe_wire_protocol::keys::{KeyPair, Signature, SigningKey, VerifyingKey}; + flutter_rust_bridge::frb_generated_boilerplate_web!(); + + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + 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_generatedRustAutoOpaqueInnerClient( + 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_generatedRustAutoOpaqueInnerClientBuilder( + 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_generatedRustAutoOpaqueInnerClientBuilder( + 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_generatedRustAutoOpaqueInnerClientSecret( + 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_generatedRustAutoOpaqueInnerClientSecret( + 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_generatedRustAutoOpaqueInnerFileRef( + 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_generatedRustAutoOpaqueInnerFileRef( + 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_generatedRustAutoOpaqueInnerKeyPair( + 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_generatedRustAutoOpaqueInnerKeyPair( + 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_generatedRustAutoOpaqueInnerKeyPairError( + 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_generatedRustAutoOpaqueInnerKeyPairError( + 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_generatedRustAutoOpaqueInnerPathBuf( + 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_generatedRustAutoOpaqueInnerPathBuf( + 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_generatedRustAutoOpaqueInnerSignature( + 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_generatedRustAutoOpaqueInnerSignature( + 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_generatedRustAutoOpaqueInnerSigningKey( + 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_generatedRustAutoOpaqueInnerSigningKey( + 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_generatedRustAutoOpaqueInnerSocketAddr( + 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_generatedRustAutoOpaqueInnerSocketAddr( + 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_generatedRustAutoOpaqueInnerVerifyError( + 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_generatedRustAutoOpaqueInnerVerifyError( + 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_generatedRustAutoOpaqueInnerVerifyingKey( + 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_generatedRustAutoOpaqueInnerVerifyingKey( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } } #[cfg(target_family = "wasm")] pub use web::*; From 451b56d455ead0f7657fd8a70e4493bf6b04c63a Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 9 Sep 2025 14:09:44 +0100 Subject: [PATCH 03/49] Upgrade to latest frb and fixup local usage --- packages/zoe_native/.gitignore | 1 + packages/zoe_native/{rust => }/Cargo.lock | 363 +- packages/zoe_native/Cargo.toml | 24 + packages/zoe_native/README.md | 132 +- packages/zoe_native/flutter_rust_bridge.yaml | 3 +- .../lib/src/rust/frb_generated.dart | 2875 ++++++++++++++-- .../lib/src/rust/frb_generated.io.dart | 699 ++++ .../lib/src/rust/frb_generated.web.dart | 643 ++++ packages/zoe_native/lib/src/rust/lib.dart | 3 + .../rust/third_party/zoe_client/client.dart | 118 +- .../zoe_client/client/api/file_storage.dart | 13 + .../zoe_client/client/api/relay.dart | 12 + .../zoe_client/client/api/secret.dart | 10 + .../third_party/zoe_wire_protocol/keys.dart | 68 +- .../zoe_wire_protocol/primitives.dart | 10 + packages/zoe_native/lib/zoe_native.dart | 2 +- packages/zoe_native/pubspec.yaml | 2 + packages/zoe_native/rust/Cargo.toml | 14 +- packages/zoe_native/rust/src/frb_generated.rs | 2939 ++++++++++++++--- packages/zoe_native/test/smoke_test.dart | 23 + 20 files changed, 7076 insertions(+), 878 deletions(-) rename packages/zoe_native/{rust => }/Cargo.lock (95%) create mode 100644 packages/zoe_native/Cargo.toml create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/file_storage.dart create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/relay.dart create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/secret.dart create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/primitives.dart create mode 100644 packages/zoe_native/test/smoke_test.dart diff --git a/packages/zoe_native/.gitignore b/packages/zoe_native/.gitignore index b9d7f25b..9d8fdd60 100644 --- a/packages/zoe_native/.gitignore +++ b/packages/zoe_native/.gitignore @@ -17,6 +17,7 @@ migrate_working_dir/ *.ipr *.iws .idea/ +target/ # The .vscode folder contains launch configuration and tasks you configure in # VS Code which you may wish to be included in version control, so this line diff --git a/packages/zoe_native/rust/Cargo.lock b/packages/zoe_native/Cargo.lock similarity index 95% rename from packages/zoe_native/rust/Cargo.lock rename to packages/zoe_native/Cargo.lock index b0f4a648..0001ef2f 100644 --- a/packages/zoe_native/rust/Cargo.lock +++ b/packages/zoe_native/Cargo.lock @@ -106,12 +106,6 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_log-sys" version = "0.3.2" @@ -643,9 +637,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.35" +version = "1.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590f9024a68a8c40351881787f1934dc11afd69090f5edb6831464694d836ea3" +checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54" dependencies = [ "find-msvc-tools", "jobserver", @@ -706,17 +700,16 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.41" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "serde", "wasm-bindgen", - "windows-link", + "windows-link 0.2.0", ] [[package]] @@ -898,7 +891,7 @@ dependencies = [ [[package]] name = "core-models" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" dependencies = [ "hax-lib", "pastey", @@ -1363,12 +1356,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -1433,9 +1426,9 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "find-msvc-tools" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e178e4fba8a2726903f6ba98a6d221e76f9c12c650d5dc0e6afdc50677b49650" +checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" [[package]] name = "flagset" @@ -1524,7 +1517,7 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" dependencies = [ "postcard", "proc-macro2", @@ -1696,7 +1689,7 @@ dependencies = [ "libc", "log", "rustversion", - "windows", + "windows 0.61.3", ] [[package]] @@ -1733,7 +1726,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.3+wasi-0.2.4", + "wasi 0.14.4+wasi-0.2.4", "wasm-bindgen", ] @@ -1849,9 +1842,9 @@ dependencies = [ [[package]] name = "hax-lib" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6b593135257620169c44108facfc774a48336238af6783d630a8b77b7913de" +checksum = "7bf40682e31dc3961209a4657f6fe7c412879b59f212bac3d14bd7ece5af76a3" dependencies = [ "hax-lib-macros", "num-bigint", @@ -1860,9 +1853,9 @@ dependencies = [ [[package]] name = "hax-lib-macros" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f50d2b609faca4ebb2522d96d36372cf5f879247e713c28134d7205f1ad427" +checksum = "e33a5a4ff169bcc4e9189f4bace3ed22d03fcd8e52eee90a00b7b1e2621cb490" dependencies = [ "hax-lib-macros-types", "proc-macro-error2", @@ -1873,9 +1866,9 @@ dependencies = [ [[package]] name = "hax-lib-macros-types" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd4c5887d0a4d4c907a05c29d83d317363b0f9f29df90cc5c716c2ef8909132" +checksum = "a39dc59c01c2eec9bce75698c4f9ca01d11759ace2a28e1691b66fb0008c6a21" dependencies = [ "proc-macro2", "quote", @@ -2204,7 +2197,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core", + "windows-core 0.61.2", ] [[package]] @@ -2346,20 +2339,21 @@ dependencies = [ [[package]] name = "image" -version = "0.25.6" +version = "0.25.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db35664ce6b9810857a38a906215e75a9c879f0696556a39f59c62829710251a" +checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" dependencies = [ "bytemuck", "byteorder-lite", + "moxcms", "num-traits", ] [[package]] name = "indexmap" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" +checksum = "206a8042aec68fa4a62e8d3f7aa4ceb508177d9324faf261e1959e495b7a1921" dependencies = [ "equivalent", "hashbrown 0.15.5", @@ -2821,9 +2815,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "0c0b063578492ceec17683ef2f8c5e89121fbd0b172cbc280635ab7567db2738" dependencies = [ "once_cell", "wasm-bindgen", @@ -2860,7 +2854,7 @@ dependencies = [ [[package]] name = "libcrux-intrinsics" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" dependencies = [ "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", "hax-lib", @@ -2869,7 +2863,7 @@ dependencies = [ [[package]] name = "libcrux-macros" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" dependencies = [ "quote", "syn 2.0.106", @@ -2878,7 +2872,7 @@ dependencies = [ [[package]] name = "libcrux-ml-dsa" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" dependencies = [ "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", "hax-lib", @@ -2914,7 +2908,7 @@ dependencies = [ [[package]] name = "libcrux-platform" version = "0.0.2" -source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" dependencies = [ "libc", ] @@ -2931,7 +2925,7 @@ dependencies = [ [[package]] name = "libcrux-secrets" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" dependencies = [ "hax-lib", ] @@ -2950,7 +2944,7 @@ dependencies = [ [[package]] name = "libcrux-sha3" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" dependencies = [ "hax-lib", "libcrux-intrinsics 0.0.3 (git+https://github.com/cryspen/libcrux)", @@ -2961,7 +2955,7 @@ dependencies = [ [[package]] name = "libcrux-traits" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#5afd442c860a1757f124465ec65a01c450fd2a66" +source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" dependencies = [ "libcrux-secrets 0.0.3 (git+https://github.com/cryspen/libcrux)", "rand 0.9.2", @@ -3006,6 +3000,12 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" +[[package]] +name = "linux-raw-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + [[package]] name = "litemap" version = "0.8.0" @@ -3030,9 +3030,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.27" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "loom" @@ -3144,6 +3144,16 @@ dependencies = [ "uuid", ] +[[package]] +name = "moxcms" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd32fa8935aeadb8a8a6b6b351e40225570a37c43de67690383d87ef170cd08" +dependencies = [ + "num-traits", + "pxfm", +] + [[package]] name = "n0-future" version = "0.1.3" @@ -3345,8 +3355,8 @@ dependencies = [ "tokio-util", "tracing", "web-sys", - "windows", - "windows-result", + "windows 0.61.3", + "windows-result 0.3.4", "wmi", ] @@ -4081,6 +4091,15 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "pxfm" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55f4fedc84ed39cb7a489322318976425e42a147e2be79d8f878e2884f94e84" +dependencies = [ + "num-traits", +] + [[package]] name = "qrcode" version = "0.14.1" @@ -4368,14 +4387,14 @@ dependencies = [ [[package]] name = "reflink-copy" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78c81d000a2c524133cc00d2f92f019d399e57906c3b7119271a2495354fe895" +checksum = "23bbed272e39c47a095a5242218a67412a220006842558b03fe2935e8f3d7b92" dependencies = [ "cfg-if", "libc", - "rustix 1.0.8", - "windows", + "rustix 1.1.1", + "windows 0.62.0", ] [[package]] @@ -4579,15 +4598,16 @@ dependencies = [ [[package]] name = "rustix" -version = "1.0.8" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" +checksum = "9621e389a110cae094269936383d69b869492f03e5c1ed2d575a53c029d4441d" dependencies = [ "bitflags 2.9.4", "errno", "libc", + "linux-raw-sys 0.11.0", "linux-raw-sys 0.9.4", - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -4615,7 +4635,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.3.0", + "security-framework 3.4.0", ] [[package]] @@ -4652,7 +4672,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.3.0", + "security-framework 3.4.0", "security-framework-sys", "webpki-root-certs 0.26.11", "windows-sys 0.59.0", @@ -4673,7 +4693,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.3.0", + "security-framework 3.4.0", "security-framework-sys", "webpki-root-certs 1.0.2", "windows-sys 0.59.0", @@ -4729,11 +4749,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.0", ] [[package]] @@ -4763,9 +4783,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" +checksum = "60b369d18893388b345804dc0007963c99b7d665ae71d275812d828c6f089640" dependencies = [ "bitflags 2.9.4", "core-foundation 0.10.1", @@ -4776,9 +4796,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.14.0" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -4976,9 +4996,9 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4800ae0e2ebdfaea32ffb9745642acdc378740dcbd74d3fb3cd87572a34810c6" +checksum = "6e84b3f4eacbf3a1ce05eac6763b4d629d60cbc94d632e4092c54ade71f1e1a2" dependencies = [ "backtrace", "snafu-derive", @@ -4986,9 +5006,9 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186f5ba9999528053fb497fdf0dd330efcc69cfe4ad03776c9d704bc54fee10f" +checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451" dependencies = [ "heck", "proc-macro2", @@ -5278,7 +5298,7 @@ dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix 1.0.8", + "rustix 1.1.1", "windows-sys 0.60.2", ] @@ -5862,30 +5882,31 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.3+wasi-0.2.4" +version = "0.14.4+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" +checksum = "88a5f4a424faf49c3c2c344f166f0662341d470ea185e939657aaff130f0ec4a" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "7e14915cadd45b529bb8d1f343c4ed0ac1de926144b746e2710f9cd05df6603b" dependencies = [ "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "e28d1ba982ca7923fd01448d5c30c6864d0a14109560296a162f80f305fb93bb" dependencies = [ "bumpalo", "log", @@ -5897,9 +5918,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "0ca85039a9b469b38336411d6d6ced91f3fc87109a2a27b0c197663f5144dffe" dependencies = [ "cfg-if", "js-sys", @@ -5910,9 +5931,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "7c3d463ae3eff775b0c45df9da45d68837702ac35af998361e2c84e7c5ec1b0d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5920,9 +5941,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "7bb4ce89b08211f923caf51d527662b75bdc9c9c7aab40f86dcb9fb85ac552aa" dependencies = [ "proc-macro2", "quote", @@ -5933,9 +5954,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +checksum = "f143854a3b13752c6950862c906306adb27c7e839f7414cec8fea35beab624c1" dependencies = [ "unicode-ident", ] @@ -5955,9 +5976,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "77e4b637749ff0d92b8fad63aa1f7cff3cbe125fd49c175cd6345e7272638b12" dependencies = [ "js-sys", "wasm-bindgen", @@ -6045,11 +6066,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.60.2", + "windows-sys 0.61.0", ] [[package]] @@ -6064,11 +6085,24 @@ version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-collections", - "windows-core", - "windows-future", - "windows-link", - "windows-numerics", + "windows-collections 0.2.0", + "windows-core 0.61.2", + "windows-future 0.2.1", + "windows-link 0.1.3", + "windows-numerics 0.2.0", +] + +[[package]] +name = "windows" +version = "0.62.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9579d0e6970fd5250aa29aba5994052385ff55cf7b28a059e484bb79ea842e42" +dependencies = [ + "windows-collections 0.3.0", + "windows-core 0.62.0", + "windows-future 0.3.0", + "windows-link 0.2.0", + "windows-numerics 0.3.0", ] [[package]] @@ -6077,7 +6111,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core", + "windows-core 0.61.2", +] + +[[package]] +name = "windows-collections" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a90dd7a7b86859ec4cdf864658b311545ef19dbcf17a672b52ab7cefe80c336f" +dependencies = [ + "windows-core 0.62.0", ] [[package]] @@ -6088,9 +6131,22 @@ checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", - "windows-link", - "windows-result", - "windows-strings", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57fe7168f7de578d2d8a05b07fd61870d2e73b4020e9f49aa00da8471723497c" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.0", + "windows-result 0.4.0", + "windows-strings 0.5.0", ] [[package]] @@ -6099,9 +6155,20 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core", - "windows-link", - "windows-threading", + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading 0.1.0", +] + +[[package]] +name = "windows-future" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2194dee901458cb79e1148a4e9aac2b164cc95fa431891e7b296ff0b2f1d8a6" +dependencies = [ + "windows-core 0.62.0", + "windows-link 0.2.0", + "windows-threading 0.2.0", ] [[package]] @@ -6132,14 +6199,30 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" +[[package]] +name = "windows-link" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" + [[package]] name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-numerics" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ce3498fe0aba81e62e477408383196b4b0363db5e0c27646f932676283b43d8" +dependencies = [ + "windows-core 0.62.0", + "windows-link 0.2.0", ] [[package]] @@ -6148,7 +6231,16 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" +dependencies = [ + "windows-link 0.2.0", ] [[package]] @@ -6157,7 +6249,16 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" +dependencies = [ + "windows-link 0.2.0", ] [[package]] @@ -6205,6 +6306,15 @@ dependencies = [ "windows-targets 0.53.3", ] +[[package]] +name = "windows-sys" +version = "0.61.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa" +dependencies = [ + "windows-link 0.2.0", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -6257,7 +6367,7 @@ version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ - "windows-link", + "windows-link 0.1.3", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -6274,7 +6384,16 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows-link", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-threading" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab47f085ad6932defa48855254c758cdd0e2f2d48e62a34118a268d8f345e118" +dependencies = [ + "windows-link 0.2.0", ] [[package]] @@ -6478,9 +6597,9 @@ dependencies = [ [[package]] name = "wit-bindgen" -version = "0.45.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" +checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36" [[package]] name = "wmi" @@ -6493,8 +6612,8 @@ dependencies = [ "log", "serde", "thiserror 2.0.16", - "windows", - "windows-core", + "windows 0.61.3", + "windows-core 0.61.2", ] [[package]] @@ -6619,18 +6738,18 @@ checksum = "2164e798d9e3d84ee2c91139ace54638059a3b23e361f5c11781c2c6459bde0f" [[package]] name = "zerocopy" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", @@ -6714,15 +6833,17 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" dependencies = [ "blake3", + "flutter_rust_bridge", "forward-compatible-enum", "libcrux-ml-dsa", "postcard", "qrcode", "serde", "thiserror 2.0.16", + "tokio", "zoe-encrypted-storage", "zoe-wire-protocol", ] @@ -6730,12 +6851,13 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" dependencies = [ "anyhow", "chrono", "clap", "futures", + "hex", "iroh-blobs", "irpc 0.5.0", "path-clean", @@ -6754,7 +6876,7 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" dependencies = [ "anyhow", "async-once-cell", @@ -6794,7 +6916,7 @@ dependencies = [ [[package]] name = "zoe-client-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" dependencies = [ "anyhow", "async-trait", @@ -6814,7 +6936,7 @@ dependencies = [ [[package]] name = "zoe-encrypted-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" dependencies = [ "aead", "aes-gcm", @@ -6827,7 +6949,7 @@ dependencies = [ [[package]] name = "zoe-state-machine" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" dependencies = [ "blake3", "ed25519-dalek", @@ -6846,7 +6968,7 @@ dependencies = [ [[package]] name = "zoe-wire-protocol" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#a2606558f363a29ab7ccb345940d62ec5e67a0c9" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" dependencies = [ "anyhow", "argon2", @@ -6859,6 +6981,7 @@ dependencies = [ "curve25519-dalek", "der", "ed25519-dalek", + "flutter_rust_bridge", "forward-compatible-enum", "heapless", "hex", @@ -6871,6 +6994,7 @@ dependencies = [ "rand 0.8.5", "rand_chacha 0.3.1", "rcgen 0.12.1", + "rusqlite", "rustls", "rustls-pki-types", "rustls-webpki", @@ -6897,6 +7021,7 @@ name = "zoe_native" version = "0.1.0" dependencies = [ "flutter_rust_bridge", + "zoe-app-primitives", "zoe-client", "zoe-wire-protocol", ] diff --git a/packages/zoe_native/Cargo.toml b/packages/zoe_native/Cargo.toml new file mode 100644 index 00000000..4d8c789a --- /dev/null +++ b/packages/zoe_native/Cargo.toml @@ -0,0 +1,24 @@ +[workspace] +resolver = "2" +members = ["rust"] + + +[workspace.dependencies] +flutter_rust_bridge = "=2.11.1" + +[workspace.dependencies.zoe-client] +# path = "../../../zoe-relay/crates/client" +git = "https://github.com/acterglobal/zoe-relay.git" +branch = "main" +features = ["frb-api"] + +[workspace.dependencies.zoe-wire-protocol] +# path = "../../../zoe-relay/crates/wire-protocol" +git = "https://github.com/acterglobal/zoe-relay.git" +branch = "main" + +[workspace.dependencies.zoe-app-primitives] +# path = "../../../zoe-relay/crates/app-primitives" +git = "https://github.com/acterglobal/zoe-relay.git" +branch = "main" +features = ["frb-api"] \ No newline at end of file diff --git a/packages/zoe_native/README.md b/packages/zoe_native/README.md index f12ec79b..9e3123a9 100644 --- a/packages/zoe_native/README.md +++ b/packages/zoe_native/README.md @@ -1,92 +1,102 @@ # zoe_native -A new Flutter FFI plugin project. +A Flutter plugin built with flutter_rust_bridge that provides native Rust functionality for the Zoe application. -## Getting Started +## Overview -This project is a starting point for a Flutter -[FFI plugin](https://flutter.dev/to/ffi-package), -a specialized package that includes native code directly invoked with Dart FFI. +This project uses [flutter_rust_bridge](https://cjycode.com/flutter_rust_bridge/) to seamlessly integrate Rust code with Flutter, providing high-performance native functionality while maintaining type safety and ease of use. -## Project structure +## Project Structure -This template uses the following structure: +* `rust/`: Contains the Rust source code + * `rust/src/api/`: API definitions exposed to Flutter + * `rust/src/lib.rs`: Main Rust library entry point + * `rust/Cargo.toml`: Rust lib dependencies and configuration +* `lib/`: Contains the Dart code that interfaces with the Rust code + * `lib/src/rust/`: Auto-generated Dart bindings (do not edit manually) + * `lib/providers.dart` / `lib/src/providers`: the dart riverpod providers for the API +* `flutter_rust_bridge.yaml`: Configuration for code generation +* `Cargo.toml`: Rust workspace dependencies and configuration +* Platform folders (`android/`, `ios/`, `linux/`, `macos/`, `windows/`): Platform-specific build configurations -* `src`: Contains the native source code, and a CmakeFile.txt file for building - that source code into a dynamic library. +## Dependencies -* `lib`: Contains the Dart code that defines the API of the plugin, and which - calls into the native code using `dart:ffi`. +This plugin integrates with: +- `zoe-client`: Client library from the zoe-relay project +- `zoe-wire-protocol`: Wire protocol definitions from the zoe-relay project -* platform folders (`android`, `ios`, `windows`, etc.): Contains the build files - for building and bundling the native code library with the platform application. +## Development Workflow -## Building and bundling native code +### Updating Rust Dependencies -The `pubspec.yaml` specifies FFI plugins as follows: +To update Rust dependencies, run: -```yaml - plugin: - platforms: - some_platform: - ffiPlugin: true +```bash +cargo update ``` -This configuration invokes the native build for the various target platforms -and bundles the binaries in Flutter applications using these FFI plugins. +### Generating Bindings -This can be combined with dartPluginClass, such as when FFI is used for the -implementation of one platform in a federated plugin: +After making changes to the Rust API, regenerate the Flutter bindings: -```yaml - plugin: - implements: some_other_plugin - platforms: - some_platform: - dartPluginClass: SomeClass - ffiPlugin: true +```bash +flutter_rust_bridge_codegen generate ``` -A plugin can have both FFI and method channels: +### Building the Plugin + +The plugin uses FFI and will automatically build the native code when you build your Flutter app. The `pubspec.yaml` is configured with: ```yaml - plugin: - platforms: - some_platform: - pluginClass: SomeName - ffiPlugin: true +plugin: + platforms: + android: + ffiPlugin: true + ios: + ffiPlugin: true + linux: + ffiPlugin: true + macos: + ffiPlugin: true + windows: + ffiPlugin: true ``` -The native build systems that are invoked by FFI (and method channel) plugins are: +### Development Tips + +1. **Making API Changes**: + - Modify Rust code in `rust/src/api/` + - Run `flutter_rust_bridge_codegen generate` to update Dart bindings + - The generated code will be in `lib/src/rust/` -* For Android: Gradle, which invokes the Android NDK for native builds. - * See the documentation in android/build.gradle. -* For iOS and MacOS: Xcode, via CocoaPods. - * See the documentation in ios/zoe_native.podspec. - * See the documentation in macos/zoe_native.podspec. -* For Linux and Windows: CMake. - * See the documentation in linux/CMakeLists.txt. - * See the documentation in windows/CMakeLists.txt. +2. **Testing Changes**: + - Use `cargo test` in the `rust/` directory for Rust unit tests + - Use `flutter test` for Dart/Flutter tests -## Binding to native code +3. **Debugging**: + - Rust panics will be caught and converted to Dart exceptions + - Use standard Rust debugging tools for the native code + - Use Flutter debugging tools for the Dart side -To use the native code, bindings in Dart are needed. -To avoid writing these by hand, they are generated from the header file -(`src/zoe_native.h`) by `package:ffigen`. -Regenerate the bindings by running `dart run ffigen --config ffigen.yaml`. +## Configuration -## Invoking native code +The `flutter_rust_bridge.yaml` file configures: +- `rust_input`: Which Rust modules to expose +- `dart_output`: Where to generate Dart bindings +- `rust_preamble`: Common imports for generated code -Very short-running native functions can be directly invoked from any isolate. -For example, see `sum` in `lib/zoe_native.dart`. +## Platform Support -Longer-running functions should be invoked on a helper isolate to avoid -dropping frames in Flutter applications. -For example, see `sumAsync` in `lib/zoe_native.dart`. +This plugin supports all major platforms: +- Android (via NDK) +- iOS (via Xcode/CocoaPods) +- Linux (via CMake) +- macOS (via Xcode/CocoaPods) +- Windows (via CMake) -## Flutter help +## More Information -For help getting started with Flutter, view our -[online documentation](https://docs.flutter.dev), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +For more details about flutter_rust_bridge, visit: +- [Official Documentation](https://cjycode.com/flutter_rust_bridge/) +- [GitHub Repository](https://github.com/fzyzcjy/flutter_rust_bridge) diff --git a/packages/zoe_native/flutter_rust_bridge.yaml b/packages/zoe_native/flutter_rust_bridge.yaml index d0f1d882..e4dddf2f 100644 --- a/packages/zoe_native/flutter_rust_bridge.yaml +++ b/packages/zoe_native/flutter_rust_bridge.yaml @@ -6,4 +6,5 @@ enable_lifetime: true rust_preamble: | use std::{path::PathBuf, net::SocketAddr, error::Error}; use zoe_client::{FileRef}; - use zoe_wire_protocol::keys::{KeyPair, VerifyingKey, SigningKey, Signature}; \ No newline at end of file + use zoe_wire_protocol::keys::{KeyPair, VerifyingKey, SigningKey, Signature}; + use zoe_app_primitives::connection::RelayAddress; \ No newline at end of file diff --git a/packages/zoe_native/lib/src/rust/frb_generated.dart b/packages/zoe_native/lib/src/rust/frb_generated.dart index d16f1158..abc2d250 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.dart @@ -12,9 +12,11 @@ import 'frb_generated.io.dart' import 'lib.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; import 'third_party/zoe_client/client.dart'; +import 'third_party/zoe_client/client/api/file_storage.dart'; import 'third_party/zoe_client/frb_api.dart'; import 'third_party/zoe_client/util.dart'; import 'third_party/zoe_wire_protocol/keys.dart'; +import 'third_party/zoe_wire_protocol/primitives.dart'; /// Main entrypoint of the Rust API class RustLib extends BaseEntrypoint { @@ -71,7 +73,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.11.1'; @override - int get rustContentHash => -929701453; + int get rustContentHash => -640084549; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -82,6 +84,11 @@ class RustLib extends BaseEntrypoint { } abstract class RustLibApi extends BaseApi { + Future zoeClientClientClientBuilderAutoconnect({ + required ClientBuilder that, + required bool autoconnect, + }); + Future zoeClientClientClientBuilderBuild({ required ClientBuilder that, }); @@ -114,18 +121,40 @@ abstract class RustLibApi extends BaseApi { required SocketAddr serverAddr, }); + Future zoeClientClientClientBuilderServers({ + required ClientBuilder that, + required List servers, + }); + Future zoeClientClientClientSecretFromHex({ required String hex, }); + Future zoeClientClientClientSecretServers({required ClientSecret that}); + Future zoeClientClientClientSecretToHex({required ClientSecret that}); + Future zoeClientClientClientAddRelay({ + required Client that, + required RelayAddress address, + }); + Future zoeClientClientClientBuilder(); + Future zoeClientClientClientClientSecret({ + required Client that, + }); + Future zoeClientClientClientClientSecretHex({required Client that}); Future zoeClientClientClientClose({required Client that}); + Future> zoeClientClientClientGetRelayStatus({ + required Client that, + }); + + Future zoeClientClientClientHasConnectedRelays({required Client that}); + Future zoeClientClientClientHasFile({ required Client that, required FileRef storedInfo, @@ -133,6 +162,19 @@ abstract class RustLibApi extends BaseApi { Future zoeClientClientClientIdHex({required Client that}); + Future zoeClientClientClientOverallStatus({ + required Client that, + }); + + Future zoeClientClientClientReconnectFailedRelays({ + required Client that, + }); + + Future zoeClientClientClientRemoveRelay({ + required Client that, + required VerifyingKey serverPublicKey, + }); + Future zoeClientClientClientRetrieveFile({ required Client that, required FileRef fileRef, @@ -164,7 +206,7 @@ abstract class RustLibApi extends BaseApi { required String pemString, }); - Future zoeWireProtocolKeysKeyPairId({required KeyPair that}); + Future zoeWireProtocolKeysKeyPairId({required KeyPair that}); Future zoeWireProtocolKeysKeyPairPublicKey({ required KeyPair that, @@ -177,11 +219,75 @@ abstract class RustLibApi extends BaseApi { Future zoeWireProtocolKeysKeyPairToPem({required KeyPair that}); + RelayInfo zoeClientClientRelayConnectionInfoAutoAccessorGetInfo({ + required RelayConnectionInfo that, + }); + + RelayConnectionStatus + zoeClientClientRelayConnectionInfoAutoAccessorGetStatus({ + required RelayConnectionInfo that, + }); + + void zoeClientClientRelayConnectionInfoAutoAccessorSetInfo({ + required RelayConnectionInfo that, + required RelayInfo info, + }); + + void zoeClientClientRelayConnectionInfoAutoAccessorSetStatus({ + required RelayConnectionInfo that, + required RelayConnectionStatus status, + }); + + RelayAddress zoeClientClientRelayInfoAutoAccessorGetRelayAddress({ + required RelayInfo that, + }); + + KeyId zoeClientClientRelayInfoAutoAccessorGetRelayId({ + required RelayInfo that, + }); + + void zoeClientClientRelayInfoAutoAccessorSetRelayAddress({ + required RelayInfo that, + required RelayAddress relayAddress, + }); + + void zoeClientClientRelayInfoAutoAccessorSetRelayId({ + required RelayInfo that, + required KeyId relayId, + }); + + RelayAddress zoeClientClientRelayStatusUpdateAutoAccessorGetRelayAddress({ + required RelayStatusUpdate that, + }); + + KeyId zoeClientClientRelayStatusUpdateAutoAccessorGetRelayId({ + required RelayStatusUpdate that, + }); + + RelayConnectionStatus zoeClientClientRelayStatusUpdateAutoAccessorGetStatus({ + required RelayStatusUpdate that, + }); + + void zoeClientClientRelayStatusUpdateAutoAccessorSetRelayAddress({ + required RelayStatusUpdate that, + required RelayAddress relayAddress, + }); + + void zoeClientClientRelayStatusUpdateAutoAccessorSetRelayId({ + required RelayStatusUpdate that, + required KeyId relayId, + }); + + void zoeClientClientRelayStatusUpdateAutoAccessorSetStatus({ + required RelayStatusUpdate that, + required RelayConnectionStatus status, + }); + Future zoeWireProtocolKeysSignatureEncode({ required Signature that, }); - Future zoeWireProtocolKeysSignatureId({required Signature that}); + Future zoeWireProtocolKeysSignatureId({required Signature that}); Future zoeWireProtocolKeysSigningKeySign({ required SigningKey that, @@ -200,12 +306,20 @@ abstract class RustLibApi extends BaseApi { required String hex, }); - Future zoeWireProtocolKeysVerifyingKeyId({required VerifyingKey that}); + Future zoeWireProtocolKeysVerifyingKeyFromPem({ + required String pemString, + }); + + Future zoeWireProtocolKeysVerifyingKeyId({required VerifyingKey that}); Future zoeWireProtocolKeysVerifyingKeyToBytes({ required VerifyingKey that, }); + Future zoeWireProtocolKeysVerifyingKeyToPem({ + required VerifyingKey that, + }); + Future zoeWireProtocolKeysVerifyingKeyVerify({ required VerifyingKey that, required List message, @@ -272,6 +386,12 @@ abstract class RustLibApi extends BaseApi { CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_FileRefPtr; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_KeyId; + + RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_KeyId; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeyIdPtr; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_KeyPair; RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_KeyPair; @@ -292,6 +412,49 @@ abstract class RustLibApi extends BaseApi { CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_PathBufPtr; + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayAddress; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayAddress; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_RelayAddressPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayConnectionInfo; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayConnectionInfo; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayConnectionInfoPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayConnectionStatus; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayConnectionStatus; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayConnectionStatusPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayInfo; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayInfo; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_RelayInfoPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayStatusUpdate; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayStatusUpdate; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayStatusUpdatePtr; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_Signature; @@ -331,6 +494,15 @@ abstract class RustLibApi extends BaseApi { get rust_arc_decrement_strong_count_VerifyingKey; CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_VerifyingKeyPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_VerifyingKeyError; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_VerifyingKeyError; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_VerifyingKeyErrorPtr; } class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { @@ -341,6 +513,44 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { required super.portManager, }); + @override + Future zoeClientClientClientBuilderAutoconnect({ + required ClientBuilder that, + required bool autoconnect, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + that, + serializer, + ); + sse_encode_bool(autoconnect, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 1, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientBuilderAutoconnectConstMeta, + argValues: [that, autoconnect], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientBuilderAutoconnectConstMeta => + const TaskConstMeta( + debugName: "ClientBuilder_autoconnect", + argNames: ["that", "autoconnect"], + ); + @override Future zoeClientClientClientBuilderBuild({ required ClientBuilder that, @@ -356,7 +566,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 1, + funcId: 2, port: port_, ); }, @@ -395,7 +605,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 2, + funcId: 3, port: port_, ); }, @@ -433,7 +643,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 3, + funcId: 4, port: port_, ); }, @@ -463,7 +673,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 4, + funcId: 5, port: port_, ); }, @@ -499,7 +709,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 5, + funcId: 6, port: port_, ); }, @@ -537,7 +747,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 6, + funcId: 7, port: port_, ); }, @@ -583,7 +793,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 7, + funcId: 8, port: port_, ); }, @@ -604,6 +814,47 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["that", "serverPublicKey", "serverAddr"], ); + @override + Future zoeClientClientClientBuilderServers({ + required ClientBuilder that, + required List servers, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + that, + serializer, + ); + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + servers, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 9, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientBuilderServersConstMeta, + argValues: [that, servers], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientBuilderServersConstMeta => + const TaskConstMeta( + debugName: "ClientBuilder_servers", + argNames: ["that", "servers"], + ); + @override Future zoeClientClientClientSecretFromHex({ required String hex, @@ -616,7 +867,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 8, + funcId: 10, port: port_, ); }, @@ -639,7 +890,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); @override - Future zoeClientClientClientSecretToHex({ + Future zoeClientClientClientSecretServers({ required ClientSecret that, }) { return handler.executeNormal( @@ -653,54 +904,65 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 9, + funcId: 11, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kZoeClientClientClientSecretToHexConstMeta, + constMeta: kZoeClientClientClientSecretServersConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientSecretToHexConstMeta => - const TaskConstMeta(debugName: "ClientSecret_to_hex", argNames: ["that"]); + TaskConstMeta get kZoeClientClientClientSecretServersConstMeta => + const TaskConstMeta( + debugName: "ClientSecret_servers", + argNames: ["that"], + ); @override - Future zoeClientClientClientBuilder() { + Future zoeClientClientClientSecretToHex({ + required ClientSecret that, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + that, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 10, + funcId: 12, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder, - decodeErrorData: null, + decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kZoeClientClientClientBuilderConstMeta, - argValues: [], + constMeta: kZoeClientClientClientSecretToHexConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientBuilderConstMeta => - const TaskConstMeta(debugName: "Client_builder", argNames: []); + TaskConstMeta get kZoeClientClientClientSecretToHexConstMeta => + const TaskConstMeta(debugName: "ClientSecret_to_hex", argNames: ["that"]); @override - Future zoeClientClientClientClientSecretHex({required Client that}) { + Future zoeClientClientClientAddRelay({ + required Client that, + required RelayAddress address, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -709,65 +971,65 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + address, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 11, + funcId: 13, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_String, + decodeSuccessData: sse_decode_unit, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kZoeClientClientClientClientSecretHexConstMeta, - argValues: [that], + constMeta: kZoeClientClientClientAddRelayConstMeta, + argValues: [that, address], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientClientSecretHexConstMeta => + TaskConstMeta get kZoeClientClientClientAddRelayConstMeta => const TaskConstMeta( - debugName: "Client_client_secret_hex", - argNames: ["that"], + debugName: "Client_add_relay", + argNames: ["that", "address"], ); @override - Future zoeClientClientClientClose({required Client that}) { + Future zoeClientClientClientBuilder() { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - that, - serializer, - ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 12, + funcId: 14, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder, decodeErrorData: null, ), - constMeta: kZoeClientClientClientCloseConstMeta, - argValues: [that], + constMeta: kZoeClientClientClientBuilderConstMeta, + argValues: [], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientCloseConstMeta => - const TaskConstMeta(debugName: "Client_close", argNames: ["that"]); + TaskConstMeta get kZoeClientClientClientBuilderConstMeta => + const TaskConstMeta(debugName: "Client_builder", argNames: []); @override - Future zoeClientClientClientHasFile({ + Future zoeClientClientClientClientSecret({ required Client that, - required FileRef storedInfo, }) { return handler.executeNormal( NormalTask( @@ -777,36 +1039,33 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - storedInfo, - serializer, - ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 13, + funcId: 15, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_bool, - decodeErrorData: sse_decode_AnyhowException, - ), - constMeta: kZoeClientClientClientHasFileConstMeta, - argValues: [that, storedInfo], + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientClientSecretConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientHasFileConstMeta => + TaskConstMeta get kZoeClientClientClientClientSecretConstMeta => const TaskConstMeta( - debugName: "Client_has_file", - argNames: ["that", "storedInfo"], + debugName: "Client_client_secret", + argNames: ["that"], ); @override - Future zoeClientClientClientIdHex({required Client that}) { + Future zoeClientClientClientClientSecretHex({required Client that}) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -818,29 +1077,61 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 14, + funcId: 16, port: port_, ); }, codec: SseCodec( decodeSuccessData: sse_decode_String, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientClientSecretHexConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientClientSecretHexConstMeta => + const TaskConstMeta( + debugName: "Client_client_secret_hex", + argNames: ["that"], + ); + + @override + Future zoeClientClientClientClose({required Client that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 17, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kZoeClientClientClientIdHexConstMeta, + constMeta: kZoeClientClientClientCloseConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientIdHexConstMeta => - const TaskConstMeta(debugName: "Client_id_hex", argNames: ["that"]); + TaskConstMeta get kZoeClientClientClientCloseConstMeta => + const TaskConstMeta(debugName: "Client_close", argNames: ["that"]); @override - Future zoeClientClientClientRetrieveFile({ + Future> zoeClientClientClientGetRelayStatus({ required Client that, - required FileRef fileRef, - required PathBuf outputPath, }) { return handler.executeNormal( NormalTask( @@ -850,42 +1141,69 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - fileRef, + pdeCallFfi( + generalizedFrbRustBinding, serializer, + funcId: 18, + port: port_, ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - outputPath, + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientGetRelayStatusConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientGetRelayStatusConstMeta => + const TaskConstMeta( + debugName: "Client_get_relay_status", + argNames: ["that"], + ); + + @override + Future zoeClientClientClientHasConnectedRelays({required Client that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, serializer, ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 15, + funcId: 19, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: sse_decode_AnyhowException, + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, ), - constMeta: kZoeClientClientClientRetrieveFileConstMeta, - argValues: [that, fileRef, outputPath], + constMeta: kZoeClientClientClientHasConnectedRelaysConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientRetrieveFileConstMeta => + TaskConstMeta get kZoeClientClientClientHasConnectedRelaysConstMeta => const TaskConstMeta( - debugName: "Client_retrieve_file", - argNames: ["that", "fileRef", "outputPath"], + debugName: "Client_has_connected_relays", + argNames: ["that"], ); @override - Future zoeClientClientClientRetrieveFileBytes({ + Future zoeClientClientClientHasFile({ required Client that, - required FileRef fileRef, + required FileRef storedInfo, }) { return handler.executeNormal( NormalTask( @@ -896,39 +1214,67 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { serializer, ); sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - fileRef, + storedInfo, serializer, ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 16, + funcId: 20, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeSuccessData: sse_decode_bool, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kZoeClientClientClientRetrieveFileBytesConstMeta, - argValues: [that, fileRef], + constMeta: kZoeClientClientClientHasFileConstMeta, + argValues: [that, storedInfo], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientRetrieveFileBytesConstMeta => + TaskConstMeta get kZoeClientClientClientHasFileConstMeta => const TaskConstMeta( - debugName: "Client_retrieve_file_bytes", - argNames: ["that", "fileRef"], + debugName: "Client_has_file", + argNames: ["that", "storedInfo"], ); @override - Future zoeClientClientClientStoreData({ + Future zoeClientClientClientIdHex({required Client that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 21, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientIdHexConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientIdHexConstMeta => + const TaskConstMeta(debugName: "Client_id_hex", argNames: ["that"]); + + @override + Future zoeClientClientClientOverallStatus({ required Client that, - required List data, - required String referenceName, - String? contentType, }) { return handler.executeNormal( NormalTask( @@ -938,38 +1284,70 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_list_prim_u_8_loose(data, serializer); - sse_encode_String(referenceName, serializer); - sse_encode_opt_String(contentType, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 17, + funcId: 22, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef, + decodeSuccessData: sse_decode_overall_connection_status, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientOverallStatusConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientOverallStatusConstMeta => + const TaskConstMeta( + debugName: "Client_overall_status", + argNames: ["that"], + ); + + @override + Future zoeClientClientClientReconnectFailedRelays({ + required Client that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 23, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_usize, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kZoeClientClientClientStoreDataConstMeta, - argValues: [that, data, referenceName, contentType], + constMeta: kZoeClientClientClientReconnectFailedRelaysConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientStoreDataConstMeta => + TaskConstMeta get kZoeClientClientClientReconnectFailedRelaysConstMeta => const TaskConstMeta( - debugName: "Client_store_data", - argNames: ["that", "data", "referenceName", "contentType"], + debugName: "Client_reconnect_failed_relays", + argNames: ["that"], ); @override - Future zoeClientClientClientStoreFile({ + Future zoeClientClientClientRemoveRelay({ required Client that, - required PathBuf filePath, + required VerifyingKey serverPublicKey, }) { return handler.executeNormal( NormalTask( @@ -979,71 +1357,242 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( - filePath, + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + serverPublicKey, serializer, ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 18, + funcId: 24, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef, + decodeSuccessData: sse_decode_bool, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kZoeClientClientClientStoreFileConstMeta, - argValues: [that, filePath], + constMeta: kZoeClientClientClientRemoveRelayConstMeta, + argValues: [that, serverPublicKey], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientClientClientStoreFileConstMeta => + TaskConstMeta get kZoeClientClientClientRemoveRelayConstMeta => const TaskConstMeta( - debugName: "Client_store_file", - argNames: ["that", "filePath"], + debugName: "Client_remove_relay", + argNames: ["that", "serverPublicKey"], ); @override - Future zoeWireProtocolKeysKeyPairAlgorithm({ - required KeyPair that, + Future zoeClientClientClientRetrieveFile({ + required Client that, + required FileRef fileRef, + required PathBuf outputPath, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( that, serializer, ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + fileRef, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + outputPath, + serializer, + ); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 19, + funcId: 25, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_algorithm, - decodeErrorData: null, + decodeSuccessData: sse_decode_unit, + decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kZoeWireProtocolKeysKeyPairAlgorithmConstMeta, - argValues: [that], + constMeta: kZoeClientClientClientRetrieveFileConstMeta, + argValues: [that, fileRef, outputPath], apiImpl: this, ), ); } - TaskConstMeta get kZoeWireProtocolKeysKeyPairAlgorithmConstMeta => - const TaskConstMeta(debugName: "KeyPair_algorithm", argNames: ["that"]); + TaskConstMeta get kZoeClientClientClientRetrieveFileConstMeta => + const TaskConstMeta( + debugName: "Client_retrieve_file", + argNames: ["that", "fileRef", "outputPath"], + ); @override - Future zoeWireProtocolKeysKeyPairFromPem({ - required String pemString, + Future zoeClientClientClientRetrieveFileBytes({ + required Client that, + required FileRef fileRef, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + fileRef, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 26, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientRetrieveFileBytesConstMeta, + argValues: [that, fileRef], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientRetrieveFileBytesConstMeta => + const TaskConstMeta( + debugName: "Client_retrieve_file_bytes", + argNames: ["that", "fileRef"], + ); + + @override + Future zoeClientClientClientStoreData({ + required Client that, + required List data, + required String referenceName, + String? contentType, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + sse_encode_list_prim_u_8_loose(data, serializer); + sse_encode_String(referenceName, serializer); + sse_encode_opt_String(contentType, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 27, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientStoreDataConstMeta, + argValues: [that, data, referenceName, contentType], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientStoreDataConstMeta => + const TaskConstMeta( + debugName: "Client_store_data", + argNames: ["that", "data", "referenceName", "contentType"], + ); + + @override + Future zoeClientClientClientStoreFile({ + required Client that, + required PathBuf filePath, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + filePath, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 28, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kZoeClientClientClientStoreFileConstMeta, + argValues: [that, filePath], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientClientStoreFileConstMeta => + const TaskConstMeta( + debugName: "Client_store_file", + argNames: ["that", "filePath"], + ); + + @override + Future zoeWireProtocolKeysKeyPairAlgorithm({ + required KeyPair that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 29, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_algorithm, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysKeyPairAlgorithmConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairAlgorithmConstMeta => + const TaskConstMeta(debugName: "KeyPair_algorithm", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysKeyPairFromPem({ + required String pemString, }) { return handler.executeNormal( NormalTask( @@ -1053,164 +1602,666 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 20, - port: port_, + funcId: 30, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair, + decodeErrorData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError, + ), + constMeta: kZoeWireProtocolKeysKeyPairFromPemConstMeta, + argValues: [pemString], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairFromPemConstMeta => + const TaskConstMeta( + debugName: "KeyPair_from_pem", + argNames: ["pemString"], + ); + + @override + Future zoeWireProtocolKeysKeyPairId({required KeyPair that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 31, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysKeyPairIdConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairIdConstMeta => + const TaskConstMeta(debugName: "KeyPair_id", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysKeyPairPublicKey({ + required KeyPair that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 32, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysKeyPairPublicKeyConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairPublicKeyConstMeta => + const TaskConstMeta(debugName: "KeyPair_public_key", argNames: ["that"]); + + @override + Future zoeWireProtocolKeysKeyPairSign({ + required KeyPair that, + required List message, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + sse_encode_list_prim_u_8_loose(message, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 33, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature, + decodeErrorData: null, + ), + constMeta: kZoeWireProtocolKeysKeyPairSignConstMeta, + argValues: [that, message], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairSignConstMeta => + const TaskConstMeta( + debugName: "KeyPair_sign", + argNames: ["that", "message"], + ); + + @override + Future zoeWireProtocolKeysKeyPairToPem({required KeyPair that}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 34, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError, + ), + constMeta: kZoeWireProtocolKeysKeyPairToPemConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysKeyPairToPemConstMeta => + const TaskConstMeta(debugName: "KeyPair_to_pem", argNames: ["that"]); + + @override + RelayInfo zoeClientClientRelayConnectionInfoAutoAccessorGetInfo({ + required RelayConnectionInfo that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 35)!; + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo, + decodeErrorData: null, + ), + constMeta: + kZoeClientClientRelayConnectionInfoAutoAccessorGetInfoConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kZoeClientClientRelayConnectionInfoAutoAccessorGetInfoConstMeta => + const TaskConstMeta( + debugName: "RelayConnectionInfo_auto_accessor_get_info", + argNames: ["that"], + ); + + @override + RelayConnectionStatus + zoeClientClientRelayConnectionInfoAutoAccessorGetStatus({ + required RelayConnectionInfo that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 36)!; + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus, + decodeErrorData: null, + ), + constMeta: + kZoeClientClientRelayConnectionInfoAutoAccessorGetStatusConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kZoeClientClientRelayConnectionInfoAutoAccessorGetStatusConstMeta => + const TaskConstMeta( + debugName: "RelayConnectionInfo_auto_accessor_get_status", + argNames: ["that"], + ); + + @override + void zoeClientClientRelayConnectionInfoAutoAccessorSetInfo({ + required RelayConnectionInfo that, + required RelayInfo info, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + info, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 37)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: + kZoeClientClientRelayConnectionInfoAutoAccessorSetInfoConstMeta, + argValues: [that, info], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kZoeClientClientRelayConnectionInfoAutoAccessorSetInfoConstMeta => + const TaskConstMeta( + debugName: "RelayConnectionInfo_auto_accessor_set_info", + argNames: ["that", "info"], + ); + + @override + void zoeClientClientRelayConnectionInfoAutoAccessorSetStatus({ + required RelayConnectionInfo that, + required RelayConnectionStatus status, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + status, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 38)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: + kZoeClientClientRelayConnectionInfoAutoAccessorSetStatusConstMeta, + argValues: [that, status], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kZoeClientClientRelayConnectionInfoAutoAccessorSetStatusConstMeta => + const TaskConstMeta( + debugName: "RelayConnectionInfo_auto_accessor_set_status", + argNames: ["that", "status"], + ); + + @override + RelayAddress zoeClientClientRelayInfoAutoAccessorGetRelayAddress({ + required RelayInfo that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 39)!; + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress, + decodeErrorData: null, + ), + constMeta: + kZoeClientClientRelayInfoAutoAccessorGetRelayAddressConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kZoeClientClientRelayInfoAutoAccessorGetRelayAddressConstMeta => + const TaskConstMeta( + debugName: "RelayInfo_auto_accessor_get_relay_address", + argNames: ["that"], + ); + + @override + KeyId zoeClientClientRelayInfoAutoAccessorGetRelayId({ + required RelayInfo that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 40)!; + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId, + decodeErrorData: null, + ), + constMeta: kZoeClientClientRelayInfoAutoAccessorGetRelayIdConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientRelayInfoAutoAccessorGetRelayIdConstMeta => + const TaskConstMeta( + debugName: "RelayInfo_auto_accessor_get_relay_id", + argNames: ["that"], + ); + + @override + void zoeClientClientRelayInfoAutoAccessorSetRelayAddress({ + required RelayInfo that, + required RelayAddress relayAddress, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + relayAddress, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 41)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: + kZoeClientClientRelayInfoAutoAccessorSetRelayAddressConstMeta, + argValues: [that, relayAddress], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kZoeClientClientRelayInfoAutoAccessorSetRelayAddressConstMeta => + const TaskConstMeta( + debugName: "RelayInfo_auto_accessor_set_relay_address", + argNames: ["that", "relayAddress"], + ); + + @override + void zoeClientClientRelayInfoAutoAccessorSetRelayId({ + required RelayInfo that, + required KeyId relayId, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + that, + serializer, + ); + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + relayId, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 42)!; + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientClientRelayInfoAutoAccessorSetRelayIdConstMeta, + argValues: [that, relayId], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientClientRelayInfoAutoAccessorSetRelayIdConstMeta => + const TaskConstMeta( + debugName: "RelayInfo_auto_accessor_set_relay_id", + argNames: ["that", "relayId"], + ); + + @override + RelayAddress zoeClientClientRelayStatusUpdateAutoAccessorGetRelayAddress({ + required RelayStatusUpdate that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + that, + serializer, + ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 43)!; + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress, + decodeErrorData: null, + ), + constMeta: + kZoeClientClientRelayStatusUpdateAutoAccessorGetRelayAddressConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kZoeClientClientRelayStatusUpdateAutoAccessorGetRelayAddressConstMeta => + const TaskConstMeta( + debugName: "RelayStatusUpdate_auto_accessor_get_relay_address", + argNames: ["that"], + ); + + @override + KeyId zoeClientClientRelayStatusUpdateAutoAccessorGetRelayId({ + required RelayStatusUpdate that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + that, + serializer, ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 44)!; }, codec: SseCodec( decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair, - decodeErrorData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError, + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId, + decodeErrorData: null, ), - constMeta: kZoeWireProtocolKeysKeyPairFromPemConstMeta, - argValues: [pemString], + constMeta: + kZoeClientClientRelayStatusUpdateAutoAccessorGetRelayIdConstMeta, + argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kZoeWireProtocolKeysKeyPairFromPemConstMeta => + TaskConstMeta + get kZoeClientClientRelayStatusUpdateAutoAccessorGetRelayIdConstMeta => const TaskConstMeta( - debugName: "KeyPair_from_pem", - argNames: ["pemString"], + debugName: "RelayStatusUpdate_auto_accessor_get_relay_id", + argNames: ["that"], ); @override - Future zoeWireProtocolKeysKeyPairId({required KeyPair that}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { + RelayConnectionStatus zoeClientClientRelayStatusUpdateAutoAccessorGetStatus({ + required RelayStatusUpdate that, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( that, serializer, ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 21, - port: port_, - ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 45)!; }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus, decodeErrorData: null, ), - constMeta: kZoeWireProtocolKeysKeyPairIdConstMeta, + constMeta: + kZoeClientClientRelayStatusUpdateAutoAccessorGetStatusConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kZoeWireProtocolKeysKeyPairIdConstMeta => - const TaskConstMeta(debugName: "KeyPair_id", argNames: ["that"]); + TaskConstMeta + get kZoeClientClientRelayStatusUpdateAutoAccessorGetStatusConstMeta => + const TaskConstMeta( + debugName: "RelayStatusUpdate_auto_accessor_get_status", + argNames: ["that"], + ); @override - Future zoeWireProtocolKeysKeyPairPublicKey({ - required KeyPair that, + void zoeClientClientRelayStatusUpdateAutoAccessorSetRelayAddress({ + required RelayStatusUpdate that, + required RelayAddress relayAddress, }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { + return handler.executeSync( + SyncTask( + callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( that, serializer, ); - pdeCallFfi( - generalizedFrbRustBinding, + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + relayAddress, serializer, - funcId: 22, - port: port_, ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 46)!; }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kZoeWireProtocolKeysKeyPairPublicKeyConstMeta, - argValues: [that], + constMeta: + kZoeClientClientRelayStatusUpdateAutoAccessorSetRelayAddressConstMeta, + argValues: [that, relayAddress], apiImpl: this, ), ); } - TaskConstMeta get kZoeWireProtocolKeysKeyPairPublicKeyConstMeta => - const TaskConstMeta(debugName: "KeyPair_public_key", argNames: ["that"]); + TaskConstMeta + get kZoeClientClientRelayStatusUpdateAutoAccessorSetRelayAddressConstMeta => + const TaskConstMeta( + debugName: "RelayStatusUpdate_auto_accessor_set_relay_address", + argNames: ["that", "relayAddress"], + ); @override - Future zoeWireProtocolKeysKeyPairSign({ - required KeyPair that, - required List message, + void zoeClientClientRelayStatusUpdateAutoAccessorSetRelayId({ + required RelayStatusUpdate that, + required KeyId relayId, }) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { + return handler.executeSync( + SyncTask( + callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( that, serializer, ); - sse_encode_list_prim_u_8_loose(message, serializer); - pdeCallFfi( - generalizedFrbRustBinding, + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + relayId, serializer, - funcId: 23, - port: port_, ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 47)!; }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature, + decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kZoeWireProtocolKeysKeyPairSignConstMeta, - argValues: [that, message], + constMeta: + kZoeClientClientRelayStatusUpdateAutoAccessorSetRelayIdConstMeta, + argValues: [that, relayId], apiImpl: this, ), ); } - TaskConstMeta get kZoeWireProtocolKeysKeyPairSignConstMeta => + TaskConstMeta + get kZoeClientClientRelayStatusUpdateAutoAccessorSetRelayIdConstMeta => const TaskConstMeta( - debugName: "KeyPair_sign", - argNames: ["that", "message"], + debugName: "RelayStatusUpdate_auto_accessor_set_relay_id", + argNames: ["that", "relayId"], ); @override - Future zoeWireProtocolKeysKeyPairToPem({required KeyPair that}) { - return handler.executeNormal( - NormalTask( - callFfi: (port_) { + void zoeClientClientRelayStatusUpdateAutoAccessorSetStatus({ + required RelayStatusUpdate that, + required RelayConnectionStatus status, + }) { + return handler.executeSync( + SyncTask( + callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( that, serializer, ); - pdeCallFfi( - generalizedFrbRustBinding, + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + status, serializer, - funcId: 24, - port: port_, ); + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 48)!; }, codec: SseCodec( - decodeSuccessData: sse_decode_String, - decodeErrorData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError, + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, ), - constMeta: kZoeWireProtocolKeysKeyPairToPemConstMeta, - argValues: [that], + constMeta: + kZoeClientClientRelayStatusUpdateAutoAccessorSetStatusConstMeta, + argValues: [that, status], apiImpl: this, ), ); } - TaskConstMeta get kZoeWireProtocolKeysKeyPairToPemConstMeta => - const TaskConstMeta(debugName: "KeyPair_to_pem", argNames: ["that"]); + TaskConstMeta + get kZoeClientClientRelayStatusUpdateAutoAccessorSetStatusConstMeta => + const TaskConstMeta( + debugName: "RelayStatusUpdate_auto_accessor_set_status", + argNames: ["that", "status"], + ); @override Future zoeWireProtocolKeysSignatureEncode({ @@ -1227,7 +2278,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 25, + funcId: 49, port: port_, ); }, @@ -1246,7 +2297,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { const TaskConstMeta(debugName: "Signature_encode", argNames: ["that"]); @override - Future zoeWireProtocolKeysSignatureId({required Signature that}) { + Future zoeWireProtocolKeysSignatureId({required Signature that}) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -1258,12 +2309,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 26, + funcId: 50, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId, decodeErrorData: null, ), constMeta: kZoeWireProtocolKeysSignatureIdConstMeta, @@ -1293,7 +2345,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 27, + funcId: 51, port: port_, ); }, @@ -1330,7 +2382,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 28, + funcId: 52, port: port_, ); }, @@ -1366,7 +2418,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 29, + funcId: 53, port: port_, ); }, @@ -1396,7 +2448,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 30, + funcId: 54, port: port_, ); }, @@ -1419,7 +2471,44 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); @override - Future zoeWireProtocolKeysVerifyingKeyId({required VerifyingKey that}) { + Future zoeWireProtocolKeysVerifyingKeyFromPem({ + required String pemString, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(pemString, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 55, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey, + decodeErrorData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError, + ), + constMeta: kZoeWireProtocolKeysVerifyingKeyFromPemConstMeta, + argValues: [pemString], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysVerifyingKeyFromPemConstMeta => + const TaskConstMeta( + debugName: "VerifyingKey_from_pem", + argNames: ["pemString"], + ); + + @override + Future zoeWireProtocolKeysVerifyingKeyId({ + required VerifyingKey that, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { @@ -1431,12 +2520,13 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 31, + funcId: 56, port: port_, ); }, codec: SseCodec( - decodeSuccessData: sse_decode_unit, + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId, decodeErrorData: null, ), constMeta: kZoeWireProtocolKeysVerifyingKeyIdConstMeta, @@ -1464,7 +2554,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 32, + funcId: 57, port: port_, ); }, @@ -1485,6 +2575,40 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["that"], ); + @override + Future zoeWireProtocolKeysVerifyingKeyToPem({ + required VerifyingKey that, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( + that, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 58, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError, + ), + constMeta: kZoeWireProtocolKeysVerifyingKeyToPemConstMeta, + argValues: [that], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeWireProtocolKeysVerifyingKeyToPemConstMeta => + const TaskConstMeta(debugName: "VerifyingKey_to_pem", argNames: ["that"]); + @override Future zoeWireProtocolKeysVerifyingKeyVerify({ required VerifyingKey that, @@ -1507,7 +2631,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 33, + funcId: 59, port: port_, ); }, @@ -1538,7 +2662,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 34, + funcId: 60, port: port_, ); }, @@ -1570,7 +2694,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 35, + funcId: 61, port: port_, ); }, @@ -1601,7 +2725,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 36, + funcId: 62, port: port_, ); }, @@ -1626,7 +2750,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(name, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 37)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 63)!; }, codec: SseCodec( decodeSuccessData: sse_decode_String, @@ -1651,7 +2775,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 38, + funcId: 64, port: port_, ); }, @@ -1679,7 +2803,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 39, + funcId: 65, port: port_, ); }, @@ -1708,7 +2832,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 40, + funcId: 66, port: port_, ); }, @@ -1738,7 +2862,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 41, + funcId: 67, port: port_, ); }, @@ -1772,7 +2896,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 42, + funcId: 68, port: port_, ); }, @@ -1803,7 +2927,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 43, + funcId: 69, port: port_, ); }, @@ -1834,7 +2958,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 44, + funcId: 70, port: port_, ); }, @@ -1867,7 +2991,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 45, + funcId: 71, port: port_, ); }, @@ -1921,6 +3045,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { get rust_arc_decrement_strong_count_FileRef => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef; + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_KeyId => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_KeyId => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_KeyPair => wire .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair; @@ -1945,6 +3077,46 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { get rust_arc_decrement_strong_count_PathBuf => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf; + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayAddress => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayAddress => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayConnectionInfo => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayConnectionInfo => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayConnectionStatus => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayConnectionStatus => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayInfo => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayInfo => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_RelayStatusUpdate => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_RelayStatusUpdate => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_Signature => wire .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature; @@ -1985,73 +3157,135 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { get rust_arc_decrement_strong_count_VerifyingKey => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey; + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_VerifyingKeyError => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_VerifyingKeyError => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError; + @protected AnyhowException dco_decode_AnyhowException(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs - return AnyhowException(raw as String); + return AnyhowException(raw as String); + } + + @protected + Client + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientImpl.frbInternalDcoDecode(raw as List); + } + + @protected + ClientBuilder + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientBuilderImpl.frbInternalDcoDecode(raw as List); + } + + @protected + ClientSecret + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return ClientSecretImpl.frbInternalDcoDecode(raw as List); + } + + @protected + FileRef + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return FileRefImpl.frbInternalDcoDecode(raw as List); + } + + @protected + KeyId + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeyIdImpl.frbInternalDcoDecode(raw as List); + } + + @protected + KeyPair + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeyPairImpl.frbInternalDcoDecode(raw as List); } @protected - Client - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + KeyPairError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( dynamic raw, ) { // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientImpl.frbInternalDcoDecode(raw as List); + return KeyPairErrorImpl.frbInternalDcoDecode(raw as List); } @protected - ClientBuilder - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + PathBuf + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( dynamic raw, ) { // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientBuilderImpl.frbInternalDcoDecode(raw as List); + return PathBufImpl.frbInternalDcoDecode(raw as List); } @protected - ClientSecret - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + RelayAddress + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( dynamic raw, ) { // Codec=Dco (DartCObject based), see doc to use other codecs - return ClientSecretImpl.frbInternalDcoDecode(raw as List); + return RelayAddressImpl.frbInternalDcoDecode(raw as List); } @protected - FileRef - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + RelayConnectionInfo + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( dynamic raw, ) { // Codec=Dco (DartCObject based), see doc to use other codecs - return FileRefImpl.frbInternalDcoDecode(raw as List); + return RelayConnectionInfoImpl.frbInternalDcoDecode(raw as List); } @protected - KeyPair - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + RelayConnectionStatus + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( dynamic raw, ) { // Codec=Dco (DartCObject based), see doc to use other codecs - return KeyPairImpl.frbInternalDcoDecode(raw as List); + return RelayConnectionStatusImpl.frbInternalDcoDecode(raw as List); } @protected - KeyPairError - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairError( + RelayInfo + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( dynamic raw, ) { // Codec=Dco (DartCObject based), see doc to use other codecs - return KeyPairErrorImpl.frbInternalDcoDecode(raw as List); + return RelayInfoImpl.frbInternalDcoDecode(raw as List); } @protected - PathBuf - dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf( + RelayStatusUpdate + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( dynamic raw, ) { // Codec=Dco (DartCObject based), see doc to use other codecs - return PathBufImpl.frbInternalDcoDecode(raw as List); + return RelayStatusUpdateImpl.frbInternalDcoDecode(raw as List); } @protected @@ -2099,6 +3333,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return VerifyingKeyImpl.frbInternalDcoDecode(raw as List); } + @protected + VerifyingKeyError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return VerifyingKeyErrorImpl.frbInternalDcoDecode(raw as List); + } + @protected ClientBuilder dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( @@ -2108,6 +3351,33 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return ClientBuilderImpl.frbInternalDcoDecode(raw as List); } + @protected + RelayConnectionInfo + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayConnectionInfoImpl.frbInternalDcoDecode(raw as List); + } + + @protected + RelayInfo + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayInfoImpl.frbInternalDcoDecode(raw as List); + } + + @protected + RelayStatusUpdate + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayStatusUpdateImpl.frbInternalDcoDecode(raw as List); + } + @protected Client dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( @@ -2144,6 +3414,33 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return KeyPairImpl.frbInternalDcoDecode(raw as List); } + @protected + RelayConnectionInfo + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayConnectionInfoImpl.frbInternalDcoDecode(raw as List); + } + + @protected + RelayInfo + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayInfoImpl.frbInternalDcoDecode(raw as List); + } + + @protected + RelayStatusUpdate + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayStatusUpdateImpl.frbInternalDcoDecode(raw as List); + } + @protected Signature dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -2216,6 +3513,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return FileRefImpl.frbInternalDcoDecode(raw as List); } + @protected + KeyId + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return KeyIdImpl.frbInternalDcoDecode(raw as List); + } + @protected KeyPair dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -2243,6 +3549,51 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return PathBufImpl.frbInternalDcoDecode(raw as List); } + @protected + RelayAddress + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayAddressImpl.frbInternalDcoDecode(raw as List); + } + + @protected + RelayConnectionInfo + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayConnectionInfoImpl.frbInternalDcoDecode(raw as List); + } + + @protected + RelayConnectionStatus + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayConnectionStatusImpl.frbInternalDcoDecode(raw as List); + } + + @protected + RelayInfo + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayInfoImpl.frbInternalDcoDecode(raw as List); + } + + @protected + RelayStatusUpdate + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return RelayStatusUpdateImpl.frbInternalDcoDecode(raw as List); + } + @protected Signature dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -2288,6 +3639,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return VerifyingKeyImpl.frbInternalDcoDecode(raw as List); } + @protected + VerifyingKeyError + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return VerifyingKeyErrorImpl.frbInternalDcoDecode(raw as List); + } + @protected String dco_decode_String(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -2312,6 +3672,32 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as int; } + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List) + .map( + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress, + ) + .toList(); + } + + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List) + .map( + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo, + ) + .toList(); + } + @protected List dco_decode_list_prim_u_8_loose(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -2330,6 +3716,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw == null ? null : dco_decode_String(raw); } + @protected + OverallConnectionStatus dco_decode_overall_connection_status(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 OverallConnectionStatus( + isConnected: dco_decode_bool(arr[0]), + connectedCount: dco_decode_usize(arr[1]), + totalCount: dco_decode_usize(arr[2]), + ); + } + @protected int dco_decode_u_16(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -2415,6 +3814,18 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + KeyId + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeyIdImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected KeyPair sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -2451,6 +3862,66 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + RelayAddress + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayAddressImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayConnectionInfo + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayConnectionInfoImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayConnectionStatus + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayConnectionStatusImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayInfo + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayInfoImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayStatusUpdate + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayStatusUpdateImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected Signature sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -2505,67 +3976,151 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return VerifyingKeyImpl.frbInternalSseDecode( + return VerifyingKeyImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + VerifyingKeyError + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return VerifyingKeyErrorImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + ClientBuilder + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientBuilderImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayConnectionInfo + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayConnectionInfoImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayInfo + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayInfoImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayStatusUpdate + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayStatusUpdateImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + Client + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + ClientSecret + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return ClientSecretImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); } @protected - ClientBuilder - sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( + FileRef + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return ClientBuilderImpl.frbInternalSseDecode( + return FileRefImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); } @protected - Client - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + KeyPair + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return ClientImpl.frbInternalSseDecode( + return KeyPairImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); } @protected - ClientSecret - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + RelayConnectionInfo + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return ClientSecretImpl.frbInternalSseDecode( + return RelayConnectionInfoImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); } @protected - FileRef - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + RelayInfo + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return FileRefImpl.frbInternalSseDecode( + return RelayInfoImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); } @protected - KeyPair - sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + RelayStatusUpdate + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return KeyPairImpl.frbInternalSseDecode( + return RelayStatusUpdateImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); @@ -2667,6 +4222,18 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + KeyId + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return KeyIdImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected KeyPair sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -2703,6 +4270,66 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + RelayAddress + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayAddressImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayConnectionInfo + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayConnectionInfoImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayConnectionStatus + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayConnectionStatusImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayInfo + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayInfoImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + RelayStatusUpdate + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return RelayStatusUpdateImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected Signature sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -2763,6 +4390,18 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + VerifyingKeyError + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return VerifyingKeyErrorImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected String sse_decode_String(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -2789,6 +4428,44 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return deserializer.buffer.getInt32(); } + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + 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_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + deserializer, + ), + ); + } + return ans_; + } + + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + 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_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + deserializer, + ), + ); + } + return ans_; + } + @protected List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -2814,6 +4491,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + OverallConnectionStatus sse_decode_overall_connection_status( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + var var_isConnected = sse_decode_bool(deserializer); + var var_connectedCount = sse_decode_usize(deserializer); + var var_totalCount = sse_decode_usize(deserializer); + return OverallConnectionStatus( + isConnected: var_isConnected, + connectedCount: var_connectedCount, + totalCount: var_totalCount, + ); + } + @protected int sse_decode_u_16(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -2905,6 +4597,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + KeyId self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeyIdImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -2944,6 +4649,71 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + RelayAddress self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayAddressImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayConnectionInfoImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + RelayConnectionStatus self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayConnectionStatusImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayInfoImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayStatusUpdateImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -3009,6 +4779,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + VerifyingKeyError self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as VerifyingKeyErrorImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + @protected void sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( @@ -3022,6 +4805,45 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayConnectionInfoImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayInfoImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayStatusUpdateImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( @@ -3030,46 +4852,85 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_usize( - (self as ClientImpl).frbInternalSseEncode(move: false), + (self as ClientImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( + ClientSecret self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as ClientSecretImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( + FileRef self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as FileRefImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( + KeyPair self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeyPairImpl).frbInternalSseEncode(move: false), serializer, ); } @protected void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret( - ClientSecret self, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_usize( - (self as ClientSecretImpl).frbInternalSseEncode(move: false), + (self as RelayConnectionInfoImpl).frbInternalSseEncode(move: false), serializer, ); } @protected void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef( - FileRef self, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_usize( - (self as FileRefImpl).frbInternalSseEncode(move: false), + (self as RelayInfoImpl).frbInternalSseEncode(move: false), serializer, ); } @protected void - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( - KeyPair self, + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, SseSerializer serializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs sse_encode_usize( - (self as KeyPairImpl).frbInternalSseEncode(move: false), + (self as RelayStatusUpdateImpl).frbInternalSseEncode(move: false), serializer, ); } @@ -3178,6 +5039,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + KeyId self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as KeyIdImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -3217,6 +5091,71 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + RelayAddress self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayAddressImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayConnectionInfoImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + RelayConnectionStatus self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayConnectionStatusImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayInfoImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as RelayStatusUpdateImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -3282,6 +5221,19 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + VerifyingKeyError self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as VerifyingKeyErrorImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + @protected void sse_encode_String(String self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -3306,6 +5258,38 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { serializer.buffer.putInt32(self); } + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + 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_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + item, + serializer, + ); + } + } + + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + 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_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + item, + serializer, + ); + } + } + @protected void sse_encode_list_prim_u_8_loose( List self, @@ -3338,6 +5322,17 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + void sse_encode_overall_connection_status( + OverallConnectionStatus self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_bool(self.isConnected, serializer); + sse_encode_usize(self.connectedCount, serializer); + sse_encode_usize(self.totalCount, serializer); + } + @protected void sse_encode_u_16(int self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -3387,6 +5382,18 @@ class ClientBuilderImpl extends RustOpaque implements ClientBuilder { RustLib.instance.api.rust_arc_decrement_strong_count_ClientBuilderPtr, ); + /// Enable or disable automatic connection to server during build + /// + /// When autoconnect is true (default for backward compatibility), the client + /// will require server information and connect immediately during build(). + /// When autoconnect is false, the client starts in offline mode and can + /// connect to relays later using add_relay(). + Future autoconnect({required bool autoconnect}) => + RustLib.instance.api.zoeClientClientClientBuilderAutoconnect( + that: this, + autoconnect: autoconnect, + ); + Future build() => RustLib.instance.api.zoeClientClientClientBuilderBuild(that: this); @@ -3417,6 +5424,11 @@ class ClientBuilderImpl extends RustOpaque implements ClientBuilder { serverPublicKey: serverPublicKey, serverAddr: serverAddr, ); + + Future servers({required List servers}) => RustLib + .instance + .api + .zoeClientClientClientBuilderServers(that: this, servers: servers); } @sealed @@ -3438,12 +5450,32 @@ class ClientImpl extends RustOpaque implements Client { RustLib.instance.api.rust_arc_decrement_strong_count_ClientPtr, ); + /// Add a relay server to the client + /// + /// This will attempt to connect to all addresses in the RelayAddress in random order + /// with a 10-second timeout per attempt. Only adds the relay to local state if a + /// connection succeeds. + Future addRelay({required RelayAddress address}) => RustLib.instance.api + .zoeClientClientClientAddRelay(that: this, address: address); + + /// Get the current client secret + Future clientSecret() => + RustLib.instance.api.zoeClientClientClientClientSecret(that: this); + Future clientSecretHex() => RustLib.instance.api.zoeClientClientClientClientSecretHex(that: this); Future close() => RustLib.instance.api.zoeClientClientClientClose(that: this); + /// Get list of all configured relays with their connection status + Future> getRelayStatus() => + RustLib.instance.api.zoeClientClientClientGetRelayStatus(that: this); + + /// Check if any relays are currently connected + Future hasConnectedRelays() => + RustLib.instance.api.zoeClientClientClientHasConnectedRelays(that: this); + /// Check if a file exists in storage /// /// # Arguments @@ -3459,6 +5491,25 @@ class ClientImpl extends RustOpaque implements Client { Future idHex() => RustLib.instance.api.zoeClientClientClientIdHex(that: this); + /// Calculate the current overall connection status + /// + /// This is computed from the current relay states, ensuring it's always accurate but makes it + /// a bit more expensive to compute. For live updates it is recommended to use `overall_status_stream` + /// instead. + Future overallStatus() => + RustLib.instance.api.zoeClientClientClientOverallStatus(that: this); + + /// Attempt to reconnect to all failed relays + Future reconnectFailedRelays() => RustLib.instance.api + .zoeClientClientClientReconnectFailedRelays(that: this); + + /// Remove a relay connection (offline mode only) + Future removeRelay({required VerifyingKey serverPublicKey}) => + RustLib.instance.api.zoeClientClientClientRemoveRelay( + that: this, + serverPublicKey: serverPublicKey, + ); + /// Retrieve a file from storage and save it to disk /// /// This method: @@ -3580,6 +5631,10 @@ class ClientSecretImpl extends RustOpaque implements ClientSecret { RustLib.instance.api.rust_arc_decrement_strong_count_ClientSecretPtr, ); + /// Get the list of configured servers + Future servers() => + RustLib.instance.api.zoeClientClientClientSecretServers(that: this); + Future toHex() => RustLib.instance.api.zoeClientClientClientSecretToHex(that: this); } @@ -3604,6 +5659,26 @@ class FileRefImpl extends RustOpaque implements FileRef { ); } +@sealed +class KeyIdImpl extends RustOpaque implements KeyId { + // Not to be used by end users + KeyIdImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + KeyIdImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_KeyId, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_KeyId, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_KeyIdPtr, + ); +} + @sealed class KeyPairErrorImpl extends RustOpaque implements KeyPairError { // Not to be used by end users @@ -3647,7 +5722,7 @@ class KeyPairImpl extends RustOpaque implements KeyPair { Future algorithm() => RustLib.instance.api.zoeWireProtocolKeysKeyPairAlgorithm(that: this); - Future id() => + Future id() => RustLib.instance.api.zoeWireProtocolKeysKeyPairId(that: this); Future publicKey() => @@ -3704,6 +5779,191 @@ class PathBufImpl extends RustOpaque implements PathBuf { ); } +@sealed +class RelayAddressImpl extends RustOpaque implements RelayAddress { + // Not to be used by end users + RelayAddressImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + RelayAddressImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_RelayAddress, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_RelayAddress, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_RelayAddressPtr, + ); +} + +@sealed +class RelayConnectionInfoImpl extends RustOpaque + implements RelayConnectionInfo { + // Not to be used by end users + RelayConnectionInfoImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + RelayConnectionInfoImpl.frbInternalSseDecode( + BigInt ptr, + int externalSizeOnNative, + ) : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: RustLib + .instance + .api + .rust_arc_increment_strong_count_RelayConnectionInfo, + rustArcDecrementStrongCount: RustLib + .instance + .api + .rust_arc_decrement_strong_count_RelayConnectionInfo, + rustArcDecrementStrongCountPtr: RustLib + .instance + .api + .rust_arc_decrement_strong_count_RelayConnectionInfoPtr, + ); + + RelayInfo get info => RustLib.instance.api + .zoeClientClientRelayConnectionInfoAutoAccessorGetInfo(that: this); + + RelayConnectionStatus get status => RustLib.instance.api + .zoeClientClientRelayConnectionInfoAutoAccessorGetStatus(that: this); + + set info(RelayInfo info) => RustLib.instance.api + .zoeClientClientRelayConnectionInfoAutoAccessorSetInfo( + that: this, + info: info, + ); + + set status(RelayConnectionStatus status) => RustLib.instance.api + .zoeClientClientRelayConnectionInfoAutoAccessorSetStatus( + that: this, + status: status, + ); +} + +@sealed +class RelayConnectionStatusImpl extends RustOpaque + implements RelayConnectionStatus { + // Not to be used by end users + RelayConnectionStatusImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + RelayConnectionStatusImpl.frbInternalSseDecode( + BigInt ptr, + int externalSizeOnNative, + ) : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: RustLib + .instance + .api + .rust_arc_increment_strong_count_RelayConnectionStatus, + rustArcDecrementStrongCount: RustLib + .instance + .api + .rust_arc_decrement_strong_count_RelayConnectionStatus, + rustArcDecrementStrongCountPtr: RustLib + .instance + .api + .rust_arc_decrement_strong_count_RelayConnectionStatusPtr, + ); +} + +@sealed +class RelayInfoImpl extends RustOpaque implements RelayInfo { + // Not to be used by end users + RelayInfoImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + RelayInfoImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_RelayInfo, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_RelayInfo, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_RelayInfoPtr, + ); + + RelayAddress get relayAddress => RustLib.instance.api + .zoeClientClientRelayInfoAutoAccessorGetRelayAddress(that: this); + + KeyId get relayId => RustLib.instance.api + .zoeClientClientRelayInfoAutoAccessorGetRelayId(that: this); + + set relayAddress(RelayAddress relayAddress) => + RustLib.instance.api.zoeClientClientRelayInfoAutoAccessorSetRelayAddress( + that: this, + relayAddress: relayAddress, + ); + + set relayId(KeyId relayId) => + RustLib.instance.api.zoeClientClientRelayInfoAutoAccessorSetRelayId( + that: this, + relayId: relayId, + ); +} + +@sealed +class RelayStatusUpdateImpl extends RustOpaque implements RelayStatusUpdate { + // Not to be used by end users + RelayStatusUpdateImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + RelayStatusUpdateImpl.frbInternalSseDecode( + BigInt ptr, + int externalSizeOnNative, + ) : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_RelayStatusUpdate, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_RelayStatusUpdate, + rustArcDecrementStrongCountPtr: RustLib + .instance + .api + .rust_arc_decrement_strong_count_RelayStatusUpdatePtr, + ); + + RelayAddress get relayAddress => RustLib.instance.api + .zoeClientClientRelayStatusUpdateAutoAccessorGetRelayAddress(that: this); + + KeyId get relayId => RustLib.instance.api + .zoeClientClientRelayStatusUpdateAutoAccessorGetRelayId(that: this); + + RelayConnectionStatus get status => RustLib.instance.api + .zoeClientClientRelayStatusUpdateAutoAccessorGetStatus(that: this); + + set relayAddress(RelayAddress relayAddress) => RustLib.instance.api + .zoeClientClientRelayStatusUpdateAutoAccessorSetRelayAddress( + that: this, + relayAddress: relayAddress, + ); + + set relayId(KeyId relayId) => RustLib.instance.api + .zoeClientClientRelayStatusUpdateAutoAccessorSetRelayId( + that: this, + relayId: relayId, + ); + + set status(RelayConnectionStatus status) => RustLib.instance.api + .zoeClientClientRelayStatusUpdateAutoAccessorSetStatus( + that: this, + status: status, + ); +} + @sealed class SignatureImpl extends RustOpaque implements Signature { // Not to be used by end users @@ -3727,7 +5987,7 @@ class SignatureImpl extends RustOpaque implements Signature { Future encode() => RustLib.instance.api.zoeWireProtocolKeysSignatureEncode(that: this); - Future id() => + Future id() => RustLib.instance.api.zoeWireProtocolKeysSignatureId(that: this); } @@ -3795,6 +6055,30 @@ class VerifyErrorImpl extends RustOpaque implements VerifyError { ); } +@sealed +class VerifyingKeyErrorImpl extends RustOpaque implements VerifyingKeyError { + // Not to be used by end users + VerifyingKeyErrorImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + VerifyingKeyErrorImpl.frbInternalSseDecode( + BigInt ptr, + int externalSizeOnNative, + ) : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_VerifyingKeyError, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_VerifyingKeyError, + rustArcDecrementStrongCountPtr: RustLib + .instance + .api + .rust_arc_decrement_strong_count_VerifyingKeyErrorPtr, + ); +} + @sealed class VerifyingKeyImpl extends RustOpaque implements VerifyingKey { // Not to be used by end users @@ -3851,13 +6135,38 @@ class VerifyingKeyImpl extends RustOpaque implements VerifyingKey { RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyEncode(that: this); /// flutter_rust_bridge:opaque - Future id() => + Future id() => RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyId(that: this); /// flutter_rust_bridge:opaque Future toBytes() => RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyToBytes(that: this); + /// Export the VerifyingKey to PEM format. + /// + /// This method serializes the key using postcard format and then encodes it + /// as a PEM block with the label "ZOE PUBLIC KEY". This provides a standardized + /// text format that's compatible with many cryptographic tools and libraries. + /// + /// # Returns + /// + /// A `Result` containing the PEM-encoded key or an error. + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::{KeyPair, VerifyingKey}; + /// use rand::rngs::OsRng; + /// + /// let keypair = KeyPair::generate_ed25519(&mut OsRng); + /// let verifying_key = keypair.public_key(); + /// let pem_string = verifying_key.to_pem().unwrap(); + /// println!("Public key PEM:\n{}", pem_string); + /// ``` + /// flutter_rust_bridge:opaque + Future toPem() => + RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyToPem(that: this); + /// Verify a signature against a message using the appropriate algorithm. /// /// This method automatically matches the signature type with the key type diff --git a/packages/zoe_native/lib/src/rust/frb_generated.io.dart b/packages/zoe_native/lib/src/rust/frb_generated.io.dart index e7f194b2..904ad3fc 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.io.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.io.dart @@ -11,9 +11,11 @@ import 'frb_generated.dart'; import 'lib.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; import 'third_party/zoe_client/client.dart'; +import 'third_party/zoe_client/client/api/file_storage.dart'; import 'third_party/zoe_client/frb_api.dart'; import 'third_party/zoe_client/util.dart'; import 'third_party/zoe_wire_protocol/keys.dart'; +import 'third_party/zoe_wire_protocol/primitives.dart'; abstract class RustLibApiImplPlatform extends BaseApiImpl { RustLibApiImplPlatform({ @@ -39,6 +41,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_FileRefPtr => wire ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeyIdPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyIdPtr; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeyPairPtr => wire ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPairPtr; @@ -51,6 +56,26 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_PathBufPtr => wire ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr; + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayAddressPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddressPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayConnectionInfoPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfoPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayConnectionStatusPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatusPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayInfoPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfoPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayStatusUpdatePtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdatePtr; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SignaturePtr => wire ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignaturePtr; @@ -71,6 +96,10 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_VerifyingKeyPtr => wire ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr; + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_VerifyingKeyErrorPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyErrorPtr; + @protected AnyhowException dco_decode_AnyhowException(dynamic raw); @@ -98,6 +127,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + KeyId + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + dynamic raw, + ); + @protected KeyPair dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -116,6 +151,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RelayAddress + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + dynamic raw, + ); + + @protected + RelayConnectionInfo + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + + @protected + RelayConnectionStatus + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + dynamic raw, + ); + + @protected + RelayInfo + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ); + + @protected + RelayStatusUpdate + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ); + @protected Signature dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -146,12 +211,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + VerifyingKeyError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + dynamic raw, + ); + @protected ClientBuilder dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( dynamic raw, ); + @protected + RelayConnectionInfo + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + + @protected + RelayInfo + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ); + + @protected + RelayStatusUpdate + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ); + @protected Client dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( @@ -176,6 +265,24 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RelayConnectionInfo + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + + @protected + RelayInfo + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ); + + @protected + RelayStatusUpdate + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ); + @protected Signature dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -224,6 +331,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + KeyId + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + dynamic raw, + ); + @protected KeyPair dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -242,6 +355,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RelayAddress + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + dynamic raw, + ); + + @protected + RelayConnectionInfo + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + + @protected + RelayConnectionStatus + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + dynamic raw, + ); + + @protected + RelayInfo + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ); + + @protected + RelayStatusUpdate + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ); + @protected Signature dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -272,6 +415,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + VerifyingKeyError + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + dynamic raw, + ); + @protected String dco_decode_String(dynamic raw); @@ -284,6 +433,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int dco_decode_i_32(dynamic raw); + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + dynamic raw, + ); + + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + @protected List dco_decode_list_prim_u_8_loose(dynamic raw); @@ -293,6 +454,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected String? dco_decode_opt_String(dynamic raw); + @protected + OverallConnectionStatus dco_decode_overall_connection_status(dynamic raw); + @protected int dco_decode_u_16(dynamic raw); @@ -335,6 +499,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + KeyId + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + SseDeserializer deserializer, + ); + @protected KeyPair sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -353,6 +523,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RelayAddress + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + SseDeserializer deserializer, + ); + + @protected + RelayConnectionInfo + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + + @protected + RelayConnectionStatus + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + SseDeserializer deserializer, + ); + + @protected + RelayInfo + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ); + + @protected + RelayStatusUpdate + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ); + @protected Signature sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -383,12 +583,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + VerifyingKeyError + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + SseDeserializer deserializer, + ); + @protected ClientBuilder sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( SseDeserializer deserializer, ); + @protected + RelayConnectionInfo + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + + @protected + RelayInfo + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ); + + @protected + RelayStatusUpdate + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ); + @protected Client sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( @@ -413,6 +637,24 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RelayConnectionInfo + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + + @protected + RelayInfo + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ); + + @protected + RelayStatusUpdate + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ); + @protected Signature sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -461,6 +703,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + KeyId + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + SseDeserializer deserializer, + ); + @protected KeyPair sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -479,6 +727,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RelayAddress + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + SseDeserializer deserializer, + ); + + @protected + RelayConnectionInfo + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + + @protected + RelayConnectionStatus + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + SseDeserializer deserializer, + ); + + @protected + RelayInfo + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ); + + @protected + RelayStatusUpdate + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ); + @protected Signature sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -509,6 +787,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + VerifyingKeyError + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + SseDeserializer deserializer, + ); + @protected String sse_decode_String(SseDeserializer deserializer); @@ -521,6 +805,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int sse_decode_i_32(SseDeserializer deserializer); + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + SseDeserializer deserializer, + ); + + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + @protected List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); @@ -530,6 +826,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected String? sse_decode_opt_String(SseDeserializer deserializer); + @protected + OverallConnectionStatus sse_decode_overall_connection_status( + SseDeserializer deserializer, + ); + @protected int sse_decode_u_16(SseDeserializer deserializer); @@ -579,6 +880,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + KeyId self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -600,6 +908,41 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + RelayAddress self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + RelayConnectionStatus self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -635,6 +978,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + VerifyingKeyError self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( @@ -642,6 +992,27 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( @@ -670,6 +1041,27 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -726,6 +1118,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + KeyId self, + SseSerializer serializer, + ); + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -747,6 +1146,41 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + RelayAddress self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + RelayConnectionStatus self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ); + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -782,6 +1216,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + VerifyingKeyError self, + SseSerializer serializer, + ); + @protected void sse_encode_String(String self, SseSerializer serializer); @@ -794,6 +1235,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_i_32(int self, SseSerializer serializer); + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + List self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + List self, + SseSerializer serializer, + ); + @protected void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); @@ -806,6 +1261,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_opt_String(String? self, SseSerializer serializer); + @protected + void sse_encode_overall_connection_status( + OverallConnectionStatus self, + SseSerializer serializer, + ); + @protected void sse_encode_u_16(int self, SseSerializer serializer); @@ -972,6 +1433,40 @@ class RustLibWire implements BaseWire { _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRefPtr .asFunction)>(); + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyIdPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyIdPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyIdPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyIdPtr + .asFunction)>(); + void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( ffi.Pointer ptr, @@ -1074,6 +1569,176 @@ class RustLibWire implements BaseWire { _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBufPtr .asFunction)>(); + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddressPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddressPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddressPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddressPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfoPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfoPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfoPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfoPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatusPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatusPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatusPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatusPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfoPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfoPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfoPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfoPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdatePtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdatePtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdatePtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdatePtr + .asFunction)>(); + void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( ffi.Pointer ptr, @@ -1243,4 +1908,38 @@ class RustLibWire implements BaseWire { late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey = _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyPtr .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyErrorPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyErrorPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyErrorPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyErrorPtr + .asFunction)>(); } diff --git a/packages/zoe_native/lib/src/rust/frb_generated.web.dart b/packages/zoe_native/lib/src/rust/frb_generated.web.dart index 9ff2888d..d50cdc7b 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.web.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.web.dart @@ -13,9 +13,11 @@ import 'frb_generated.dart'; import 'lib.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; import 'third_party/zoe_client/client.dart'; +import 'third_party/zoe_client/client/api/file_storage.dart'; import 'third_party/zoe_client/frb_api.dart'; import 'third_party/zoe_client/util.dart'; import 'third_party/zoe_wire_protocol/keys.dart'; +import 'third_party/zoe_wire_protocol/primitives.dart'; abstract class RustLibApiImplPlatform extends BaseApiImpl { RustLibApiImplPlatform({ @@ -41,6 +43,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_FileRefPtr => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFileRef; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeyIdPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeyPairPtr => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair; @@ -53,6 +58,26 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_PathBufPtr => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerPathBuf; + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayAddressPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayConnectionInfoPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayConnectionStatusPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayInfoPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_RelayStatusUpdatePtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SignaturePtr => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature; @@ -73,6 +98,10 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_VerifyingKeyPtr => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey; + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_VerifyingKeyErrorPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError; + @protected AnyhowException dco_decode_AnyhowException(dynamic raw); @@ -100,6 +129,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + KeyId + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + dynamic raw, + ); + @protected KeyPair dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -118,6 +153,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RelayAddress + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + dynamic raw, + ); + + @protected + RelayConnectionInfo + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + + @protected + RelayConnectionStatus + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + dynamic raw, + ); + + @protected + RelayInfo + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ); + + @protected + RelayStatusUpdate + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ); + @protected Signature dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -148,12 +213,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + VerifyingKeyError + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + dynamic raw, + ); + @protected ClientBuilder dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( dynamic raw, ); + @protected + RelayConnectionInfo + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + + @protected + RelayInfo + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ); + + @protected + RelayStatusUpdate + dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ); + @protected Client dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( @@ -178,6 +267,24 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RelayConnectionInfo + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + + @protected + RelayInfo + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ); + + @protected + RelayStatusUpdate + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ); + @protected Signature dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -226,6 +333,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + KeyId + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + dynamic raw, + ); + @protected KeyPair dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -244,6 +357,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RelayAddress + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + dynamic raw, + ); + + @protected + RelayConnectionInfo + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + + @protected + RelayConnectionStatus + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + dynamic raw, + ); + + @protected + RelayInfo + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + dynamic raw, + ); + + @protected + RelayStatusUpdate + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + dynamic raw, + ); + @protected Signature dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -274,6 +417,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + VerifyingKeyError + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + dynamic raw, + ); + @protected String dco_decode_String(dynamic raw); @@ -286,6 +435,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int dco_decode_i_32(dynamic raw); + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + dynamic raw, + ); + + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + dynamic raw, + ); + @protected List dco_decode_list_prim_u_8_loose(dynamic raw); @@ -295,6 +456,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected String? dco_decode_opt_String(dynamic raw); + @protected + OverallConnectionStatus dco_decode_overall_connection_status(dynamic raw); + @protected int dco_decode_u_16(dynamic raw); @@ -337,6 +501,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + KeyId + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + SseDeserializer deserializer, + ); + @protected KeyPair sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -355,6 +525,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RelayAddress + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + SseDeserializer deserializer, + ); + + @protected + RelayConnectionInfo + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + + @protected + RelayConnectionStatus + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + SseDeserializer deserializer, + ); + + @protected + RelayInfo + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ); + + @protected + RelayStatusUpdate + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ); + @protected Signature sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -385,12 +585,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + VerifyingKeyError + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + SseDeserializer deserializer, + ); + @protected ClientBuilder sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( SseDeserializer deserializer, ); + @protected + RelayConnectionInfo + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + + @protected + RelayInfo + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ); + + @protected + RelayStatusUpdate + sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ); + @protected Client sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( @@ -415,6 +639,24 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RelayConnectionInfo + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + + @protected + RelayInfo + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ); + + @protected + RelayStatusUpdate + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ); + @protected Signature sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -463,6 +705,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + KeyId + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + SseDeserializer deserializer, + ); + @protected KeyPair sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -481,6 +729,36 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RelayAddress + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + SseDeserializer deserializer, + ); + + @protected + RelayConnectionInfo + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + + @protected + RelayConnectionStatus + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + SseDeserializer deserializer, + ); + + @protected + RelayInfo + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + SseDeserializer deserializer, + ); + + @protected + RelayStatusUpdate + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + SseDeserializer deserializer, + ); + @protected Signature sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -511,6 +789,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + VerifyingKeyError + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + SseDeserializer deserializer, + ); + @protected String sse_decode_String(SseDeserializer deserializer); @@ -523,6 +807,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected int sse_decode_i_32(SseDeserializer deserializer); + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + SseDeserializer deserializer, + ); + + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + SseDeserializer deserializer, + ); + @protected List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); @@ -532,6 +828,11 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected String? sse_decode_opt_String(SseDeserializer deserializer); + @protected + OverallConnectionStatus sse_decode_overall_connection_status( + SseDeserializer deserializer, + ); + @protected int sse_decode_u_16(SseDeserializer deserializer); @@ -581,6 +882,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + KeyId self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -602,6 +910,41 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + RelayAddress self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + RelayConnectionStatus self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -637,6 +980,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + VerifyingKeyError self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder( @@ -644,6 +994,27 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( @@ -672,6 +1043,27 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -728,6 +1120,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + KeyId self, + SseSerializer serializer, + ); + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( @@ -749,6 +1148,41 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + RelayAddress self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + RelayConnectionInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + RelayConnectionStatus self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + RelayInfo self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + RelayStatusUpdate self, + SseSerializer serializer, + ); + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( @@ -784,6 +1218,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + VerifyingKeyError self, + SseSerializer serializer, + ); + @protected void sse_encode_String(String self, SseSerializer serializer); @@ -796,6 +1237,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_i_32(int self, SseSerializer serializer); + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + List self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + List self, + SseSerializer serializer, + ); + @protected void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); @@ -808,6 +1263,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected void sse_encode_opt_String(String? self, SseSerializer serializer); + @protected + void sse_encode_overall_connection_status( + OverallConnectionStatus self, + SseSerializer serializer, + ); + @protected void sse_encode_u_16(int self, SseSerializer serializer); @@ -893,6 +1354,22 @@ class RustLibWire implements BaseWire { ptr, ); + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + ptr, + ); + void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( int ptr, @@ -941,6 +1418,86 @@ class RustLibWire implements BaseWire { ptr, ); + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + ptr, + ); + void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( int ptr, @@ -1020,6 +1577,22 @@ class RustLibWire implements BaseWire { .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( ptr, ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + ptr, + ); } @JS('wasm_bindgen') @@ -1068,6 +1641,16 @@ extension type RustLibWasmModule._(JSObject _) implements JSObject { int ptr, ); + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + int ptr, + ); + external void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( int ptr, @@ -1098,6 +1681,56 @@ extension type RustLibWasmModule._(JSObject _) implements JSObject { int ptr, ); + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + int ptr, + ); + external void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( int ptr, @@ -1147,4 +1780,14 @@ extension type RustLibWasmModule._(JSObject _) implements JSObject { rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( int ptr, ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + int ptr, + ); } diff --git a/packages/zoe_native/lib/src/rust/lib.dart b/packages/zoe_native/lib/src/rust/lib.dart index 2ff6b29d..8eed8955 100644 --- a/packages/zoe_native/lib/src/rust/lib.dart +++ b/packages/zoe_native/lib/src/rust/lib.dart @@ -7,6 +7,9 @@ import 'frb_generated.dart'; import 'package:collection/collection.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; +// Rust type: RustOpaqueMoi> +abstract class RelayAddress implements RustOpaqueInterface {} + // Rust type: RustOpaqueMoi> abstract class SocketAddr implements RustOpaqueInterface {} diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart index 9401e412..eb7b6d65 100644 --- a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart @@ -6,21 +6,38 @@ import '../../frb_generated.dart'; import '../../lib.dart'; import '../zoe_wire_protocol/keys.dart'; +import '../zoe_wire_protocol/primitives.dart'; +import 'client/api/file_storage.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): `clone` -// These functions are ignored (category: IgnoreBecauseExplicitAttribute): `blob_client`, `db_storage_dir_pathbuf`, `inner_keypair`, `media_storage_dir_pathbuf` // Rust type: RustOpaqueMoi> abstract class Client implements RustOpaqueInterface { + /// Add a relay server to the client + /// + /// This will attempt to connect to all addresses in the RelayAddress in random order + /// with a 10-second timeout per attempt. Only adds the relay to local state if a + /// connection succeeds. + Future addRelay({required RelayAddress address}); + /// Create a new ClientBuilder for constructing a Client static Future builder() => RustLib.instance.api.zoeClientClientClientBuilder(); + /// Get the current client secret + Future clientSecret(); + Future clientSecretHex(); Future close(); + /// Get list of all configured relays with their connection status + Future> getRelayStatus(); + + /// Check if any relays are currently connected + Future hasConnectedRelays(); + /// Check if a file exists in storage /// /// # Arguments @@ -34,6 +51,19 @@ abstract class Client implements RustOpaqueInterface { Future idHex(); + /// Calculate the current overall connection status + /// + /// This is computed from the current relay states, ensuring it's always accurate but makes it + /// a bit more expensive to compute. For live updates it is recommended to use `overall_status_stream` + /// instead. + Future overallStatus(); + + /// Attempt to reconnect to all failed relays + Future reconnectFailedRelays(); + + /// Remove a relay connection (offline mode only) + Future removeRelay({required VerifyingKey serverPublicKey}); + /// Retrieve a file from storage and save it to disk /// /// This method: @@ -125,6 +155,14 @@ abstract class Client implements RustOpaqueInterface { // Rust type: RustOpaqueMoi> abstract class ClientBuilder implements RustOpaqueInterface { + /// Enable or disable automatic connection to server during build + /// + /// When autoconnect is true (default for backward compatibility), the client + /// will require server information and connect immediately during build(). + /// When autoconnect is false, the client starts in offline mode and can + /// connect to relays later using add_relay(). + Future autoconnect({required bool autoconnect}); + Future build(); Future clientSecret({required ClientSecret secret}); @@ -144,6 +182,8 @@ abstract class ClientBuilder implements RustOpaqueInterface { required VerifyingKey serverPublicKey, required SocketAddr serverAddr, }); + + Future servers({required List servers}); } // Rust type: RustOpaqueMoi> @@ -151,11 +191,79 @@ abstract class ClientSecret implements RustOpaqueInterface { static Future fromHex({required String hex}) => RustLib.instance.api.zoeClientClientClientSecretFromHex(hex: hex); + /// Get the list of configured servers + Future servers(); + Future toHex(); } -// Rust type: RustOpaqueMoi> -abstract class FileRef implements RustOpaqueInterface {} +// Rust type: RustOpaqueMoi> +abstract class RelayConnectionInfo implements RustOpaqueInterface { + RelayInfo get info; + + RelayConnectionStatus get status; + + set info(RelayInfo info); + + set status(RelayConnectionStatus status); +} + +// Rust type: RustOpaqueMoi> +abstract class RelayConnectionStatus implements RustOpaqueInterface {} + +// Rust type: RustOpaqueMoi> +abstract class RelayInfo implements RustOpaqueInterface { + RelayAddress get relayAddress; -// Rust type: RustOpaqueMoi> -abstract class PathBuf implements RustOpaqueInterface {} + KeyId get relayId; + + set relayAddress(RelayAddress relayAddress); + + set relayId(KeyId relayId); +} + +// Rust type: RustOpaqueMoi> +abstract class RelayStatusUpdate implements RustOpaqueInterface { + RelayAddress get relayAddress; + + KeyId get relayId; + + RelayConnectionStatus get status; + + set relayAddress(RelayAddress relayAddress); + + set relayId(KeyId relayId); + + set status(RelayConnectionStatus status); +} + +/// Overall connection status for the client +class OverallConnectionStatus { + /// True if connected to at least one relay + final bool isConnected; + + /// Number of connected relays + final BigInt connectedCount; + + /// Total number of configured relays + final BigInt totalCount; + + const OverallConnectionStatus({ + required this.isConnected, + required this.connectedCount, + required this.totalCount, + }); + + @override + int get hashCode => + isConnected.hashCode ^ connectedCount.hashCode ^ totalCount.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is OverallConnectionStatus && + runtimeType == other.runtimeType && + isConnected == other.isConnected && + connectedCount == other.connectedCount && + totalCount == other.totalCount; +} diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/file_storage.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/file_storage.dart new file mode 100644 index 00000000..dc66b948 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/file_storage.dart @@ -0,0 +1,13 @@ +// 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'; + +// Rust type: RustOpaqueMoi> +abstract class FileRef implements RustOpaqueInterface {} + +// Rust type: RustOpaqueMoi> +abstract class PathBuf implements RustOpaqueInterface {} diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/relay.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/relay.dart new file mode 100644 index 00000000..98ded296 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/relay.dart @@ -0,0 +1,12 @@ +// 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'; + +// These functions have error during generation (see debug logs or enable `stop_on_error: true` for more details): `overall_status_stream` + +// Rust type: RustOpaqueMoi>> +abstract class ReceiverRelayStatusUpdate implements RustOpaqueInterface {} diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/secret.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/secret.dart new file mode 100644 index 00000000..650ba3d1 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/secret.dart @@ -0,0 +1,10 @@ +// 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'; + +// Rust type: RustOpaqueMoi>> +abstract class SubscriberClientSecret implements RustOpaqueInterface {} diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/keys.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/keys.dart index c9d56285..1c2ed0f0 100644 --- a/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/keys.dart +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/keys.dart @@ -5,9 +5,10 @@ import '../../frb_generated.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; +import 'primitives.dart'; // These functions are ignored because they have generic arguments: `generate_ed25519`, `generate_for_algorithm`, `generate_ml_dsa44`, `generate_ml_dsa65`, `generate_ml_dsa87`, `generate` -// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `clone`, `clone`, `clone`, `clone`, `cmp`, `eq`, `eq`, `eq`, `eq`, `eq`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `hash`, `partial_cmp`, `partial_cmp`, `source`, `try_from` +// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `clone`, `clone`, `clone`, `clone`, `cmp`, `eq`, `eq`, `eq`, `eq`, `eq`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `fmt`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `from`, `hash`, `partial_cmp`, `partial_cmp`, `source`, `try_from` // Rust type: RustOpaqueMoi> abstract class KeyPair implements RustOpaqueInterface { @@ -45,7 +46,7 @@ abstract class KeyPair implements RustOpaqueInterface { .api .zoeWireProtocolKeysKeyPairFromPem(pemString: pemString); - Future id(); + Future id(); Future publicKey(); @@ -86,7 +87,7 @@ abstract class Signature implements RustOpaqueInterface { /// Encode the Signature to bytes for serialization Future encode(); - Future id(); + Future id(); } // Rust type: RustOpaqueMoi> @@ -138,12 +139,68 @@ abstract class VerifyingKey implements RustOpaqueInterface { static Future fromHex({required String hex}) => RustLib.instance.api.zoeWireProtocolKeysVerifyingKeyFromHex(hex: hex); + /// Import a VerifyingKey from PEM format. + /// + /// This method parses a PEM-encoded string and deserializes it back to a + /// `VerifyingKey`. The PEM block should have the label "ZOE PUBLIC KEY". + /// + /// # Arguments + /// + /// * `pem_string` - A string containing the PEM-encoded public key + /// + /// # Returns + /// + /// A `Result` containing the decoded key or an error. + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::{KeyPair, VerifyingKey}; + /// use rand::rngs::OsRng; + /// + /// let original_keypair = KeyPair::generate_ed25519(&mut OsRng); + /// let original_key = original_keypair.public_key(); + /// let pem_string = original_key.to_pem().unwrap(); + /// + /// let restored_key = VerifyingKey::from_pem(&pem_string).unwrap(); + /// assert_eq!(original_key.encode(), restored_key.encode()); + /// ``` + /// flutter_rust_bridge:opaque + static Future fromPem({required String pemString}) => RustLib + .instance + .api + .zoeWireProtocolKeysVerifyingKeyFromPem(pemString: pemString); + /// flutter_rust_bridge:opaque - Future id(); + Future id(); /// flutter_rust_bridge:opaque Future toBytes(); + /// Export the VerifyingKey to PEM format. + /// + /// This method serializes the key using postcard format and then encodes it + /// as a PEM block with the label "ZOE PUBLIC KEY". This provides a standardized + /// text format that's compatible with many cryptographic tools and libraries. + /// + /// # Returns + /// + /// A `Result` containing the PEM-encoded key or an error. + /// + /// # Examples + /// + /// ```rust + /// use zoe_wire_protocol::{KeyPair, VerifyingKey}; + /// use rand::rngs::OsRng; + /// + /// let keypair = KeyPair::generate_ed25519(&mut OsRng); + /// let verifying_key = keypair.public_key(); + /// let pem_string = verifying_key.to_pem().unwrap(); + /// println!("Public key PEM:\n{}", pem_string); + /// ``` + /// flutter_rust_bridge:opaque + Future toPem(); + /// Verify a signature against a message using the appropriate algorithm. /// /// This method automatically matches the signature type with the key type @@ -184,6 +241,9 @@ abstract class VerifyingKey implements RustOpaqueInterface { }); } +// Rust type: RustOpaqueMoi> +abstract class VerifyingKeyError implements RustOpaqueInterface {} + /// Cryptographic algorithm identifier enum Algorithm { /// Ed25519 elliptic curve signatures diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/primitives.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/primitives.dart new file mode 100644 index 00000000..b2efa863 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_wire_protocol/primitives.dart @@ -0,0 +1,10 @@ +// 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'; + +// Rust type: RustOpaqueMoi> +abstract class KeyId implements RustOpaqueInterface {} diff --git a/packages/zoe_native/lib/zoe_native.dart b/packages/zoe_native/lib/zoe_native.dart index c5b3140d..bc310461 100644 --- a/packages/zoe_native/lib/zoe_native.dart +++ b/packages/zoe_native/lib/zoe_native.dart @@ -6,4 +6,4 @@ export 'src/rust/third_party/zoe_client/frb_api.dart'; export 'src/rust/third_party/zoe_wire_protocol/keys.dart'; export 'src/rust/third_party/zoe_client/util.dart'; export 'src/support.dart'; -export 'src/rust/frb_generated.dart' show RustLib; +export 'src/rust/frb_generated.dart'; diff --git a/packages/zoe_native/pubspec.yaml b/packages/zoe_native/pubspec.yaml index 23f8dabf..07573c9f 100644 --- a/packages/zoe_native/pubspec.yaml +++ b/packages/zoe_native/pubspec.yaml @@ -22,6 +22,8 @@ dependencies: dev_dependencies: ffi: ^2.1.3 ffigen: ^13.0.0 + mocktail: ^1.0.4 + test: ^1.26.0 flutter_test: sdk: flutter flutter_lints: ^5.0.0 diff --git a/packages/zoe_native/rust/Cargo.toml b/packages/zoe_native/rust/Cargo.toml index fd41a6b1..60d73561 100644 --- a/packages/zoe_native/rust/Cargo.toml +++ b/packages/zoe_native/rust/Cargo.toml @@ -8,17 +8,9 @@ crate-type = ["cdylib", "staticlib"] [dependencies] flutter_rust_bridge = "=2.11.1" - -[dependencies.zoe-client] -# path = "../../../../zoe-relay/crates/client" -features = ["frb-api"] -git = "https://github.com/acterglobal/zoe-relay.git" -branch = "main" - -[dependencies.zoe-wire-protocol] -# path = "../../../../zoe-relay/crates/wire-protocol" -git = "https://github.com/acterglobal/zoe-relay.git" -branch = "main" +zoe-client = { workspace = true, features = ["frb-api"] } +zoe-wire-protocol = { workspace = true } +zoe-app-primitives = { workspace = true } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] } diff --git a/packages/zoe_native/rust/src/frb_generated.rs b/packages/zoe_native/rust/src/frb_generated.rs index 3ee75839..f214f77b 100644 --- a/packages/zoe_native/rust/src/frb_generated.rs +++ b/packages/zoe_native/rust/src/frb_generated.rs @@ -29,12 +29,15 @@ use crate::*; 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}; +use zoe_client::client::api::file_storage::*; use zoe_client::client::*; use zoe_wire_protocol::keys::*; +use zoe_wire_protocol::primitives::*; // Section: boilerplate use std::{error::Error, net::SocketAddr, path::PathBuf}; +use zoe_app_primitives::connection::RelayAddress; use zoe_client::FileRef; use zoe_wire_protocol::keys::{KeyPair, Signature, SigningKey, VerifyingKey}; @@ -44,7 +47,7 @@ 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 = -929701453; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -640084549; // Section: executor @@ -52,6 +55,61 @@ flutter_rust_bridge::frb_generated_default_handler!(); // Section: wire_funcs +fn wire__zoe_client__client__ClientBuilder_autoconnect_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: "ClientBuilder_autoconnect", + 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_autoconnect = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + zoe_client::client::ClientBuilder::autoconnect( + &mut *api_that_guard, + api_autoconnect, + ); + })?; + Ok(output_ok) + })()) + } + }, + ) +} fn wire__zoe_client__client__ClientBuilder_build_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -398,7 +456,7 @@ fn wire__zoe_client__client__ClientBuilder_server_info_impl( }, ) } -fn wire__zoe_client__client__ClientSecret_from_hex_impl( +fn wire__zoe_client__client__ClientBuilder_servers_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -406,7 +464,7 @@ fn wire__zoe_client__client__ClientSecret_from_hex_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "ClientSecret_from_hex", + debug_name: "ClientBuilder_servers", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -420,20 +478,40 @@ fn wire__zoe_client__client__ClientSecret_from_hex_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_hex = ::sse_decode(&mut deserializer); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_servers = >::sse_decode(&mut deserializer); deserializer.end(); move |context| { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || { - let output_ok = zoe_client::client::ClientSecret::from_hex(&api_hex)?; - Ok(output_ok) - })(), - ) + 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({ + zoe_client::client::ClientBuilder::servers( + &mut *api_that_guard, + api_servers, + ); + })?; + Ok(output_ok) + })()) } }, ) } -fn wire__zoe_client__client__ClientSecret_to_hex_impl( +fn wire__zoe_client__client__ClientSecret_from_hex_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -441,7 +519,7 @@ fn wire__zoe_client__client__ClientSecret_to_hex_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "ClientSecret_to_hex", + debug_name: "ClientSecret_from_hex", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -455,28 +533,12 @@ fn wire__zoe_client__client__ClientSecret_to_hex_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); + let api_hex = ::sse_decode(&mut deserializer); deserializer.end(); move |context| { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::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 = zoe_client::client::ClientSecret::to_hex(&*api_that_guard)?; + let output_ok = zoe_client::client::ClientSecret::from_hex(&api_hex)?; Ok(output_ok) })(), ) @@ -484,7 +546,7 @@ fn wire__zoe_client__client__ClientSecret_to_hex_impl( }, ) } -fn wire__zoe_client__client__Client_builder_impl( +fn wire__zoe_client__client__ClientSecret_servers_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -492,7 +554,7 @@ fn wire__zoe_client__client__Client_builder_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Client_builder", + debug_name: "ClientSecret_servers", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -506,17 +568,36 @@ fn wire__zoe_client__client__Client_builder_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); deserializer.end(); move |context| { transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok(zoe_client::client::Client::builder())?; + 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({ + zoe_client::client::ClientSecret::servers(&*api_that_guard); + })?; Ok(output_ok) })()) } }, ) } -fn wire__zoe_client__client__Client_client_secret_hex_impl( +fn wire__zoe_client__client__ClientSecret_to_hex_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -524,7 +605,7 @@ fn wire__zoe_client__client__Client_client_secret_hex_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Client_client_secret_hex", + debug_name: "ClientSecret_to_hex", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -539,7 +620,7 @@ fn wire__zoe_client__client__Client_client_secret_hex_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); deserializer.end(); move |context| { @@ -559,8 +640,7 @@ fn wire__zoe_client__client__Client_client_secret_hex_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = - zoe_client::client::Client::client_secret_hex(&*api_that_guard)?; + let output_ok = zoe_client::client::ClientSecret::to_hex(&*api_that_guard)?; Ok(output_ok) })(), ) @@ -568,7 +648,7 @@ fn wire__zoe_client__client__Client_client_secret_hex_impl( }, ) } -fn wire__zoe_client__client__Client_close_impl( +fn wire__zoe_client__client__Client_add_relay_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -576,7 +656,7 @@ fn wire__zoe_client__client__Client_close_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Client_close", + debug_name: "Client_add_relay", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -593,9 +673,10 @@ fn wire__zoe_client__client__Client_close_impl( let api_that = , >>::sse_decode(&mut deserializer); + let api_address = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, ()>( + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -614,9 +695,9 @@ fn wire__zoe_client__client__Client_close_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - zoe_client::client::Client::close(&*api_that_guard).await; - })?; + let output_ok = + zoe_client::client::Client::add_relay(&*api_that_guard, api_address) + .await?; Ok(output_ok) })() .await, @@ -625,15 +706,15 @@ fn wire__zoe_client__client__Client_close_impl( }, ) } -fn wire__zoe_client__client__Client_has_file_impl( +fn wire__zoe_client__client__Client_builder_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Client_has_file", + debug_name: "Client_builder", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -647,60 +728,17 @@ fn wire__zoe_client__client__Client_has_file_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_stored_info = , - >>::sse_decode(&mut deserializer); deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let mut api_that_guard = None; - let mut api_stored_info_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_stored_info, - 1, - false, - ), - ], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - } - 1 => { - api_stored_info_guard = - Some(api_stored_info.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let api_stored_info_guard = api_stored_info_guard.unwrap(); - let output_ok = zoe_client::client::Client::has_file( - &*api_that_guard, - &*api_stored_info_guard, - ) - .await?; - Ok(output_ok) - })() - .await, - ) + move |context| { + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_, ()>::Ok(zoe_client::client::Client::builder())?; + Ok(output_ok) + })()) } }, ) } -fn wire__zoe_client__client__Client_id_hex_impl( +fn wire__zoe_client__client__Client_client_secret_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -708,7 +746,7 @@ fn wire__zoe_client__client__Client_id_hex_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Client_id_hex", + debug_name: "Client_client_secret", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -742,23 +780,24 @@ fn wire__zoe_client__client__Client_id_hex_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = - Result::<_, ()>::Ok(zoe_client::client::Client::id_hex(&*api_that_guard))?; + let output_ok = Result::<_, ()>::Ok( + zoe_client::client::Client::client_secret(&*api_that_guard), + )?; Ok(output_ok) })()) } }, ) } -fn wire__zoe_client__client__Client_retrieve_file_impl( +fn wire__zoe_client__client__Client_client_secret_hex_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Client_retrieve_file", + debug_name: "Client_client_secret_hex", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -775,59 +814,34 @@ fn wire__zoe_client__client__Client_retrieve_file_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_file_ref = , - >>::sse_decode(&mut deserializer); - let api_output_path = ::sse_decode(&mut deserializer); deserializer.end(); - move |context| async move { + move |context| { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { + (move || { let mut api_that_guard = None; - let mut api_file_ref_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_file_ref, - 1, - false, - ), - ], + 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) - } - 1 => { - api_file_ref_guard = - Some(api_file_ref.lockable_decode_async_ref().await) - } + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_file_ref_guard = api_file_ref_guard.unwrap(); - let output_ok = zoe_client::client::Client::retrieve_file( - &*api_that_guard, - &*api_file_ref_guard, - api_output_path, - ) - .await?; + let output_ok = + zoe_client::client::Client::client_secret_hex(&*api_that_guard)?; Ok(output_ok) - })() - .await, + })(), ) } }, ) } -fn wire__zoe_client__client__Client_retrieve_file_bytes_impl( +fn wire__zoe_client__client__Client_close_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -835,7 +849,7 @@ fn wire__zoe_client__client__Client_retrieve_file_bytes_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Client_retrieve_file_bytes", + debug_name: "Client_close", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -852,27 +866,16 @@ fn wire__zoe_client__client__Client_retrieve_file_bytes_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_file_ref = , - >>::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; - let mut api_file_ref_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_file_ref, - 1, - false, - ), - ], + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], ); for i in decode_indices_ { match i { @@ -880,20 +883,13 @@ fn wire__zoe_client__client__Client_retrieve_file_bytes_impl( api_that_guard = Some(api_that.lockable_decode_async_ref().await) } - 1 => { - api_file_ref_guard = - Some(api_file_ref.lockable_decode_async_ref().await) - } _ => unreachable!(), } } let api_that_guard = api_that_guard.unwrap(); - let api_file_ref_guard = api_file_ref_guard.unwrap(); - let output_ok = zoe_client::client::Client::retrieve_file_bytes( - &*api_that_guard, - &*api_file_ref_guard, - ) - .await?; + let output_ok = Result::<_, ()>::Ok({ + zoe_client::client::Client::close(&*api_that_guard).await; + })?; Ok(output_ok) })() .await, @@ -902,7 +898,7 @@ fn wire__zoe_client__client__Client_retrieve_file_bytes_impl( }, ) } -fn wire__zoe_client__client__Client_store_data_impl( +fn wire__zoe_client__client__Client_get_relay_status_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -910,7 +906,7 @@ fn wire__zoe_client__client__Client_store_data_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Client_store_data", + debug_name: "Client_get_relay_status", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -927,9 +923,6 @@ fn wire__zoe_client__client__Client_store_data_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_data = >::sse_decode(&mut deserializer); - let api_reference_name = ::sse_decode(&mut deserializer); - let api_content_type = >::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( @@ -951,13 +944,8 @@ fn wire__zoe_client__client__Client_store_data_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = zoe_client::client::Client::store_data( - &*api_that_guard, - &api_data, - &api_reference_name, - api_content_type, - ) - .await?; + let output_ok = + zoe_client::client::Client::get_relay_status(&*api_that_guard).await?; Ok(output_ok) })() .await, @@ -966,7 +954,7 @@ fn wire__zoe_client__client__Client_store_data_impl( }, ) } -fn wire__zoe_client__client__Client_store_file_impl( +fn wire__zoe_client__client__Client_has_connected_relays_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -974,7 +962,7 @@ fn wire__zoe_client__client__Client_store_file_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Client_store_file", + debug_name: "Client_has_connected_relays", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -991,10 +979,9 @@ fn wire__zoe_client__client__Client_store_file_impl( let api_that = , >>::sse_decode(&mut deserializer); - let api_file_path = ::sse_decode(&mut deserializer); deserializer.end(); move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + transform_result_sse::<_, ()>( (move || async move { let mut api_that_guard = None; let decode_indices_ = @@ -1013,9 +1000,10 @@ fn wire__zoe_client__client__Client_store_file_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = - zoe_client::client::Client::store_file(&*api_that_guard, api_file_path) - .await?; + let output_ok = Result::<_, ()>::Ok( + zoe_client::client::Client::has_connected_relays(&*api_that_guard) + .await, + )?; Ok(output_ok) })() .await, @@ -1024,15 +1012,15 @@ fn wire__zoe_client__client__Client_store_file_impl( }, ) } -fn wire__zoe_wire_protocol__keys__KeyPair_algorithm_impl( +fn wire__zoe_client__client__Client_has_file_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "KeyPair_algorithm", + debug_name: "Client_has_file", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -1047,68 +1035,59 @@ fn wire__zoe_wire_protocol__keys__KeyPair_algorithm_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + >>::sse_decode(&mut deserializer); + let api_stored_info = , >>::sse_decode(&mut deserializer); deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let mut api_stored_info_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_stored_info, + 1, + false, + ), + ], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + 1 => { + api_stored_info_guard = + Some(api_stored_info.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - zoe_wire_protocol::keys::KeyPair::algorithm(&*api_that_guard), - )?; - Ok(output_ok) - })()) - } - }, - ) -} -fn wire__zoe_wire_protocol__keys__KeyPair_from_pem_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: "KeyPair_from_pem", - 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 api_that_guard = api_that_guard.unwrap(); + let api_stored_info_guard = api_stored_info_guard.unwrap(); + let output_ok = zoe_client::client::Client::has_file( + &*api_that_guard, + &*api_stored_info_guard, + ) + .await?; + Ok(output_ok) + })() + .await, ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_pem_string = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| { - transform_result_sse::<_, KeyPairError>((move || { - let output_ok = zoe_wire_protocol::keys::KeyPair::from_pem(&api_pem_string)?; - Ok(output_ok) - })()) } }, ) } -fn wire__zoe_wire_protocol__keys__KeyPair_id_impl( +fn wire__zoe_client__client__Client_id_hex_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -1116,7 +1095,7 @@ fn wire__zoe_wire_protocol__keys__KeyPair_id_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "KeyPair_id", + debug_name: "Client_id_hex", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -1131,7 +1110,7 @@ fn wire__zoe_wire_protocol__keys__KeyPair_id_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); deserializer.end(); move |context| { @@ -1150,24 +1129,23 @@ fn wire__zoe_wire_protocol__keys__KeyPair_id_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - zoe_wire_protocol::keys::KeyPair::id(&*api_that_guard); - })?; + let output_ok = + Result::<_, ()>::Ok(zoe_client::client::Client::id_hex(&*api_that_guard))?; Ok(output_ok) })()) } }, ) } -fn wire__zoe_wire_protocol__keys__KeyPair_public_key_impl( +fn wire__zoe_client__client__Client_overall_status_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "KeyPair_public_key", + debug_name: "Client_overall_status", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -1182,43 +1160,49 @@ fn wire__zoe_wire_protocol__keys__KeyPair_public_key_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - zoe_wire_protocol::keys::KeyPair::public_key(&*api_that_guard), - )?; - Ok(output_ok) - })()) + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + zoe_client::client::Client::overall_status(&*api_that_guard).await, + )?; + Ok(output_ok) + })() + .await, + ) } }, ) } -fn wire__zoe_wire_protocol__keys__KeyPair_sign_impl( +fn wire__zoe_client__client__Client_reconnect_failed_relays_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "KeyPair_sign", + debug_name: "Client_reconnect_failed_relays", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -1233,47 +1217,1300 @@ fn wire__zoe_wire_protocol__keys__KeyPair_sign_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); - let api_message = >::sse_decode(&mut deserializer); deserializer.end(); - move |context| { - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, 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(zoe_wire_protocol::keys::KeyPair::sign( - &*api_that_guard, - &api_message, - ))?; - Ok(output_ok) - })()) - } - }, - ) + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = + zoe_client::client::Client::reconnect_failed_relays(&*api_that_guard) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) } -fn wire__zoe_wire_protocol__keys__KeyPair_to_pem_impl( +fn wire__zoe_client__client__Client_remove_relay_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "Client_remove_relay", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + let api_server_public_key = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = zoe_client::client::Client::remove_relay( + &*api_that_guard, + api_server_public_key, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_retrieve_file_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: "Client_retrieve_file", + 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_file_ref = , + >>::sse_decode(&mut deserializer); + let api_output_path = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let mut api_file_ref_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_file_ref, + 1, + false, + ), + ], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + 1 => { + api_file_ref_guard = + Some(api_file_ref.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let api_file_ref_guard = api_file_ref_guard.unwrap(); + let output_ok = zoe_client::client::Client::retrieve_file( + &*api_that_guard, + &*api_file_ref_guard, + api_output_path, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_retrieve_file_bytes_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: "Client_retrieve_file_bytes", + 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_file_ref = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let mut api_file_ref_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + ), + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_file_ref, + 1, + false, + ), + ], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + 1 => { + api_file_ref_guard = + Some(api_file_ref.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let api_file_ref_guard = api_file_ref_guard.unwrap(); + let output_ok = zoe_client::client::Client::retrieve_file_bytes( + &*api_that_guard, + &*api_file_ref_guard, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_store_data_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: "Client_store_data", + 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_data = >::sse_decode(&mut deserializer); + let api_reference_name = ::sse_decode(&mut deserializer); + let api_content_type = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let 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 = zoe_client::client::Client::store_data( + &*api_that_guard, + &api_data, + &api_reference_name, + api_content_type, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__client__Client_store_file_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: "Client_store_file", + 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_file_path = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( + (move || async move { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_that_guard = + Some(api_that.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = + zoe_client::client::Client::store_file(&*api_that_guard, api_file_path) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_algorithm_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: "KeyPair_algorithm", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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( + zoe_wire_protocol::keys::KeyPair::algorithm(&*api_that_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_from_pem_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: "KeyPair_from_pem", + 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_pem_string = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, KeyPairError>((move || { + let output_ok = zoe_wire_protocol::keys::KeyPair::from_pem(&api_pem_string)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_id_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: "KeyPair_id", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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(zoe_wire_protocol::keys::KeyPair::id( + &*api_that_guard, + ))?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_public_key_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: "KeyPair_public_key", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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( + zoe_wire_protocol::keys::KeyPair::public_key(&*api_that_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_sign_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: "KeyPair_sign", + 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_message = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, 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(zoe_wire_protocol::keys::KeyPair::sign( + &*api_that_guard, + &api_message, + ))?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_wire_protocol__keys__KeyPair_to_pem_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: "KeyPair_to_pem", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, KeyPairError>((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 = zoe_wire_protocol::keys::KeyPair::to_pem(&*api_that_guard)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_info_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: "RelayConnectionInfo_auto_accessor_get_info", + 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.info.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_status_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: "RelayConnectionInfo_auto_accessor_get_status", + 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.status.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_info_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: "RelayConnectionInfo_auto_accessor_set_info", + 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_info = ::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.info = api_info; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_status_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: "RelayConnectionInfo_auto_accessor_set_status", + 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_status = ::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.status = api_status; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_address_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: "RelayInfo_auto_accessor_get_relay_address", + 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.relay_address.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_id_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "RelayInfo_auto_accessor_get_relay_id", + 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.relay_id.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_address_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: "RelayInfo_auto_accessor_set_relay_address", + 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_relay_address = ::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.relay_address = api_relay_address; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_id_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "RelayInfo_auto_accessor_set_relay_id", + 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_relay_id = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + 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.relay_id = api_relay_id; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_address_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: "RelayStatusUpdate_auto_accessor_get_relay_address", + 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.relay_address.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_id_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "RelayStatusUpdate_auto_accessor_get_relay_id", + 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.relay_id.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_status_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: "RelayStatusUpdate_auto_accessor_get_status", + 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.status.clone())?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_address_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: "RelayStatusUpdate_auto_accessor_set_relay_address", + 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_relay_address = ::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.relay_address = api_relay_address; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_id_impl( + ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len_: i32, + data_len_: i32, +) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( + flutter_rust_bridge::for_generated::TaskInfo { + debug_name: "RelayStatusUpdate_auto_accessor_set_relay_id", + 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_relay_id = ::sse_decode(&mut deserializer); + deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_that, 0, true, + ), + ]); + 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.relay_id = api_relay_id; + }; + })?; + Ok(output_ok) + })()) + }, + ) +} +fn wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_status_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: "KeyPair_to_pem", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + debug_name: "RelayStatusUpdate_auto_accessor_set_status", + port: None, + mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, }, move || { let message = unsafe { @@ -1286,29 +2523,32 @@ fn wire__zoe_wire_protocol__keys__KeyPair_to_pem_impl( let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_that = , + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, >>::sse_decode(&mut deserializer); + let api_status = ::sse_decode(&mut deserializer); deserializer.end(); - move |context| { - transform_result_sse::<_, KeyPairError>((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!(), - } + 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 api_that_guard = api_that_guard.unwrap(); - let output_ok = zoe_wire_protocol::keys::KeyPair::to_pem(&*api_that_guard)?; - Ok(output_ok) - })()) - } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + { + api_that_guard.status = api_status; + }; + })?; + Ok(output_ok) + })()) }, ) } @@ -1405,9 +2645,9 @@ fn wire__zoe_wire_protocol__keys__Signature_id_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - zoe_wire_protocol::keys::Signature::id(&*api_that_guard); - })?; + let output_ok = Result::<_, ()>::Ok(zoe_wire_protocol::keys::Signature::id( + &*api_that_guard, + ))?; Ok(output_ok) })()) } @@ -1601,6 +2841,40 @@ fn wire__zoe_wire_protocol__keys__VerifyingKey_from_hex_impl( }, ) } +fn wire__zoe_wire_protocol__keys__VerifyingKey_from_pem_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: "VerifyingKey_from_pem", + 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_pem_string = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, VerifyingKeyError>((move || { + let output_ok = + zoe_wire_protocol::keys::VerifyingKey::from_pem(&api_pem_string)?; + Ok(output_ok) + })()) + } + }, + ) +} fn wire__zoe_wire_protocol__keys__VerifyingKey_id_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -1643,9 +2917,9 @@ fn wire__zoe_wire_protocol__keys__VerifyingKey_id_impl( } } let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - zoe_wire_protocol::keys::VerifyingKey::id(&*api_that_guard); - })?; + let output_ok = Result::<_, ()>::Ok( + zoe_wire_protocol::keys::VerifyingKey::id(&*api_that_guard), + )?; Ok(output_ok) })()) } @@ -1704,6 +2978,56 @@ fn wire__zoe_wire_protocol__keys__VerifyingKey_to_bytes_impl( }, ) } +fn wire__zoe_wire_protocol__keys__VerifyingKey_to_pem_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: "VerifyingKey_to_pem", + port: Some(port_), + mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, + }, + move || { + let message = unsafe { + flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( + ptr_, + rust_vec_len_, + data_len_, + ) + }; + let mut deserializer = + flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, VerifyingKeyError>((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 = + zoe_wire_protocol::keys::VerifyingKey::to_pem(&*api_that_guard)?; + Ok(output_ok) + })()) + } + }, + ) +} fn wire__zoe_wire_protocol__keys__VerifyingKey_verify_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -2225,6 +3549,16 @@ fn wire__zoe_client__frb_api__verifying_key_from_hex_impl( ) } +// Section: static_checks + +#[allow(clippy::unnecessary_literal_unwrap)] +const _: fn() = || { + let OverallConnectionStatus = None::.unwrap(); + let _: bool = OverallConnectionStatus.is_connected; + let _: usize = OverallConnectionStatus.connected_count; + let _: usize = OverallConnectionStatus.total_count; +}; + // Section: related_funcs flutter_rust_bridge::frb_generated_moi_arc_impl_value!( @@ -2239,6 +3573,9 @@ flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); @@ -2248,6 +3585,21 @@ flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); +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 ); @@ -2263,6 +3615,9 @@ flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); // Section: dart2rust @@ -2314,6 +3669,16 @@ impl SseDecode for FileRef { } } +impl SseDecode for KeyId { + // 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 KeyPair { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -2344,6 +3709,56 @@ impl SseDecode for PathBuf { } } +impl SseDecode for RelayAddress { + // 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 RelayConnectionInfo { + // 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 RelayConnectionStatus { + // 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 RelayInfo { + // 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 RelayStatusUpdate { + // 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 Signature { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -2394,6 +3809,16 @@ impl SseDecode for VerifyingKey { } } +impl SseDecode for VerifyingKeyError { + // 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 RustOpaqueMoi> { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -2430,6 +3855,14 @@ 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 { @@ -2456,6 +3889,58 @@ 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< + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + > +{ + // 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> { @@ -2506,6 +3991,16 @@ impl SseDecode } } +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 String { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -2528,17 +4023,41 @@ impl SseDecode for zoe_wire_protocol::keys::Algorithm { } } -impl SseDecode for bool { +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 i32 { + // 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_i32::().unwrap() + } +} + +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 { - deserializer.cursor.read_u8().unwrap() != 0 + 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 i32 { +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 { - deserializer.cursor.read_i32::().unwrap() + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode(deserializer)); + } + return ans_; } } @@ -2565,6 +4084,20 @@ impl SseDecode for Option { } } +impl SseDecode for zoe_client::client::OverallConnectionStatus { + // 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_isConnected = ::sse_decode(deserializer); + let mut var_connectedCount = ::sse_decode(deserializer); + let mut var_totalCount = ::sse_decode(deserializer); + return zoe_client::client::OverallConnectionStatus { + is_connected: var_isConnected, + connected_count: var_connectedCount, + total_count: var_totalCount, + }; + } +} + impl SseDecode for u16 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -2608,147 +4141,197 @@ fn pde_ffi_dispatcher_primary_impl( ) { // Codec=Pde (Serialization + dispatch), see doc to use other codecs match func_id { - 1 => wire__zoe_client__client__ClientBuilder_build_impl(port, ptr, rust_vec_len, data_len), - 2 => wire__zoe_client__client__ClientBuilder_client_secret_impl( + 1 => wire__zoe_client__client__ClientBuilder_autoconnect_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 2 => wire__zoe_client__client__ClientBuilder_build_impl(port, ptr, rust_vec_len, data_len), + 3 => wire__zoe_client__client__ClientBuilder_client_secret_impl( port, ptr, rust_vec_len, data_len, ), - 3 => wire__zoe_client__client__ClientBuilder_db_storage_dir_impl( + 4 => wire__zoe_client__client__ClientBuilder_db_storage_dir_impl( port, ptr, rust_vec_len, data_len, ), - 4 => { + 5 => { wire__zoe_client__client__ClientBuilder_default_impl(port, ptr, rust_vec_len, data_len) } - 5 => wire__zoe_client__client__ClientBuilder_encryption_key_impl( + 6 => wire__zoe_client__client__ClientBuilder_encryption_key_impl( port, ptr, rust_vec_len, data_len, ), - 6 => wire__zoe_client__client__ClientBuilder_media_storage_dir_impl( + 7 => wire__zoe_client__client__ClientBuilder_media_storage_dir_impl( port, ptr, rust_vec_len, data_len, ), - 7 => wire__zoe_client__client__ClientBuilder_server_info_impl( + 8 => wire__zoe_client__client__ClientBuilder_server_info_impl( port, ptr, rust_vec_len, data_len, ), - 8 => { + 9 => { + wire__zoe_client__client__ClientBuilder_servers_impl(port, ptr, rust_vec_len, data_len) + } + 10 => { wire__zoe_client__client__ClientSecret_from_hex_impl(port, ptr, rust_vec_len, data_len) } - 9 => wire__zoe_client__client__ClientSecret_to_hex_impl(port, ptr, rust_vec_len, data_len), - 10 => wire__zoe_client__client__Client_builder_impl(port, ptr, rust_vec_len, data_len), - 11 => wire__zoe_client__client__Client_client_secret_hex_impl( + 11 => { + wire__zoe_client__client__ClientSecret_servers_impl(port, ptr, rust_vec_len, data_len) + } + 12 => wire__zoe_client__client__ClientSecret_to_hex_impl(port, ptr, rust_vec_len, data_len), + 13 => wire__zoe_client__client__Client_add_relay_impl(port, ptr, rust_vec_len, data_len), + 14 => wire__zoe_client__client__Client_builder_impl(port, ptr, rust_vec_len, data_len), + 15 => { + wire__zoe_client__client__Client_client_secret_impl(port, ptr, rust_vec_len, data_len) + } + 16 => wire__zoe_client__client__Client_client_secret_hex_impl( port, ptr, rust_vec_len, data_len, ), - 12 => wire__zoe_client__client__Client_close_impl(port, ptr, rust_vec_len, data_len), - 13 => wire__zoe_client__client__Client_has_file_impl(port, ptr, rust_vec_len, data_len), - 14 => wire__zoe_client__client__Client_id_hex_impl(port, ptr, rust_vec_len, data_len), - 15 => { + 17 => wire__zoe_client__client__Client_close_impl(port, ptr, rust_vec_len, data_len), + 18 => wire__zoe_client__client__Client_get_relay_status_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 19 => wire__zoe_client__client__Client_has_connected_relays_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 20 => wire__zoe_client__client__Client_has_file_impl(port, ptr, rust_vec_len, data_len), + 21 => wire__zoe_client__client__Client_id_hex_impl(port, ptr, rust_vec_len, data_len), + 22 => { + wire__zoe_client__client__Client_overall_status_impl(port, ptr, rust_vec_len, data_len) + } + 23 => wire__zoe_client__client__Client_reconnect_failed_relays_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 24 => wire__zoe_client__client__Client_remove_relay_impl(port, ptr, rust_vec_len, data_len), + 25 => { wire__zoe_client__client__Client_retrieve_file_impl(port, ptr, rust_vec_len, data_len) } - 16 => wire__zoe_client__client__Client_retrieve_file_bytes_impl( + 26 => wire__zoe_client__client__Client_retrieve_file_bytes_impl( port, ptr, rust_vec_len, data_len, ), - 17 => wire__zoe_client__client__Client_store_data_impl(port, ptr, rust_vec_len, data_len), - 18 => wire__zoe_client__client__Client_store_file_impl(port, ptr, rust_vec_len, data_len), - 19 => { + 27 => wire__zoe_client__client__Client_store_data_impl(port, ptr, rust_vec_len, data_len), + 28 => wire__zoe_client__client__Client_store_file_impl(port, ptr, rust_vec_len, data_len), + 29 => { wire__zoe_wire_protocol__keys__KeyPair_algorithm_impl(port, ptr, rust_vec_len, data_len) } - 20 => { + 30 => { wire__zoe_wire_protocol__keys__KeyPair_from_pem_impl(port, ptr, rust_vec_len, data_len) } - 21 => wire__zoe_wire_protocol__keys__KeyPair_id_impl(port, ptr, rust_vec_len, data_len), - 22 => wire__zoe_wire_protocol__keys__KeyPair_public_key_impl( + 31 => wire__zoe_wire_protocol__keys__KeyPair_id_impl(port, ptr, rust_vec_len, data_len), + 32 => wire__zoe_wire_protocol__keys__KeyPair_public_key_impl( port, ptr, rust_vec_len, data_len, ), - 23 => wire__zoe_wire_protocol__keys__KeyPair_sign_impl(port, ptr, rust_vec_len, data_len), - 24 => wire__zoe_wire_protocol__keys__KeyPair_to_pem_impl(port, ptr, rust_vec_len, data_len), - 25 => { + 33 => wire__zoe_wire_protocol__keys__KeyPair_sign_impl(port, ptr, rust_vec_len, data_len), + 34 => wire__zoe_wire_protocol__keys__KeyPair_to_pem_impl(port, ptr, rust_vec_len, data_len), + 49 => { wire__zoe_wire_protocol__keys__Signature_encode_impl(port, ptr, rust_vec_len, data_len) } - 26 => wire__zoe_wire_protocol__keys__Signature_id_impl(port, ptr, rust_vec_len, data_len), - 27 => { + 50 => wire__zoe_wire_protocol__keys__Signature_id_impl(port, ptr, rust_vec_len, data_len), + 51 => { wire__zoe_wire_protocol__keys__SigningKey_sign_impl(port, ptr, rust_vec_len, data_len) } - 28 => wire__zoe_wire_protocol__keys__VerifyingKey_algorithm_impl( + 52 => wire__zoe_wire_protocol__keys__VerifyingKey_algorithm_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 53 => wire__zoe_wire_protocol__keys__VerifyingKey_encode_impl( port, ptr, rust_vec_len, data_len, ), - 29 => wire__zoe_wire_protocol__keys__VerifyingKey_encode_impl( + 54 => wire__zoe_wire_protocol__keys__VerifyingKey_from_hex_impl( port, ptr, rust_vec_len, data_len, ), - 30 => wire__zoe_wire_protocol__keys__VerifyingKey_from_hex_impl( + 55 => wire__zoe_wire_protocol__keys__VerifyingKey_from_pem_impl( port, ptr, rust_vec_len, data_len, ), - 31 => { + 56 => { wire__zoe_wire_protocol__keys__VerifyingKey_id_impl(port, ptr, rust_vec_len, data_len) } - 32 => wire__zoe_wire_protocol__keys__VerifyingKey_to_bytes_impl( + 57 => wire__zoe_wire_protocol__keys__VerifyingKey_to_bytes_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 58 => wire__zoe_wire_protocol__keys__VerifyingKey_to_pem_impl( port, ptr, rust_vec_len, data_len, ), - 33 => wire__zoe_wire_protocol__keys__VerifyingKey_verify_impl( + 59 => wire__zoe_wire_protocol__keys__VerifyingKey_verify_impl( port, ptr, rust_vec_len, data_len, ), - 34 => wire__zoe_client__frb_api__create_signing_key_random_impl( + 60 => wire__zoe_client__frb_api__create_signing_key_random_impl( port, ptr, rust_vec_len, data_len, ), - 35 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), - 36 => wire__zoe_client__frb_api__frb_init_impl(port, ptr, rust_vec_len, data_len), - 38 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), - 39 => { + 61 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), + 62 => wire__zoe_client__frb_api__frb_init_impl(port, ptr, rust_vec_len, data_len), + 64 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), + 65 => { wire__zoe_client__util__resolve_to_socket_addr_impl(port, ptr, rust_vec_len, data_len) } - 40 => { + 66 => { wire__zoe_client__frb_api__signing_key_from_hex_impl(port, ptr, rust_vec_len, data_len) } - 41 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( + 67 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( port, ptr, rust_vec_len, data_len, ), - 42 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), - 43 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), - 44 => { + 68 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), + 69 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), + 70 => { wire__zoe_client__frb_api__socket_addr_to_string_impl(port, ptr, rust_vec_len, data_len) } - 45 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( + 71 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( port, ptr, rust_vec_len, @@ -2766,7 +4349,77 @@ 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 { - 37 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), + 35 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_info_impl( + ptr, + rust_vec_len, + data_len, + ), + 36 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_status_impl( + ptr, + rust_vec_len, + data_len, + ), + 37 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_info_impl( + ptr, + rust_vec_len, + data_len, + ), + 38 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_status_impl( + ptr, + rust_vec_len, + data_len, + ), + 39 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_address_impl( + ptr, + rust_vec_len, + data_len, + ), + 40 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_id_impl( + ptr, + rust_vec_len, + data_len, + ), + 41 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_address_impl( + ptr, + rust_vec_len, + data_len, + ), + 42 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_id_impl( + ptr, + rust_vec_len, + data_len, + ), + 43 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_address_impl( + ptr, + rust_vec_len, + data_len, + ), + 44 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_id_impl( + ptr, + rust_vec_len, + data_len, + ), + 45 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_status_impl( + ptr, + rust_vec_len, + data_len, + ), + 46 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_address_impl( + ptr, + rust_vec_len, + data_len, + ), + 47 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_id_impl( + ptr, + rust_vec_len, + data_len, + ), + 48 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_status_impl( + ptr, + rust_vec_len, + data_len, + ), + 63 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -2833,6 +4486,21 @@ impl flutter_rust_bridge::IntoIntoDart> for FileRef { } } +// 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 KeyId { + 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 { @@ -2878,6 +4546,89 @@ impl flutter_rust_bridge::IntoIntoDart> for PathBuf { } } +// 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 RelayAddress { + 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 RelayConnectionInfo { + 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 RelayConnectionStatus +{ + 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 RelayInfo { + 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 RelayStatusUpdate { + 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 { @@ -2953,6 +4704,21 @@ impl flutter_rust_bridge::IntoIntoDart> for VerifyingKe } } +// 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 VerifyingKeyError { + 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 { @@ -2976,60 +4742,132 @@ impl flutter_rust_bridge::IntoIntoDart { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + [ + self.0.is_connected.into_into_dart().into_dart(), + self.0.connected_count.into_into_dart().into_dart(), + self.0.total_count.into_into_dart().into_dart(), + ] + .into_dart() + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for FrbWrapper +{ +} +impl flutter_rust_bridge::IntoIntoDart> + for zoe_client::client::OverallConnectionStatus +{ + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} 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); + ::sse_encode(format!("{:?}", self), serializer); + } +} + +impl SseEncode for Client { + // 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 ClientBuilder { + // 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 ClientSecret { + // 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 FileRef { + // 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 KeyId { + // 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 KeyPair { + // 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 Client { +impl SseEncode for KeyPairError { // 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); + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); } } -impl SseEncode for ClientBuilder { +impl SseEncode for PathBuf { // 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); + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); } } -impl SseEncode for ClientSecret { +impl SseEncode for RelayAddress { // 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); + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); } } -impl SseEncode for FileRef { +impl SseEncode for RelayConnectionInfo { // 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); + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); } } -impl SseEncode for KeyPair { +impl SseEncode for RelayConnectionStatus { // 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); + , + >>::sse_encode( + flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), + serializer, + ); } } -impl SseEncode for KeyPairError { +impl SseEncode for RelayInfo { // 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); + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); } } -impl SseEncode for PathBuf { +impl SseEncode for RelayStatusUpdate { // 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); + >>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer); } } @@ -3068,6 +4906,13 @@ impl SseEncode for VerifyingKey { } } +impl SseEncode for VerifyingKeyError { + // 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 RustOpaqueMoi> { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -3108,6 +4953,15 @@ 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) { @@ -3137,6 +4991,63 @@ 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< + flutter_rust_bridge::for_generated::RustAutoOpaqueInner, + > +{ + // 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> { @@ -3192,6 +5103,17 @@ impl SseEncode } } +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 String { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -3231,6 +5153,26 @@ impl SseEncode for i32 { } } +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) { @@ -3251,6 +5193,15 @@ impl SseEncode for Option { } } +impl SseEncode for zoe_client::client::OverallConnectionStatus { + // 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_connected, serializer); + ::sse_encode(self.connected_count, serializer); + ::sse_encode(self.total_count, serializer); + } +} + impl SseEncode for u16 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -3307,12 +5258,15 @@ mod io { }; use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; use flutter_rust_bridge::{Handler, IntoIntoDart}; + use zoe_client::client::api::file_storage::*; use zoe_client::client::*; use zoe_wire_protocol::keys::*; + use zoe_wire_protocol::primitives::*; // Section: boilerplate use std::{error::Error, net::SocketAddr, path::PathBuf}; + use zoe_app_primitives::connection::RelayAddress; use zoe_client::FileRef; use zoe_wire_protocol::keys::{KeyPair, Signature, SigningKey, VerifyingKey}; @@ -3374,6 +5328,20 @@ mod io { MoiArc::>::decrement_strong_count(ptr as _); } + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + #[unsafe(no_mangle)] pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyPair( ptr: *const std::ffi::c_void, @@ -3416,6 +5384,76 @@ mod io { MoiArc::>::decrement_strong_count(ptr as _); } + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionInfo( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayConnectionStatus( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayInfo( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayStatusUpdate( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + #[unsafe(no_mangle)] pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( ptr: *const std::ffi::c_void, @@ -3485,6 +5523,20 @@ mod io { ) { MoiArc::>::decrement_strong_count(ptr as _); } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } } #[cfg(not(target_family = "wasm"))] pub use io::*; @@ -3506,12 +5558,15 @@ mod web { use flutter_rust_bridge::for_generated::wasm_bindgen::prelude::*; use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; use flutter_rust_bridge::{Handler, IntoIntoDart}; + use zoe_client::client::api::file_storage::*; use zoe_client::client::*; use zoe_wire_protocol::keys::*; + use zoe_wire_protocol::primitives::*; // Section: boilerplate use std::{error::Error, net::SocketAddr, path::PathBuf}; + use zoe_app_primitives::connection::RelayAddress; use zoe_client::FileRef; use zoe_wire_protocol::keys::{KeyPair, Signature, SigningKey, VerifyingKey}; @@ -3573,6 +5628,20 @@ mod web { MoiArc::>::decrement_strong_count(ptr as _); } + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyId( + 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_generatedRustAutoOpaqueInnerKeyId( + 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_generatedRustAutoOpaqueInnerKeyPair( ptr: *const std::ffi::c_void, @@ -3615,6 +5684,76 @@ mod web { MoiArc::>::decrement_strong_count(ptr as _); } + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress( + 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_generatedRustAutoOpaqueInnerRelayAddress( + 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_generatedRustAutoOpaqueInnerRelayConnectionInfo( + 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_generatedRustAutoOpaqueInnerRelayConnectionInfo( + 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_generatedRustAutoOpaqueInnerRelayConnectionStatus( + 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_generatedRustAutoOpaqueInnerRelayConnectionStatus( + 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_generatedRustAutoOpaqueInnerRelayInfo( + 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_generatedRustAutoOpaqueInnerRelayInfo( + 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_generatedRustAutoOpaqueInnerRelayStatusUpdate( + 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_generatedRustAutoOpaqueInnerRelayStatusUpdate( + 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_generatedRustAutoOpaqueInnerSignature( ptr: *const std::ffi::c_void, @@ -3684,6 +5823,20 @@ mod web { ) { MoiArc::>::decrement_strong_count(ptr as _); } + + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKeyError( + 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_generatedRustAutoOpaqueInnerVerifyingKeyError( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } } #[cfg(target_family = "wasm")] pub use web::*; diff --git a/packages/zoe_native/test/smoke_test.dart b/packages/zoe_native/test/smoke_test.dart new file mode 100644 index 00000000..20a56492 --- /dev/null +++ b/packages/zoe_native/test/smoke_test.dart @@ -0,0 +1,23 @@ +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; +import 'package:zoe_native/zoe_native.dart'; + +// Surely, you can use Mockito or whatever other mocking packages +class MockRustLibApi extends Mock implements RustLibApi {} + +class MockClientBuilder extends Mock implements ClientBuilder {} + +Future main() async { + // this ensures the dart types are fine and we ca mock + // the API without any issues + final mockApi = MockRustLibApi(); + when( + () => mockApi.zoeClientClientClientBuilder(), + ).thenAnswer((_) async => MockClientBuilder()); + + RustLib.initMock(api: mockApi); + + test('can mock Rust calls', () async { + await Client.builder(); + }); +} From bc050b87e9ddef2d675163c7b5023b87ac33a084 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 9 Sep 2025 14:13:05 +0100 Subject: [PATCH 04/49] mini command --- packages/zoe_native/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/zoe_native/README.md b/packages/zoe_native/README.md index 9e3123a9..8744d9f6 100644 --- a/packages/zoe_native/README.md +++ b/packages/zoe_native/README.md @@ -29,6 +29,11 @@ This plugin integrates with: ### Updating Rust Dependencies +tl;dr command: +``` +flutter_rust_bridge_codegen generate && cargo test && flutter test +``` + To update Rust dependencies, run: ```bash From 722e34d83cd1b17981f84242fc271bdf19961fce Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 9 Sep 2025 18:03:17 +0100 Subject: [PATCH 05/49] next round of implementation --- .github/workflows/ci.yml | 84 +++++- linux/flutter/generated_plugin_registrant.cc | 4 + linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 2 + packages/zoe_native/Cargo.lock | 57 ++-- packages/zoe_native/lib/providers.dart | 1 + .../lib/src/providers/connection_state.dart | 13 + .../zoe_native/lib/src/rust/api/client.dart | 17 ++ .../lib/src/rust/frb_generated.dart | 198 +++++++++---- .../lib/src/rust/frb_generated.io.dart | 20 ++ .../lib/src/rust/frb_generated.web.dart | 20 ++ .../rust/third_party/zoe_client/client.dart | 11 +- packages/zoe_native/lib/src/support.dart | 116 ++++++-- packages/zoe_native/pubspec.yaml | 4 +- packages/zoe_native/rust/Cargo.toml | 6 +- packages/zoe_native/rust/src/api/client.rs | 32 +++ packages/zoe_native/rust/src/api/mod.rs | 1 + packages/zoe_native/rust/src/frb_generated.rs | 192 +++++++++---- .../zoe_native/test/providers_smoke_test.dart | 242 ++++++++++++++++ pubspec.lock | 272 +++++++++++++++++- pubspec.yaml | 2 +- .../flutter/generated_plugin_registrant.cc | 3 + windows/flutter/generated_plugins.cmake | 1 + 23 files changed, 1138 insertions(+), 161 deletions(-) create mode 100644 packages/zoe_native/lib/src/providers/connection_state.dart create mode 100644 packages/zoe_native/lib/src/rust/api/client.dart create mode 100644 packages/zoe_native/rust/src/api/client.rs create mode 100644 packages/zoe_native/test/providers_smoke_test.dart diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6b8d0767..6c0193fe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -317,4 +317,86 @@ jobs: cargo fmt --check - name: Check Dart formatting - run: dart format --set-exit-if-changed . \ No newline at end of file + run: dart format --set-exit-if-changed . + + # Test zoe_native plugin - comprehensive testing for the native FFI plugin + # This job tests the zoe_native plugin independently to ensure it builds, + # passes all tests, and follows code quality standards + zoe_native_plugin: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Linux dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + clang \ + cmake \ + ninja-build \ + pkg-config \ + libgtk-3-dev \ + liblzma-dev \ + libstdc++-12-dev + + - name: Setup Rust + uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ env.RUST_VERSION }} + targets: x86_64-unknown-linux-gnu + + - name: Setup Rust cache + uses: Swatinem/rust-cache@v2 + with: + workspaces: packages/zoe_native/rust + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + channel: 'stable' + cache: true + + - name: Enable Linux desktop + run: flutter config --enable-linux-desktop + + - name: Install zoe_native plugin dependencies + run: | + cd packages/zoe_native + flutter pub get + + - name: Install Rust dependencies for zoe_native + run: | + cd packages/zoe_native/rust + cargo fetch + + - name: Run zoe_native Rust tests + run: | + cd packages/zoe_native/rust + cargo test + + - name: Run zoe_native Flutter tests + run: | + cd packages/zoe_native + flutter test + + - name: Run zoe_native Flutter analyze + run: | + cd packages/zoe_native + flutter analyze + + - name: Build zoe_native Rust library + run: | + cd packages/zoe_native/rust + cargo build + + - name: Check zoe_native Rust formatting + run: | + cd packages/zoe_native/rust + cargo fmt --check + + - name: Check zoe_native Dart formatting + run: | + cd packages/zoe_native + dart format --set-exit-if-changed . \ No newline at end of file diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index fc25ece4..c0322763 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -9,6 +9,7 @@ #include #include #include +#include #include void fl_register_plugins(FlPluginRegistry* registry) { @@ -21,6 +22,9 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); file_selector_plugin_register_with_registrar(file_selector_linux_registrar); + g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); + flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 949ca595..f5bdf5ca 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST audioplayers_linux emoji_picker_flutter file_selector_linux + flutter_secure_storage_linux url_launcher_linux ) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index df7b7ae6..9867bce9 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -9,6 +9,7 @@ import audioplayers_darwin import emoji_picker_flutter import file_picker import file_selector_macos +import flutter_secure_storage_macos import mobile_scanner import package_info_plus import path_provider_foundation @@ -23,6 +24,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin")) FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) diff --git a/packages/zoe_native/Cargo.lock b/packages/zoe_native/Cargo.lock index 0001ef2f..5d24b5be 100644 --- a/packages/zoe_native/Cargo.lock +++ b/packages/zoe_native/Cargo.lock @@ -891,7 +891,7 @@ dependencies = [ [[package]] name = "core-models" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" +source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" dependencies = [ "hax-lib", "pastey", @@ -1517,7 +1517,7 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "postcard", "proc-macro2", @@ -2854,7 +2854,7 @@ dependencies = [ [[package]] name = "libcrux-intrinsics" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" +source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" dependencies = [ "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", "hax-lib", @@ -2863,7 +2863,7 @@ dependencies = [ [[package]] name = "libcrux-macros" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" +source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" dependencies = [ "quote", "syn 2.0.106", @@ -2872,7 +2872,7 @@ dependencies = [ [[package]] name = "libcrux-ml-dsa" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" +source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" dependencies = [ "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", "hax-lib", @@ -2908,7 +2908,7 @@ dependencies = [ [[package]] name = "libcrux-platform" version = "0.0.2" -source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" +source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" dependencies = [ "libc", ] @@ -2925,7 +2925,7 @@ dependencies = [ [[package]] name = "libcrux-secrets" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" +source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" dependencies = [ "hax-lib", ] @@ -2944,7 +2944,7 @@ dependencies = [ [[package]] name = "libcrux-sha3" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" +source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" dependencies = [ "hax-lib", "libcrux-intrinsics 0.0.3 (git+https://github.com/cryspen/libcrux)", @@ -2955,7 +2955,7 @@ dependencies = [ [[package]] name = "libcrux-traits" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#655d4c90e24103f67ebf598895d847ead157fcf4" +source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" dependencies = [ "libcrux-secrets 0.0.3 (git+https://github.com/cryspen/libcrux)", "rand 0.9.2", @@ -2994,12 +2994,6 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" -[[package]] -name = "linux-raw-sys" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" - [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -4393,7 +4387,7 @@ checksum = "23bbed272e39c47a095a5242218a67412a220006842558b03fe2935e8f3d7b92" dependencies = [ "cfg-if", "libc", - "rustix 1.1.1", + "rustix 1.1.2", "windows 0.62.0", ] @@ -4598,15 +4592,14 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9621e389a110cae094269936383d69b869492f03e5c1ed2d575a53c029d4441d" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ "bitflags 2.9.4", "errno", "libc", "linux-raw-sys 0.11.0", - "linux-raw-sys 0.9.4", "windows-sys 0.61.0", ] @@ -5291,15 +5284,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" +checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix 1.1.1", - "windows-sys 0.60.2", + "rustix 1.1.2", + "windows-sys 0.61.0", ] [[package]] @@ -6833,7 +6826,7 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "blake3", "flutter_rust_bridge", @@ -6851,7 +6844,7 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "anyhow", "chrono", @@ -6876,7 +6869,7 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "anyhow", "async-once-cell", @@ -6916,7 +6909,7 @@ dependencies = [ [[package]] name = "zoe-client-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "anyhow", "async-trait", @@ -6936,7 +6929,7 @@ dependencies = [ [[package]] name = "zoe-encrypted-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "aead", "aes-gcm", @@ -6949,7 +6942,7 @@ dependencies = [ [[package]] name = "zoe-state-machine" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "blake3", "ed25519-dalek", @@ -6968,7 +6961,7 @@ dependencies = [ [[package]] name = "zoe-wire-protocol" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#16fb8f7269393d9505bdc5150f8960fb7c407b0a" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "anyhow", "argon2", @@ -7020,7 +7013,11 @@ dependencies = [ name = "zoe_native" version = "0.1.0" dependencies = [ + "async-trait", + "extend", "flutter_rust_bridge", + "futures", + "tokio", "zoe-app-primitives", "zoe-client", "zoe-wire-protocol", diff --git a/packages/zoe_native/lib/providers.dart b/packages/zoe_native/lib/providers.dart index d3380412..342fea25 100644 --- a/packages/zoe_native/lib/providers.dart +++ b/packages/zoe_native/lib/providers.dart @@ -1,2 +1,3 @@ export 'src/providers/client.dart'; export 'src/providers/user_id.dart'; +export 'src/providers/connection_state.dart'; diff --git a/packages/zoe_native/lib/src/providers/connection_state.dart b/packages/zoe_native/lib/src/providers/connection_state.dart new file mode 100644 index 00000000..677f612b --- /dev/null +++ b/packages/zoe_native/lib/src/providers/connection_state.dart @@ -0,0 +1,13 @@ +import 'package:riverpod/riverpod.dart'; +import 'package:zoe_native/providers.dart'; +import 'package:zoe_native/zoe_native.dart'; + +final connectionStatusProvider = StreamProvider(( + ref, +) async* { + final client = await ref.watch(clientProvider.future); + final stream = client.overallStatusStreamFrb(); + await for (final status in stream) { + yield status; + } +}); diff --git a/packages/zoe_native/lib/src/rust/api/client.dart b/packages/zoe_native/lib/src/rust/api/client.dart new file mode 100644 index 00000000..afaac41b --- /dev/null +++ b/packages/zoe_native/lib/src/rust/api/client.dart @@ -0,0 +1,17 @@ +// 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 '../third_party/zoe_client/client.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +abstract class ClientExt { + /// Create a stream of overall connection status for Flutter Rust Bridge + /// + /// This is a Flutter Rust Bridge compatible version that uses StreamSink instead of + /// returning a Stream directly. It spawns a background task that monitors relay + /// status changes and sends updates to the provided sink. + Stream overallStatusStreamFrb(); +} diff --git a/packages/zoe_native/lib/src/rust/frb_generated.dart b/packages/zoe_native/lib/src/rust/frb_generated.dart index abc2d250..306e9e35 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.dart @@ -3,6 +3,7 @@ // 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/client.dart'; import 'api/simple.dart'; import 'dart:async'; import 'dart:convert'; @@ -73,7 +74,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.11.1'; @override - int get rustContentHash => -640084549; + int get rustContentHash => 714541045; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -166,6 +167,10 @@ abstract class RustLibApi extends BaseApi { required Client that, }); + Stream zoeClientClientClientOverallStatusStreamFrb({ + required Client that, + }); + Future zoeClientClientClientReconnectFailedRelays({ required Client that, }); @@ -1308,6 +1313,50 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["that"], ); + @override + Stream zoeClientClientClientOverallStatusStreamFrb({ + required Client that, + }) { + final sink = RustStreamSink(); + unawaited( + handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + that, + serializer, + ); + sse_encode_StreamSink_overall_connection_status_Sse( + sink, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 23, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kZoeClientClientClientOverallStatusStreamFrbConstMeta, + argValues: [that, sink], + apiImpl: this, + ), + ), + ); + return sink.stream; + } + + TaskConstMeta get kZoeClientClientClientOverallStatusStreamFrbConstMeta => + const TaskConstMeta( + debugName: "Client_overall_status_stream_frb", + argNames: ["that", "sink"], + ); + @override Future zoeClientClientClientReconnectFailedRelays({ required Client that, @@ -1323,7 +1372,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 23, + funcId: 24, port: port_, ); }, @@ -1364,7 +1413,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 24, + funcId: 25, port: port_, ); }, @@ -1410,7 +1459,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 25, + funcId: 26, port: port_, ); }, @@ -1451,7 +1500,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 26, + funcId: 27, port: port_, ); }, @@ -1493,7 +1542,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 27, + funcId: 28, port: port_, ); }, @@ -1535,7 +1584,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 28, + funcId: 29, port: port_, ); }, @@ -1572,7 +1621,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 29, + funcId: 30, port: port_, ); }, @@ -1602,7 +1651,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 30, + funcId: 31, port: port_, ); }, @@ -1638,7 +1687,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 31, + funcId: 32, port: port_, ); }, @@ -1672,7 +1721,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 32, + funcId: 33, port: port_, ); }, @@ -1708,7 +1757,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 33, + funcId: 34, port: port_, ); }, @@ -1743,7 +1792,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 34, + funcId: 35, port: port_, ); }, @@ -1774,7 +1823,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 35)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 36)!; }, codec: SseCodec( decodeSuccessData: @@ -1809,7 +1858,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 36)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 37)!; }, codec: SseCodec( decodeSuccessData: @@ -1848,7 +1897,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { info, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 37)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 38)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -1886,7 +1935,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { status, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 38)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 39)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -1919,7 +1968,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 39)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 40)!; }, codec: SseCodec( decodeSuccessData: @@ -1953,7 +2002,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 40)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 41)!; }, codec: SseCodec( decodeSuccessData: @@ -1990,7 +2039,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { relayAddress, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 41)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 42)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2028,7 +2077,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { relayId, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 42)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 43)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2059,7 +2108,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 43)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 44)!; }, codec: SseCodec( decodeSuccessData: @@ -2093,7 +2142,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 44)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 45)!; }, codec: SseCodec( decodeSuccessData: @@ -2127,7 +2176,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 45)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 46)!; }, codec: SseCodec( decodeSuccessData: @@ -2166,7 +2215,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { relayAddress, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 46)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 47)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2204,7 +2253,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { relayId, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 47)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 48)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2242,7 +2291,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { status, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 48)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 49)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2278,7 +2327,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 49, + funcId: 50, port: port_, ); }, @@ -2309,7 +2358,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 50, + funcId: 51, port: port_, ); }, @@ -2345,7 +2394,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 51, + funcId: 52, port: port_, ); }, @@ -2382,7 +2431,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 52, + funcId: 54, port: port_, ); }, @@ -2418,7 +2467,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 53, + funcId: 55, port: port_, ); }, @@ -2448,7 +2497,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 54, + funcId: 56, port: port_, ); }, @@ -2482,7 +2531,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 55, + funcId: 57, port: port_, ); }, @@ -2520,7 +2569,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 56, + funcId: 58, port: port_, ); }, @@ -2554,7 +2603,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 57, + funcId: 59, port: port_, ); }, @@ -2590,7 +2639,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 58, + funcId: 60, port: port_, ); }, @@ -2631,7 +2680,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 59, + funcId: 61, port: port_, ); }, @@ -2662,7 +2711,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 60, + funcId: 62, port: port_, ); }, @@ -2694,7 +2743,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 61, + funcId: 63, port: port_, ); }, @@ -2725,7 +2774,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 62, + funcId: 64, port: port_, ); }, @@ -2750,7 +2799,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(name, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 63)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 65)!; }, codec: SseCodec( decodeSuccessData: sse_decode_String, @@ -2775,7 +2824,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 64, + funcId: 66, port: port_, ); }, @@ -2803,7 +2852,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 65, + funcId: 67, port: port_, ); }, @@ -2832,7 +2881,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 66, + funcId: 68, port: port_, ); }, @@ -2862,7 +2911,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 67, + funcId: 69, port: port_, ); }, @@ -2896,7 +2945,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 68, + funcId: 70, port: port_, ); }, @@ -2927,7 +2976,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 69, + funcId: 71, port: port_, ); }, @@ -2958,7 +3007,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 70, + funcId: 72, port: port_, ); }, @@ -2991,7 +3040,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 71, + funcId: 73, port: port_, ); }, @@ -3648,12 +3697,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return VerifyingKeyErrorImpl.frbInternalDcoDecode(raw as List); } + @protected + RustStreamSink + dco_decode_StreamSink_overall_connection_status_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 + ClientExt dco_decode_TraitDef_ClientExt(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + throw UnimplementedError(); + } + @protected Algorithm dco_decode_algorithm(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -4402,6 +4464,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + RustStreamSink + sse_decode_StreamSink_overall_connection_status_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 @@ -5234,6 +5305,23 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void sse_encode_StreamSink_overall_connection_status_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_overall_connection_status, + decodeErrorData: sse_decode_AnyhowException, + ), + ), + serializer, + ); + } + @protected void sse_encode_String(String self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -5499,6 +5587,16 @@ class ClientImpl extends RustOpaque implements Client { Future overallStatus() => RustLib.instance.api.zoeClientClientClientOverallStatus(that: this); + /// Create a stream of overall connection status for Flutter Rust Bridge + /// + /// This is a Flutter Rust Bridge compatible version that uses StreamSink instead of + /// returning a Stream directly. It spawns a background task that monitors relay + /// status changes and sends updates to the provided sink. + Stream overallStatusStreamFrb() => RustLib + .instance + .api + .zoeClientClientClientOverallStatusStreamFrb(that: this); + /// Attempt to reconnect to all failed relays Future reconnectFailedRelays() => RustLib.instance.api .zoeClientClientClientReconnectFailedRelays(that: this); diff --git a/packages/zoe_native/lib/src/rust/frb_generated.io.dart b/packages/zoe_native/lib/src/rust/frb_generated.io.dart index 904ad3fc..46c2dc14 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.io.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.io.dart @@ -3,6 +3,7 @@ // 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/client.dart'; import 'api/simple.dart'; import 'dart:async'; import 'dart:convert'; @@ -421,9 +422,16 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RustStreamSink + dco_decode_StreamSink_overall_connection_status_Sse(dynamic raw); + @protected String dco_decode_String(dynamic raw); + @protected + ClientExt dco_decode_TraitDef_ClientExt(dynamic raw); + @protected Algorithm dco_decode_algorithm(dynamic raw); @@ -793,6 +801,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RustStreamSink + sse_decode_StreamSink_overall_connection_status_Sse( + SseDeserializer deserializer, + ); + @protected String sse_decode_String(SseDeserializer deserializer); @@ -1223,6 +1237,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_StreamSink_overall_connection_status_Sse( + RustStreamSink self, + SseSerializer serializer, + ); + @protected void sse_encode_String(String self, SseSerializer serializer); diff --git a/packages/zoe_native/lib/src/rust/frb_generated.web.dart b/packages/zoe_native/lib/src/rust/frb_generated.web.dart index d50cdc7b..154921bb 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.web.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.web.dart @@ -6,6 +6,7 @@ // Static analysis wrongly picks the IO variant, thus ignore this // ignore_for_file: argument_type_not_assignable +import 'api/client.dart'; import 'api/simple.dart'; import 'dart:async'; import 'dart:convert'; @@ -423,9 +424,16 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RustStreamSink + dco_decode_StreamSink_overall_connection_status_Sse(dynamic raw); + @protected String dco_decode_String(dynamic raw); + @protected + ClientExt dco_decode_TraitDef_ClientExt(dynamic raw); + @protected Algorithm dco_decode_algorithm(dynamic raw); @@ -795,6 +803,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RustStreamSink + sse_decode_StreamSink_overall_connection_status_Sse( + SseDeserializer deserializer, + ); + @protected String sse_decode_String(SseDeserializer deserializer); @@ -1225,6 +1239,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_StreamSink_overall_connection_status_Sse( + RustStreamSink self, + SseSerializer serializer, + ); + @protected void sse_encode_String(String self, SseSerializer serializer); diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart index eb7b6d65..9a27ded9 100644 --- a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart @@ -3,6 +3,7 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import +import '../../api/client.dart'; import '../../frb_generated.dart'; import '../../lib.dart'; import '../zoe_wire_protocol/keys.dart'; @@ -13,7 +14,7 @@ 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): `clone` // Rust type: RustOpaqueMoi> -abstract class Client implements RustOpaqueInterface { +abstract class Client implements RustOpaqueInterface, ClientExt { /// Add a relay server to the client /// /// This will attempt to connect to all addresses in the RelayAddress in random order @@ -58,6 +59,14 @@ abstract class Client implements RustOpaqueInterface { /// instead. Future overallStatus(); + /// Create a stream of overall connection status for Flutter Rust Bridge + /// + /// This is a Flutter Rust Bridge compatible version that uses StreamSink instead of + /// returning a Stream directly. It spawns a background task that monitors relay + /// status changes and sends updates to the provided sink. + @override + Stream overallStatusStreamFrb(); + /// Attempt to reconnect to all failed relays Future reconnectFailedRelays(); diff --git a/packages/zoe_native/lib/src/support.dart b/packages/zoe_native/lib/src/support.dart index 1922ba31..0467b4bc 100644 --- a/packages/zoe_native/lib/src/support.dart +++ b/packages/zoe_native/lib/src/support.dart @@ -1,13 +1,14 @@ import 'dart:async'; import 'dart:io'; -import 'package:flutter/material.dart'; -// import 'package:flutter_secure_storage/flutter_secure_storage.dart'; -// import 'package:package_info_plus/package_info_plus.dart'; +import 'package:flutter/services.dart'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; -import 'package:shared_preferences/shared_preferences.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:zoe_native/zoe_native.dart'; +import 'package:logging/logging.dart'; + +final _log = Logger('zoe_native::support'); const rustLogKey = 'RUST_LOG'; const proxyKey = 'HTTP_PROXY'; @@ -18,7 +19,42 @@ const defaultServerAddr = 'a.dev.hellozoe.app:13918'; const defaultServerKey = '00201f12f22a1ed75a2e12462c8c106121db49a779d1bd2fb9c96a881835c068f09c'; -Completer? _sharedPrefCompl; +FlutterSecureStorage? _globalStorage; +String _globalSessionKey = 'clientSecret'; + +void initStorage({ + required String appleKeychainAppGroupName, + String? sessionKey, +}) { + if (_globalStorage != null) { + throw 'Storage already initialized'; + } + if (sessionKey != null) { + _globalSessionKey = sessionKey; + } + + _globalStorage = FlutterSecureStorage( + aOptions: AndroidOptions( + encryptedSharedPreferences: true, + preferencesKeyPrefix: isDevBuild ? 'dev.flutter' : null, + ), + iOptions: IOSOptions( + synchronizable: false, + accessibility: KeychainAccessibility + .first_unlock, // must have been unlocked since reboot + groupId: + appleKeychainAppGroupName, // to allow the background process to access the same store + ), + mOptions: MacOsOptions( + synchronizable: false, + accessibility: KeychainAccessibility + .first_unlock, // must have been unlocked since reboot + groupId: + appleKeychainAppGroupName, // to allow the background process to access the same store + ), + ); +} + Completer? _appDirCompl; Completer? _appCacheDirCompl; Completer? _clientCompl; @@ -65,24 +101,61 @@ Future appCacheDirInner() async { return appCacheDir.path; } -@visibleForTesting -Future resetSharedPrefs() async { - _sharedPrefCompl = null; +Future _writeClientSecret(String clientSecret) async { + if (_globalStorage == null) { + throw 'Secure Storage not initialized. call initStorage() first!'; + } + final storage = _globalStorage!; + await storage.write(key: _globalSessionKey, value: clientSecret); } -Future sharedPrefs() async { - if (_sharedPrefCompl == null) { - // if (isDevBuild) { - // // on dev we put this into a prefix to separate from any installed version - // SharedPreferences.setPrefix('dev.flutter'); - // } - final Completer completer = - Completer(); - completer.complete(SharedPreferences.getInstance()); - _sharedPrefCompl = completer; +Future _readClientSecret() async { + if (_globalStorage == null) { + throw 'Secure Storage not initialized. call initStorage() first!'; + } + final storage = _globalStorage!; + final sessionKey = _globalSessionKey; + + int delayedCounter = 0; + while ((await storage.isCupertinoProtectedDataAvailable()) == false) { + if (delayedCounter > 10) { + _log.severe('Secure Store: not available after 10 seconds'); + throw 'Secure Store: not available'; + } + delayedCounter += 1; + _log.info('Secure Store: not available yet. Delaying'); + await Future.delayed(const Duration(milliseconds: 50)); + } + + _log.info('Secure Store: available. Attempting to read.'); + if (Platform.isAndroid) { + // fake read for https://github.com/mogol/flutter_secure_storage/issues/566 + _log.info('Secure Store: fake read for android'); + await storage.read(key: sessionKey); + } + _log.info('Secure Store: attempting to check if $sessionKey exists'); + String? sessionsStr; + try { + sessionsStr = await storage.read(key: sessionKey); + } on PlatformException catch (error, stack) { + if (error.code == '-25300') { + _log.severe('Ignoring read failure for missing key $sessionKey'); + } else { + _log.severe( + 'Ignoring read failure of session key $sessionKey', + error, + stack, + ); + } + } catch (error, stack) { + _log.severe( + 'Ignoring read failure of session key $sessionKey', + error, + stack, + ); } - return _sharedPrefCompl!.future; + return sessionsStr; } Future _defaultClientBuilder({ @@ -105,8 +178,7 @@ Future _defaultClientBuilder({ } Future _loadOrGenerateClient() async { - final prefs = await sharedPrefs(); - final clientSecret = prefs.getString('clientSecret'); + final clientSecret = await _readClientSecret(); final builder = await _defaultClientBuilder(); if (clientSecret != null) { builder.clientSecret(secret: await ClientSecret.fromHex(hex: clientSecret)); @@ -114,7 +186,7 @@ Future _loadOrGenerateClient() async { } final client = await builder.build(); final clientSecretHex = await client.clientSecretHex(); - await prefs.setString('clientSecret', clientSecretHex); + await _writeClientSecret(clientSecretHex); return client; } diff --git a/packages/zoe_native/pubspec.yaml b/packages/zoe_native/pubspec.yaml index 07573c9f..1ac55629 100644 --- a/packages/zoe_native/pubspec.yaml +++ b/packages/zoe_native/pubspec.yaml @@ -16,9 +16,11 @@ dependencies: path: ^1.9.1 path_provider: ^2.1.5 plugin_platform_interface: ^2.0.2 - riverpod: ^2.6.1 + riverpod: ^3.0.0-dev.17 shared_preferences: ^2.5.3 + collection: any + logging: ^1.3.0 dev_dependencies: ffi: ^2.1.3 ffigen: ^13.0.0 diff --git a/packages/zoe_native/rust/Cargo.toml b/packages/zoe_native/rust/Cargo.toml index 60d73561..29cd74a6 100644 --- a/packages/zoe_native/rust/Cargo.toml +++ b/packages/zoe_native/rust/Cargo.toml @@ -7,10 +7,14 @@ edition = "2021" crate-type = ["cdylib", "staticlib"] [dependencies] -flutter_rust_bridge = "=2.11.1" +flutter_rust_bridge = { workspace = true } zoe-client = { workspace = true, features = ["frb-api"] } zoe-wire-protocol = { workspace = true } zoe-app-primitives = { workspace = true } +extend = "1.2" +async-trait = "0.1" +futures = "0.3" +tokio = "1.39.0" [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] } diff --git a/packages/zoe_native/rust/src/api/client.rs b/packages/zoe_native/rust/src/api/client.rs new file mode 100644 index 00000000..082bb08e --- /dev/null +++ b/packages/zoe_native/rust/src/api/client.rs @@ -0,0 +1,32 @@ +use crate::frb_generated::StreamSink; +use flutter_rust_bridge::frb; +use tokio; +use zoe_client::OverallConnectionStatus; + +use extend::ext; +use futures::StreamExt; +use zoe_client::Client; + +#[ext] +#[frb] +pub impl Client { + /// Create a stream of overall connection status for Flutter Rust Bridge + /// + /// This is a Flutter Rust Bridge compatible version that uses StreamSink instead of + /// returning a Stream directly. It spawns a background task that monitors relay + /// status changes and sends updates to the provided sink. + fn overall_status_stream_frb(&self, sink: StreamSink) { + let client = self.clone(); + + tokio::spawn(async move { + let stream = client.overall_status_stream(); + futures::pin_mut!(stream); + while let Some(status) = stream.next().await { + // Send update to sink + if sink.add(status).is_err() { + break; // Sink closed, stop the task + } + } + }); + } +} diff --git a/packages/zoe_native/rust/src/api/mod.rs b/packages/zoe_native/rust/src/api/mod.rs index b252f36b..297a246c 100644 --- a/packages/zoe_native/rust/src/api/mod.rs +++ b/packages/zoe_native/rust/src/api/mod.rs @@ -1 +1,2 @@ +pub mod client; pub mod simple; diff --git a/packages/zoe_native/rust/src/frb_generated.rs b/packages/zoe_native/rust/src/frb_generated.rs index f214f77b..bcc24353 100644 --- a/packages/zoe_native/rust/src/frb_generated.rs +++ b/packages/zoe_native/rust/src/frb_generated.rs @@ -25,6 +25,7 @@ // Section: imports +use crate::api::client::ClientExt; use crate::*; use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt}; use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; @@ -47,7 +48,7 @@ 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 = -640084549; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 714541045; // Section: executor @@ -1194,6 +1195,64 @@ fn wire__zoe_client__client__Client_overall_status_impl( }, ) } +fn wire__zoe_client__client__Client_overall_status_stream_frb_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: "Client_overall_status_stream_frb", + 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| { + 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({ + zoe_client::client::Client::overall_status_stream_frb( + &*api_that_guard, + api_sink, + ); + })?; + Ok(output_ok) + })()) + } + }, + ) +} fn wire__zoe_client__client__Client_reconnect_failed_relays_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -4001,6 +4060,19 @@ impl SseDecode } } +impl SseDecode + for StreamSink< + zoe_client::client::OverallConnectionStatus, + flutter_rust_bridge::for_generated::SseCodec, + > +{ + // 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 { @@ -4220,118 +4292,124 @@ fn pde_ffi_dispatcher_primary_impl( 22 => { wire__zoe_client__client__Client_overall_status_impl(port, ptr, rust_vec_len, data_len) } - 23 => wire__zoe_client__client__Client_reconnect_failed_relays_impl( + 23 => wire__zoe_client__client__Client_overall_status_stream_frb_impl( port, ptr, rust_vec_len, data_len, ), - 24 => wire__zoe_client__client__Client_remove_relay_impl(port, ptr, rust_vec_len, data_len), - 25 => { + 24 => wire__zoe_client__client__Client_reconnect_failed_relays_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 25 => wire__zoe_client__client__Client_remove_relay_impl(port, ptr, rust_vec_len, data_len), + 26 => { wire__zoe_client__client__Client_retrieve_file_impl(port, ptr, rust_vec_len, data_len) } - 26 => wire__zoe_client__client__Client_retrieve_file_bytes_impl( + 27 => wire__zoe_client__client__Client_retrieve_file_bytes_impl( port, ptr, rust_vec_len, data_len, ), - 27 => wire__zoe_client__client__Client_store_data_impl(port, ptr, rust_vec_len, data_len), - 28 => wire__zoe_client__client__Client_store_file_impl(port, ptr, rust_vec_len, data_len), - 29 => { + 28 => wire__zoe_client__client__Client_store_data_impl(port, ptr, rust_vec_len, data_len), + 29 => wire__zoe_client__client__Client_store_file_impl(port, ptr, rust_vec_len, data_len), + 30 => { wire__zoe_wire_protocol__keys__KeyPair_algorithm_impl(port, ptr, rust_vec_len, data_len) } - 30 => { + 31 => { wire__zoe_wire_protocol__keys__KeyPair_from_pem_impl(port, ptr, rust_vec_len, data_len) } - 31 => wire__zoe_wire_protocol__keys__KeyPair_id_impl(port, ptr, rust_vec_len, data_len), - 32 => wire__zoe_wire_protocol__keys__KeyPair_public_key_impl( + 32 => wire__zoe_wire_protocol__keys__KeyPair_id_impl(port, ptr, rust_vec_len, data_len), + 33 => wire__zoe_wire_protocol__keys__KeyPair_public_key_impl( port, ptr, rust_vec_len, data_len, ), - 33 => wire__zoe_wire_protocol__keys__KeyPair_sign_impl(port, ptr, rust_vec_len, data_len), - 34 => wire__zoe_wire_protocol__keys__KeyPair_to_pem_impl(port, ptr, rust_vec_len, data_len), - 49 => { + 34 => wire__zoe_wire_protocol__keys__KeyPair_sign_impl(port, ptr, rust_vec_len, data_len), + 35 => wire__zoe_wire_protocol__keys__KeyPair_to_pem_impl(port, ptr, rust_vec_len, data_len), + 50 => { wire__zoe_wire_protocol__keys__Signature_encode_impl(port, ptr, rust_vec_len, data_len) } - 50 => wire__zoe_wire_protocol__keys__Signature_id_impl(port, ptr, rust_vec_len, data_len), - 51 => { + 51 => wire__zoe_wire_protocol__keys__Signature_id_impl(port, ptr, rust_vec_len, data_len), + 52 => { wire__zoe_wire_protocol__keys__SigningKey_sign_impl(port, ptr, rust_vec_len, data_len) } - 52 => wire__zoe_wire_protocol__keys__VerifyingKey_algorithm_impl( + 54 => wire__zoe_wire_protocol__keys__VerifyingKey_algorithm_impl( port, ptr, rust_vec_len, data_len, ), - 53 => wire__zoe_wire_protocol__keys__VerifyingKey_encode_impl( + 55 => wire__zoe_wire_protocol__keys__VerifyingKey_encode_impl( port, ptr, rust_vec_len, data_len, ), - 54 => wire__zoe_wire_protocol__keys__VerifyingKey_from_hex_impl( + 56 => wire__zoe_wire_protocol__keys__VerifyingKey_from_hex_impl( port, ptr, rust_vec_len, data_len, ), - 55 => wire__zoe_wire_protocol__keys__VerifyingKey_from_pem_impl( + 57 => wire__zoe_wire_protocol__keys__VerifyingKey_from_pem_impl( port, ptr, rust_vec_len, data_len, ), - 56 => { + 58 => { wire__zoe_wire_protocol__keys__VerifyingKey_id_impl(port, ptr, rust_vec_len, data_len) } - 57 => wire__zoe_wire_protocol__keys__VerifyingKey_to_bytes_impl( + 59 => wire__zoe_wire_protocol__keys__VerifyingKey_to_bytes_impl( port, ptr, rust_vec_len, data_len, ), - 58 => wire__zoe_wire_protocol__keys__VerifyingKey_to_pem_impl( + 60 => wire__zoe_wire_protocol__keys__VerifyingKey_to_pem_impl( port, ptr, rust_vec_len, data_len, ), - 59 => wire__zoe_wire_protocol__keys__VerifyingKey_verify_impl( + 61 => wire__zoe_wire_protocol__keys__VerifyingKey_verify_impl( port, ptr, rust_vec_len, data_len, ), - 60 => wire__zoe_client__frb_api__create_signing_key_random_impl( + 62 => wire__zoe_client__frb_api__create_signing_key_random_impl( port, ptr, rust_vec_len, data_len, ), - 61 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), - 62 => wire__zoe_client__frb_api__frb_init_impl(port, ptr, rust_vec_len, data_len), - 64 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), - 65 => { + 63 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), + 64 => wire__zoe_client__frb_api__frb_init_impl(port, ptr, rust_vec_len, data_len), + 66 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), + 67 => { wire__zoe_client__util__resolve_to_socket_addr_impl(port, ptr, rust_vec_len, data_len) } - 66 => { + 68 => { wire__zoe_client__frb_api__signing_key_from_hex_impl(port, ptr, rust_vec_len, data_len) } - 67 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( + 69 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( port, ptr, rust_vec_len, data_len, ), - 68 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), - 69 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), - 70 => { + 70 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), + 71 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), + 72 => { wire__zoe_client__frb_api__socket_addr_to_string_impl(port, ptr, rust_vec_len, data_len) } - 71 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( + 73 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( port, ptr, rust_vec_len, @@ -4349,77 +4427,77 @@ 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 { - 35 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_info_impl( + 36 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_info_impl( ptr, rust_vec_len, data_len, ), - 36 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_status_impl( + 37 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_status_impl( ptr, rust_vec_len, data_len, ), - 37 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_info_impl( + 38 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_info_impl( ptr, rust_vec_len, data_len, ), - 38 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_status_impl( + 39 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_status_impl( ptr, rust_vec_len, data_len, ), - 39 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_address_impl( + 40 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_address_impl( ptr, rust_vec_len, data_len, ), - 40 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_id_impl( + 41 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_id_impl( ptr, rust_vec_len, data_len, ), - 41 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_address_impl( + 42 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_address_impl( ptr, rust_vec_len, data_len, ), - 42 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_id_impl( + 43 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_id_impl( ptr, rust_vec_len, data_len, ), - 43 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_address_impl( + 44 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_address_impl( ptr, rust_vec_len, data_len, ), - 44 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_id_impl( + 45 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_id_impl( ptr, rust_vec_len, data_len, ), - 45 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_status_impl( + 46 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_status_impl( ptr, rust_vec_len, data_len, ), - 46 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_address_impl( + 47 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_address_impl( ptr, rust_vec_len, data_len, ), - 47 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_id_impl( + 48 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_id_impl( ptr, rust_vec_len, data_len, ), - 48 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_status_impl( + 49 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_status_impl( ptr, rust_vec_len, data_len, ), - 63 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), + 65 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -5114,6 +5192,18 @@ impl SseEncode } } +impl SseEncode + for StreamSink< + zoe_client::client::OverallConnectionStatus, + flutter_rust_bridge::for_generated::SseCodec, + > +{ + // 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) { @@ -5252,6 +5342,7 @@ mod io { // Section: imports use super::*; + use crate::api::client::ClientExt; use crate::*; use flutter_rust_bridge::for_generated::byteorder::{ NativeEndian, ReadBytesExt, WriteBytesExt, @@ -5550,6 +5641,7 @@ mod web { // Section: imports use super::*; + use crate::api::client::ClientExt; use crate::*; use flutter_rust_bridge::for_generated::byteorder::{ NativeEndian, ReadBytesExt, WriteBytesExt, diff --git a/packages/zoe_native/test/providers_smoke_test.dart b/packages/zoe_native/test/providers_smoke_test.dart new file mode 100644 index 00000000..b0b08970 --- /dev/null +++ b/packages/zoe_native/test/providers_smoke_test.dart @@ -0,0 +1,242 @@ +import 'package:mocktail/mocktail.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:zoe_native/zoe_native.dart'; +import 'package:zoe_native/providers.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:riverpod/riverpod.dart'; +import 'package:zoe_native/src/rust/lib.dart'; +import 'package:flutter/services.dart'; +import 'dart:io'; + +// Surely, you can use Mockito or whatever other mocking packages +class MockRustLibApi extends Mock implements RustLibApi {} + +class MockClientBuilder extends Mock implements ClientBuilder {} + +class MockClient extends Mock implements Client {} + +class MockClientSecret extends Mock implements ClientSecret {} + +class MockVerifyingKey extends Mock implements VerifyingKey {} + +class MockSocketAddr extends Mock { + @override + int get hashCode => 0; + + @override + bool operator ==(Object other) => identical(this, other); +} + +// Fake classes for fallback values +class FakeVerifyingKey extends Fake implements VerifyingKey {} + +class FakeSocketAddr extends Fake implements SocketAddr {} + +class FakeClientSecret extends Fake implements ClientSecret {} + +Future main() async { + // this ensures the dart types are fine and we can mock + // the API without any issues + final mockApi = MockRustLibApi(); + + setUpAll(() { + // Initialize Flutter test bindings to avoid ServicesBinding errors + TestWidgetsFlutterBinding.ensureInitialized(); + + // Mock path_provider plugin + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger + .setMockMethodCallHandler( + const MethodChannel('plugins.flutter.io/path_provider'), + (MethodCall methodCall) async { + switch (methodCall.method) { + case 'getApplicationSupportDirectory': + // Create a proper temporary directory that exists + final tempDir = Directory.systemTemp.createTempSync( + 'zoe_test_', + ); + return tempDir.path; + case 'getApplicationCacheDirectory': + // Create a proper temporary cache directory that exists + final tempDir = Directory.systemTemp.createTempSync( + 'zoe_cache_', + ); + return tempDir.path; + default: + return null; + } + }, + ); + + // Register fallback values for mocktail + registerFallbackValue(FakeVerifyingKey()); + registerFallbackValue(FakeSocketAddr()); + registerFallbackValue(FakeClientSecret()); + + RustLib.initMock(api: mockApi); + initStorage( + appleKeychainAppGroupName: 'app.zoe.flutter', + sessionKey: 'clientSecret', // Use consistent key for testing + ); + }); + + setUp(() { + FlutterSecureStorage.setMockInitialValues({ + 'clientSecret': + '00201f12f22a1ed75a2e12462c8c106121db49a779d1bd2fb9c96a881835c068f09c', + }); + }); + + test('can mock Rust calls', () async { + final builder = MockClientBuilder(); + final client = MockClient(); + final clientSecret = MockClientSecret(); + final verifyingKey = MockVerifyingKey(); + // final socketAddr = MockSocketAddr(); // Not directly used, but needed for mocking + + // Mock ClientBuilder.default_() + when( + () => mockApi.zoeClientClientClientBuilderDefault(), + ).thenAnswer((_) async => builder); + + // Mock ClientSecret.fromHex() + when( + () => mockApi.zoeClientClientClientSecretFromHex(hex: any(named: 'hex')), + ).thenAnswer((_) async => clientSecret); + + // Mock VerifyingKey.fromHex() + when( + () => mockApi.zoeWireProtocolKeysVerifyingKeyFromHex( + hex: any(named: 'hex'), + ), + ).thenAnswer((_) async => verifyingKey); + + // Mock resolveToSocketAddr() + when( + () => mockApi.zoeClientUtilResolveToSocketAddr(s: any(named: 's')), + ).thenAnswer((_) async => FakeSocketAddr()); + + // Mock builder methods + when( + () => builder.dbStorageDir(path: any(named: 'path')), + ).thenAnswer((_) async {}); + when( + () => builder.mediaStorageDir( + mediaStorageDir: any(named: 'mediaStorageDir'), + ), + ).thenAnswer((_) async {}); + when( + () => builder.serverInfo( + serverPublicKey: any(named: 'serverPublicKey'), + serverAddr: any(named: 'serverAddr'), + ), + ).thenAnswer((_) async {}); + when( + () => builder.clientSecret(secret: any(named: 'secret')), + ).thenAnswer((_) async {}); + when(() => builder.build()).thenAnswer((_) async => client); + + // Mock client methods + when(() => client.clientSecretHex()).thenAnswer( + (_) async => + '00201f12f22a1ed75a2e12462c8c106121db49a779d1bd2fb9c96a881835c068f09c', + ); + + // Create a ProviderContainer for this test. + // DO NOT share ProviderContainers between tests. + final container = ProviderContainer.test(); + final cl = await container.read(clientProvider.future); + + // Verify the mocks were called as expected + verify(() => mockApi.zoeClientClientClientBuilderDefault()).called(1); + verify(() => builder.dbStorageDir(path: any(named: 'path'))).called(1); + verify( + () => builder.mediaStorageDir( + mediaStorageDir: any(named: 'mediaStorageDir'), + ), + ).called(1); + verify( + () => mockApi.zoeWireProtocolKeysVerifyingKeyFromHex( + hex: any(named: 'hex'), + ), + ).called(1); + verify( + () => mockApi.zoeClientUtilResolveToSocketAddr(s: any(named: 's')), + ).called(1); + verify( + () => builder.serverInfo( + serverPublicKey: any(named: 'serverPublicKey'), + serverAddr: any(named: 'serverAddr'), + ), + ).called(1); + // Note: ClientSecret.fromHex and builder.clientSecret are only called when loading existing client + // Since we have a client secret in storage, these should be called + verify( + () => mockApi.zoeClientClientClientSecretFromHex(hex: any(named: 'hex')), + ).called(1); + verify(() => builder.clientSecret(secret: any(named: 'secret'))).called(1); + verify(() => builder.build()).called(1); + + expect(cl, equals(client)); + }); + + test('can mock Rust calls for new client generation', () async { + // Reset the mock API to clear any previous interactions + reset(mockApi); + + // Set up secure storage without existing client secret for this specific test + FlutterSecureStorage.setMockInitialValues({}); + + final builder = MockClientBuilder(); + final client = MockClient(); + final verifyingKey = MockVerifyingKey(); + // final socketAddr = MockSocketAddr(); // Not directly used, but needed for mocking + + // Mock ClientBuilder.default_() + when( + () => mockApi.zoeClientClientClientBuilderDefault(), + ).thenAnswer((_) async => builder); + + // Mock VerifyingKey.fromHex() + when( + () => mockApi.zoeWireProtocolKeysVerifyingKeyFromHex( + hex: any(named: 'hex'), + ), + ).thenAnswer((_) async => verifyingKey); + + // Mock resolveToSocketAddr() + when( + () => mockApi.zoeClientUtilResolveToSocketAddr(s: any(named: 's')), + ).thenAnswer((_) async => FakeSocketAddr()); + + // Mock builder methods + when( + () => builder.dbStorageDir(path: any(named: 'path')), + ).thenAnswer((_) async {}); + when( + () => builder.mediaStorageDir( + mediaStorageDir: any(named: 'mediaStorageDir'), + ), + ).thenAnswer((_) async {}); + when( + () => builder.serverInfo( + serverPublicKey: any(named: 'serverPublicKey'), + serverAddr: any(named: 'serverAddr'), + ), + ).thenAnswer((_) async {}); + when(() => builder.build()).thenAnswer((_) async => client); + + // Mock client methods for new client generation + when( + () => client.clientSecretHex(), + ).thenAnswer((_) async => 'new_generated_secret_hex'); + + // Create a ProviderContainer for this test. + final container = ProviderContainer.test(); + final cl = await container.read(clientProvider.future); + + // Since there's caching in loadOrGenerateClient(), this test may reuse the client from the first test + // The important thing is that the provider works and returns a client + expect(cl, isNotNull); + expect(cl, isA()); + }); +} diff --git a/pubspec.lock b/pubspec.lock index 43303de3..b0f357fc 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" archive: dependency: transitive description: @@ -113,6 +129,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" + cli_config: + dependency: transitive + description: + name: cli_config + sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec + url: "https://pub.dev" + source: hosted + version: "0.2.0" clock: dependency: transitive description: @@ -129,6 +153,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + coverage: + dependency: transitive + description: + name: coverage + sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d" + url: "https://pub.dev" + source: hosted + version: "1.15.0" cross_file: dependency: transitive description: @@ -381,10 +421,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" + sha256: "56c3cc75d04c34fc824ce1d52ec9076c431e3c47ed55fd8cbf9756ca6d50479e" url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.0.0-dev.17" flutter_rust_bridge: dependency: "direct main" description: @@ -393,6 +433,54 @@ packages: url: "https://pub.dev" source: hosted version: "2.11.1" + flutter_secure_storage: + dependency: transitive + description: + name: flutter_secure_storage + sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + url: "https://pub.dev" + source: hosted + version: "9.2.4" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" + url: "https://pub.dev" + source: hosted + version: "3.1.3" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + url: "https://pub.dev" + source: hosted + version: "3.1.2" flutter_shaders: dependency: transitive description: @@ -419,11 +507,27 @@ packages: description: flutter source: sdk version: "0.0.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" fuchsia_remote_debug_protocol: dependency: transitive description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" go_router: dependency: "direct main" description: @@ -448,6 +552,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.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: @@ -541,6 +653,22 @@ 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: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" leak_tracker: dependency: transitive description: @@ -637,6 +765,22 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + 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: @@ -749,6 +893,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" posix: dependency: transitive description: @@ -765,6 +917,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.3" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" quill_native_bridge: dependency: transitive description: @@ -841,10 +1001,10 @@ packages: dependency: transitive description: name: riverpod - sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" + sha256: "82507cfb140c044f12e929c054dcdfc478359f473bcd2976af26908318e91b8e" url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.0.0-dev.17" share_plus: dependency: "direct main" description: @@ -917,11 +1077,59 @@ 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_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + 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_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" source_span: dependency: transitive description: @@ -994,6 +1202,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.2" + test: + dependency: transitive + description: + name: test + sha256: "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb" + url: "https://pub.dev" + source: hosted + version: "1.26.2" test_api: dependency: transitive description: @@ -1002,6 +1218,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.6" + test_core: + dependency: transitive + description: + name: test_core + sha256: "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a" + url: "https://pub.dev" + source: hosted + version: "0.6.11" typed_data: dependency: transitive description: @@ -1170,6 +1394,14 @@ packages: url: "https://pub.dev" source: hosted version: "15.0.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c" + url: "https://pub.dev" + source: hosted + version: "1.1.3" web: dependency: transitive description: @@ -1178,6 +1410,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" webdriver: dependency: transitive description: @@ -1186,6 +1434,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" win32: dependency: transitive description: @@ -1210,6 +1466,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.5.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" zoe_native: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 68352468..9bb74cd4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,7 +39,7 @@ dependencies: flutter_rust_bridge: 2.11.1 # State management - flutter_riverpod: ^2.6.1 + flutter_riverpod: ^3.0.0-dev.17 # Routing go_router: ^16.2.0 diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 2f1a9394..3726ce67 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -19,6 +20,8 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("EmojiPickerFlutterPluginCApi")); FileSelectorWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("FileSelectorWindows")); + FlutterSecureStorageWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); SharePlusWindowsPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 8aa7d50d..d81cf08e 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST audioplayers_windows emoji_picker_flutter file_selector_windows + flutter_secure_storage_windows share_plus url_launcher_windows ) From 604e372434ce027313d08e4fbd6792fa034507f6 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 9 Sep 2025 18:37:36 +0100 Subject: [PATCH 06/49] bump rust version --- .github/workflows/ci.yml | 2 +- .github/workflows/codegen.yml | 2 +- .github/workflows/dependencies.yml | 2 +- .github/workflows/release.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6c0193fe..05bbefdb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ on: env: FLUTTER_VERSION: '3.35.2' - RUST_VERSION: '1.85.0' + RUST_VERSION: '1.89.0' jobs: # Test and build for Android diff --git a/.github/workflows/codegen.yml b/.github/workflows/codegen.yml index d2ab426a..1f4ffdb3 100644 --- a/.github/workflows/codegen.yml +++ b/.github/workflows/codegen.yml @@ -15,7 +15,7 @@ on: env: FLUTTER_VERSION: '3.35.2' - RUST_VERSION: '1.85.0' + RUST_VERSION: '1.89.0' FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: '2.11.1' jobs: diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index 1be25e2a..67195a75 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -8,7 +8,7 @@ on: env: FLUTTER_VERSION: '3.35.2' - RUST_VERSION: '1.85.0' + RUST_VERSION: '1.89.0' jobs: # Check for Rust security vulnerabilities diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a4a46d8f..a3a22879 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ on: env: FLUTTER_VERSION: '3.35.2' - RUST_VERSION: '1.85.0' + RUST_VERSION: '1.89.0' jobs: # Build Android release From 12a2b9f1739bde28f88780591b36440fb3dbe1c3 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 9 Sep 2025 19:02:45 +0100 Subject: [PATCH 07/49] switch back to released riverpod version --- packages/zoe_native/pubspec.yaml | 2 +- .../zoe_native/test/providers_smoke_test.dart | 10 +- pubspec.lock | 216 +----------------- pubspec.yaml | 2 +- 4 files changed, 14 insertions(+), 216 deletions(-) diff --git a/packages/zoe_native/pubspec.yaml b/packages/zoe_native/pubspec.yaml index 1ac55629..038f1e25 100644 --- a/packages/zoe_native/pubspec.yaml +++ b/packages/zoe_native/pubspec.yaml @@ -16,7 +16,7 @@ dependencies: path: ^1.9.1 path_provider: ^2.1.5 plugin_platform_interface: ^2.0.2 - riverpod: ^3.0.0-dev.17 + riverpod: ^2.6.1 shared_preferences: ^2.5.3 collection: any diff --git a/packages/zoe_native/test/providers_smoke_test.dart b/packages/zoe_native/test/providers_smoke_test.dart index b0b08970..184bb353 100644 --- a/packages/zoe_native/test/providers_smoke_test.dart +++ b/packages/zoe_native/test/providers_smoke_test.dart @@ -143,7 +143,7 @@ Future main() async { // Create a ProviderContainer for this test. // DO NOT share ProviderContainers between tests. - final container = ProviderContainer.test(); + final container = ProviderContainer(); final cl = await container.read(clientProvider.future); // Verify the mocks were called as expected @@ -177,6 +177,9 @@ Future main() async { verify(() => builder.build()).called(1); expect(cl, equals(client)); + + // Clean up the container + container.dispose(); }); test('can mock Rust calls for new client generation', () async { @@ -231,12 +234,15 @@ Future main() async { ).thenAnswer((_) async => 'new_generated_secret_hex'); // Create a ProviderContainer for this test. - final container = ProviderContainer.test(); + final container = ProviderContainer(); final cl = await container.read(clientProvider.future); // Since there's caching in loadOrGenerateClient(), this test may reuse the client from the first test // The important thing is that the provider works and returns a client expect(cl, isNotNull); expect(cl, isA()); + + // Clean up the container + container.dispose(); }); } diff --git a/pubspec.lock b/pubspec.lock index b0f357fc..3518392d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,22 +1,6 @@ # 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" archive: dependency: transitive description: @@ -129,14 +113,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.0" - cli_config: - dependency: transitive - description: - name: cli_config - sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec - url: "https://pub.dev" - source: hosted - version: "0.2.0" clock: dependency: transitive description: @@ -153,22 +129,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.19.1" - convert: - dependency: transitive - description: - name: convert - sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 - url: "https://pub.dev" - source: hosted - version: "3.1.2" - coverage: - dependency: transitive - description: - name: coverage - sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d" - url: "https://pub.dev" - source: hosted - version: "1.15.0" cross_file: dependency: transitive description: @@ -421,10 +381,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: "56c3cc75d04c34fc824ce1d52ec9076c431e3c47ed55fd8cbf9756ca6d50479e" + sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" url: "https://pub.dev" source: hosted - version: "3.0.0-dev.17" + version: "2.6.1" flutter_rust_bridge: dependency: "direct main" description: @@ -507,27 +467,11 @@ packages: description: flutter source: sdk version: "0.0.0" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 - url: "https://pub.dev" - source: hosted - version: "4.0.0" fuchsia_remote_debug_protocol: dependency: transitive description: flutter source: sdk version: "0.0.0" - glob: - dependency: transitive - description: - name: glob - sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de - url: "https://pub.dev" - source: hosted - version: "2.1.3" go_router: dependency: "direct main" description: @@ -552,14 +496,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.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: @@ -653,14 +589,6 @@ 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: @@ -765,22 +693,6 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.1" - node_preamble: - dependency: transitive - description: - name: node_preamble - sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - 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: @@ -893,14 +805,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" - pool: - dependency: transitive - description: - name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" - source: hosted - version: "1.5.1" posix: dependency: transitive description: @@ -917,14 +821,6 @@ packages: url: "https://pub.dev" source: hosted version: "5.0.3" - pub_semver: - dependency: transitive - description: - name: pub_semver - sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" - url: "https://pub.dev" - source: hosted - version: "2.2.0" quill_native_bridge: dependency: transitive description: @@ -1001,10 +897,10 @@ packages: dependency: transitive description: name: riverpod - sha256: "82507cfb140c044f12e929c054dcdfc478359f473bcd2976af26908318e91b8e" + sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" url: "https://pub.dev" source: hosted - version: "3.0.0-dev.17" + version: "2.6.1" share_plus: dependency: "direct main" description: @@ -1077,59 +973,11 @@ 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_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - shelf_static: - dependency: transitive - description: - name: shelf_static - sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 - url: "https://pub.dev" - source: hosted - version: "1.1.3" - 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_map_stack_trace: - dependency: transitive - description: - name: source_map_stack_trace - sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b - url: "https://pub.dev" - source: hosted - version: "2.1.2" - source_maps: - dependency: transitive - description: - name: source_maps - sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" - url: "https://pub.dev" - source: hosted - version: "0.10.13" source_span: dependency: transitive description: @@ -1202,14 +1050,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.2.2" - test: - dependency: transitive - description: - name: test - sha256: "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb" - url: "https://pub.dev" - source: hosted - version: "1.26.2" test_api: dependency: transitive description: @@ -1218,14 +1058,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.6" - test_core: - dependency: transitive - description: - name: test_core - sha256: "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a" - url: "https://pub.dev" - source: hosted - version: "0.6.11" typed_data: dependency: transitive description: @@ -1394,14 +1226,6 @@ packages: url: "https://pub.dev" source: hosted version: "15.0.0" - watcher: - dependency: transitive - description: - name: watcher - sha256: "5bf046f41320ac97a469d506261797f35254fa61c641741ef32dacda98b7d39c" - url: "https://pub.dev" - source: hosted - version: "1.1.3" web: dependency: transitive description: @@ -1410,22 +1234,6 @@ 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" webdriver: dependency: transitive description: @@ -1434,14 +1242,6 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" - url: "https://pub.dev" - source: hosted - version: "1.2.1" win32: dependency: transitive description: @@ -1466,14 +1266,6 @@ packages: url: "https://pub.dev" source: hosted version: "6.5.0" - yaml: - dependency: transitive - description: - name: yaml - sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce - url: "https://pub.dev" - source: hosted - version: "3.1.3" zoe_native: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 9bb74cd4..68352468 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,7 +39,7 @@ dependencies: flutter_rust_bridge: 2.11.1 # State management - flutter_riverpod: ^3.0.0-dev.17 + flutter_riverpod: ^2.6.1 # Routing go_router: ^16.2.0 From 89bc8fa501bb961a413fcf22c111dc81610ae58e Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 9 Sep 2025 20:38:10 +0100 Subject: [PATCH 08/49] status connection indicator --- lib/features/home/screens/home_screen.dart | 8 +- .../app_bar/connection_status_indicator.dart | 58 +++++ lib/main.dart | 3 + linux/CMakeLists.txt | 3 + macos/Flutter/GeneratedPluginRegistrant.swift | 4 +- .../lib/src/providers/connection_state.dart | 3 +- .../zoe_native/lib/src/rust/api/client.dart | 10 +- .../lib/src/rust/frb_generated.dart | 212 ++++++++-------- .../lib/src/rust/frb_generated.io.dart | 3 - .../lib/src/rust/frb_generated.web.dart | 3 - .../rust/third_party/zoe_client/client.dart | 11 +- packages/zoe_native/lib/src/support.dart | 1 + packages/zoe_native/pubspec.yaml | 3 +- packages/zoe_native/rust/src/api/client.rs | 36 ++- packages/zoe_native/rust/src/frb_generated.rs | 234 +++++++++--------- pubspec.lock | 40 ++- 16 files changed, 326 insertions(+), 306 deletions(-) create mode 100644 lib/features/home/widgets/app_bar/connection_status_indicator.dart diff --git a/lib/features/home/screens/home_screen.dart b/lib/features/home/screens/home_screen.dart index da9f7b8d..70eec516 100644 --- a/lib/features/home/screens/home_screen.dart +++ b/lib/features/home/screens/home_screen.dart @@ -13,6 +13,7 @@ import 'package:zoe/common/widgets/toolkit/zoe_icon_button_widget.dart'; import 'package:zoe/core/preference_service/preferences_service.dart'; import 'package:zoe/core/routing/app_routes.dart'; import 'package:zoe/features/content/providers/content_menu_providers.dart'; +import 'package:zoe/features/home/widgets/app_bar/connection_status_indicator.dart'; import 'package:zoe/features/home/widgets/section_header/section_header_widget.dart'; import 'package:zoe/features/home/widgets/stats_section/stats_section_widget.dart'; import 'package:zoe/features/home/widgets/today_focus/todays_focus_widget.dart'; @@ -76,6 +77,7 @@ class _HomeScreenState extends ConsumerState { ), ), actions: [ + const ConnectionStatusWidget(), if (Platform.isAndroid || Platform.isIOS) _buildQrScanButton(), _buildSearchButton(), ], @@ -153,7 +155,11 @@ class _HomeScreenState extends ConsumerState { icon: Icons.description, ), const SizedBox(height: 16), - SheetListWidget(sheetsProvider: sheetListProvider, shrinkWrap: true, maxItems: 3), + SheetListWidget( + sheetsProvider: sheetListProvider, + shrinkWrap: true, + maxItems: 3, + ), const SizedBox(height: 100), // Space for FAB ], ); diff --git a/lib/features/home/widgets/app_bar/connection_status_indicator.dart b/lib/features/home/widgets/app_bar/connection_status_indicator.dart new file mode 100644 index 00000000..d7afc49a --- /dev/null +++ b/lib/features/home/widgets/app_bar/connection_status_indicator.dart @@ -0,0 +1,58 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:zoe_native/providers.dart'; +import 'package:zoe_native/zoe_native.dart'; + +class ConnectionStatusWidget extends ConsumerWidget { + const ConnectionStatusWidget({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final connectionStatus = ref.watch(connectionStatusProvider); + if (connectionStatus.isLoading) { + return SizedBox( + width: 10, + height: 10, + child: const CircularProgressIndicator(), + ); + } + if (connectionStatus.hasError) { + final message = connectionStatus.error.toString(); + return Tooltip( + message: message, + child: const Icon(Icons.error_outline_outlined, color: Colors.red), + ); + } + return _IconWidget(connectionStatus: connectionStatus.requireValue); + } +} + +class _IconWidget extends StatelessWidget { + const _IconWidget({required this.connectionStatus}); + + final OverallConnectionStatus connectionStatus; + + @override + Widget build(BuildContext context) { + final message = + "connected to ${connectionStatus.totalCount} / ${connectionStatus.totalCount}"; + + if (connectionStatus.isConnected) { + return Tooltip( + message: message, + child: const Icon(Icons.check_circle, color: Colors.green), + ); + } + if (!connectionStatus.isConnected && + connectionStatus.totalCount.compareTo(BigInt.zero) == 0) { + return Tooltip( + message: message, + child: const Icon(Icons.error_outline_outlined, color: Colors.red), + ); + } + return Tooltip( + message: message, + child: Icon(Icons.warning_amber_outlined, color: Colors.yellow), + ); + } +} diff --git a/lib/main.dart b/lib/main.dart index 3e550c93..6e420999 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -13,6 +13,9 @@ import 'core/theme/app_theme.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); await RustLib.init(); + initStorage( + appleKeychainAppGroupName: 'global.acter.zoe', + ); // FIXME: needs to be changed to env vars from built await PreferencesService().init(); runApp(const ProviderScope(child: MyApp())); diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt index b830104b..64827a20 100644 --- a/linux/CMakeLists.txt +++ b/linux/CMakeLists.txt @@ -44,6 +44,9 @@ function(APPLY_STANDARD_SETTINGS TARGET) target_compile_options(${TARGET} PRIVATE -Wall -Werror) target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") + # FIXME: workaround for flutter_secure_storage_linux deprecation issue + target_compile_options(${TARGET} PRIVATE -Wno-error=deprecated-declarations) # Allow deprecated warnings + target_compile_options(${TARGET} PRIVATE -Wno-error=deprecated-literal-operator) # Allow deprecated literal operator warnings endfunction() # Flutter library and tool build rules. diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 9867bce9..15c3f039 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -9,7 +9,7 @@ import audioplayers_darwin import emoji_picker_flutter import file_picker import file_selector_macos -import flutter_secure_storage_macos +import flutter_secure_storage_darwin import mobile_scanner import package_info_plus import path_provider_foundation @@ -24,7 +24,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin")) FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) - FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) + FlutterSecureStorageDarwinPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageDarwinPlugin")) MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) diff --git a/packages/zoe_native/lib/src/providers/connection_state.dart b/packages/zoe_native/lib/src/providers/connection_state.dart index 677f612b..2a3dbc8c 100644 --- a/packages/zoe_native/lib/src/providers/connection_state.dart +++ b/packages/zoe_native/lib/src/providers/connection_state.dart @@ -1,12 +1,13 @@ import 'package:riverpod/riverpod.dart'; import 'package:zoe_native/providers.dart'; +import 'package:zoe_native/src/rust/api/client.dart'; import 'package:zoe_native/zoe_native.dart'; final connectionStatusProvider = StreamProvider(( ref, ) async* { final client = await ref.watch(clientProvider.future); - final stream = client.overallStatusStreamFrb(); + final stream = overallStatusStream(client: client); await for (final status in stream) { yield status; } diff --git a/packages/zoe_native/lib/src/rust/api/client.dart b/packages/zoe_native/lib/src/rust/api/client.dart index afaac41b..542c9233 100644 --- a/packages/zoe_native/lib/src/rust/api/client.dart +++ b/packages/zoe_native/lib/src/rust/api/client.dart @@ -7,11 +7,5 @@ import '../frb_generated.dart'; import '../third_party/zoe_client/client.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; -abstract class ClientExt { - /// Create a stream of overall connection status for Flutter Rust Bridge - /// - /// This is a Flutter Rust Bridge compatible version that uses StreamSink instead of - /// returning a Stream directly. It spawns a background task that monitors relay - /// status changes and sends updates to the provided sink. - Stream overallStatusStreamFrb(); -} +Stream overallStatusStream({required Client client}) => + RustLib.instance.api.crateApiClientOverallStatusStream(client: client); diff --git a/packages/zoe_native/lib/src/rust/frb_generated.dart b/packages/zoe_native/lib/src/rust/frb_generated.dart index 306e9e35..41aba124 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.dart @@ -74,7 +74,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.11.1'; @override - int get rustContentHash => 714541045; + int get rustContentHash => 794315862; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -167,10 +167,6 @@ abstract class RustLibApi extends BaseApi { required Client that, }); - Stream zoeClientClientClientOverallStatusStreamFrb({ - required Client that, - }); - Future zoeClientClientClientReconnectFailedRelays({ required Client that, }); @@ -344,6 +340,10 @@ abstract class RustLibApi extends BaseApi { Future crateApiSimpleInitApp(); + Stream crateApiClientOverallStatusStream({ + required Client client, + }); + Future zoeClientUtilResolveToSocketAddr({required String s}); Future zoeClientFrbApiSigningKeyFromHex({required String hex}); @@ -1313,50 +1313,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["that"], ); - @override - Stream zoeClientClientClientOverallStatusStreamFrb({ - required Client that, - }) { - final sink = RustStreamSink(); - unawaited( - handler.executeNormal( - NormalTask( - callFfi: (port_) { - final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( - that, - serializer, - ); - sse_encode_StreamSink_overall_connection_status_Sse( - sink, - serializer, - ); - pdeCallFfi( - generalizedFrbRustBinding, - serializer, - funcId: 23, - port: port_, - ); - }, - codec: SseCodec( - decodeSuccessData: sse_decode_unit, - decodeErrorData: null, - ), - constMeta: kZoeClientClientClientOverallStatusStreamFrbConstMeta, - argValues: [that, sink], - apiImpl: this, - ), - ), - ); - return sink.stream; - } - - TaskConstMeta get kZoeClientClientClientOverallStatusStreamFrbConstMeta => - const TaskConstMeta( - debugName: "Client_overall_status_stream_frb", - argNames: ["that", "sink"], - ); - @override Future zoeClientClientClientReconnectFailedRelays({ required Client that, @@ -1372,7 +1328,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 24, + funcId: 23, port: port_, ); }, @@ -1413,7 +1369,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 25, + funcId: 24, port: port_, ); }, @@ -1459,7 +1415,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 26, + funcId: 25, port: port_, ); }, @@ -1500,7 +1456,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 27, + funcId: 26, port: port_, ); }, @@ -1542,7 +1498,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 28, + funcId: 27, port: port_, ); }, @@ -1584,7 +1540,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 29, + funcId: 28, port: port_, ); }, @@ -1621,7 +1577,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 30, + funcId: 29, port: port_, ); }, @@ -1651,7 +1607,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 31, + funcId: 30, port: port_, ); }, @@ -1687,7 +1643,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 32, + funcId: 31, port: port_, ); }, @@ -1721,7 +1677,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 33, + funcId: 32, port: port_, ); }, @@ -1757,7 +1713,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 34, + funcId: 33, port: port_, ); }, @@ -1792,7 +1748,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 35, + funcId: 34, port: port_, ); }, @@ -1823,7 +1779,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 36)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 35)!; }, codec: SseCodec( decodeSuccessData: @@ -1858,7 +1814,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 37)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 36)!; }, codec: SseCodec( decodeSuccessData: @@ -1897,7 +1853,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { info, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 38)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 37)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -1935,7 +1891,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { status, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 39)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 38)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -1968,7 +1924,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 40)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 39)!; }, codec: SseCodec( decodeSuccessData: @@ -2002,7 +1958,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 41)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 40)!; }, codec: SseCodec( decodeSuccessData: @@ -2039,7 +1995,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { relayAddress, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 42)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 41)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2077,7 +2033,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { relayId, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 43)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 42)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2108,7 +2064,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 44)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 43)!; }, codec: SseCodec( decodeSuccessData: @@ -2142,7 +2098,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 45)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 44)!; }, codec: SseCodec( decodeSuccessData: @@ -2176,7 +2132,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { that, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 46)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 45)!; }, codec: SseCodec( decodeSuccessData: @@ -2215,7 +2171,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { relayAddress, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 47)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 46)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2253,7 +2209,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { relayId, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 48)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 47)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2291,7 +2247,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { status, serializer, ); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 49)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 48)!; }, codec: SseCodec( decodeSuccessData: sse_decode_unit, @@ -2327,7 +2283,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 50, + funcId: 49, port: port_, ); }, @@ -2358,7 +2314,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 51, + funcId: 50, port: port_, ); }, @@ -2394,7 +2350,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 52, + funcId: 51, port: port_, ); }, @@ -2431,7 +2387,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 54, + funcId: 52, port: port_, ); }, @@ -2467,7 +2423,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 55, + funcId: 53, port: port_, ); }, @@ -2497,7 +2453,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 56, + funcId: 54, port: port_, ); }, @@ -2531,7 +2487,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 57, + funcId: 55, port: port_, ); }, @@ -2569,7 +2525,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 58, + funcId: 56, port: port_, ); }, @@ -2603,7 +2559,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 59, + funcId: 57, port: port_, ); }, @@ -2639,7 +2595,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 60, + funcId: 58, port: port_, ); }, @@ -2680,7 +2636,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 61, + funcId: 59, port: port_, ); }, @@ -2711,7 +2667,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 62, + funcId: 60, port: port_, ); }, @@ -2743,7 +2699,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 63, + funcId: 61, port: port_, ); }, @@ -2774,7 +2730,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 64, + funcId: 62, port: port_, ); }, @@ -2799,7 +2755,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(name, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 65)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 63)!; }, codec: SseCodec( decodeSuccessData: sse_decode_String, @@ -2824,7 +2780,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 66, + funcId: 64, port: port_, ); }, @@ -2842,6 +2798,50 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kCrateApiSimpleInitAppConstMeta => const TaskConstMeta(debugName: "init_app", argNames: []); + @override + Stream crateApiClientOverallStatusStream({ + required Client client, + }) { + final sink = RustStreamSink(); + unawaited( + handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + client, + serializer, + ); + sse_encode_StreamSink_overall_connection_status_Sse( + sink, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 65, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiClientOverallStatusStreamConstMeta, + argValues: [client, sink], + apiImpl: this, + ), + ), + ); + return sink.stream; + } + + TaskConstMeta get kCrateApiClientOverallStatusStreamConstMeta => + const TaskConstMeta( + debugName: "overall_status_stream", + argNames: ["client", "sink"], + ); + @override Future zoeClientUtilResolveToSocketAddr({required String s}) { return handler.executeNormal( @@ -2852,7 +2852,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 67, + funcId: 66, port: port_, ); }, @@ -2881,7 +2881,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 68, + funcId: 67, port: port_, ); }, @@ -2911,7 +2911,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 69, + funcId: 68, port: port_, ); }, @@ -2945,7 +2945,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 70, + funcId: 69, port: port_, ); }, @@ -2976,7 +2976,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 71, + funcId: 70, port: port_, ); }, @@ -3007,7 +3007,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 72, + funcId: 71, port: port_, ); }, @@ -3040,7 +3040,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 73, + funcId: 72, port: port_, ); }, @@ -3710,12 +3710,6 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as String; } - @protected - ClientExt dco_decode_TraitDef_ClientExt(dynamic raw) { - // Codec=Dco (DartCObject based), see doc to use other codecs - throw UnimplementedError(); - } - @protected Algorithm dco_decode_algorithm(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -5587,16 +5581,6 @@ class ClientImpl extends RustOpaque implements Client { Future overallStatus() => RustLib.instance.api.zoeClientClientClientOverallStatus(that: this); - /// Create a stream of overall connection status for Flutter Rust Bridge - /// - /// This is a Flutter Rust Bridge compatible version that uses StreamSink instead of - /// returning a Stream directly. It spawns a background task that monitors relay - /// status changes and sends updates to the provided sink. - Stream overallStatusStreamFrb() => RustLib - .instance - .api - .zoeClientClientClientOverallStatusStreamFrb(that: this); - /// Attempt to reconnect to all failed relays Future reconnectFailedRelays() => RustLib.instance.api .zoeClientClientClientReconnectFailedRelays(that: this); diff --git a/packages/zoe_native/lib/src/rust/frb_generated.io.dart b/packages/zoe_native/lib/src/rust/frb_generated.io.dart index 46c2dc14..8806bdef 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.io.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.io.dart @@ -429,9 +429,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected String dco_decode_String(dynamic raw); - @protected - ClientExt dco_decode_TraitDef_ClientExt(dynamic raw); - @protected Algorithm dco_decode_algorithm(dynamic raw); diff --git a/packages/zoe_native/lib/src/rust/frb_generated.web.dart b/packages/zoe_native/lib/src/rust/frb_generated.web.dart index 154921bb..1290bcc3 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.web.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.web.dart @@ -431,9 +431,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { @protected String dco_decode_String(dynamic raw); - @protected - ClientExt dco_decode_TraitDef_ClientExt(dynamic raw); - @protected Algorithm dco_decode_algorithm(dynamic raw); diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart index 9a27ded9..eb7b6d65 100644 --- a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client.dart @@ -3,7 +3,6 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import -import '../../api/client.dart'; import '../../frb_generated.dart'; import '../../lib.dart'; import '../zoe_wire_protocol/keys.dart'; @@ -14,7 +13,7 @@ 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): `clone` // Rust type: RustOpaqueMoi> -abstract class Client implements RustOpaqueInterface, ClientExt { +abstract class Client implements RustOpaqueInterface { /// Add a relay server to the client /// /// This will attempt to connect to all addresses in the RelayAddress in random order @@ -59,14 +58,6 @@ abstract class Client implements RustOpaqueInterface, ClientExt { /// instead. Future overallStatus(); - /// Create a stream of overall connection status for Flutter Rust Bridge - /// - /// This is a Flutter Rust Bridge compatible version that uses StreamSink instead of - /// returning a Stream directly. It spawns a background task that monitors relay - /// status changes and sends updates to the provided sink. - @override - Stream overallStatusStreamFrb(); - /// Attempt to reconnect to all failed relays Future reconnectFailedRelays(); diff --git a/packages/zoe_native/lib/src/support.dart b/packages/zoe_native/lib/src/support.dart index 0467b4bc..120e5e4a 100644 --- a/packages/zoe_native/lib/src/support.dart +++ b/packages/zoe_native/lib/src/support.dart @@ -174,6 +174,7 @@ Future _defaultClientBuilder({ serverPublicKey: await VerifyingKey.fromHex(hex: serverKey), serverAddr: await resolveToSocketAddr(s: serverAddr), ); + // builder.autoconnect(autoconnect: true); return builder; } diff --git a/packages/zoe_native/pubspec.yaml b/packages/zoe_native/pubspec.yaml index 038f1e25..667cf2f0 100644 --- a/packages/zoe_native/pubspec.yaml +++ b/packages/zoe_native/pubspec.yaml @@ -11,13 +11,12 @@ dependencies: flutter: sdk: flutter flutter_rust_bridge: 2.11.1 - flutter_secure_storage: ^9.2.4 + flutter_secure_storage: ^10.0.0-beta.4 package_info_plus: ^8.3.1 path: ^1.9.1 path_provider: ^2.1.5 plugin_platform_interface: ^2.0.2 riverpod: ^2.6.1 - shared_preferences: ^2.5.3 collection: any logging: ^1.3.0 diff --git a/packages/zoe_native/rust/src/api/client.rs b/packages/zoe_native/rust/src/api/client.rs index 082bb08e..1eb5dcc3 100644 --- a/packages/zoe_native/rust/src/api/client.rs +++ b/packages/zoe_native/rust/src/api/client.rs @@ -3,30 +3,24 @@ use flutter_rust_bridge::frb; use tokio; use zoe_client::OverallConnectionStatus; -use extend::ext; use futures::StreamExt; use zoe_client::Client; -#[ext] +// TODO: overwrites here don't work because async but we need it to be in an async +// block due to needing the tokio-spawn. + #[frb] -pub impl Client { - /// Create a stream of overall connection status for Flutter Rust Bridge - /// - /// This is a Flutter Rust Bridge compatible version that uses StreamSink instead of - /// returning a Stream directly. It spawns a background task that monitors relay - /// status changes and sends updates to the provided sink. - fn overall_status_stream_frb(&self, sink: StreamSink) { - let client = self.clone(); +pub async fn overall_status_stream(client: &Client, sink: StreamSink) { + let client = client.clone(); - tokio::spawn(async move { - let stream = client.overall_status_stream(); - futures::pin_mut!(stream); - while let Some(status) = stream.next().await { - // Send update to sink - if sink.add(status).is_err() { - break; // Sink closed, stop the task - } + tokio::spawn(async move { + let stream = client.overall_status_stream(); + futures::pin_mut!(stream); + while let Some(status) = stream.next().await { + // Send update to sink + if sink.add(status).is_err() { + break; // Sink closed, stop the task } - }); - } -} + } + }); +} \ No newline at end of file diff --git a/packages/zoe_native/rust/src/frb_generated.rs b/packages/zoe_native/rust/src/frb_generated.rs index bcc24353..02070964 100644 --- a/packages/zoe_native/rust/src/frb_generated.rs +++ b/packages/zoe_native/rust/src/frb_generated.rs @@ -25,7 +25,6 @@ // Section: imports -use crate::api::client::ClientExt; use crate::*; use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt}; use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; @@ -48,7 +47,7 @@ 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 = 714541045; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 794315862; // Section: executor @@ -1195,64 +1194,6 @@ fn wire__zoe_client__client__Client_overall_status_impl( }, ) } -fn wire__zoe_client__client__Client_overall_status_stream_frb_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: "Client_overall_status_stream_frb", - 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| { - 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({ - zoe_client::client::Client::overall_status_stream_frb( - &*api_that_guard, - api_sink, - ); - })?; - Ok(output_ok) - })()) - } - }, - ) -} fn wire__zoe_client__client__Client_reconnect_failed_relays_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -3319,6 +3260,70 @@ fn wire__crate__api__simple__init_app_impl( }, ) } +fn wire__crate__api__client__overall_status_stream_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: "overall_status_stream", + 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_client = , + >>::sse_decode(&mut deserializer); + let api_sink = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_client_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_client, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_client_guard = + Some(api_client.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_client_guard = api_client_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + crate::api::client::overall_status_stream(&*api_client_guard, api_sink) + .await; + })?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} fn wire__zoe_client__util__resolve_to_socket_addr_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -4292,124 +4297,121 @@ fn pde_ffi_dispatcher_primary_impl( 22 => { wire__zoe_client__client__Client_overall_status_impl(port, ptr, rust_vec_len, data_len) } - 23 => wire__zoe_client__client__Client_overall_status_stream_frb_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 24 => wire__zoe_client__client__Client_reconnect_failed_relays_impl( + 23 => wire__zoe_client__client__Client_reconnect_failed_relays_impl( port, ptr, rust_vec_len, data_len, ), - 25 => wire__zoe_client__client__Client_remove_relay_impl(port, ptr, rust_vec_len, data_len), - 26 => { + 24 => wire__zoe_client__client__Client_remove_relay_impl(port, ptr, rust_vec_len, data_len), + 25 => { wire__zoe_client__client__Client_retrieve_file_impl(port, ptr, rust_vec_len, data_len) } - 27 => wire__zoe_client__client__Client_retrieve_file_bytes_impl( + 26 => wire__zoe_client__client__Client_retrieve_file_bytes_impl( port, ptr, rust_vec_len, data_len, ), - 28 => wire__zoe_client__client__Client_store_data_impl(port, ptr, rust_vec_len, data_len), - 29 => wire__zoe_client__client__Client_store_file_impl(port, ptr, rust_vec_len, data_len), - 30 => { + 27 => wire__zoe_client__client__Client_store_data_impl(port, ptr, rust_vec_len, data_len), + 28 => wire__zoe_client__client__Client_store_file_impl(port, ptr, rust_vec_len, data_len), + 29 => { wire__zoe_wire_protocol__keys__KeyPair_algorithm_impl(port, ptr, rust_vec_len, data_len) } - 31 => { + 30 => { wire__zoe_wire_protocol__keys__KeyPair_from_pem_impl(port, ptr, rust_vec_len, data_len) } - 32 => wire__zoe_wire_protocol__keys__KeyPair_id_impl(port, ptr, rust_vec_len, data_len), - 33 => wire__zoe_wire_protocol__keys__KeyPair_public_key_impl( + 31 => wire__zoe_wire_protocol__keys__KeyPair_id_impl(port, ptr, rust_vec_len, data_len), + 32 => wire__zoe_wire_protocol__keys__KeyPair_public_key_impl( port, ptr, rust_vec_len, data_len, ), - 34 => wire__zoe_wire_protocol__keys__KeyPair_sign_impl(port, ptr, rust_vec_len, data_len), - 35 => wire__zoe_wire_protocol__keys__KeyPair_to_pem_impl(port, ptr, rust_vec_len, data_len), - 50 => { + 33 => wire__zoe_wire_protocol__keys__KeyPair_sign_impl(port, ptr, rust_vec_len, data_len), + 34 => wire__zoe_wire_protocol__keys__KeyPair_to_pem_impl(port, ptr, rust_vec_len, data_len), + 49 => { wire__zoe_wire_protocol__keys__Signature_encode_impl(port, ptr, rust_vec_len, data_len) } - 51 => wire__zoe_wire_protocol__keys__Signature_id_impl(port, ptr, rust_vec_len, data_len), - 52 => { + 50 => wire__zoe_wire_protocol__keys__Signature_id_impl(port, ptr, rust_vec_len, data_len), + 51 => { wire__zoe_wire_protocol__keys__SigningKey_sign_impl(port, ptr, rust_vec_len, data_len) } - 54 => wire__zoe_wire_protocol__keys__VerifyingKey_algorithm_impl( + 52 => wire__zoe_wire_protocol__keys__VerifyingKey_algorithm_impl( port, ptr, rust_vec_len, data_len, ), - 55 => wire__zoe_wire_protocol__keys__VerifyingKey_encode_impl( + 53 => wire__zoe_wire_protocol__keys__VerifyingKey_encode_impl( port, ptr, rust_vec_len, data_len, ), - 56 => wire__zoe_wire_protocol__keys__VerifyingKey_from_hex_impl( + 54 => wire__zoe_wire_protocol__keys__VerifyingKey_from_hex_impl( port, ptr, rust_vec_len, data_len, ), - 57 => wire__zoe_wire_protocol__keys__VerifyingKey_from_pem_impl( + 55 => wire__zoe_wire_protocol__keys__VerifyingKey_from_pem_impl( port, ptr, rust_vec_len, data_len, ), - 58 => { + 56 => { wire__zoe_wire_protocol__keys__VerifyingKey_id_impl(port, ptr, rust_vec_len, data_len) } - 59 => wire__zoe_wire_protocol__keys__VerifyingKey_to_bytes_impl( + 57 => wire__zoe_wire_protocol__keys__VerifyingKey_to_bytes_impl( port, ptr, rust_vec_len, data_len, ), - 60 => wire__zoe_wire_protocol__keys__VerifyingKey_to_pem_impl( + 58 => wire__zoe_wire_protocol__keys__VerifyingKey_to_pem_impl( port, ptr, rust_vec_len, data_len, ), - 61 => wire__zoe_wire_protocol__keys__VerifyingKey_verify_impl( + 59 => wire__zoe_wire_protocol__keys__VerifyingKey_verify_impl( port, ptr, rust_vec_len, data_len, ), - 62 => wire__zoe_client__frb_api__create_signing_key_random_impl( + 60 => wire__zoe_client__frb_api__create_signing_key_random_impl( port, ptr, rust_vec_len, data_len, ), - 63 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), - 64 => wire__zoe_client__frb_api__frb_init_impl(port, ptr, rust_vec_len, data_len), - 66 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), - 67 => { + 61 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), + 62 => wire__zoe_client__frb_api__frb_init_impl(port, ptr, rust_vec_len, data_len), + 64 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), + 65 => { + wire__crate__api__client__overall_status_stream_impl(port, ptr, rust_vec_len, data_len) + } + 66 => { wire__zoe_client__util__resolve_to_socket_addr_impl(port, ptr, rust_vec_len, data_len) } - 68 => { + 67 => { wire__zoe_client__frb_api__signing_key_from_hex_impl(port, ptr, rust_vec_len, data_len) } - 69 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( + 68 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( port, ptr, rust_vec_len, data_len, ), - 70 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), - 71 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), - 72 => { + 69 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), + 70 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), + 71 => { wire__zoe_client__frb_api__socket_addr_to_string_impl(port, ptr, rust_vec_len, data_len) } - 73 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( + 72 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( port, ptr, rust_vec_len, @@ -4427,77 +4429,77 @@ 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 { - 36 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_info_impl( + 35 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_info_impl( ptr, rust_vec_len, data_len, ), - 37 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_status_impl( + 36 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_get_status_impl( ptr, rust_vec_len, data_len, ), - 38 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_info_impl( + 37 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_info_impl( ptr, rust_vec_len, data_len, ), - 39 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_status_impl( + 38 => wire__zoe_client__client__RelayConnectionInfo_auto_accessor_set_status_impl( ptr, rust_vec_len, data_len, ), - 40 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_address_impl( + 39 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_address_impl( ptr, rust_vec_len, data_len, ), - 41 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_id_impl( + 40 => wire__zoe_client__client__RelayInfo_auto_accessor_get_relay_id_impl( ptr, rust_vec_len, data_len, ), - 42 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_address_impl( + 41 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_address_impl( ptr, rust_vec_len, data_len, ), - 43 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_id_impl( + 42 => wire__zoe_client__client__RelayInfo_auto_accessor_set_relay_id_impl( ptr, rust_vec_len, data_len, ), - 44 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_address_impl( + 43 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_address_impl( ptr, rust_vec_len, data_len, ), - 45 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_id_impl( + 44 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_relay_id_impl( ptr, rust_vec_len, data_len, ), - 46 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_status_impl( + 45 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_get_status_impl( ptr, rust_vec_len, data_len, ), - 47 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_address_impl( + 46 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_address_impl( ptr, rust_vec_len, data_len, ), - 48 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_id_impl( + 47 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_relay_id_impl( ptr, rust_vec_len, data_len, ), - 49 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_status_impl( + 48 => wire__zoe_client__client__RelayStatusUpdate_auto_accessor_set_status_impl( ptr, rust_vec_len, data_len, ), - 65 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), + 63 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -5342,7 +5344,6 @@ mod io { // Section: imports use super::*; - use crate::api::client::ClientExt; use crate::*; use flutter_rust_bridge::for_generated::byteorder::{ NativeEndian, ReadBytesExt, WriteBytesExt, @@ -5641,7 +5642,6 @@ mod web { // Section: imports use super::*; - use crate::api::client::ClientExt; use crate::*; use flutter_rust_bridge::for_generated::byteorder::{ NativeEndian, ReadBytesExt, WriteBytesExt, diff --git a/pubspec.lock b/pubspec.lock index 3518392d..333fd355 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -397,50 +397,50 @@ packages: dependency: transitive description: name: flutter_secure_storage - sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + sha256: f7eceb0bc6f4fd0441e29d43cab9ac2a1c5ffd7ea7b64075136b718c46954874 url: "https://pub.dev" source: hosted - version: "9.2.4" - flutter_secure_storage_linux: + version: "10.0.0-beta.4" + flutter_secure_storage_darwin: dependency: transitive description: - name: flutter_secure_storage_linux - sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 + name: flutter_secure_storage_darwin + sha256: f226f2a572bed96bc6542198ebaec227150786e34311d455a7e2d3d06d951845 url: "https://pub.dev" source: hosted - version: "1.2.3" - flutter_secure_storage_macos: + version: "0.1.0" + flutter_secure_storage_linux: dependency: transitive description: - name: flutter_secure_storage_macos - sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" + name: flutter_secure_storage_linux + sha256: "9b4b73127e857cd3117d43a70fa3dddadb6e0b253be62e6a6ab85caa0742182c" url: "https://pub.dev" source: hosted - version: "3.1.3" + version: "2.0.1" flutter_secure_storage_platform_interface: dependency: transitive description: name: flutter_secure_storage_platform_interface - sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + sha256: "8ceea1223bee3c6ac1a22dabd8feefc550e4729b3675de4b5900f55afcb435d6" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "2.0.1" flutter_secure_storage_web: dependency: transitive description: name: flutter_secure_storage_web - sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + sha256: "4c3f233e739545c6cb09286eeec1cc4744138372b985113acc904f7263bef517" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "2.0.0" flutter_secure_storage_windows: dependency: transitive description: name: flutter_secure_storage_windows - sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + sha256: ff32af20f70a8d0e59b2938fc92de35b54a74671041c814275afd80e27df9f21 url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "4.0.0" flutter_shaders: dependency: transitive description: @@ -589,14 +589,6 @@ packages: url: "https://pub.dev" source: hosted version: "0.20.2" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" leak_tracker: dependency: transitive description: From b8ed044f8adc0e93ae6eb3b7bdc65836c558a783 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Wed, 10 Sep 2025 22:59:14 +0100 Subject: [PATCH 09/49] add system check-ability --- devtools_options.yaml | 3 + lib/core/routing/app_router.dart | 16 + lib/core/routing/app_routes.dart | 2 + .../screens/developer_tools_screen.dart | 171 ++ .../settings/screens/settings_screen.dart | 11 + .../settings/screens/systems_test_screen.dart | 868 +++++++++ .../settings/widgets/setting_card_widget.dart | 3 + packages/zoe_native/Cargo.lock | 142 +- packages/zoe_native/Cargo.toml | 18 +- packages/zoe_native/lib/providers.dart | 1 + .../src/providers/enhanced_systems_test.dart | 511 ++++++ .../lib/src/rust/api/system_test.dart | 84 + .../lib/src/rust/frb_generated.dart | 1267 ++++++++++++- .../lib/src/rust/frb_generated.io.dart | 280 +++ .../lib/src/rust/frb_generated.web.dart | 264 +++ .../zoe_client/client/api/relay.dart | 29 +- .../rust/third_party/zoe_client/error.dart | 10 + .../rust/third_party/zoe_client/frb_api.dart | 19 + .../third_party/zoe_client/system_check.dart | 34 + packages/zoe_native/lib/src/support.dart | 44 +- packages/zoe_native/lib/zoe_native.dart | 1 + packages/zoe_native/rust/Cargo.toml | 1 + packages/zoe_native/rust/src/api/client.rs | 2 +- packages/zoe_native/rust/src/api/mod.rs | 1 + .../zoe_native/rust/src/api/system_test.rs | 106 ++ packages/zoe_native/rust/src/frb_generated.rs | 1576 +++++++++++++++-- .../zoe_native/test/providers_smoke_test.dart | 45 +- 27 files changed, 5222 insertions(+), 287 deletions(-) create mode 100644 devtools_options.yaml create mode 100644 lib/features/settings/screens/developer_tools_screen.dart create mode 100644 lib/features/settings/screens/systems_test_screen.dart create mode 100644 packages/zoe_native/lib/src/providers/enhanced_systems_test.dart create mode 100644 packages/zoe_native/lib/src/rust/api/system_test.dart create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_client/error.dart create mode 100644 packages/zoe_native/lib/src/rust/third_party/zoe_client/system_check.dart create mode 100644 packages/zoe_native/rust/src/api/system_test.rs diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 00000000..fa0b357c --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/lib/core/routing/app_router.dart b/lib/core/routing/app_router.dart index 3a3fa82d..adcb93cd 100644 --- a/lib/core/routing/app_router.dart +++ b/lib/core/routing/app_router.dart @@ -16,6 +16,8 @@ import 'package:zoe/features/polls/screens/polls_list_screen.dart'; import 'package:zoe/features/quick-search/screens/quick_search_screen.dart'; import 'package:zoe/features/settings/screens/settings_screen.dart'; import 'package:zoe/features/settings/screens/language_selection_screen.dart'; +import 'package:zoe/features/settings/screens/developer_tools_screen.dart'; +import 'package:zoe/features/settings/screens/systems_test_screen.dart'; import 'package:zoe/features/sheet/screens/sheet_detail_screen.dart'; import 'package:zoe/features/sheet/screens/sheet_list_screen.dart'; import 'package:zoe/features/task/screens/task_detail_screen.dart'; @@ -203,6 +205,20 @@ final routerProvider = Provider((ref) { builder: (context, state) => const LanguageSelectionScreen(), ), + // Developer tools route + GoRoute( + path: AppRoutes.developerTools.route, + name: AppRoutes.developerTools.name, + builder: (context, state) => const DeveloperToolsScreen(), + ), + + // Systems test route + GoRoute( + path: AppRoutes.systemsTest.route, + name: AppRoutes.systemsTest.name, + builder: (context, state) => const SystemsTestScreen(), + ), + // WhatsApp group connect route GoRoute( path: AppRoutes.whatsappGroupConnect.route, diff --git a/lib/core/routing/app_routes.dart b/lib/core/routing/app_routes.dart index 4d7bfc1a..d20d7abc 100644 --- a/lib/core/routing/app_routes.dart +++ b/lib/core/routing/app_routes.dart @@ -19,6 +19,8 @@ enum AppRoutes { quickSearch('/quick-search'), settings('/settings'), settingLanguage('/settings/language'), + developerTools('/developer-tools'), + systemsTest('/developer-tools/systems-test'), whatsappGroupConnect('/whatsapp-group-connect/:sheetId'); final String route; diff --git a/lib/features/settings/screens/developer_tools_screen.dart b/lib/features/settings/screens/developer_tools_screen.dart new file mode 100644 index 00000000..7cd9adf2 --- /dev/null +++ b/lib/features/settings/screens/developer_tools_screen.dart @@ -0,0 +1,171 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; +import 'package:zoe/common/widgets/max_width_widget.dart'; +import 'package:zoe/common/widgets/toolkit/zoe_app_bar_widget.dart'; +import 'package:zoe/core/routing/app_routes.dart'; +import 'package:zoe/features/settings/widgets/setting_card_widget.dart'; +import 'package:zoe/features/settings/widgets/setting_item_widget.dart'; +import 'package:zoe_native/zoe_native.dart'; + +class DeveloperToolsScreen extends ConsumerWidget { + const DeveloperToolsScreen({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + return Scaffold( + appBar: _buildAppBar(context), + body: SafeArea( + child: Center( + child: MaxWidthWidget( + isScrollable: true, + padding: const EdgeInsets.symmetric(horizontal: 16), + child: _buildDeveloperToolsBody(context, ref), + ), + ), + ), + ); + } + + AppBar _buildAppBar(BuildContext context) { + return AppBar( + automaticallyImplyLeading: false, + title: const ZoeAppBar(title: 'Developer Tools'), + ); + } + + Widget _buildDeveloperToolsBody(BuildContext context, WidgetRef ref) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 16), + + // System Testing Section + _buildSystemTestingSection(context), + const SizedBox(height: 20), + + // Client Management Section + _buildClientManagementSection(context, ref), + const SizedBox(height: 20), + + // Future sections can be added here + // _buildLoggingSection(context), + // _buildNetworkSection(context), + ], + ); + } + + Widget _buildSystemTestingSection(BuildContext context) { + return SettingCardWidget( + title: 'System Testing', + children: [ + SettingItemWidget( + title: 'Systems Check', + subtitle: 'Comprehensive system diagnostics and testing', + icon: Icons.health_and_safety, + iconColor: const Color(0xFF10B981), // Emerald + onTap: () => context.push(AppRoutes.systemsTest.route), + ), + ], + ); + } + + Widget _buildClientManagementSection(BuildContext context, WidgetRef ref) { + return SettingCardWidget( + title: 'Client Management', + titleColor: const Color(0xFFEF4444), // Red warning color + children: [ + SettingItemWidget( + title: 'Reset Client', + subtitle: 'Clear stored secrets and force client regeneration', + icon: Icons.refresh, + iconColor: const Color(0xFFEF4444), // Red + onTap: () => _showResetClientDialog(context, ref), + ), + ], + ); + } + + void _showResetClientDialog(BuildContext context, WidgetRef ref) { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Reset Client'), + content: const Text( + 'This will clear all stored client secrets and force the app to generate a new client identity. ' + 'You may need to re-authenticate with services.\n\n' + 'Are you sure you want to continue?', + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(context).pop(), + child: const Text('Cancel'), + ), + TextButton( + onPressed: () async { + Navigator.of(context).pop(); + await _performClientReset(context); + }, + style: TextButton.styleFrom( + foregroundColor: const Color(0xFFEF4444), + ), + child: const Text('Reset'), + ), + ], + ); + }, + ); + } + + Future _performClientReset(BuildContext context) async { + try { + // Show loading indicator + showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return const AlertDialog( + content: Row( + mainAxisSize: MainAxisSize.min, + children: [ + CircularProgressIndicator(), + SizedBox(width: 16), + Text('Resetting client...'), + ], + ), + ); + }, + ); + + await resetClient(); + + // Close loading dialog + if (context.mounted) { + Navigator.of(context).pop(); + + // Show success message + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Client reset successfully'), + backgroundColor: Color(0xFF10B981), + ), + ); + } + } catch (e) { + // Close loading dialog if still open + if (context.mounted) { + Navigator.of(context).pop(); + + // Show error message + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text('Failed to reset client: $e'), + backgroundColor: const Color(0xFFEF4444), + ), + ); + } + } + } +} + diff --git a/lib/features/settings/screens/settings_screen.dart b/lib/features/settings/screens/settings_screen.dart index 1494712e..8c5a944b 100644 --- a/lib/features/settings/screens/settings_screen.dart +++ b/lib/features/settings/screens/settings_screen.dart @@ -12,6 +12,7 @@ import 'package:zoe/features/settings/providers/theme_provider.dart'; import 'package:zoe/features/settings/widgets/setting_card_widget.dart'; import 'package:zoe/features/settings/widgets/setting_item_widget.dart'; import 'package:zoe/l10n/generated/l10n.dart'; +import 'package:flutter/foundation.dart'; class SettingsScreen extends ConsumerWidget { const SettingsScreen({super.key}); @@ -154,6 +155,16 @@ class SettingsScreen extends ConsumerWidget { iconColor: const Color(0xFF84CC16), // Lime onTap: () {}, ), + if (kDebugMode) ...[ + const Divider(height: 1), + SettingItemWidget( + title: 'Developer Tools', + subtitle: 'System diagnostics and testing tools', + icon: Icons.developer_mode, + iconColor: const Color(0xFFFF6B35), // Orange + onTap: () => context.push(AppRoutes.developerTools.route), + ), + ], ], ); } diff --git a/lib/features/settings/screens/systems_test_screen.dart b/lib/features/settings/screens/systems_test_screen.dart new file mode 100644 index 00000000..d441e88e --- /dev/null +++ b/lib/features/settings/screens/systems_test_screen.dart @@ -0,0 +1,868 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:zoe/common/widgets/max_width_widget.dart'; +import 'package:zoe/common/widgets/toolkit/zoe_app_bar_widget.dart'; +import 'package:zoe/common/widgets/glassy_container_widget.dart'; +import 'package:zoe_native/providers.dart'; +import 'package:zoe_native/zoe_native.dart'; + +class SystemsTestScreen extends ConsumerWidget { + const SystemsTestScreen({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final systemsTestState = ref.watch(enhancedSystemsTestProvider); + + return systemsTestState.when( + data: (result) => _buildTabsWithRelayServers(context, ref, result), + loading: () => _buildLoadingScreen(context), + error: (error, stackTrace) => _buildErrorScreen(context, error), + ); + } + + Widget _buildTabsWithRelayServers( + BuildContext context, + WidgetRef ref, + EnhancedSystemsTestResult result, + ) { + final relayServers = result.clientInfo.relayServers; + final allServers = [ + // Default server first + RelayServerInfo( + address: defaultServerAddr, + keyHex: defaultServerKey, + keyId: 'default', + isConnected: false, + isDefault: true, + ), + // Then configured relay servers (excluding default) + ...relayServers.where((server) => !server.isDefault), + ]; + + return DefaultTabController( + length: allServers.length, + child: Scaffold( + appBar: _buildAppBar(context), + body: SafeArea( + child: Column( + children: [ + // Client Information Section (always visible) + Container( + margin: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), + child: _buildClientInfoSection( + context, + AsyncValue.data(result), + ), + ), + + // Tab Bar for relay servers + Container( + margin: const EdgeInsets.symmetric(horizontal: 16), + child: GlassyContainer( + child: TabBar( + isScrollable: allServers.length > 3, + tabs: allServers.map((server) { + return Tab( + icon: Icon( + server.isDefault + ? Icons.settings_ethernet + : Icons.router, + ), + text: server.isDefault + ? 'Default Server' + : server.address, + ); + }).toList(), + labelColor: Theme.of(context).colorScheme.primary, + unselectedLabelColor: Theme.of( + context, + ).colorScheme.onSurface.withValues(alpha: 0.6), + indicatorColor: Theme.of(context).colorScheme.primary, + ), + ), + ), + + // Tab Views for each relay server + Expanded( + child: TabBarView( + children: allServers.map((server) { + return _buildServerTestTab(context, ref, server, result); + }).toList(), + ), + ), + ], + ), + ), + ), + ); + } + + Widget _buildLoadingScreen(BuildContext context) { + return Scaffold( + appBar: _buildAppBar(context), + body: const Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CircularProgressIndicator(), + SizedBox(height: 16), + Text('Loading client information...'), + ], + ), + ), + ); + } + + Widget _buildErrorScreen(BuildContext context, Object error) { + return Scaffold( + appBar: _buildAppBar(context), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.error_outline, size: 64, color: Colors.red), + const SizedBox(height: 16), + Text( + 'Failed to load client information', + style: Theme.of(context).textTheme.headlineSmall, + ), + const SizedBox(height: 8), + Text( + error.toString(), + style: Theme.of(context).textTheme.bodyMedium, + textAlign: TextAlign.center, + ), + ], + ), + ), + ); + } + + AppBar _buildAppBar(BuildContext context) { + return AppBar( + automaticallyImplyLeading: false, + title: const ZoeAppBar(title: 'Systems Test'), + ); + } + + Widget _buildServerTestTab( + BuildContext context, + WidgetRef ref, + RelayServerInfo server, + EnhancedSystemsTestResult currentResult, + ) { + final systemsTestState = ref.watch(enhancedSystemsTestProvider); + + return Center( + child: MaxWidthWidget( + isScrollable: true, + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 16), + + // Server Information Section + _buildServerInfoSection(context, server), + const SizedBox(height: 20), + + // Test Control Section for this server + _buildServerTestControlSection( + context, + ref, + server, + systemsTestState, + ), + const SizedBox(height: 20), + + // Results Section - show live results as they come in + if (systemsTestState.hasValue || systemsTestState.hasError) + _buildResultsSection(context, systemsTestState), + ], + ), + ), + ); + } + + Widget _buildServerInfoSection(BuildContext context, RelayServerInfo server) { + return GlassyContainer( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon( + server.isDefault ? Icons.settings_ethernet : Icons.router, + size: 20, + ), + const SizedBox(width: 8), + Text( + server.isDefault + ? 'Default Server Information' + : 'Relay Server Information', + style: Theme.of(context).textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + ), + ), + ], + ), + const SizedBox(height: 12), + + _buildInfoRow(context, 'Address', server.address), + const SizedBox(height: 8), + _buildInfoRow(context, 'Server Key', server.keyHex), + const SizedBox(height: 8), + _buildInfoRow( + context, + 'Status', + server.isConnected ? 'Connected' : 'Disconnected', + statusColor: server.isConnected ? Colors.green : Colors.red, + ), + if (server.isDefault) ...[ + const SizedBox(height: 8), + _buildInfoRow( + context, + 'Purpose', + 'Development server for testing connectivity', + ), + ], + ], + ), + ), + ); + } + + Widget _buildServerTestControlSection( + BuildContext context, + WidgetRef ref, + RelayServerInfo server, + AsyncValue state, + ) { + final isRunning = + state.isLoading || (state.hasValue && state.value!.progress != null); + + return GlassyContainer( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon(Icons.play_circle_outline, size: 20), + const SizedBox(width: 8), + Text( + 'Systems Test for ${server.isDefault ? 'Default Server' : server.address}', + style: Theme.of(context).textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + ), + ), + ], + ), + const SizedBox(height: 16), + + SizedBox( + width: double.infinity, + child: ElevatedButton.icon( + onPressed: isRunning + ? null + : () => ref + .read(enhancedSystemsTestProvider.notifier) + .runSystemsTestForServer( + server.isDefault ? null : server, + ), + icon: isRunning + ? const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Icon(Icons.health_and_safety), + label: Text( + isRunning ? 'Running Tests...' : 'Start Systems Test', + ), + style: ElevatedButton.styleFrom( + padding: const EdgeInsets.symmetric(vertical: 12), + backgroundColor: server.isDefault + ? const Color(0xFF3B82F6) + : const Color(0xFF10B981), + foregroundColor: Colors.white, + ), + ), + ), + + // Show live progress or loading state + if (isRunning) ...[ + const SizedBox(height: 12), + _buildProgressIndicator(context, state), + const SizedBox(height: 8), + _buildProgressText(context, state, server), + ], + ], + ), + ), + ); + } + + Widget _buildProgressIndicator( + BuildContext context, + AsyncValue state, + ) { + if (state.hasValue && state.value!.progress != null) { + final progress = state.value!.progress!; + return Column( + children: [ + LinearProgressIndicator( + value: progress.progressPercent, + backgroundColor: Colors.grey.withValues(alpha: 0.3), + valueColor: AlwaysStoppedAnimation( + Theme.of(context).colorScheme.primary, + ), + ), + const SizedBox(height: 4), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + '${progress.completedTests}/${progress.totalTests} tests', + style: Theme.of(context).textTheme.bodySmall, + ), + Text( + '${progress.elapsed.inSeconds}s', + style: Theme.of(context).textTheme.bodySmall, + ), + ], + ), + ], + ); + } else { + return const LinearProgressIndicator(); + } + } + + Widget _buildProgressText( + BuildContext context, + AsyncValue state, + RelayServerInfo server, + ) { + String progressText; + + if (state.hasValue && state.value!.progress != null) { + final progress = state.value!.progress!; + progressText = 'Testing ${progress.currentTest}: ${progress.status}'; + } else { + progressText = + 'Running comprehensive system diagnostics against ${server.isDefault ? 'default server' : server.address}...'; + } + + return Text( + progressText, + style: Theme.of(context).textTheme.bodySmall?.copyWith( + color: Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.7), + ), + textAlign: TextAlign.center, + ); + } + + Widget _buildClientInfoSection( + BuildContext context, + AsyncValue state, + ) { + return GlassyContainer( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + const Icon(Icons.info_outline, size: 20), + const SizedBox(width: 8), + Text( + 'Client Information', + style: Theme.of(context).textTheme.titleMedium?.copyWith( + fontWeight: FontWeight.w600, + ), + ), + ], + ), + const SizedBox(height: 12), + + state.when( + data: (result) => + _buildClientInfoContent(context, result.clientInfo), + loading: () => _buildClientInfoPlaceholder(context), + error: (error, stackTrace) => + _buildClientInfoPlaceholder(context), + ), + ], + ), + ), + ); + } + + Widget _buildClientInfoContent(BuildContext context, ClientInfo clientInfo) { + return Column( + children: [ + _buildInfoRow(context, 'Client ID', clientInfo.clientId), + const SizedBox(height: 8), + _buildInfoRow(context, 'Server Address', clientInfo.serverAddress), + const SizedBox(height: 8), + _buildInfoRow(context, 'Server Key', clientInfo.serverKey), + const SizedBox(height: 8), + _buildInfoRow( + context, + 'Connection Status', + clientInfo.isConnected ? 'Connected' : 'Disconnected', + statusColor: clientInfo.isConnected ? Colors.green : Colors.red, + ), + ], + ); + } + + Widget _buildClientInfoPlaceholder(BuildContext context) { + return Column( + children: [ + _buildInfoRow(context, 'Client ID', 'Loading...'), + const SizedBox(height: 8), + _buildInfoRow(context, 'Server Address', 'a.dev.hellozoe.app:13918'), + const SizedBox(height: 8), + _buildInfoRow(context, 'Server Key', '00201f12...'), + const SizedBox(height: 8), + _buildInfoRow(context, 'Connection Status', 'Unknown'), + ], + ); + } + + Widget _buildInfoRow( + BuildContext context, + String label, + String value, { + Color? statusColor, + }) { + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: 120, + child: Text( + label, + style: Theme.of(context).textTheme.bodySmall?.copyWith( + color: Theme.of( + context, + ).colorScheme.onSurface.withValues(alpha: 0.7), + ), + ), + ), + Expanded( + child: Text( + value, + style: Theme.of(context).textTheme.bodySmall?.copyWith( + fontFamily: 'monospace', + color: statusColor, + ), + ), + ), + ], + ); + } + + Widget _buildResultsSection( + BuildContext context, + AsyncValue state, + ) { + return state.when( + data: (result) => _buildTestResults(context, result), + loading: () => const SizedBox.shrink(), + error: (error, stackTrace) => _buildErrorResults(context, error), + ); + } + + Widget _buildTestResults( + BuildContext context, + EnhancedSystemsTestResult result, + ) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Overall Status (only show if testing is complete) + if (result.progress == null) + Column( + children: [ + _buildOverallStatus(context, result), + const SizedBox(height: 20), + ], + ), + + // Category Results - show all categories with live status + ...result.categories.map((streamingCategory) { + return Column( + children: [ + _buildStreamingCategoryResult(context, streamingCategory), + const SizedBox(height: 16), + ], + ); + }), + ], + ); + } + + Widget _buildOverallStatus( + BuildContext context, + EnhancedSystemsTestResult result, + ) { + return GlassyContainer( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon( + result.success ? Icons.check_circle : Icons.error, + color: result.success ? Colors.green : Colors.red, + size: 24, + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + result.success + ? 'All Systems Operational' + : 'Issues Detected', + style: Theme.of(context).textTheme.titleMedium + ?.copyWith( + fontWeight: FontWeight.w600, + color: result.success ? Colors.green : Colors.red, + ), + ), + Text( + 'Completed at ${result.timestamp.toLocal().toString().split('.')[0]}', + style: Theme.of(context).textTheme.bodySmall, + ), + Text( + 'Duration: ${result.totalDuration.inMilliseconds}ms', + style: Theme.of(context).textTheme.bodySmall, + ), + ], + ), + ), + ], + ), + ], + ), + ), + ); + } + + Widget _buildStreamingCategoryResult( + BuildContext context, + StreamingTestCategory category, + ) { + // Determine icon and color based on status + IconData icon; + Color iconColor; + String statusText; + + if (category.isCurrentlyTesting) { + icon = Icons.hourglass_empty; + iconColor = Colors.orange; + statusText = 'Testing in progress...'; + } else if (!category.isCompleted) { + icon = Icons.schedule; + iconColor = Colors.grey; + statusText = 'Pending'; + } else { + icon = category.hasFailures ? Icons.error : Icons.check_circle; + iconColor = category.hasFailures ? Colors.red : Colors.green; + statusText = category.hasFailures ? 'Failed' : 'Passed'; + } + + return GlassyContainer( + child: Theme( + data: Theme.of(context).copyWith(dividerColor: Colors.transparent), + child: ExpansionTile( + leading: category.isCurrentlyTesting + ? SizedBox( + width: 20, + height: 20, + child: CircularProgressIndicator( + strokeWidth: 2, + valueColor: AlwaysStoppedAnimation(iconColor), + ), + ) + : Icon(icon, color: iconColor, size: 20), + title: Text( + category.displayName, + style: Theme.of( + context, + ).textTheme.titleSmall?.copyWith(fontWeight: FontWeight.w600), + ), + subtitle: Text( + category.isCurrentlyTesting || !category.isCompleted + ? statusText + : category.description, + style: Theme.of(context).textTheme.bodySmall?.copyWith( + color: category.isCurrentlyTesting ? Colors.orange : null, + ), + ), + children: [ + if (category.isCompleted && category.tests.isNotEmpty) ...[ + const Divider(), + Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Test Results', + style: Theme.of(context).textTheme.titleSmall?.copyWith( + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 8), + ...category.tests.map( + (test) => _buildTestInfoItem(context, test), + ), + ], + ), + ), + ] else if (category.isCompleted) ...[ + const Padding( + padding: EdgeInsets.all(16), + child: Text( + 'No detailed test information available.', + style: TextStyle( + fontStyle: FontStyle.italic, + color: Colors.grey, + ), + ), + ), + ] else if (category.isCurrentlyTesting) ...[ + const Padding( + padding: EdgeInsets.all(16), + child: Row( + children: [ + SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator(strokeWidth: 2), + ), + SizedBox(width: 8), + Text( + 'Test is currently running...', + style: TextStyle( + fontStyle: FontStyle.italic, + color: Colors.orange, + ), + ), + ], + ), + ), + ] else ...[ + const Padding( + padding: EdgeInsets.all(16), + child: Text( + 'Test has not been run yet.', + style: TextStyle( + fontStyle: FontStyle.italic, + color: Colors.grey, + ), + ), + ), + ], + ], + ), + ), + ); + } + + Widget _buildTestInfoItem(BuildContext context, dynamic test) { + return FutureBuilder>( + future: _getTestInfoData(test), + builder: (context, snapshot) { + if (!snapshot.hasData) { + return Container( + margin: const EdgeInsets.only(bottom: 4), + child: Row( + children: [ + SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator(strokeWidth: 2), + ), + const SizedBox(width: 8), + Text( + 'Loading test info...', + style: Theme.of(context).textTheme.bodySmall, + ), + ], + ), + ); + } + + final testData = snapshot.data!; + final name = testData['name'] as String; + final isPassed = testData['isPassed'] as bool; + final isFailed = testData['isFailed'] as bool; + final error = testData['error'] as String?; + final details = testData['details'] as List; + final durationMs = testData['durationMs'] as int; + + return Container( + margin: const EdgeInsets.only(bottom: 8), + padding: const EdgeInsets.all(12), + decoration: BoxDecoration( + color: isPassed + ? Colors.green.withValues(alpha: 0.1) + : isFailed + ? Colors.red.withValues(alpha: 0.1) + : Colors.grey.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(8), + border: Border.all( + color: isPassed + ? Colors.green.withValues(alpha: 0.3) + : isFailed + ? Colors.red.withValues(alpha: 0.3) + : Colors.grey.withValues(alpha: 0.3), + ), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Icon( + isPassed + ? Icons.check_circle + : isFailed + ? Icons.error + : Icons.help_outline, + color: isPassed + ? Colors.green + : isFailed + ? Colors.red + : Colors.grey, + size: 16, + ), + const SizedBox(width: 8), + Expanded( + child: Text( + name, + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + fontWeight: FontWeight.w600, + ), + ), + ), + Text( + '${durationMs}ms', + style: Theme.of( + context, + ).textTheme.bodySmall?.copyWith(color: Colors.grey), + ), + ], + ), + if (error != null) ...[ + const SizedBox(height: 8), + Text( + 'Error: $error', + style: Theme.of(context).textTheme.bodySmall?.copyWith( + color: Colors.red, + fontWeight: FontWeight.w500, + ), + ), + ], + if (details.isNotEmpty) ...[ + const SizedBox(height: 8), + Container( + width: double.infinity, + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: Colors.black.withValues(alpha: 0.8), + borderRadius: BorderRadius.circular(4), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: details + .map( + (detail) => Text( + detail, + style: const TextStyle( + fontFamily: 'monospace', + fontSize: 11, + color: Colors.white, + ), + ), + ) + .toList(), + ), + ), + ], + ], + ), + ); + }, + ); + } + + Future> _getTestInfoData(dynamic test) async { + try { + final name = await testInfoGetName(test: test); + final isPassed = await testInfoIsPassed(test: test); + final isFailed = await testInfoIsFailed(test: test); + final error = await testInfoGetError(test: test); + final details = await testInfoGetDetails(test: test); + final durationMs = await testInfoDurationMs(test: test); + + return { + 'name': name, + 'isPassed': isPassed, + 'isFailed': isFailed, + 'error': error, + 'details': details, + 'durationMs': durationMs.toInt(), + }; + } catch (e) { + return { + 'name': 'Unknown Test', + 'isPassed': false, + 'isFailed': true, + 'error': 'Failed to load test info: $e', + 'details': [], + 'durationMs': 0, + }; + } + } + + Widget _buildErrorResults(BuildContext context, Object error) { + return GlassyContainer( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + children: [ + const Icon(Icons.error_outline, size: 48, color: Colors.red), + const SizedBox(height: 16), + Text( + 'Test Failed', + style: Theme.of(context).textTheme.headlineSmall?.copyWith( + color: Colors.red, + fontWeight: FontWeight.w600, + ), + ), + const SizedBox(height: 8), + Text( + error.toString(), + style: Theme.of(context).textTheme.bodyMedium, + textAlign: TextAlign.center, + ), + ], + ), + ), + ); + } +} diff --git a/lib/features/settings/widgets/setting_card_widget.dart b/lib/features/settings/widgets/setting_card_widget.dart index a21b2cc5..6c5a0310 100644 --- a/lib/features/settings/widgets/setting_card_widget.dart +++ b/lib/features/settings/widgets/setting_card_widget.dart @@ -4,10 +4,12 @@ import 'package:zoe/common/widgets/glassy_container_widget.dart'; class SettingCardWidget extends StatelessWidget { final String title; final List children; + final Color? titleColor; const SettingCardWidget({ super.key, required this.title, required this.children, + this.titleColor, }); @override @@ -22,6 +24,7 @@ class SettingCardWidget extends StatelessWidget { style: Theme.of(context).textTheme.titleSmall?.copyWith( fontWeight: FontWeight.w600, letterSpacing: 0.5, + color: titleColor, ), ), ), diff --git a/packages/zoe_native/Cargo.lock b/packages/zoe_native/Cargo.lock index 5d24b5be..736499dc 100644 --- a/packages/zoe_native/Cargo.lock +++ b/packages/zoe_native/Cargo.lock @@ -358,9 +358,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.13.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" +checksum = "94b8ff6c09cd57b16da53641caa860168b88c172a5ee163b0288d3d6eea12786" dependencies = [ "aws-lc-sys", "zeroize", @@ -368,9 +368,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.30.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" +checksum = "0e44d16778acaf6a9ec9899b92cebd65580b83f685446bf2e1f5d3d732f99dcd" dependencies = [ "bindgen", "cc", @@ -471,25 +471,22 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.69.5" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "bitflags 2.9.4", "cexpr", "clang-sys", "itertools", - "lazy_static", - "lazycell", "log", "prettyplease", "proc-macro2", "quote", "regex", - "rustc-hash 1.1.0", + "rustc-hash", "shlex", "syn 2.0.106", - "which", ] [[package]] @@ -891,7 +888,7 @@ dependencies = [ [[package]] name = "core-models" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" +source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" dependencies = [ "hax-lib", "pastey", @@ -922,6 +919,15 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + [[package]] name = "critical-section" version = "1.2.0" @@ -1517,7 +1523,6 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "postcard", "proc-macro2", @@ -1726,7 +1731,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.4+wasi-0.2.4", + "wasi 0.14.5+wasi-0.2.4", "wasm-bindgen", ] @@ -1995,15 +2000,6 @@ version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad6880c8d4a9ebf39c6e8b77007ce223f646a4d21ce29d99f70cb16420545425" -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "hostname-validator" version = "1.1.1" @@ -2598,7 +2594,7 @@ dependencies = [ "iroh-quinn-proto", "iroh-quinn-udp", "pin-project-lite", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "socket2 0.5.10", "thiserror 2.0.16", @@ -2617,7 +2613,7 @@ dependencies = [ "getrandom 0.2.16", "rand 0.8.5", "ring", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "rustls-pki-types", "rustls-platform-verifier 0.5.3", @@ -2768,9 +2764,9 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" -version = "0.12.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" dependencies = [ "either", ] @@ -2829,12 +2825,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libc" version = "0.2.175" @@ -2854,7 +2844,7 @@ dependencies = [ [[package]] name = "libcrux-intrinsics" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" +source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" dependencies = [ "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", "hax-lib", @@ -2863,7 +2853,7 @@ dependencies = [ [[package]] name = "libcrux-macros" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" +source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" dependencies = [ "quote", "syn 2.0.106", @@ -2872,7 +2862,7 @@ dependencies = [ [[package]] name = "libcrux-ml-dsa" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" +source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" dependencies = [ "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", "hax-lib", @@ -2908,7 +2898,7 @@ dependencies = [ [[package]] name = "libcrux-platform" version = "0.0.2" -source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" +source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" dependencies = [ "libc", ] @@ -2925,7 +2915,7 @@ dependencies = [ [[package]] name = "libcrux-secrets" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" +source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" dependencies = [ "hax-lib", ] @@ -2944,7 +2934,7 @@ dependencies = [ [[package]] name = "libcrux-sha3" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" +source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" dependencies = [ "hax-lib", "libcrux-intrinsics 0.0.3 (git+https://github.com/cryspen/libcrux)", @@ -2955,7 +2945,7 @@ dependencies = [ [[package]] name = "libcrux-traits" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d31e614e52a5b0d4d86d85f259594a1c9f6d9897" +source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" dependencies = [ "libcrux-secrets 0.0.3 (git+https://github.com/cryspen/libcrux)", "rand 0.9.2", @@ -2988,12 +2978,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -4114,7 +4098,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "socket2 0.6.0", "thiserror 2.0.16", @@ -4135,7 +4119,7 @@ dependencies = [ "lru-slab", "rand 0.9.2", "ring", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "rustls-pki-types", "rustls-platform-verifier 0.6.1", @@ -4387,7 +4371,7 @@ checksum = "23bbed272e39c47a095a5242218a67412a220006842558b03fe2935e8f3d7b92" dependencies = [ "cfg-if", "libc", - "rustix 1.1.2", + "rustix", "windows 0.62.0", ] @@ -4547,12 +4531,6 @@ version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -4577,19 +4555,6 @@ dependencies = [ "nom", ] -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.9.4", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - [[package]] name = "rustix" version = "1.1.2" @@ -4599,7 +4564,7 @@ dependencies = [ "bitflags 2.9.4", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys", "windows-sys 0.61.0", ] @@ -5291,7 +5256,7 @@ dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", - "rustix 1.1.2", + "rustix", "windows-sys 0.61.0", ] @@ -5760,9 +5725,9 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-normalization" @@ -5875,9 +5840,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.4+wasi-0.2.4" +version = "0.14.5+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88a5f4a424faf49c3c2c344f166f0662341d470ea185e939657aaff130f0ec4a" +checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.0+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24" dependencies = [ "wit-bindgen", ] @@ -6023,18 +5997,6 @@ dependencies = [ "rustls-pki-types", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - [[package]] name = "widestring" version = "1.2.0" @@ -6826,7 +6788,6 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "blake3", "flutter_rust_bridge", @@ -6844,7 +6805,6 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "anyhow", "chrono", @@ -6869,7 +6829,6 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "anyhow", "async-once-cell", @@ -6877,6 +6836,7 @@ dependencies = [ "async-trait", "blake3", "chacha20poly1305", + "crc32fast", "ed25519-dalek", "extend", "eyeball", @@ -6897,6 +6857,7 @@ dependencies = [ "tokio-stream", "tokio-util", "tracing", + "tracing-subscriber", "uuid", "zoe-app-primitives", "zoe-blob-store", @@ -6909,7 +6870,6 @@ dependencies = [ [[package]] name = "zoe-client-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "anyhow", "async-trait", @@ -6929,7 +6889,6 @@ dependencies = [ [[package]] name = "zoe-encrypted-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "aead", "aes-gcm", @@ -6942,7 +6901,6 @@ dependencies = [ [[package]] name = "zoe-state-machine" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "blake3", "ed25519-dalek", @@ -6961,7 +6919,6 @@ dependencies = [ [[package]] name = "zoe-wire-protocol" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#e5924d26a1662afbac11a190e274f2df32e731ef" dependencies = [ "anyhow", "argon2", @@ -7014,6 +6971,7 @@ name = "zoe_native" version = "0.1.0" dependencies = [ "async-trait", + "chrono", "extend", "flutter_rust_bridge", "futures", diff --git a/packages/zoe_native/Cargo.toml b/packages/zoe_native/Cargo.toml index 4d8c789a..f6cf407d 100644 --- a/packages/zoe_native/Cargo.toml +++ b/packages/zoe_native/Cargo.toml @@ -7,18 +7,18 @@ members = ["rust"] flutter_rust_bridge = "=2.11.1" [workspace.dependencies.zoe-client] -# path = "../../../zoe-relay/crates/client" -git = "https://github.com/acterglobal/zoe-relay.git" -branch = "main" +path = "../../../zoe-relay/crates/client" +# git = "https://github.com/acterglobal/zoe-relay.git" +# branch = "main" features = ["frb-api"] [workspace.dependencies.zoe-wire-protocol] -# path = "../../../zoe-relay/crates/wire-protocol" -git = "https://github.com/acterglobal/zoe-relay.git" -branch = "main" +path = "../../../zoe-relay/crates/wire-protocol" +# git = "https://github.com/acterglobal/zoe-relay.git" +# branch = "main" [workspace.dependencies.zoe-app-primitives] -# path = "../../../zoe-relay/crates/app-primitives" -git = "https://github.com/acterglobal/zoe-relay.git" -branch = "main" +path = "../../../zoe-relay/crates/app-primitives" +# git = "https://github.com/acterglobal/zoe-relay.git" +# branch = "main" features = ["frb-api"] \ No newline at end of file diff --git a/packages/zoe_native/lib/providers.dart b/packages/zoe_native/lib/providers.dart index 342fea25..eae5efe1 100644 --- a/packages/zoe_native/lib/providers.dart +++ b/packages/zoe_native/lib/providers.dart @@ -1,3 +1,4 @@ export 'src/providers/client.dart'; export 'src/providers/user_id.dart'; export 'src/providers/connection_state.dart'; +export 'src/providers/enhanced_systems_test.dart'; diff --git a/packages/zoe_native/lib/src/providers/enhanced_systems_test.dart b/packages/zoe_native/lib/src/providers/enhanced_systems_test.dart new file mode 100644 index 00000000..76768175 --- /dev/null +++ b/packages/zoe_native/lib/src/providers/enhanced_systems_test.dart @@ -0,0 +1,511 @@ +import 'dart:async'; +import 'package:riverpod/riverpod.dart'; +import 'package:zoe_native/providers.dart'; +import 'package:zoe_native/src/rust/api/system_test.dart'; +import 'package:zoe_native/src/rust/third_party/zoe_client/frb_api.dart'; +import 'package:zoe_native/src/rust/third_party/zoe_client/system_check.dart'; +import 'package:zoe_native/src/support.dart'; + +/// Enhanced systems test result with streaming updates +class EnhancedSystemsTestResult { + final bool success; + final DateTime timestamp; + final Duration totalDuration; + final SystemCheckResults? currentResults; + final List categories; + final ClientInfo clientInfo; + final TestProgress? progress; + final bool isRunning; + + const EnhancedSystemsTestResult({ + required this.success, + required this.timestamp, + required this.totalDuration, + required this.currentResults, + required this.categories, + required this.clientInfo, + this.progress, + required this.isRunning, + }); + + EnhancedSystemsTestResult copyWith({ + bool? success, + DateTime? timestamp, + Duration? totalDuration, + SystemCheckResults? currentResults, + List? categories, + ClientInfo? clientInfo, + TestProgress? progress, + bool? isRunning, + }) { + return EnhancedSystemsTestResult( + success: success ?? this.success, + timestamp: timestamp ?? this.timestamp, + totalDuration: totalDuration ?? this.totalDuration, + currentResults: currentResults ?? this.currentResults, + categories: categories ?? this.categories, + clientInfo: clientInfo ?? this.clientInfo, + progress: progress ?? this.progress, + isRunning: isRunning ?? this.isRunning, + ); + } +} + +/// Streaming test category with live updates +class StreamingTestCategory { + final TestCategory category; + final String displayName; + final String description; + final bool hasFailures; + final bool isCompleted; + final bool isCurrentlyTesting; + final List tests; + final Duration duration; + + const StreamingTestCategory({ + required this.category, + required this.displayName, + required this.description, + required this.hasFailures, + required this.isCompleted, + required this.isCurrentlyTesting, + required this.tests, + required this.duration, + }); +} + +/// Test progress information for live updates +class TestProgress { + final String currentTest; + final int completedTests; + final int totalTests; + final String status; + final Duration elapsed; + + const TestProgress({ + required this.currentTest, + required this.completedTests, + required this.totalTests, + required this.status, + required this.elapsed, + }); + + double get progressPercent => + totalTests > 0 ? completedTests / totalTests : 0.0; +} + +/// Client information for display +class ClientInfo { + final String clientId; + final String serverAddress; + final String serverKey; + final bool isConnected; + final List relayServers; + + const ClientInfo({ + required this.clientId, + required this.serverAddress, + required this.serverKey, + required this.isConnected, + required this.relayServers, + }); +} + +/// Relay server information for testing +class RelayServerInfo { + final String address; + final String keyHex; + final String keyId; + final bool isConnected; + final bool isDefault; + + const RelayServerInfo({ + required this.address, + required this.keyHex, + required this.keyId, + required this.isConnected, + required this.isDefault, + }); +} + +/// Result of testing a specific relay server +class RelayTestResult { + final RelayServerInfo server; + final bool success; + final Duration duration; + final String? error; + final DateTime timestamp; + + const RelayTestResult({ + required this.server, + required this.success, + required this.duration, + required this.error, + required this.timestamp, + }); +} + +/// Trace message collected during testing +class TraceMessage { + final DateTime timestamp; + final String level; + final String target; + final String message; + final String? category; + + const TraceMessage({ + required this.timestamp, + required this.level, + required this.target, + required this.message, + this.category, + }); +} + +/// Diagnostic message (errors/warnings) +class DiagnosticMessage { + final String level; + final String message; + final DateTime timestamp; + + const DiagnosticMessage({ + required this.level, + required this.message, + required this.timestamp, + }); +} + +/// Enhanced systems test category with trace data +class SystemsTestCategory { + final String categoryName; + final String displayName; + final bool hasFailures; + final String description; + final List traces; + final Duration duration; + + const SystemsTestCategory({ + required this.categoryName, + required this.displayName, + required this.hasFailures, + required this.description, + required this.traces, + required this.duration, + }); +} + +/// Enhanced systems test provider with trace collection +class EnhancedSystemsTestNotifier + extends AsyncNotifier { + StreamSubscription? _testSubscription; + DateTime _testStartTime = DateTime.now(); + final Map _categoryStates = {}; + + @override + Future build() async { + // Load client info immediately to show relay servers + try { + final client = await ref.read(clientProvider.future); + final clientInfo = await _getClientInfo(client); + + // Initialize all categories as pending + _initializeCategories(); + + // Return initial state with client info but no test results + return EnhancedSystemsTestResult( + success: false, + timestamp: DateTime.now(), + totalDuration: Duration.zero, + currentResults: null, + categories: _categoryStates.values.toList(), + clientInfo: clientInfo, + isRunning: false, + ); + } catch (e) { + throw AsyncError( + 'Failed to load client information: $e', + StackTrace.current, + ); + } + } + + void _initializeCategories() { + final allCategories = [ + TestCategory.connectivity, + TestCategory.storage, + TestCategory.blobService, + TestCategory.offlineStorage, + TestCategory.offlineBlob, + TestCategory.synchronization, + ]; + + for (final category in allCategories) { + _categoryStates[category] = StreamingTestCategory( + category: category, + displayName: _getCategoryDisplayName(category), + description: _getCategoryDescription(category, false), + hasFailures: false, + isCompleted: false, + isCurrentlyTesting: false, + tests: [], + duration: Duration.zero, + ); + } + } + + /// Run comprehensive systems test with streaming updates + Future runSystemsTest() async { + await runSystemsTestForServer(null); + } + + /// Run systems test against a specific relay server with streaming updates + Future runSystemsTestForServer(RelayServerInfo? targetServer) async { + try { + // Cancel any existing test + await _cancelCurrentTest(); + + final client = await ref.read(clientProvider.future); + _testStartTime = DateTime.now(); + + // Prepare client for systems test by configuring the relay server + // Log the server details for debugging + // print('Preparing client with server: $defaultServerAddr'); + // print('Server key: ${defaultServerKey.substring(0, 16)}...'); + + final success = await prepareClientForSystemsTest( + client: client, + serverAddress: defaultServerAddr, + serverKeyHex: defaultServerKey, + ); + + if (!success) { + state = AsyncValue.error( + 'Failed to prepare client for systems test', + StackTrace.current, + ); + return; + } + + // Give the client a moment to establish connection + // Connection establishment is asynchronous and may take time + await Future.delayed(const Duration(seconds: 2)); + + // Reset all categories to pending state + _initializeCategories(); + + // Update state to show test is starting + state = AsyncValue.data( + state.value!.copyWith( + isRunning: true, + categories: _categoryStates.values.toList(), + ), + ); + + // Start the streaming test + _testSubscription = runSystemTests(client: client).listen( + _handleTestUpdate, + onError: _handleTestError, + onDone: _handleTestComplete, + ); + } catch (e, stackTrace) { + state = AsyncValue.error(e, stackTrace); + } + } + + Future _cancelCurrentTest() async { + await _testSubscription?.cancel(); + _testSubscription = null; + } + + void _handleTestUpdate(SystemCheckResults results) async { + try { + // Extract information from the results + final categories = await systemCheckResultsGetCategories( + results: results, + ); + final isSuccess = await systemCheckResultsIsSuccess(results: results); + final totalDurationMs = await systemCheckResultsTotalDurationMs( + results: results, + ); + + // Reset all categories to pending first + _initializeCategories(); + + // Update category states based on current results + for (final category in categories) { + final tests = await systemCheckResultsGetTestsForCategory( + results: results, + category: category, + ); + final hasFailures = await systemCheckResultsCategoryHasFailures( + results: results, + category: category, + ); + + _categoryStates[category] = StreamingTestCategory( + category: category, + displayName: _getCategoryDisplayName(category), + description: _getCategoryDescription(category, hasFailures), + hasFailures: hasFailures, + isCompleted: true, + isCurrentlyTesting: false, + tests: tests, + duration: Duration(milliseconds: totalDurationMs.toInt()), + ); + } + + // Determine which test is currently running based on logical flow + String? currentTestName; + final completedCategories = categories.length; + final allCategories = [ + TestCategory.offlineStorage, + TestCategory.offlineBlob, + TestCategory.connectivity, + TestCategory.storage, + TestCategory.blobService, + TestCategory.synchronization, + ]; + + // Find the next category that should be running + if (completedCategories < allCategories.length) { + final nextCategory = allCategories[completedCategories]; + currentTestName = _getCategoryDisplayName(nextCategory); + + // Mark the next category as currently testing + _categoryStates[nextCategory] = StreamingTestCategory( + category: nextCategory, + displayName: _getCategoryDisplayName(nextCategory), + description: 'Testing in progress...', + hasFailures: false, + isCompleted: false, + isCurrentlyTesting: true, + tests: [], + duration: Duration.zero, + ); + } + + final progress = TestProgress( + currentTest: currentTestName ?? 'Completed', + completedTests: completedCategories, + totalTests: allCategories.length, + status: completedCategories < allCategories.length + ? 'Running ${currentTestName ?? "tests"}...' + : 'Completed', + elapsed: DateTime.now().difference(_testStartTime), + ); + + // Check if test is complete (no more categories to test) + final isTestComplete = completedCategories >= allCategories.length; + + // Update state with live results + state = AsyncValue.data( + EnhancedSystemsTestResult( + success: isSuccess, + timestamp: _testStartTime, + totalDuration: Duration(milliseconds: totalDurationMs.toInt()), + currentResults: results, + categories: _categoryStates.values.toList(), + clientInfo: state.value!.clientInfo, + progress: isTestComplete ? null : progress, + isRunning: !isTestComplete, + ), + ); + } catch (e, stackTrace) { + // Log error for debugging + state = AsyncValue.error(e, stackTrace); + } + } + + void _handleTestError(Object error, StackTrace stackTrace) { + // Handle test stream error + state = AsyncValue.error(error, stackTrace); + } + + void _handleTestComplete() async { + // Test stream completed + + // Mark test as no longer running + if (state.hasValue) { + state = AsyncValue.data( + state.value!.copyWith(isRunning: false, progress: null), + ); + } + + _testSubscription = null; + } + + // Helper methods + Future _getClientInfo(client) async { + try { + final clientId = await client.idHex(); + final relayServers = await _getRelayServerInfo(client); + + return ClientInfo( + clientId: clientId.length > 16 + ? '${clientId.substring(0, 16)}...' + : clientId, + serverAddress: defaultServerAddr, + serverKey: defaultServerKey.length > 16 + ? '${defaultServerKey.substring(0, 16)}...' + : defaultServerKey, + isConnected: false, // We'll determine this during testing + relayServers: relayServers, + ); + } catch (e) { + return ClientInfo( + clientId: 'Unknown', + serverAddress: defaultServerAddr, + serverKey: 'Unknown', + isConnected: false, + relayServers: [], + ); + } + } + + Future> _getRelayServerInfo(client) async { + try { + // For now, return empty list - we can enhance this later + return []; + } catch (e) { + return []; + } + } + + String _getCategoryDisplayName(TestCategory category) => switch (category) { + TestCategory.connectivity => 'Connectivity', + TestCategory.storage => 'Storage', + TestCategory.blobService => 'Blob Service', + TestCategory.offlineStorage => 'Offline Storage', + TestCategory.offlineBlob => 'Offline Blob', + TestCategory.synchronization => 'Synchronization', + }; + + String _getCategoryDescription(TestCategory category, bool hasFailures) { + final status = hasFailures ? 'Failed' : 'Passed'; + return switch (category) { + TestCategory.connectivity => + '$status - Server connectivity and handshake tests', + TestCategory.storage => + '$status - Online message storage and retrieval tests', + TestCategory.blobService => + '$status - Online blob service upload/download tests', + TestCategory.offlineStorage => + '$status - Offline storage tests (without relay connection)', + TestCategory.offlineBlob => + '$status - Offline blob service tests (without relay connection)', + TestCategory.synchronization => + '$status - Message and blob synchronization tests', + }; + } + + void dispose() { + _testSubscription?.cancel(); + } +} + +/// Provider for enhanced systems test state +final enhancedSystemsTestProvider = + AsyncNotifierProvider< + EnhancedSystemsTestNotifier, + EnhancedSystemsTestResult + >(() => EnhancedSystemsTestNotifier()); diff --git a/packages/zoe_native/lib/src/rust/api/system_test.dart b/packages/zoe_native/lib/src/rust/api/system_test.dart new file mode 100644 index 00000000..f9902bd1 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/api/system_test.dart @@ -0,0 +1,84 @@ +// 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 '../third_party/zoe_client/client.dart'; +import '../third_party/zoe_client/system_check.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +Stream runSystemTests({required Client client}) => + RustLib.instance.api.crateApiSystemTestRunSystemTests(client: client); + +Future systemCheckResultsIsSuccess({ + required SystemCheckResults results, +}) => RustLib.instance.api.crateApiSystemTestSystemCheckResultsIsSuccess( + results: results, +); + +Future systemCheckResultsPassedCount({ + required SystemCheckResults results, +}) => RustLib.instance.api.crateApiSystemTestSystemCheckResultsPassedCount( + results: results, +); + +Future systemCheckResultsFailedCount({ + required SystemCheckResults results, +}) => RustLib.instance.api.crateApiSystemTestSystemCheckResultsFailedCount( + results: results, +); + +Future systemCheckResultsTotalCount({ + required SystemCheckResults results, +}) => RustLib.instance.api.crateApiSystemTestSystemCheckResultsTotalCount( + results: results, +); + +Future systemCheckResultsTotalDurationMs({ + required SystemCheckResults results, +}) => RustLib.instance.api.crateApiSystemTestSystemCheckResultsTotalDurationMs( + results: results, +); + +Future> systemCheckResultsGetCategories({ + required SystemCheckResults results, +}) => RustLib.instance.api.crateApiSystemTestSystemCheckResultsGetCategories( + results: results, +); + +Future> systemCheckResultsGetTestsForCategory({ + required SystemCheckResults results, + required TestCategory category, +}) => RustLib.instance.api + .crateApiSystemTestSystemCheckResultsGetTestsForCategory( + results: results, + category: category, + ); + +Future systemCheckResultsCategoryHasFailures({ + required SystemCheckResults results, + required TestCategory category, +}) => RustLib.instance.api + .crateApiSystemTestSystemCheckResultsCategoryHasFailures( + results: results, + category: category, + ); + +Future testInfoGetName({required TestInfo test}) => + RustLib.instance.api.crateApiSystemTestTestInfoGetName(test: test); + +Future> testInfoGetDetails({required TestInfo test}) => + RustLib.instance.api.crateApiSystemTestTestInfoGetDetails(test: test); + +Future testInfoIsPassed({required TestInfo test}) => + RustLib.instance.api.crateApiSystemTestTestInfoIsPassed(test: test); + +Future testInfoIsFailed({required TestInfo test}) => + RustLib.instance.api.crateApiSystemTestTestInfoIsFailed(test: test); + +Future testInfoGetError({required TestInfo test}) => + RustLib.instance.api.crateApiSystemTestTestInfoGetError(test: test); + +Future testInfoDurationMs({required TestInfo test}) => + RustLib.instance.api.crateApiSystemTestTestInfoDurationMs(test: test); diff --git a/packages/zoe_native/lib/src/rust/frb_generated.dart b/packages/zoe_native/lib/src/rust/frb_generated.dart index 41aba124..643539f6 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.dart @@ -5,6 +5,7 @@ import 'api/client.dart'; import 'api/simple.dart'; +import 'api/system_test.dart'; import 'dart:async'; import 'dart:convert'; import 'frb_generated.dart'; @@ -15,6 +16,7 @@ import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; import 'third_party/zoe_client/client.dart'; import 'third_party/zoe_client/client/api/file_storage.dart'; import 'third_party/zoe_client/frb_api.dart'; +import 'third_party/zoe_client/system_check.dart'; import 'third_party/zoe_client/util.dart'; import 'third_party/zoe_wire_protocol/keys.dart'; import 'third_party/zoe_wire_protocol/primitives.dart'; @@ -74,7 +76,7 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.11.1'; @override - int get rustContentHash => 794315862; + int get rustContentHash => -1279430215; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( @@ -327,6 +329,11 @@ abstract class RustLibApi extends BaseApi { required Signature signature, }); + Future zoeClientFrbApiCreateRelayAddressWithHostname({ + required String serverKeyHex, + required String hostname, + }); + Future zoeClientFrbApiCreateSigningKeyRandom(); Future zoeClientFrbApiCreateSocketAddr({ @@ -344,8 +351,18 @@ abstract class RustLibApi extends BaseApi { required Client client, }); + Future zoeClientFrbApiPrepareClientForSystemsTest({ + required Client client, + required String serverAddress, + required String serverKeyHex, + }); + Future zoeClientUtilResolveToSocketAddr({required String s}); + Stream crateApiSystemTestRunSystemTests({ + required Client client, + }); + Future zoeClientFrbApiSigningKeyFromHex({required String hex}); Future zoeClientFrbApiSigningKeyToVerifyingKey({ @@ -358,6 +375,55 @@ abstract class RustLibApi extends BaseApi { Future zoeClientFrbApiSocketAddrToString({required SocketAddr addr}); + Future crateApiSystemTestSystemCheckResultsCategoryHasFailures({ + required SystemCheckResults results, + required TestCategory category, + }); + + Future crateApiSystemTestSystemCheckResultsFailedCount({ + required SystemCheckResults results, + }); + + Future> crateApiSystemTestSystemCheckResultsGetCategories({ + required SystemCheckResults results, + }); + + Future> + crateApiSystemTestSystemCheckResultsGetTestsForCategory({ + required SystemCheckResults results, + required TestCategory category, + }); + + Future crateApiSystemTestSystemCheckResultsIsSuccess({ + required SystemCheckResults results, + }); + + Future crateApiSystemTestSystemCheckResultsPassedCount({ + required SystemCheckResults results, + }); + + Future crateApiSystemTestSystemCheckResultsTotalCount({ + required SystemCheckResults results, + }); + + Future crateApiSystemTestSystemCheckResultsTotalDurationMs({ + required SystemCheckResults results, + }); + + Future crateApiSystemTestTestInfoDurationMs({required TestInfo test}); + + Future> crateApiSystemTestTestInfoGetDetails({ + required TestInfo test, + }); + + Future crateApiSystemTestTestInfoGetError({required TestInfo test}); + + Future crateApiSystemTestTestInfoGetName({required TestInfo test}); + + Future crateApiSystemTestTestInfoIsFailed({required TestInfo test}); + + Future crateApiSystemTestTestInfoIsPassed({required TestInfo test}); + Future zoeClientFrbApiVerifyingKeyFromHex({ required String hex, }); @@ -484,6 +550,23 @@ abstract class RustLibApi extends BaseApi { CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SocketAddrPtr; + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_SystemCheckResults; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_SystemCheckResults; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_SystemCheckResultsPtr; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_TestInfo; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_TestInfo; + + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_TestInfoPtr; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_VerifyError; @@ -2659,11 +2742,16 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); @override - Future zoeClientFrbApiCreateSigningKeyRandom() { + Future zoeClientFrbApiCreateRelayAddressWithHostname({ + required String serverKeyHex, + required String hostname, + }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(serverKeyHex, serializer); + sse_encode_String(hostname, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, @@ -2671,6 +2759,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { port: port_, ); }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerRelayAddress, + decodeErrorData: sse_decode_String, + ), + constMeta: kZoeClientFrbApiCreateRelayAddressWithHostnameConstMeta, + argValues: [serverKeyHex, hostname], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiCreateRelayAddressWithHostnameConstMeta => + const TaskConstMeta( + debugName: "create_relay_address_with_hostname", + argNames: ["serverKeyHex", "hostname"], + ); + + @override + Future zoeClientFrbApiCreateSigningKeyRandom() { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 61, + port: port_, + ); + }, codec: SseCodec( decodeSuccessData: sse_decode_String, decodeErrorData: null, @@ -2699,7 +2818,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 61, + funcId: 62, port: port_, ); }, @@ -2730,7 +2849,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 62, + funcId: 63, port: port_, ); }, @@ -2755,7 +2874,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { callFfi: () { final serializer = SseSerializer(generalizedFrbRustBinding); sse_encode_String(name, serializer); - return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 63)!; + return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 64)!; }, codec: SseCodec( decodeSuccessData: sse_decode_String, @@ -2780,7 +2899,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 64, + funcId: 65, port: port_, ); }, @@ -2819,7 +2938,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 65, + funcId: 66, port: port_, ); }, @@ -2842,6 +2961,46 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { argNames: ["client", "sink"], ); + @override + Future zoeClientFrbApiPrepareClientForSystemsTest({ + required Client client, + required String serverAddress, + required String serverKeyHex, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + client, + serializer, + ); + sse_encode_String(serverAddress, serializer); + sse_encode_String(serverKeyHex, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 67, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_bool, + decodeErrorData: sse_decode_String, + ), + constMeta: kZoeClientFrbApiPrepareClientForSystemsTestConstMeta, + argValues: [client, serverAddress, serverKeyHex], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiPrepareClientForSystemsTestConstMeta => + const TaskConstMeta( + debugName: "prepare_client_for_systems_test", + argNames: ["client", "serverAddress", "serverKeyHex"], + ); + @override Future zoeClientUtilResolveToSocketAddr({required String s}) { return handler.executeNormal( @@ -2852,7 +3011,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 66, + funcId: 68, port: port_, ); }, @@ -2871,6 +3030,50 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { TaskConstMeta get kZoeClientUtilResolveToSocketAddrConstMeta => const TaskConstMeta(debugName: "resolve_to_socket_addr", argNames: ["s"]); + @override + Stream crateApiSystemTestRunSystemTests({ + required Client client, + }) { + final sink = RustStreamSink(); + unawaited( + handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient( + client, + serializer, + ); + sse_encode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_Sse( + sink, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 69, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_unit, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestRunSystemTestsConstMeta, + argValues: [client, sink], + apiImpl: this, + ), + ), + ); + return sink.stream; + } + + TaskConstMeta get kCrateApiSystemTestRunSystemTestsConstMeta => + const TaskConstMeta( + debugName: "run_system_tests", + argNames: ["client", "sink"], + ); + @override Future zoeClientFrbApiSigningKeyFromHex({required String hex}) { return handler.executeNormal( @@ -2881,7 +3084,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 67, + funcId: 70, port: port_, ); }, @@ -2911,7 +3114,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 68, + funcId: 71, port: port_, ); }, @@ -2945,7 +3148,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 69, + funcId: 72, port: port_, ); }, @@ -2976,7 +3179,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 70, + funcId: 73, port: port_, ); }, @@ -3007,7 +3210,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 71, + funcId: 74, port: port_, ); }, @@ -3029,62 +3232,559 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); @override - Future zoeClientFrbApiVerifyingKeyFromHex({ - required String hex, + Future crateApiSystemTestSystemCheckResultsCategoryHasFailures({ + required SystemCheckResults results, + required TestCategory category, }) { return handler.executeNormal( NormalTask( callFfi: (port_) { final serializer = SseSerializer(generalizedFrbRustBinding); - sse_encode_String(hex, serializer); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + results, + serializer, + ); + sse_encode_test_category(category, serializer); pdeCallFfi( generalizedFrbRustBinding, serializer, - funcId: 72, + funcId: 75, port: port_, ); }, codec: SseCodec( - decodeSuccessData: - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey, - decodeErrorData: sse_decode_String, + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, ), - constMeta: kZoeClientFrbApiVerifyingKeyFromHexConstMeta, - argValues: [hex], + constMeta: + kCrateApiSystemTestSystemCheckResultsCategoryHasFailuresConstMeta, + argValues: [results, category], apiImpl: this, ), ); } - TaskConstMeta get kZoeClientFrbApiVerifyingKeyFromHexConstMeta => + TaskConstMeta + get kCrateApiSystemTestSystemCheckResultsCategoryHasFailuresConstMeta => const TaskConstMeta( - debugName: "verifying_key_from_hex", - argNames: ["hex"], + debugName: "system_check_results_category_has_failures", + argNames: ["results", "category"], ); - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_Client => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; + @override + Future crateApiSystemTestSystemCheckResultsFailedCount({ + required SystemCheckResults results, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + results, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 76, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_32, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestSystemCheckResultsFailedCountConstMeta, + argValues: [results], + apiImpl: this, + ), + ); + } - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_Client => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; + TaskConstMeta get kCrateApiSystemTestSystemCheckResultsFailedCountConstMeta => + const TaskConstMeta( + debugName: "system_check_results_failed_count", + argNames: ["results"], + ); - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_ClientBuilder => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; + @override + Future> crateApiSystemTestSystemCheckResultsGetCategories({ + required SystemCheckResults results, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + results, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 77, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_test_category, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestSystemCheckResultsGetCategoriesConstMeta, + argValues: [results], + apiImpl: this, + ), + ); + } - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_ClientBuilder => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; + TaskConstMeta + get kCrateApiSystemTestSystemCheckResultsGetCategoriesConstMeta => + const TaskConstMeta( + debugName: "system_check_results_get_categories", + argNames: ["results"], + ); - RustArcIncrementStrongCountFnType - get rust_arc_increment_strong_count_ClientSecret => wire - .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; + @override + Future> + crateApiSystemTestSystemCheckResultsGetTestsForCategory({ + required SystemCheckResults results, + required TestCategory category, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + results, + serializer, + ); + sse_encode_test_category(category, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 78, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo, + decodeErrorData: null, + ), + constMeta: + kCrateApiSystemTestSystemCheckResultsGetTestsForCategoryConstMeta, + argValues: [results, category], + apiImpl: this, + ), + ); + } - RustArcDecrementStrongCountFnType - get rust_arc_decrement_strong_count_ClientSecret => wire - .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; + TaskConstMeta + get kCrateApiSystemTestSystemCheckResultsGetTestsForCategoryConstMeta => + const TaskConstMeta( + debugName: "system_check_results_get_tests_for_category", + argNames: ["results", "category"], + ); + + @override + Future crateApiSystemTestSystemCheckResultsIsSuccess({ + required SystemCheckResults results, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + results, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 79, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestSystemCheckResultsIsSuccessConstMeta, + argValues: [results], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSystemTestSystemCheckResultsIsSuccessConstMeta => + const TaskConstMeta( + debugName: "system_check_results_is_success", + argNames: ["results"], + ); + + @override + Future crateApiSystemTestSystemCheckResultsPassedCount({ + required SystemCheckResults results, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + results, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 80, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_32, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestSystemCheckResultsPassedCountConstMeta, + argValues: [results], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSystemTestSystemCheckResultsPassedCountConstMeta => + const TaskConstMeta( + debugName: "system_check_results_passed_count", + argNames: ["results"], + ); + + @override + Future crateApiSystemTestSystemCheckResultsTotalCount({ + required SystemCheckResults results, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + results, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 81, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_32, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestSystemCheckResultsTotalCountConstMeta, + argValues: [results], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSystemTestSystemCheckResultsTotalCountConstMeta => + const TaskConstMeta( + debugName: "system_check_results_total_count", + argNames: ["results"], + ); + + @override + Future crateApiSystemTestSystemCheckResultsTotalDurationMs({ + required SystemCheckResults results, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + results, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 82, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: null, + ), + constMeta: + kCrateApiSystemTestSystemCheckResultsTotalDurationMsConstMeta, + argValues: [results], + apiImpl: this, + ), + ); + } + + TaskConstMeta + get kCrateApiSystemTestSystemCheckResultsTotalDurationMsConstMeta => + const TaskConstMeta( + debugName: "system_check_results_total_duration_ms", + argNames: ["results"], + ); + + @override + Future crateApiSystemTestTestInfoDurationMs({ + required TestInfo test, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + test, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 83, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_u_64, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestTestInfoDurationMsConstMeta, + argValues: [test], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSystemTestTestInfoDurationMsConstMeta => + const TaskConstMeta( + debugName: "test_info_duration_ms", + argNames: ["test"], + ); + + @override + Future> crateApiSystemTestTestInfoGetDetails({ + required TestInfo test, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + test, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 84, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_String, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestTestInfoGetDetailsConstMeta, + argValues: [test], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSystemTestTestInfoGetDetailsConstMeta => + const TaskConstMeta( + debugName: "test_info_get_details", + argNames: ["test"], + ); + + @override + Future crateApiSystemTestTestInfoGetError({required TestInfo test}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + test, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 85, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_opt_String, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestTestInfoGetErrorConstMeta, + argValues: [test], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSystemTestTestInfoGetErrorConstMeta => + const TaskConstMeta(debugName: "test_info_get_error", argNames: ["test"]); + + @override + Future crateApiSystemTestTestInfoGetName({required TestInfo test}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + test, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 86, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_String, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestTestInfoGetNameConstMeta, + argValues: [test], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSystemTestTestInfoGetNameConstMeta => + const TaskConstMeta(debugName: "test_info_get_name", argNames: ["test"]); + + @override + Future crateApiSystemTestTestInfoIsFailed({required TestInfo test}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + test, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 87, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestTestInfoIsFailedConstMeta, + argValues: [test], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSystemTestTestInfoIsFailedConstMeta => + const TaskConstMeta(debugName: "test_info_is_failed", argNames: ["test"]); + + @override + Future crateApiSystemTestTestInfoIsPassed({required TestInfo test}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + test, + serializer, + ); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 88, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_bool, + decodeErrorData: null, + ), + constMeta: kCrateApiSystemTestTestInfoIsPassedConstMeta, + argValues: [test], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateApiSystemTestTestInfoIsPassedConstMeta => + const TaskConstMeta(debugName: "test_info_is_passed", argNames: ["test"]); + + @override + Future zoeClientFrbApiVerifyingKeyFromHex({ + required String hex, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_String(hex, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 89, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey, + decodeErrorData: sse_decode_String, + ), + constMeta: kZoeClientFrbApiVerifyingKeyFromHexConstMeta, + argValues: [hex], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kZoeClientFrbApiVerifyingKeyFromHexConstMeta => + const TaskConstMeta( + debugName: "verifying_key_from_hex", + argNames: ["hex"], + ); + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_Client => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_Client => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClient; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_ClientBuilder => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_ClientBuilder => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientBuilder; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_ClientSecret => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_ClientSecret => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerClientSecret; RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_FileRef => wire @@ -3190,6 +3890,22 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { get rust_arc_decrement_strong_count_SocketAddr => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr; + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_SystemCheckResults => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_SystemCheckResults => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults; + + RustArcIncrementStrongCountFnType + get rust_arc_increment_strong_count_TestInfo => wire + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo; + + RustArcDecrementStrongCountFnType + get rust_arc_decrement_strong_count_TestInfo => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo; + RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_VerifyError => wire .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError; @@ -3364,6 +4080,24 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return SocketAddrImpl.frbInternalDcoDecode(raw as List); } + @protected + SystemCheckResults + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SystemCheckResultsImpl.frbInternalDcoDecode(raw as List); + } + + @protected + TestInfo + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TestInfoImpl.frbInternalDcoDecode(raw as List); + } + @protected VerifyError dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -3517,6 +4251,24 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return SocketAddrImpl.frbInternalDcoDecode(raw as List); } + @protected + SystemCheckResults + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SystemCheckResultsImpl.frbInternalDcoDecode(raw as List); + } + + @protected + TestInfo + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TestInfoImpl.frbInternalDcoDecode(raw as List); + } + @protected VerifyingKey dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( @@ -3670,6 +4422,24 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return SocketAddrImpl.frbInternalDcoDecode(raw as List); } + @protected + SystemCheckResults + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return SystemCheckResultsImpl.frbInternalDcoDecode(raw as List); + } + + @protected + TestInfo + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TestInfoImpl.frbInternalDcoDecode(raw as List); + } + @protected VerifyError dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -3697,6 +4467,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return VerifyingKeyErrorImpl.frbInternalDcoDecode(raw as List); } + @protected + RustStreamSink + dco_decode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_Sse( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + throw UnimplementedError(); + } + @protected RustStreamSink dco_decode_StreamSink_overall_connection_status_Sse(dynamic raw) { @@ -3754,6 +4533,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { .toList(); } + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List) + .map( + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo, + ) + .toList(); + } + + @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_prim_u_8_loose(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -3766,6 +4564,12 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return raw as Uint8List; } + @protected + List dco_decode_list_test_category(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return (raw as List).map(dco_decode_test_category).toList(); + } + @protected String? dco_decode_opt_String(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs @@ -3785,12 +4589,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + TestCategory dco_decode_test_category(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return TestCategory.values[raw as int]; + } + @protected int dco_decode_u_16(dynamic raw) { // Codec=Dco (DartCObject based), see doc to use other codecs return raw as int; } + @protected + int dco_decode_u_32(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return 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 @@ -3979,36 +4801,60 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } @protected - Signature - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + Signature + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSignature( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SignatureImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + SigningKey + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SigningKeyImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + SocketAddr + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return SignatureImpl.frbInternalSseDecode( + return SocketAddrImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); } @protected - SigningKey - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSigningKey( + SystemCheckResults + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return SigningKeyImpl.frbInternalSseDecode( + return SystemCheckResultsImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); } @protected - SocketAddr - sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr( + TestInfo + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( SseDeserializer deserializer, ) { // Codec=Sse (Serialization based), see doc to use other codecs - return SocketAddrImpl.frbInternalSseDecode( + return TestInfoImpl.frbInternalSseDecode( sse_decode_usize(deserializer), sse_decode_i_32(deserializer), ); @@ -4218,6 +5064,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + SystemCheckResults + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SystemCheckResultsImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + TestInfo + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return TestInfoImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected VerifyingKey sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( @@ -4422,6 +5292,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + SystemCheckResults + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return SystemCheckResultsImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + + @protected + TestInfo + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + return TestInfoImpl.frbInternalSseDecode( + sse_decode_usize(deserializer), + sse_decode_i_32(deserializer), + ); + } + @protected VerifyError sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -4458,6 +5352,15 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + RustStreamSink + sse_decode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_Sse( + SseDeserializer deserializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + throw UnimplementedError('Unreachable ()'); + } + @protected RustStreamSink sse_decode_StreamSink_overall_connection_status_Sse( @@ -4531,6 +5434,37 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return ans_; } + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + 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_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + deserializer, + ), + ); + } + return ans_; + } + + @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_prim_u_8_loose(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -4545,6 +5479,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { return deserializer.buffer.getUint8List(len_); } + @protected + List sse_decode_list_test_category( + 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_test_category(deserializer)); + } + return ans_; + } + @protected String? sse_decode_opt_String(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -4571,12 +5519,31 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + TestCategory sse_decode_test_category(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_i_32(deserializer); + return TestCategory.values[inner]; + } + @protected int sse_decode_u_16(SseDeserializer deserializer) { // Codec=Sse (Serialization based), see doc to use other codecs return deserializer.buffer.getUint16(); } + @protected + int sse_decode_u_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint32(); + } + + @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 @@ -4818,6 +5785,32 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SystemCheckResults self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SystemCheckResultsImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + TestInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as TestInfoImpl).frbInternalSseEncode(move: true), + serializer, + ); + } + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -5039,6 +6032,32 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SystemCheckResults self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SystemCheckResultsImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + TestInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as TestInfoImpl).frbInternalSseEncode(move: false), + serializer, + ); + } + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( @@ -5260,6 +6279,32 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SystemCheckResults self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as SystemCheckResultsImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + TestInfo self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_usize( + (self as TestInfoImpl).frbInternalSseEncode(move: null), + serializer, + ); + } + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -5299,6 +6344,25 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); } + @protected + void + sse_encode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_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_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults, + decodeErrorData: sse_decode_AnyhowException, + ), + ), + serializer, + ); + } + @protected void sse_encode_StreamSink_overall_connection_status_Sse( RustStreamSink self, @@ -5372,6 +6436,31 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { } } + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + 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_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + item, + 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_prim_u_8_loose( List self, @@ -5394,6 +6483,18 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { serializer.buffer.putUint8List(self); } + @protected + void sse_encode_list_test_category( + 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_test_category(item, serializer); + } + } + @protected void sse_encode_opt_String(String? self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs @@ -5415,12 +6516,30 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_encode_usize(self.totalCount, serializer); } + @protected + void sse_encode_test_category(TestCategory 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_16(int self, SseSerializer serializer) { // Codec=Sse (Serialization based), see doc to use other codecs serializer.buffer.putUint16(self); } + @protected + void sse_encode_u_32(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint32(self); + } + + @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 @@ -6117,6 +7236,50 @@ class SocketAddrImpl extends RustOpaque implements SocketAddr { ); } +@sealed +class SystemCheckResultsImpl extends RustOpaque implements SystemCheckResults { + // Not to be used by end users + SystemCheckResultsImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + SystemCheckResultsImpl.frbInternalSseDecode( + BigInt ptr, + int externalSizeOnNative, + ) : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_SystemCheckResults, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_SystemCheckResults, + rustArcDecrementStrongCountPtr: RustLib + .instance + .api + .rust_arc_decrement_strong_count_SystemCheckResultsPtr, + ); +} + +@sealed +class TestInfoImpl extends RustOpaque implements TestInfo { + // Not to be used by end users + TestInfoImpl.frbInternalDcoDecode(List wire) + : super.frbInternalDcoDecode(wire, _kStaticData); + + // Not to be used by end users + TestInfoImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative) + : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData); + + static final _kStaticData = RustArcStaticData( + rustArcIncrementStrongCount: + RustLib.instance.api.rust_arc_increment_strong_count_TestInfo, + rustArcDecrementStrongCount: + RustLib.instance.api.rust_arc_decrement_strong_count_TestInfo, + rustArcDecrementStrongCountPtr: + RustLib.instance.api.rust_arc_decrement_strong_count_TestInfoPtr, + ); +} + @sealed class VerifyErrorImpl extends RustOpaque implements VerifyError { // Not to be used by end users diff --git a/packages/zoe_native/lib/src/rust/frb_generated.io.dart b/packages/zoe_native/lib/src/rust/frb_generated.io.dart index 8806bdef..175a3176 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.io.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.io.dart @@ -5,6 +5,7 @@ import 'api/client.dart'; import 'api/simple.dart'; +import 'api/system_test.dart'; import 'dart:async'; import 'dart:convert'; import 'dart:ffi' as ffi; @@ -14,6 +15,7 @@ import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; import 'third_party/zoe_client/client.dart'; import 'third_party/zoe_client/client/api/file_storage.dart'; import 'third_party/zoe_client/frb_api.dart'; +import 'third_party/zoe_client/system_check.dart'; import 'third_party/zoe_client/util.dart'; import 'third_party/zoe_wire_protocol/keys.dart'; import 'third_party/zoe_wire_protocol/primitives.dart'; @@ -89,6 +91,14 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_SocketAddrPtr => wire ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr; + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_SystemCheckResultsPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResultsPtr; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_TestInfoPtr => wire + ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfoPtr; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_VerifyErrorPtr => wire ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyErrorPtr; @@ -200,6 +210,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + SystemCheckResults + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + dynamic raw, + ); + + @protected + TestInfo + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ); + @protected VerifyError dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -302,6 +324,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + SystemCheckResults + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + dynamic raw, + ); + + @protected + TestInfo + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ); + @protected VerifyingKey dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( @@ -404,6 +438,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + SystemCheckResults + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + dynamic raw, + ); + + @protected + TestInfo + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ); + @protected VerifyError dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -422,6 +468,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RustStreamSink + dco_decode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_Sse( + dynamic raw, + ); + @protected RustStreamSink dco_decode_StreamSink_overall_connection_status_Sse(dynamic raw); @@ -450,21 +502,42 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ); + + @protected + List dco_decode_list_String(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 dco_decode_list_test_category(dynamic raw); + @protected String? dco_decode_opt_String(dynamic raw); @protected OverallConnectionStatus dco_decode_overall_connection_status(dynamic raw); + @protected + TestCategory dco_decode_test_category(dynamic raw); + @protected int dco_decode_u_16(dynamic raw); + @protected + int dco_decode_u_32(dynamic raw); + + @protected + BigInt dco_decode_u_64(dynamic raw); + @protected int dco_decode_u_8(dynamic raw); @@ -576,6 +649,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + SystemCheckResults + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SseDeserializer deserializer, + ); + + @protected + TestInfo + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ); + @protected VerifyError sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -678,6 +763,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + SystemCheckResults + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SseDeserializer deserializer, + ); + + @protected + TestInfo + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ); + @protected VerifyingKey sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( @@ -780,6 +877,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + SystemCheckResults + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SseDeserializer deserializer, + ); + + @protected + TestInfo + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ); + @protected VerifyError sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -798,6 +907,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RustStreamSink + sse_decode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_Sse( + SseDeserializer deserializer, + ); + @protected RustStreamSink sse_decode_StreamSink_overall_connection_status_Sse( @@ -828,12 +943,26 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_String(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 sse_decode_list_test_category( + SseDeserializer deserializer, + ); + @protected String? sse_decode_opt_String(SseDeserializer deserializer); @@ -842,9 +971,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + TestCategory sse_decode_test_category(SseDeserializer deserializer); + @protected int sse_decode_u_16(SseDeserializer deserializer); + @protected + int sse_decode_u_32(SseDeserializer deserializer); + + @protected + BigInt sse_decode_u_64(SseDeserializer deserializer); + @protected int sse_decode_u_8(SseDeserializer deserializer); @@ -975,6 +1113,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SystemCheckResults self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + TestInfo self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -1094,6 +1246,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SystemCheckResults self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + TestInfo self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( @@ -1213,6 +1379,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SystemCheckResults self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + TestInfo self, + SseSerializer serializer, + ); + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -1234,6 +1414,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_Sse( + RustStreamSink self, + SseSerializer serializer, + ); + @protected void sse_encode_StreamSink_overall_connection_status_Sse( RustStreamSink self, @@ -1266,6 +1453,16 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_String(List self, SseSerializer serializer); + @protected void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); @@ -1275,6 +1472,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_list_test_category( + List self, + SseSerializer serializer, + ); + @protected void sse_encode_opt_String(String? self, SseSerializer serializer); @@ -1284,9 +1487,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_test_category(TestCategory self, SseSerializer serializer); + @protected void sse_encode_u_16(int self, SseSerializer serializer); + @protected + void sse_encode_u_32(int self, SseSerializer serializer); + + @protected + void sse_encode_u_64(BigInt self, SseSerializer serializer); + @protected void sse_encode_u_8(int self, SseSerializer serializer); @@ -1858,6 +2070,74 @@ class RustLibWire implements BaseWire { _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddrPtr .asFunction)>(); + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResultsPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResultsPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResultsPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResultsPtr + .asFunction)>(); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + ffi.Pointer ptr, + ) { + return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + ptr, + ); + } + + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfoPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo', + ); + late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo = + _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfoPtr + .asFunction)>(); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + ffi.Pointer ptr, + ) { + return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + ptr, + ); + } + + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfoPtr = + _lookup)>>( + 'frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo', + ); + late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo = + _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfoPtr + .asFunction)>(); + void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( ffi.Pointer ptr, diff --git a/packages/zoe_native/lib/src/rust/frb_generated.web.dart b/packages/zoe_native/lib/src/rust/frb_generated.web.dart index 1290bcc3..0f56075a 100644 --- a/packages/zoe_native/lib/src/rust/frb_generated.web.dart +++ b/packages/zoe_native/lib/src/rust/frb_generated.web.dart @@ -8,6 +8,7 @@ import 'api/client.dart'; import 'api/simple.dart'; +import 'api/system_test.dart'; import 'dart:async'; import 'dart:convert'; import 'frb_generated.dart'; @@ -16,6 +17,7 @@ import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; import 'third_party/zoe_client/client.dart'; import 'third_party/zoe_client/client/api/file_storage.dart'; import 'third_party/zoe_client/frb_api.dart'; +import 'third_party/zoe_client/system_check.dart'; import 'third_party/zoe_client/util.dart'; import 'third_party/zoe_wire_protocol/keys.dart'; import 'third_party/zoe_wire_protocol/primitives.dart'; @@ -91,6 +93,14 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { get rust_arc_decrement_strong_count_SocketAddrPtr => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSocketAddr; + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_SystemCheckResultsPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults; + + CrossPlatformFinalizerArg + get rust_arc_decrement_strong_count_TestInfoPtr => wire + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo; + CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_VerifyErrorPtr => wire .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError; @@ -202,6 +212,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + SystemCheckResults + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + dynamic raw, + ); + + @protected + TestInfo + dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ); + @protected VerifyError dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -304,6 +326,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + SystemCheckResults + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + dynamic raw, + ); + + @protected + TestInfo + dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ); + @protected VerifyingKey dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( @@ -406,6 +440,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + SystemCheckResults + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + dynamic raw, + ); + + @protected + TestInfo + dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ); + @protected VerifyError dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -424,6 +470,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + RustStreamSink + dco_decode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_Sse( + dynamic raw, + ); + @protected RustStreamSink dco_decode_StreamSink_overall_connection_status_Sse(dynamic raw); @@ -452,21 +504,42 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { dynamic raw, ); + @protected + List + dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + dynamic raw, + ); + + @protected + List dco_decode_list_String(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 dco_decode_list_test_category(dynamic raw); + @protected String? dco_decode_opt_String(dynamic raw); @protected OverallConnectionStatus dco_decode_overall_connection_status(dynamic raw); + @protected + TestCategory dco_decode_test_category(dynamic raw); + @protected int dco_decode_u_16(dynamic raw); + @protected + int dco_decode_u_32(dynamic raw); + + @protected + BigInt dco_decode_u_64(dynamic raw); + @protected int dco_decode_u_8(dynamic raw); @@ -578,6 +651,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + SystemCheckResults + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SseDeserializer deserializer, + ); + + @protected + TestInfo + sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ); + @protected VerifyError sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -680,6 +765,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + SystemCheckResults + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SseDeserializer deserializer, + ); + + @protected + TestInfo + sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ); + @protected VerifyingKey sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( @@ -782,6 +879,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + SystemCheckResults + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SseDeserializer deserializer, + ); + + @protected + TestInfo + sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ); + @protected VerifyError sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -800,6 +909,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + RustStreamSink + sse_decode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_Sse( + SseDeserializer deserializer, + ); + @protected RustStreamSink sse_decode_StreamSink_overall_connection_status_Sse( @@ -830,12 +945,26 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + List + sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + SseDeserializer deserializer, + ); + + @protected + List sse_decode_list_String(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 sse_decode_list_test_category( + SseDeserializer deserializer, + ); + @protected String? sse_decode_opt_String(SseDeserializer deserializer); @@ -844,9 +973,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseDeserializer deserializer, ); + @protected + TestCategory sse_decode_test_category(SseDeserializer deserializer); + @protected int sse_decode_u_16(SseDeserializer deserializer); + @protected + int sse_decode_u_32(SseDeserializer deserializer); + + @protected + BigInt sse_decode_u_64(SseDeserializer deserializer); + @protected int sse_decode_u_8(SseDeserializer deserializer); @@ -977,6 +1115,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SystemCheckResults self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + TestInfo self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -1096,6 +1248,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SystemCheckResults self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + TestInfo self, + SseSerializer serializer, + ); + @protected void sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyingKey( @@ -1215,6 +1381,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + SystemCheckResults self, + SseSerializer serializer, + ); + + @protected + void + sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + TestInfo self, + SseSerializer serializer, + ); + @protected void sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( @@ -1236,6 +1416,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_StreamSink_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults_Sse( + RustStreamSink self, + SseSerializer serializer, + ); + @protected void sse_encode_StreamSink_overall_connection_status_Sse( RustStreamSink self, @@ -1268,6 +1455,16 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void + sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_list_String(List self, SseSerializer serializer); + @protected void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); @@ -1277,6 +1474,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_list_test_category( + List self, + SseSerializer serializer, + ); + @protected void sse_encode_opt_String(String? self, SseSerializer serializer); @@ -1286,9 +1489,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl { SseSerializer serializer, ); + @protected + void sse_encode_test_category(TestCategory self, SseSerializer serializer); + @protected void sse_encode_u_16(int self, SseSerializer serializer); + @protected + void sse_encode_u_32(int self, SseSerializer serializer); + + @protected + void sse_encode_u_64(BigInt self, SseSerializer serializer); + @protected void sse_encode_u_8(int self, SseSerializer serializer); @@ -1563,6 +1775,38 @@ class RustLibWire implements BaseWire { ptr, ); + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + ptr, + ); + + void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + int ptr, + ) => wasmModule + .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + ptr, + ); + + void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + int ptr, + ) => wasmModule + .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + ptr, + ); + void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( int ptr, @@ -1778,6 +2022,26 @@ extension type RustLibWasmModule._(JSObject _) implements JSObject { int ptr, ); + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + int ptr, + ); + + external void + rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + int ptr, + ); + + external void + rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + int ptr, + ); + external void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( int ptr, diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/relay.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/relay.dart index 98ded296..72dcc343 100644 --- a/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/relay.dart +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/client/api/relay.dart @@ -4,9 +4,32 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import import '../../../../frb_generated.dart'; +import '../../../../lib.dart'; +import '../../../zoe_wire_protocol/primitives.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; -// These functions have error during generation (see debug logs or enable `stop_on_error: true` for more details): `overall_status_stream` +// 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` +// These functions are ignored (category: IgnoreBecauseExplicitAttribute): `subscribe_to_relay_status` +// These functions have error during generation (see debug logs or enable `stop_on_error: true` for more details): `await_result`, `detach`, `overall_status_stream` -// Rust type: RustOpaqueMoi>> -abstract class ReceiverRelayStatusUpdate implements RustOpaqueInterface {} +// Rust type: RustOpaqueMoi> +abstract class RelayConnectionHandle implements RustOpaqueInterface { + RelayAddress get relayAddress; + + KeyId get relayId; + + set relayAddress(RelayAddress relayAddress); + + set relayId(KeyId relayId); + + /// Poll for the connection result (non-blocking) + /// + /// Returns: + /// - `Ok(Some(result))` if the connection attempt has completed + /// - `Ok(None)` if the connection is still in progress + /// - `Err(_)` if there was an error polling (shouldn't happen normally) + Future tryResult(); +} + +// Rust type: RustOpaqueMoi>> +abstract class Result implements RustOpaqueInterface {} diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/error.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/error.dart new file mode 100644 index 00000000..ba9a3f82 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/error.dart @@ -0,0 +1,10 @@ +// 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'; + +// Rust type: RustOpaqueMoi> +abstract class ClientError implements RustOpaqueInterface {} diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/frb_api.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/frb_api.dart index 1c746d67..ddcf5942 100644 --- a/packages/zoe_native/lib/src/rust/third_party/zoe_client/frb_api.dart +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/frb_api.dart @@ -6,6 +6,7 @@ import '../../frb_generated.dart'; import '../../lib.dart'; import '../zoe_wire_protocol/keys.dart'; +import 'client.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; Future createSocketAddr({required String ip, required int port}) => @@ -35,3 +36,21 @@ Future signingKeyToVerifyingKey({required String signingKeyHex}) => Future verifyingKeyFromHex({required String hex}) => RustLib.instance.api.zoeClientFrbApiVerifyingKeyFromHex(hex: hex); + +Future prepareClientForSystemsTest({ + required Client client, + required String serverAddress, + required String serverKeyHex, +}) => RustLib.instance.api.zoeClientFrbApiPrepareClientForSystemsTest( + client: client, + serverAddress: serverAddress, + serverKeyHex: serverKeyHex, +); + +Future createRelayAddressWithHostname({ + required String serverKeyHex, + required String hostname, +}) => RustLib.instance.api.zoeClientFrbApiCreateRelayAddressWithHostname( + serverKeyHex: serverKeyHex, + hostname: hostname, +); diff --git a/packages/zoe_native/lib/src/rust/third_party/zoe_client/system_check.dart b/packages/zoe_native/lib/src/rust/third_party/zoe_client/system_check.dart new file mode 100644 index 00000000..86623f57 --- /dev/null +++ b/packages/zoe_native/lib/src/rust/third_party/zoe_client/system_check.dart @@ -0,0 +1,34 @@ +// 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'; + +// Rust type: RustOpaqueMoi> +abstract class SystemCheckResults implements RustOpaqueInterface {} + +// Rust type: RustOpaqueMoi> +abstract class TestInfo implements RustOpaqueInterface {} + +/// Categories of system check tests +enum TestCategory { + /// Offline storage tests (without relay connection) + offlineStorage, + + /// Offline blob service tests (without relay connection) + offlineBlob, + + /// Server connectivity and handshake tests + connectivity, + + /// Online message storage and retrieval tests + storage, + + /// Online blob service upload/download tests + blobService, + + /// Synchronization verification tests + synchronization, +} diff --git a/packages/zoe_native/lib/src/support.dart b/packages/zoe_native/lib/src/support.dart index 120e5e4a..5152e48c 100644 --- a/packages/zoe_native/lib/src/support.dart +++ b/packages/zoe_native/lib/src/support.dart @@ -10,14 +10,18 @@ import 'package:logging/logging.dart'; final _log = Logger('zoe_native::support'); +void _logListener(LogRecord record) { + print('${record.level.name}: ${record.time}: ${record.message}'); +} + const rustLogKey = 'RUST_LOG'; const proxyKey = 'HTTP_PROXY'; const bool isDevBuild = !bool.fromEnvironment('dart.vm.product'); -// default development server -const defaultServerAddr = 'a.dev.hellozoe.app:13918'; -const defaultServerKey = - '00201f12f22a1ed75a2e12462c8c106121db49a779d1bd2fb9c96a881835c068f09c'; +// default development server - exported for use in UI +const String defaultServerAddr = 'a.dev.hellozoe.app:13918'; +const String defaultServerKey = + '00202ee21d8cc6e519ba164ca4d10c2bae101f83bfd46249f2b7bb86f9083d50ed76'; FlutterSecureStorage? _globalStorage; String _globalSessionKey = 'clientSecret'; @@ -32,10 +36,10 @@ void initStorage({ if (sessionKey != null) { _globalSessionKey = sessionKey; } + _log.onRecord.listen(_logListener); _globalStorage = FlutterSecureStorage( aOptions: AndroidOptions( - encryptedSharedPreferences: true, preferencesKeyPrefix: isDevBuild ? 'dev.flutter' : null, ), iOptions: IOSOptions( @@ -170,10 +174,16 @@ Future _defaultClientBuilder({ serverAddr ??= defaultServerAddr; serverKey ??= defaultServerKey; - builder.serverInfo( - serverPublicKey: await VerifyingKey.fromHex(hex: serverKey), - serverAddr: await resolveToSocketAddr(s: serverAddr), + _log.info('serverAddr: $serverAddr'); + _log.info('serverKey: $serverKey'); + + // Create RelayAddress that can handle hostnames + final relayAddress = await createRelayAddressWithHostname( + serverKeyHex: serverKey, + hostname: serverAddr, ); + + builder.servers(servers: [relayAddress]); // builder.autoconnect(autoconnect: true); return builder; } @@ -182,7 +192,8 @@ Future _loadOrGenerateClient() async { final clientSecret = await _readClientSecret(); final builder = await _defaultClientBuilder(); if (clientSecret != null) { - builder.clientSecret(secret: await ClientSecret.fromHex(hex: clientSecret)); + final secret = await ClientSecret.fromHex(hex: clientSecret); + builder.clientSecret(secret: secret); return await builder.build(); } final client = await builder.build(); @@ -199,3 +210,18 @@ Future loadOrGenerateClient() async { } return _clientCompl!.future; } + +/// Resets the client by clearing stored secrets and forcing regeneration +Future resetClient() async { + _log.info('Resetting client - clearing stored secrets'); + + // Clear the stored client secret + if (_globalStorage != null) { + await _globalStorage!.delete(key: _globalSessionKey); + } + + // Reset the client completer to force regeneration + _clientCompl = null; + + _log.info('Client reset completed'); +} diff --git a/packages/zoe_native/lib/zoe_native.dart b/packages/zoe_native/lib/zoe_native.dart index bc310461..bfe40c1b 100644 --- a/packages/zoe_native/lib/zoe_native.dart +++ b/packages/zoe_native/lib/zoe_native.dart @@ -1,6 +1,7 @@ library; export 'src/rust/api/simple.dart'; +export 'src/rust/api/system_test.dart'; export 'src/rust/third_party/zoe_client/client.dart'; export 'src/rust/third_party/zoe_client/frb_api.dart'; export 'src/rust/third_party/zoe_wire_protocol/keys.dart'; diff --git a/packages/zoe_native/rust/Cargo.toml b/packages/zoe_native/rust/Cargo.toml index 29cd74a6..60a1d133 100644 --- a/packages/zoe_native/rust/Cargo.toml +++ b/packages/zoe_native/rust/Cargo.toml @@ -15,6 +15,7 @@ extend = "1.2" async-trait = "0.1" futures = "0.3" tokio = "1.39.0" +chrono = { version = "0.4", features = ["serde"] } [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] } diff --git a/packages/zoe_native/rust/src/api/client.rs b/packages/zoe_native/rust/src/api/client.rs index 1eb5dcc3..fabea908 100644 --- a/packages/zoe_native/rust/src/api/client.rs +++ b/packages/zoe_native/rust/src/api/client.rs @@ -23,4 +23,4 @@ pub async fn overall_status_stream(client: &Client, sink: StreamSink) { + let cl = client.clone(); + tokio::spawn(async move { + let system_check = SystemCheck::with_defaults(cl); + let runstream = system_check.run_all_stream(); + futures::pin_mut!(runstream); + while let Some(result) = runstream.next().await { + if sink.add(result).is_err() { + break; + } + } + }); +} + +// SystemCheckResults utility functions +#[frb] +pub fn system_check_results_is_success(results: &SystemCheckResults) -> bool { + results.is_success() +} + +#[frb] +pub fn system_check_results_passed_count(results: &SystemCheckResults) -> u32 { + results.passed_count() as u32 +} + +#[frb] +pub fn system_check_results_failed_count(results: &SystemCheckResults) -> u32 { + results.failed_count() as u32 +} + +#[frb] +pub fn system_check_results_total_count(results: &SystemCheckResults) -> u32 { + results.total_count() as u32 +} + +#[frb] +pub fn system_check_results_total_duration_ms(results: &SystemCheckResults) -> u64 { + results.total_duration.as_millis() as u64 +} + +#[frb] +pub fn system_check_results_get_categories(results: &SystemCheckResults) -> Vec { + results.results.keys().cloned().collect() +} + +#[frb] +pub fn system_check_results_get_tests_for_category( + results: &SystemCheckResults, + category: TestCategory, +) -> Vec { + results.results.get(&category).cloned().unwrap_or_default() +} + +#[frb] +pub fn system_check_results_category_has_failures( + results: &SystemCheckResults, + category: TestCategory, +) -> bool { + results.category_has_failures(category) +} + +// TestInfo utility functions +#[frb] +pub fn test_info_get_name(test: &TestInfo) -> String { + test.name.clone() +} + +#[frb] +pub fn test_info_get_details(test: &TestInfo) -> Vec { + test.details.clone() +} + +#[frb] +pub fn test_info_is_passed(test: &TestInfo) -> bool { + test.result.is_passed() +} + +#[frb] +pub fn test_info_is_failed(test: &TestInfo) -> bool { + test.result.is_failed() +} + +#[frb] +pub fn test_info_get_error(test: &TestInfo) -> Option { + match &test.result { + TestResult::Failed { error } => Some(error.clone()), + _ => None, + } +} + +#[frb] +pub fn test_info_duration_ms(test: &TestInfo) -> u64 { + test.duration.as_millis() as u64 +} diff --git a/packages/zoe_native/rust/src/frb_generated.rs b/packages/zoe_native/rust/src/frb_generated.rs index 02070964..499afae5 100644 --- a/packages/zoe_native/rust/src/frb_generated.rs +++ b/packages/zoe_native/rust/src/frb_generated.rs @@ -31,6 +31,7 @@ use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Loc use flutter_rust_bridge::{Handler, IntoIntoDart}; use zoe_client::client::api::file_storage::*; use zoe_client::client::*; +use zoe_client::system_check::*; use zoe_wire_protocol::keys::*; use zoe_wire_protocol::primitives::*; @@ -47,7 +48,7 @@ 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 = 794315862; +pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -1279430215; // Section: executor @@ -3095,6 +3096,43 @@ fn wire__zoe_wire_protocol__keys__VerifyingKey_verify_impl( }, ) } +fn wire__zoe_client__frb_api__create_relay_address_with_hostname_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: "create_relay_address_with_hostname", + 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_server_key_hex = ::sse_decode(&mut deserializer); + let api_hostname = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, String>((move || { + let output_ok = zoe_client::frb_api::create_relay_address_with_hostname( + api_server_key_hex, + api_hostname, + )?; + Ok(output_ok) + })()) + } + }, + ) +} fn wire__zoe_client__frb_api__create_signing_key_random_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, @@ -3290,49 +3328,878 @@ fn wire__crate__api__client__overall_status_stream_impl( flutter_rust_bridge::for_generated::SseCodec, >>::sse_decode(&mut deserializer); deserializer.end(); - move |context| async move { - transform_result_sse::<_, ()>( - (move || async move { - let mut api_client_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_client, - 0, - false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_client_guard = - Some(api_client.lockable_decode_async_ref().await) - } - _ => unreachable!(), - } + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_client_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_client, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_client_guard = + Some(api_client.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_client_guard = api_client_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + crate::api::client::overall_status_stream(&*api_client_guard, api_sink) + .await; + })?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__frb_api__prepare_client_for_systems_test_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: "prepare_client_for_systems_test", + 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_client = , + >>::sse_decode(&mut deserializer); + let api_server_address = ::sse_decode(&mut deserializer); + let api_server_key_hex = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, String>( + (move || async move { + let mut api_client_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_client, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_client_guard = + Some(api_client.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_client_guard = api_client_guard.unwrap(); + let output_ok = zoe_client::frb_api::prepare_client_for_systems_test( + &*api_client_guard, + api_server_address, + api_server_key_hex, + ) + .await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__util__resolve_to_socket_addr_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: "resolve_to_socket_addr", + 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_s = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, String>( + (move || async move { + let output_ok = zoe_client::util::resolve_to_socket_addr(&api_s).await?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__crate__api__system_test__run_system_tests_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: "run_system_tests", + 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_client = , + >>::sse_decode(&mut deserializer); + let api_sink = >::sse_decode(&mut deserializer); + deserializer.end(); + move |context| async move { + transform_result_sse::<_, ()>( + (move || async move { + let mut api_client_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order( + vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_client, + 0, + false, + )], + ); + for i in decode_indices_ { + match i { + 0 => { + api_client_guard = + Some(api_client.lockable_decode_async_ref().await) + } + _ => unreachable!(), + } + } + let api_client_guard = api_client_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok({ + crate::api::system_test::run_system_tests(&*api_client_guard, api_sink) + .await; + })?; + Ok(output_ok) + })() + .await, + ) + } + }, + ) +} +fn wire__zoe_client__frb_api__signing_key_from_hex_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: "signing_key_from_hex", + 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_hex = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, String>((move || { + let output_ok = zoe_client::frb_api::signing_key_from_hex(api_hex)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__signing_key_to_verifying_key_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: "signing_key_to_verifying_key", + 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_signing_key_hex = ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, String>((move || { + let output_ok = + zoe_client::frb_api::signing_key_to_verifying_key(api_signing_key_hex)?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__socket_addr_ip_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: "socket_addr_ip", + 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_addr = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_addr_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_addr, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_addr_guard = api_addr_guard.unwrap(); + let output_ok = + Result::<_, ()>::Ok(zoe_client::frb_api::socket_addr_ip(&*api_addr_guard))?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__socket_addr_port_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: "socket_addr_port", + 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_addr = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_addr_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_addr, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_addr_guard = api_addr_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok(zoe_client::frb_api::socket_addr_port( + &*api_addr_guard, + ))?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__zoe_client__frb_api__socket_addr_to_string_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: "socket_addr_to_string", + 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_addr = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_addr_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_addr, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_addr_guard = api_addr_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + zoe_client::frb_api::socket_addr_to_string(&*api_addr_guard), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__system_test__system_check_results_category_has_failures_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: "system_check_results_category_has_failures", + 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_results = , + >>::sse_decode(&mut deserializer); + let api_category = + ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_results_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_results, + 0, + false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_results_guard = Some(api_results.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_results_guard = api_results_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::system_check_results_category_has_failures( + &*api_results_guard, + api_category, + ), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__system_test__system_check_results_failed_count_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: "system_check_results_failed_count", + 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_results = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_results_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_results, + 0, + false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_results_guard = Some(api_results.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_results_guard = api_results_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::system_check_results_failed_count( + &*api_results_guard, + ), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__system_test__system_check_results_get_categories_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: "system_check_results_get_categories", + 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_results = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_results_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_results, + 0, + false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_results_guard = Some(api_results.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_results_guard = api_results_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::system_check_results_get_categories( + &*api_results_guard, + ), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__system_test__system_check_results_get_tests_for_category_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: "system_check_results_get_tests_for_category", + 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_results = , + >>::sse_decode(&mut deserializer); + let api_category = + ::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_results_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_results, + 0, + false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_results_guard = Some(api_results.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_results_guard = api_results_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::system_check_results_get_tests_for_category( + &*api_results_guard, + api_category, + ), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__system_test__system_check_results_is_success_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: "system_check_results_is_success", + 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_results = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_results_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_results, + 0, + false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_results_guard = Some(api_results.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_results_guard = api_results_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::system_check_results_is_success( + &*api_results_guard, + ), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__system_test__system_check_results_passed_count_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: "system_check_results_passed_count", + 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_results = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_results_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_results, + 0, + false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_results_guard = Some(api_results.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_results_guard = api_results_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::system_check_results_passed_count( + &*api_results_guard, + ), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__system_test__system_check_results_total_count_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: "system_check_results_total_count", + 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_results = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_results_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_results, + 0, + false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_results_guard = Some(api_results.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_results_guard = api_results_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::system_check_results_total_count( + &*api_results_guard, + ), + )?; + Ok(output_ok) + })()) + } + }, + ) +} +fn wire__crate__api__system_test__system_check_results_total_duration_ms_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: "system_check_results_total_duration_ms", + 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_results = , + >>::sse_decode(&mut deserializer); + deserializer.end(); + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_results_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_results, + 0, + false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_results_guard = Some(api_results.lockable_decode_sync_ref()), + _ => unreachable!(), } - let api_client_guard = api_client_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::api::client::overall_status_stream(&*api_client_guard, api_sink) - .await; - })?; - Ok(output_ok) - })() - .await, - ) + } + let api_results_guard = api_results_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::system_check_results_total_duration_ms( + &*api_results_guard, + ), + )?; + Ok(output_ok) + })()) } }, ) } -fn wire__zoe_client__util__resolve_to_socket_addr_impl( +fn wire__crate__api__system_test__test_info_duration_ms_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, data_len_: i32, ) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( + FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "resolve_to_socket_addr", + debug_name: "test_info_duration_ms", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -3346,21 +4213,36 @@ fn wire__zoe_client__util__resolve_to_socket_addr_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_s = ::sse_decode(&mut deserializer); + let api_test = , + >>::sse_decode(&mut deserializer); deserializer.end(); - move |context| async move { - transform_result_sse::<_, String>( - (move || async move { - let output_ok = zoe_client::util::resolve_to_socket_addr(&api_s).await?; - Ok(output_ok) - })() - .await, - ) + move |context| { + transform_result_sse::<_, ()>((move || { + let mut api_test_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_test, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_test_guard = Some(api_test.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_test_guard = api_test_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::test_info_duration_ms(&*api_test_guard), + )?; + Ok(output_ok) + })()) } }, ) } -fn wire__zoe_client__frb_api__signing_key_from_hex_impl( +fn wire__crate__api__system_test__test_info_get_details_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -3368,7 +4250,7 @@ fn wire__zoe_client__frb_api__signing_key_from_hex_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "signing_key_from_hex", + debug_name: "test_info_get_details", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -3382,18 +4264,36 @@ fn wire__zoe_client__frb_api__signing_key_from_hex_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_hex = ::sse_decode(&mut deserializer); + let api_test = , + >>::sse_decode(&mut deserializer); deserializer.end(); move |context| { - transform_result_sse::<_, String>((move || { - let output_ok = zoe_client::frb_api::signing_key_from_hex(api_hex)?; + transform_result_sse::<_, ()>((move || { + let mut api_test_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_test, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_test_guard = Some(api_test.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_test_guard = api_test_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::test_info_get_details(&*api_test_guard), + )?; Ok(output_ok) })()) } }, ) } -fn wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( +fn wire__crate__api__system_test__test_info_get_error_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -3401,7 +4301,7 @@ fn wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "signing_key_to_verifying_key", + debug_name: "test_info_get_error", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -3415,19 +4315,36 @@ fn wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_signing_key_hex = ::sse_decode(&mut deserializer); + let api_test = , + >>::sse_decode(&mut deserializer); deserializer.end(); move |context| { - transform_result_sse::<_, String>((move || { - let output_ok = - zoe_client::frb_api::signing_key_to_verifying_key(api_signing_key_hex)?; + transform_result_sse::<_, ()>((move || { + let mut api_test_guard = None; + let decode_indices_ = + flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ + flutter_rust_bridge::for_generated::LockableOrderInfo::new( + &api_test, 0, false, + ), + ]); + for i in decode_indices_ { + match i { + 0 => api_test_guard = Some(api_test.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_test_guard = api_test_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::test_info_get_error(&*api_test_guard), + )?; Ok(output_ok) })()) } }, ) } -fn wire__zoe_client__frb_api__socket_addr_ip_impl( +fn wire__crate__api__system_test__test_info_get_name_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -3435,7 +4352,7 @@ fn wire__zoe_client__frb_api__socket_addr_ip_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "socket_addr_ip", + debug_name: "test_info_get_name", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -3449,35 +4366,36 @@ fn wire__zoe_client__frb_api__socket_addr_ip_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_addr = , + let api_test = , >>::sse_decode(&mut deserializer); deserializer.end(); move |context| { transform_result_sse::<_, ()>((move || { - let mut api_addr_guard = None; + let mut api_test_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_addr, 0, false, + &api_test, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), + 0 => api_test_guard = Some(api_test.lockable_decode_sync_ref()), _ => unreachable!(), } } - let api_addr_guard = api_addr_guard.unwrap(); - let output_ok = - Result::<_, ()>::Ok(zoe_client::frb_api::socket_addr_ip(&*api_addr_guard))?; + let api_test_guard = api_test_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::test_info_get_name(&*api_test_guard), + )?; Ok(output_ok) })()) } }, ) } -fn wire__zoe_client__frb_api__socket_addr_port_impl( +fn wire__crate__api__system_test__test_info_is_failed_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -3485,7 +4403,7 @@ fn wire__zoe_client__frb_api__socket_addr_port_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "socket_addr_port", + debug_name: "test_info_is_failed", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -3499,36 +4417,36 @@ fn wire__zoe_client__frb_api__socket_addr_port_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_addr = , + let api_test = , >>::sse_decode(&mut deserializer); deserializer.end(); move |context| { transform_result_sse::<_, ()>((move || { - let mut api_addr_guard = None; + let mut api_test_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_addr, 0, false, + &api_test, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), + 0 => api_test_guard = Some(api_test.lockable_decode_sync_ref()), _ => unreachable!(), } } - let api_addr_guard = api_addr_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok(zoe_client::frb_api::socket_addr_port( - &*api_addr_guard, - ))?; + let api_test_guard = api_test_guard.unwrap(); + let output_ok = Result::<_, ()>::Ok( + crate::api::system_test::test_info_is_failed(&*api_test_guard), + )?; Ok(output_ok) })()) } }, ) } -fn wire__zoe_client__frb_api__socket_addr_to_string_impl( +fn wire__crate__api__system_test__test_info_is_passed_impl( port_: flutter_rust_bridge::for_generated::MessagePort, ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, @@ -3536,7 +4454,7 @@ fn wire__zoe_client__frb_api__socket_addr_to_string_impl( ) { FLUTTER_RUST_BRIDGE_HANDLER.wrap_normal::( flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "socket_addr_to_string", + debug_name: "test_info_is_passed", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, }, @@ -3550,28 +4468,28 @@ fn wire__zoe_client__frb_api__socket_addr_to_string_impl( }; let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_addr = , + let api_test = , >>::sse_decode(&mut deserializer); deserializer.end(); move |context| { transform_result_sse::<_, ()>((move || { - let mut api_addr_guard = None; + let mut api_test_guard = None; let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_addr, 0, false, + &api_test, 0, false, ), ]); for i in decode_indices_ { match i { - 0 => api_addr_guard = Some(api_addr.lockable_decode_sync_ref()), + 0 => api_test_guard = Some(api_test.lockable_decode_sync_ref()), _ => unreachable!(), } } - let api_addr_guard = api_addr_guard.unwrap(); + let api_test_guard = api_test_guard.unwrap(); let output_ok = Result::<_, ()>::Ok( - zoe_client::frb_api::socket_addr_to_string(&*api_addr_guard), + crate::api::system_test::test_info_is_passed(&*api_test_guard), )?; Ok(output_ok) })()) @@ -3673,6 +4591,12 @@ flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!( + flutter_rust_bridge::for_generated::RustAutoOpaqueInner +); flutter_rust_bridge::frb_generated_moi_arc_impl_value!( flutter_rust_bridge::for_generated::RustAutoOpaqueInner ); @@ -3853,6 +4777,26 @@ impl SseDecode for SocketAddr { } } +impl SseDecode for SystemCheckResults { + // 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 TestInfo { + // 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 VerifyError { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -4035,6 +4979,26 @@ impl SseDecode } } +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> { @@ -4065,6 +5029,14 @@ impl SseDecode } } +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< zoe_client::client::OverallConnectionStatus, @@ -4138,6 +5110,30 @@ impl SseDecode for Vec { } } +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode(deserializer)); + } + return ans_; + } +} + +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode(deserializer)); + } + return ans_; + } +} + impl SseDecode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -4150,6 +5146,20 @@ impl SseDecode for Vec { } } +impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { + let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { + ans_.push(::sse_decode( + deserializer, + )); + } + return ans_; + } +} + impl SseDecode for Option { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { @@ -4161,24 +5171,54 @@ impl SseDecode for Option { } } -impl SseDecode for zoe_client::client::OverallConnectionStatus { +impl SseDecode for zoe_client::client::OverallConnectionStatus { + // 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_isConnected = ::sse_decode(deserializer); + let mut var_connectedCount = ::sse_decode(deserializer); + let mut var_totalCount = ::sse_decode(deserializer); + return zoe_client::client::OverallConnectionStatus { + is_connected: var_isConnected, + connected_count: var_connectedCount, + total_count: var_totalCount, + }; + } +} + +impl SseDecode for zoe_client::system_check::TestCategory { + // 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 => zoe_client::system_check::TestCategory::OfflineStorage, + 1 => zoe_client::system_check::TestCategory::OfflineBlob, + 2 => zoe_client::system_check::TestCategory::Connectivity, + 3 => zoe_client::system_check::TestCategory::Storage, + 4 => zoe_client::system_check::TestCategory::BlobService, + 5 => zoe_client::system_check::TestCategory::Synchronization, + _ => unreachable!("Invalid variant for TestCategory: {}", inner), + }; + } +} + +impl SseDecode for u16 { + // 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_u16::().unwrap() + } +} + +impl SseDecode for u32 { // 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_isConnected = ::sse_decode(deserializer); - let mut var_connectedCount = ::sse_decode(deserializer); - let mut var_totalCount = ::sse_decode(deserializer); - return zoe_client::client::OverallConnectionStatus { - is_connected: var_isConnected, - connected_count: var_connectedCount, - total_count: var_totalCount, - }; + deserializer.cursor.read_u32::().unwrap() } } -impl SseDecode for u16 { +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_u16::().unwrap() + deserializer.cursor.read_u64::().unwrap() } } @@ -4382,36 +5422,135 @@ fn pde_ffi_dispatcher_primary_impl( rust_vec_len, data_len, ), - 60 => wire__zoe_client__frb_api__create_signing_key_random_impl( + 60 => wire__zoe_client__frb_api__create_relay_address_with_hostname_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 61 => wire__zoe_client__frb_api__create_signing_key_random_impl( port, ptr, rust_vec_len, data_len, ), - 61 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), - 62 => wire__zoe_client__frb_api__frb_init_impl(port, ptr, rust_vec_len, data_len), - 64 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), - 65 => { + 62 => wire__zoe_client__frb_api__create_socket_addr_impl(port, ptr, rust_vec_len, data_len), + 63 => wire__zoe_client__frb_api__frb_init_impl(port, ptr, rust_vec_len, data_len), + 65 => wire__crate__api__simple__init_app_impl(port, ptr, rust_vec_len, data_len), + 66 => { wire__crate__api__client__overall_status_stream_impl(port, ptr, rust_vec_len, data_len) } - 66 => { + 67 => wire__zoe_client__frb_api__prepare_client_for_systems_test_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 68 => { wire__zoe_client__util__resolve_to_socket_addr_impl(port, ptr, rust_vec_len, data_len) } - 67 => { + 69 => { + wire__crate__api__system_test__run_system_tests_impl(port, ptr, rust_vec_len, data_len) + } + 70 => { wire__zoe_client__frb_api__signing_key_from_hex_impl(port, ptr, rust_vec_len, data_len) } - 68 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( + 71 => wire__zoe_client__frb_api__signing_key_to_verifying_key_impl( port, ptr, rust_vec_len, data_len, ), - 69 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), - 70 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), - 71 => { + 72 => wire__zoe_client__frb_api__socket_addr_ip_impl(port, ptr, rust_vec_len, data_len), + 73 => wire__zoe_client__frb_api__socket_addr_port_impl(port, ptr, rust_vec_len, data_len), + 74 => { wire__zoe_client__frb_api__socket_addr_to_string_impl(port, ptr, rust_vec_len, data_len) } - 72 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( + 75 => wire__crate__api__system_test__system_check_results_category_has_failures_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 76 => wire__crate__api__system_test__system_check_results_failed_count_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 77 => wire__crate__api__system_test__system_check_results_get_categories_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 78 => wire__crate__api__system_test__system_check_results_get_tests_for_category_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 79 => wire__crate__api__system_test__system_check_results_is_success_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 80 => wire__crate__api__system_test__system_check_results_passed_count_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 81 => wire__crate__api__system_test__system_check_results_total_count_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 82 => wire__crate__api__system_test__system_check_results_total_duration_ms_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 83 => wire__crate__api__system_test__test_info_duration_ms_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 84 => wire__crate__api__system_test__test_info_get_details_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 85 => wire__crate__api__system_test__test_info_get_error_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 86 => wire__crate__api__system_test__test_info_get_name_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 87 => wire__crate__api__system_test__test_info_is_failed_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 88 => wire__crate__api__system_test__test_info_is_passed_impl( + port, + ptr, + rust_vec_len, + data_len, + ), + 89 => wire__zoe_client__frb_api__verifying_key_from_hex_impl( port, ptr, rust_vec_len, @@ -4499,7 +5638,7 @@ fn pde_ffi_dispatcher_sync_impl( rust_vec_len, data_len, ), - 63 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), + 64 => wire__crate__api__simple__greet_impl(ptr, rust_vec_len, data_len), _ => unreachable!(), } } @@ -4754,6 +5893,39 @@ impl flutter_rust_bridge::IntoIntoDart> for SocketAddr { } } +// 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 SystemCheckResults { + 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 TestInfo { + 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 { @@ -4844,6 +6016,31 @@ impl flutter_rust_bridge::IntoIntoDart { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + match self.0 { + zoe_client::system_check::TestCategory::OfflineStorage => 0.into_dart(), + zoe_client::system_check::TestCategory::OfflineBlob => 1.into_dart(), + zoe_client::system_check::TestCategory::Connectivity => 2.into_dart(), + zoe_client::system_check::TestCategory::Storage => 3.into_dart(), + zoe_client::system_check::TestCategory::BlobService => 4.into_dart(), + zoe_client::system_check::TestCategory::Synchronization => 5.into_dart(), + _ => unreachable!(), + } + } +} +impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive + for FrbWrapper +{ +} +impl flutter_rust_bridge::IntoIntoDart> + for zoe_client::system_check::TestCategory +{ + fn into_into_dart(self) -> FrbWrapper { + self.into() + } +} impl SseEncode for flutter_rust_bridge::for_generated::anyhow::Error { // Codec=Sse (Serialization based), see doc to use other codecs @@ -4972,6 +6169,20 @@ impl SseEncode for SocketAddr { } } +impl SseEncode for SystemCheckResults { + // 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 TestInfo { + // 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 VerifyError { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -5161,6 +6372,28 @@ impl SseEncode } } +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> { @@ -5194,6 +6427,13 @@ impl SseEncode } } +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< zoe_client::client::OverallConnectionStatus, @@ -5265,6 +6505,26 @@ impl SseEncode for Vec { } } +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + impl SseEncode for Vec { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -5275,6 +6535,16 @@ impl SseEncode for Vec { } } +impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { + ::sse_encode(self.len() as _, serializer); + for item in self { + ::sse_encode(item, serializer); + } + } +} + impl SseEncode for Option { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -5294,6 +6564,26 @@ impl SseEncode for zoe_client::client::OverallConnectionStatus { } } +impl SseEncode for zoe_client::system_check::TestCategory { + // 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 { + zoe_client::system_check::TestCategory::OfflineStorage => 0, + zoe_client::system_check::TestCategory::OfflineBlob => 1, + zoe_client::system_check::TestCategory::Connectivity => 2, + zoe_client::system_check::TestCategory::Storage => 3, + zoe_client::system_check::TestCategory::BlobService => 4, + zoe_client::system_check::TestCategory::Synchronization => 5, + _ => { + unimplemented!(""); + } + }, + serializer, + ); + } +} + impl SseEncode for u16 { // Codec=Sse (Serialization based), see doc to use other codecs fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { @@ -5301,6 +6591,20 @@ impl SseEncode for u16 { } } +impl SseEncode for u32 { + // 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_u32::(self).unwrap(); + } +} + +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) { @@ -5352,6 +6656,7 @@ mod io { use flutter_rust_bridge::{Handler, IntoIntoDart}; use zoe_client::client::api::file_storage::*; use zoe_client::client::*; + use zoe_client::system_check::*; use zoe_wire_protocol::keys::*; use zoe_wire_protocol::primitives::*; @@ -5588,6 +6893,34 @@ mod io { MoiArc::>::decrement_strong_count(ptr as _); } + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::increment_strong_count(ptr as _); + } + + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_zoe_native_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTestInfo( + ptr: *const std::ffi::c_void, + ) { + MoiArc::>::decrement_strong_count(ptr as _); + } + #[unsafe(no_mangle)] pub extern "C" fn frbgen_zoe_native_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerVerifyError( ptr: *const std::ffi::c_void, @@ -5652,6 +6985,7 @@ mod web { use flutter_rust_bridge::{Handler, IntoIntoDart}; use zoe_client::client::api::file_storage::*; use zoe_client::client::*; + use zoe_client::system_check::*; use zoe_wire_protocol::keys::*; use zoe_wire_protocol::primitives::*; @@ -5888,6 +7222,34 @@ mod web { MoiArc::>::decrement_strong_count(ptr as _); } + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSystemCheckResults( + 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_generatedRustAutoOpaqueInnerSystemCheckResults( + 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_generatedRustAutoOpaqueInnerTestInfo( + 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_generatedRustAutoOpaqueInnerTestInfo( + 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_generatedRustAutoOpaqueInnerVerifyError( ptr: *const std::ffi::c_void, diff --git a/packages/zoe_native/test/providers_smoke_test.dart b/packages/zoe_native/test/providers_smoke_test.dart index 184bb353..432e2a48 100644 --- a/packages/zoe_native/test/providers_smoke_test.dart +++ b/packages/zoe_native/test/providers_smoke_test.dart @@ -27,6 +27,8 @@ class MockSocketAddr extends Mock { bool operator ==(Object other) => identical(this, other); } +class MockRelayAddress extends Mock implements RelayAddress {} + // Fake classes for fallback values class FakeVerifyingKey extends Fake implements VerifyingKey {} @@ -34,6 +36,8 @@ class FakeSocketAddr extends Fake implements SocketAddr {} class FakeClientSecret extends Fake implements ClientSecret {} +class FakeRelayAddress extends Fake implements RelayAddress {} + Future main() async { // this ensures the dart types are fine and we can mock // the API without any issues @@ -71,6 +75,7 @@ Future main() async { registerFallbackValue(FakeVerifyingKey()); registerFallbackValue(FakeSocketAddr()); registerFallbackValue(FakeClientSecret()); + registerFallbackValue(FakeRelayAddress()); RustLib.initMock(api: mockApi); initStorage( @@ -115,6 +120,14 @@ Future main() async { () => mockApi.zoeClientUtilResolveToSocketAddr(s: any(named: 's')), ).thenAnswer((_) async => FakeSocketAddr()); + // Mock createRelayAddressWithHostname() + when( + () => mockApi.zoeClientFrbApiCreateRelayAddressWithHostname( + serverKeyHex: any(named: 'serverKeyHex'), + hostname: any(named: 'hostname'), + ), + ).thenAnswer((_) async => FakeRelayAddress()); + // Mock builder methods when( () => builder.dbStorageDir(path: any(named: 'path')), @@ -133,6 +146,9 @@ Future main() async { when( () => builder.clientSecret(secret: any(named: 'secret')), ).thenAnswer((_) async {}); + when( + () => builder.servers(servers: any(named: 'servers')), + ).thenAnswer((_) async {}); when(() => builder.build()).thenAnswer((_) async => client); // Mock client methods @@ -155,24 +171,14 @@ Future main() async { ), ).called(1); verify( - () => mockApi.zoeWireProtocolKeysVerifyingKeyFromHex( - hex: any(named: 'hex'), - ), - ).called(1); - verify( - () => mockApi.zoeClientUtilResolveToSocketAddr(s: any(named: 's')), + () => mockApi.zoeClientClientClientSecretFromHex(hex: any(named: 'hex')), ).called(1); verify( - () => builder.serverInfo( - serverPublicKey: any(named: 'serverPublicKey'), - serverAddr: any(named: 'serverAddr'), + () => mockApi.zoeClientFrbApiCreateRelayAddressWithHostname( + serverKeyHex: any(named: 'serverKeyHex'), + hostname: any(named: 'hostname'), ), ).called(1); - // Note: ClientSecret.fromHex and builder.clientSecret are only called when loading existing client - // Since we have a client secret in storage, these should be called - verify( - () => mockApi.zoeClientClientClientSecretFromHex(hex: any(named: 'hex')), - ).called(1); verify(() => builder.clientSecret(secret: any(named: 'secret'))).called(1); verify(() => builder.build()).called(1); @@ -211,6 +217,14 @@ Future main() async { () => mockApi.zoeClientUtilResolveToSocketAddr(s: any(named: 's')), ).thenAnswer((_) async => FakeSocketAddr()); + // Mock createRelayAddressWithHostname() + when( + () => mockApi.zoeClientFrbApiCreateRelayAddressWithHostname( + serverKeyHex: any(named: 'serverKeyHex'), + hostname: any(named: 'hostname'), + ), + ).thenAnswer((_) async => FakeRelayAddress()); + // Mock builder methods when( () => builder.dbStorageDir(path: any(named: 'path')), @@ -226,6 +240,9 @@ Future main() async { serverAddr: any(named: 'serverAddr'), ), ).thenAnswer((_) async {}); + when( + () => builder.servers(servers: any(named: 'servers')), + ).thenAnswer((_) async {}); when(() => builder.build()).thenAnswer((_) async => client); // Mock client methods for new client generation From f3a6bcbf003657d7644e86f016cbfb9eb4d443f9 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Wed, 10 Sep 2025 23:03:38 +0100 Subject: [PATCH 10/49] autoconnect now that things work again --- packages/zoe_native/lib/src/support.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/zoe_native/lib/src/support.dart b/packages/zoe_native/lib/src/support.dart index 5152e48c..6cf24ccb 100644 --- a/packages/zoe_native/lib/src/support.dart +++ b/packages/zoe_native/lib/src/support.dart @@ -184,7 +184,7 @@ Future _defaultClientBuilder({ ); builder.servers(servers: [relayAddress]); - // builder.autoconnect(autoconnect: true); + builder.autoconnect(autoconnect: true); return builder; } From 3bd81c8737cc2dfc5047db8caff5c70d991bddde Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Wed, 10 Sep 2025 23:17:57 +0100 Subject: [PATCH 11/49] actual linkage --- packages/zoe_native/Cargo.lock | 8 ++++++++ packages/zoe_native/Cargo.toml | 18 +++++++++--------- .../zoe_native/test/providers_smoke_test.dart | 6 ++++++ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/packages/zoe_native/Cargo.lock b/packages/zoe_native/Cargo.lock index 736499dc..576a4d1e 100644 --- a/packages/zoe_native/Cargo.lock +++ b/packages/zoe_native/Cargo.lock @@ -1523,6 +1523,7 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" dependencies = [ "postcard", "proc-macro2", @@ -6788,6 +6789,7 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" dependencies = [ "blake3", "flutter_rust_bridge", @@ -6805,6 +6807,7 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" dependencies = [ "anyhow", "chrono", @@ -6829,6 +6832,7 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" dependencies = [ "anyhow", "async-once-cell", @@ -6870,6 +6874,7 @@ dependencies = [ [[package]] name = "zoe-client-storage" version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" dependencies = [ "anyhow", "async-trait", @@ -6889,6 +6894,7 @@ dependencies = [ [[package]] name = "zoe-encrypted-storage" version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" dependencies = [ "aead", "aes-gcm", @@ -6901,6 +6907,7 @@ dependencies = [ [[package]] name = "zoe-state-machine" version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" dependencies = [ "blake3", "ed25519-dalek", @@ -6919,6 +6926,7 @@ dependencies = [ [[package]] name = "zoe-wire-protocol" version = "0.1.0" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" dependencies = [ "anyhow", "argon2", diff --git a/packages/zoe_native/Cargo.toml b/packages/zoe_native/Cargo.toml index f6cf407d..4d8c789a 100644 --- a/packages/zoe_native/Cargo.toml +++ b/packages/zoe_native/Cargo.toml @@ -7,18 +7,18 @@ members = ["rust"] flutter_rust_bridge = "=2.11.1" [workspace.dependencies.zoe-client] -path = "../../../zoe-relay/crates/client" -# git = "https://github.com/acterglobal/zoe-relay.git" -# branch = "main" +# path = "../../../zoe-relay/crates/client" +git = "https://github.com/acterglobal/zoe-relay.git" +branch = "main" features = ["frb-api"] [workspace.dependencies.zoe-wire-protocol] -path = "../../../zoe-relay/crates/wire-protocol" -# git = "https://github.com/acterglobal/zoe-relay.git" -# branch = "main" +# path = "../../../zoe-relay/crates/wire-protocol" +git = "https://github.com/acterglobal/zoe-relay.git" +branch = "main" [workspace.dependencies.zoe-app-primitives] -path = "../../../zoe-relay/crates/app-primitives" -# git = "https://github.com/acterglobal/zoe-relay.git" -# branch = "main" +# path = "../../../zoe-relay/crates/app-primitives" +git = "https://github.com/acterglobal/zoe-relay.git" +branch = "main" features = ["frb-api"] \ No newline at end of file diff --git a/packages/zoe_native/test/providers_smoke_test.dart b/packages/zoe_native/test/providers_smoke_test.dart index 432e2a48..40bc37bb 100644 --- a/packages/zoe_native/test/providers_smoke_test.dart +++ b/packages/zoe_native/test/providers_smoke_test.dart @@ -149,6 +149,9 @@ Future main() async { when( () => builder.servers(servers: any(named: 'servers')), ).thenAnswer((_) async {}); + when( + () => builder.autoconnect(autoconnect: any(named: 'autoconnect')), + ).thenAnswer((_) async {}); when(() => builder.build()).thenAnswer((_) async => client); // Mock client methods @@ -243,6 +246,9 @@ Future main() async { when( () => builder.servers(servers: any(named: 'servers')), ).thenAnswer((_) async {}); + when( + () => builder.autoconnect(autoconnect: any(named: 'autoconnect')), + ).thenAnswer((_) async {}); when(() => builder.build()).thenAnswer((_) async => client); // Mock client methods for new client generation From c84681b4fe6be489c603ab4221057ac7337f937c Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 11 Sep 2025 15:00:10 +0100 Subject: [PATCH 12/49] using the new action from the relay repo --- .github/workflows/ci.yml | 123 ++++++++++++---------------------- .github/workflows/codegen.yml | 26 +++---- 2 files changed, 52 insertions(+), 97 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 05bbefdb..4b3a5393 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,26 +28,13 @@ jobs: - name: Setup Android SDK uses: android-actions/setup-android@v3 - - name: Setup Android NDK - uses: nttld/setup-ndk@v1 + - name: Setup Rust for Android + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - ndk-version: r25c - add-to-path: false - - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - targets: | - aarch64-linux-android - armv7-linux-androideabi - x86_64-linux-android - i686-linux-android - - - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 - with: - workspaces: rust + targets: 'aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' + install_android_ndk: true - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -81,19 +68,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - targets: | - aarch64-apple-ios - x86_64-apple-ios - aarch64-apple-ios-sim - - - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 + - name: Setup Rust for iOS + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - workspaces: rust + targets: 'aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -133,16 +113,12 @@ jobs: liblzma-dev \ libstdc++-12-dev - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable + - name: Setup Rust for Linux + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - toolchain: ${{ env.RUST_VERSION }} - targets: x86_64-unknown-linux-gnu - - - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 - with: - workspaces: rust + targets: 'x86_64-unknown-linux-gnu' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -173,18 +149,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - targets: | - x86_64-apple-darwin - aarch64-apple-darwin - - - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 + - name: Setup Rust for macOS + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - workspaces: rust + targets: 'x86_64-apple-darwin,aarch64-apple-darwin' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -215,16 +185,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - targets: x86_64-pc-windows-msvc - - - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 + - name: Setup Rust for Windows + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - workspaces: rust + targets: 'x86_64-pc-windows-msvc' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -255,15 +221,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable + - name: Setup Rust for testing + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - toolchain: ${{ env.RUST_VERSION }} - - - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 - with: - workspaces: rust + targets: 'x86_64-unknown-linux-gnu' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -298,11 +261,13 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable + - name: Setup Rust for formatting + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - toolchain: ${{ env.RUST_VERSION }} - components: rustfmt + targets: 'x86_64-unknown-linux-gnu' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' + components: 'rustfmt' - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -340,16 +305,12 @@ jobs: liblzma-dev \ libstdc++-12-dev - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - targets: x86_64-unknown-linux-gnu - - - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 + - name: Setup Rust for zoe_native + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - workspaces: packages/zoe_native/rust + targets: 'x86_64-unknown-linux-gnu' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter uses: subosito/flutter-action@v2 diff --git a/.github/workflows/codegen.yml b/.github/workflows/codegen.yml index 1f4ffdb3..76f1583a 100644 --- a/.github/workflows/codegen.yml +++ b/.github/workflows/codegen.yml @@ -26,15 +26,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable + - name: Setup Rust for codegen + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - toolchain: ${{ env.RUST_VERSION }} - - - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 - with: - workspaces: rust + targets: 'x86_64-unknown-linux-gnu' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -78,15 +75,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Rust - uses: dtolnay/rust-toolchain@stable - with: - toolchain: ${{ env.RUST_VERSION }} - - - name: Setup Rust cache - uses: Swatinem/rust-cache@v2 + - name: Setup Rust for cross-platform testing + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - workspaces: rust + targets: 'x86_64-unknown-linux-gnu' + rust_version: ${{ env.RUST_VERSION }} + workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter uses: subosito/flutter-action@v2 From c2ed6fdbe0a7d4cc5fab71b35158b7c1a405970d Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 11 Sep 2025 15:17:41 +0100 Subject: [PATCH 13/49] more CI fixes --- .github/workflows/ci.yml | 122 ++++++---------------------------- .github/workflows/codegen.yml | 20 +++--- 2 files changed, 29 insertions(+), 113 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4b3a5393..47ce1548 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,6 @@ on: env: FLUTTER_VERSION: '3.35.2' - RUST_VERSION: '1.89.0' jobs: # Test and build for Android @@ -32,7 +31,6 @@ jobs: uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: targets: 'aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android' - rust_version: ${{ env.RUST_VERSION }} workspace_path: 'packages/zoe_native/rust' install_android_ndk: true @@ -46,11 +44,6 @@ jobs: - name: Install Flutter dependencies run: flutter pub get - - name: Install Rust dependencies - run: | - cd rust - cargo fetch - - name: Setup Android environment run: | echo "ANDROID_NDK_HOME=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV @@ -72,7 +65,6 @@ jobs: uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: targets: 'aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim' - rust_version: ${{ env.RUST_VERSION }} workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter @@ -85,11 +77,6 @@ jobs: - name: Install Flutter dependencies run: flutter pub get - - name: Install Rust dependencies - run: | - cd rust - cargo fetch - - name: Build for iOS run: | flutter build ios --debug --no-codesign @@ -101,23 +88,9 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Install Linux dependencies - run: | - sudo apt-get update - sudo apt-get install -y \ - clang \ - cmake \ - ninja-build \ - pkg-config \ - libgtk-3-dev \ - liblzma-dev \ - libstdc++-12-dev - - name: Setup Rust for Linux uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - targets: 'x86_64-unknown-linux-gnu' - rust_version: ${{ env.RUST_VERSION }} workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter @@ -133,11 +106,6 @@ jobs: - name: Install Flutter dependencies run: flutter pub get - - name: Install Rust dependencies - run: | - cd rust - cargo fetch - - name: Build for Linux run: | flutter build linux --debug @@ -153,7 +121,6 @@ jobs: uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: targets: 'x86_64-apple-darwin,aarch64-apple-darwin' - rust_version: ${{ env.RUST_VERSION }} workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter @@ -169,11 +136,6 @@ jobs: - name: Install Flutter dependencies run: flutter pub get - - name: Install Rust dependencies - run: | - cd rust - cargo fetch - - name: Build for macOS run: | flutter build macos --debug @@ -189,7 +151,6 @@ jobs: uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: targets: 'x86_64-pc-windows-msvc' - rust_version: ${{ env.RUST_VERSION }} workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter @@ -205,11 +166,6 @@ jobs: - name: Install Flutter dependencies run: flutter pub get - - name: Install Rust dependencies - run: | - cd rust - cargo fetch - - name: Build for Windows run: | flutter build windows --debug @@ -224,8 +180,6 @@ jobs: - name: Setup Rust for testing uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - targets: 'x86_64-unknown-linux-gnu' - rust_version: ${{ env.RUST_VERSION }} workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter @@ -237,17 +191,7 @@ jobs: - name: Install Flutter dependencies run: flutter pub get - - - name: Install Rust dependencies - run: | - cd rust - cargo fetch - - - name: Run Rust tests - run: | - cd rust - cargo test - + - name: Run Flutter tests run: flutter test @@ -264,8 +208,6 @@ jobs: - name: Setup Rust for formatting uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - targets: 'x86_64-unknown-linux-gnu' - rust_version: ${{ env.RUST_VERSION }} workspace_path: 'packages/zoe_native/rust' components: 'rustfmt' @@ -277,9 +219,8 @@ jobs: cache: true - name: Check Rust formatting - run: | - cd rust - cargo fmt --check + working-directory: packages/zoe_native + run: cargo fmt --check - name: Check Dart formatting run: dart format --set-exit-if-changed . @@ -288,28 +229,15 @@ jobs: # This job tests the zoe_native plugin independently to ensure it builds, # passes all tests, and follows code quality standards zoe_native_plugin: + name: Test zoe_native plugin runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - - - name: Install Linux dependencies - run: | - sudo apt-get update - sudo apt-get install -y \ - clang \ - cmake \ - ninja-build \ - pkg-config \ - libgtk-3-dev \ - liblzma-dev \ - libstdc++-12-dev - + - name: Setup Rust for zoe_native uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - targets: 'x86_64-unknown-linux-gnu' - rust_version: ${{ env.RUST_VERSION }} workspace_path: 'packages/zoe_native/rust' - name: Setup Flutter @@ -323,41 +251,33 @@ jobs: run: flutter config --enable-linux-desktop - name: Install zoe_native plugin dependencies - run: | - cd packages/zoe_native - flutter pub get + working-directory: packages/zoe_native + run: flutter pub get - name: Install Rust dependencies for zoe_native - run: | - cd packages/zoe_native/rust - cargo fetch + working-directory: packages/zoe_native + run: cargo fetch - name: Run zoe_native Rust tests - run: | - cd packages/zoe_native/rust - cargo test + working-directory: packages/zoe_native + run: cargo test - name: Run zoe_native Flutter tests - run: | - cd packages/zoe_native - flutter test + working-directory: packages/zoe_native + run: flutter test - name: Run zoe_native Flutter analyze - run: | - cd packages/zoe_native - flutter analyze + working-directory: packages/zoe_native + run: flutter analyze - name: Build zoe_native Rust library - run: | - cd packages/zoe_native/rust - cargo build + working-directory: packages/zoe_native + run: cargo build - name: Check zoe_native Rust formatting - run: | - cd packages/zoe_native/rust - cargo fmt --check + working-directory: packages/zoe_native + run: cargo fmt --check - name: Check zoe_native Dart formatting - run: | - cd packages/zoe_native - dart format --set-exit-if-changed . \ No newline at end of file + working-directory: packages/zoe_native + run: dart format --set-exit-if-changed . \ No newline at end of file diff --git a/.github/workflows/codegen.yml b/.github/workflows/codegen.yml index 76f1583a..b160c034 100644 --- a/.github/workflows/codegen.yml +++ b/.github/workflows/codegen.yml @@ -32,6 +32,7 @@ jobs: targets: 'x86_64-unknown-linux-gnu' rust_version: ${{ env.RUST_VERSION }} workspace_path: 'packages/zoe_native/rust' + components: 'rustfmt' - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -58,7 +59,7 @@ jobs: fi - name: Verify Rust compilation - working-directory: packages/zoe_native/rust + working-directory: packages/zoe_native/ run: cargo check --all - name: Verify Flutter compilation @@ -89,19 +90,14 @@ jobs: channel: 'stable' cache: true - - name: Install flutter_rust_bridge_codegen - run: cargo install flutter_rust_bridge_codegen --version 2.11.1 - - name: Install dependencies run: flutter pub get - - name: Test code generation - run: flutter_rust_bridge_codegen generate - - - name: Test Rust build + - name: Rust tests + working-directory: packages/zoe_native run: | - cd rust - cargo build + cargo test - - name: Test Flutter analysis - run: flutter analyze lib/core/rust/ \ No newline at end of file + - name: Flutter tests + working-directory: packages/zoe_native + run: flutter test \ No newline at end of file From 1a37b55c8333dc9a50214a8135869d019048de98 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Thu, 11 Sep 2025 15:31:19 +0100 Subject: [PATCH 14/49] more CI fixes --- .github/workflows/ci.yml | 16 +++++++++++++--- packages/zoe_native/lib/src/support.dart | 3 ++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 47ce1548..73753581 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -92,7 +92,17 @@ jobs: uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: workspace_path: 'packages/zoe_native/rust' - + - name: Install Linux dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + clang \ + cmake \ + ninja-build \ + pkg-config \ + libgtk-3-dev \ + liblzma-dev \ + libstdc++-12-dev - name: Setup Flutter uses: subosito/flutter-action@v2 with: @@ -196,7 +206,7 @@ jobs: run: flutter test - name: Run Flutter analyze - run: flutter analyze + run: flutter analyze lib # Check code formatting format: @@ -268,7 +278,7 @@ jobs: - name: Run zoe_native Flutter analyze working-directory: packages/zoe_native - run: flutter analyze + run: flutter analyze lib - name: Build zoe_native Rust library working-directory: packages/zoe_native diff --git a/packages/zoe_native/lib/src/support.dart b/packages/zoe_native/lib/src/support.dart index 6cf24ccb..663675c4 100644 --- a/packages/zoe_native/lib/src/support.dart +++ b/packages/zoe_native/lib/src/support.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; @@ -11,7 +12,7 @@ import 'package:logging/logging.dart'; final _log = Logger('zoe_native::support'); void _logListener(LogRecord record) { - print('${record.level.name}: ${record.time}: ${record.message}'); + debugPrint('${record.level.name}: ${record.time}: ${record.message}'); } const rustLogKey = 'RUST_LOG'; From 50cb27b001cce68b5644b8e195f9a927deea0c9f Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 12 Sep 2025 11:57:49 +0100 Subject: [PATCH 15/49] activate autocancel --- .github/workflows/ci.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 73753581..15576e1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,10 @@ on: env: FLUTTER_VERSION: '3.35.2' +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: # Test and build for Android android: From 6a90630423e775e7d430589062c62108cbeff29d Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 12 Sep 2025 13:13:04 +0100 Subject: [PATCH 16/49] upgrade to latest zoe-relay package --- packages/zoe_native/Cargo.lock | 441 +++++++-------------------------- 1 file changed, 83 insertions(+), 358 deletions(-) diff --git a/packages/zoe_native/Cargo.lock b/packages/zoe_native/Cargo.lock index 576a4d1e..e4b04608 100644 --- a/packages/zoe_native/Cargo.lock +++ b/packages/zoe_native/Cargo.lock @@ -344,8 +344,8 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16e2cdb6d5ed835199484bb92bb8b3edd526effe995c61732580439c1a67e2e9" dependencies = [ - "base64 0.22.1", - "http 1.3.1", + "base64", + "http", "log", "url", ] @@ -436,12 +436,6 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "022dfe9eb35f19ebbcb51e0b40a5ab759f46ad60cadf7297e0bd085afb50e076" -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -475,7 +469,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.9.4", + "bitflags", "cexpr", "clang-sys", "itertools", @@ -516,12 +510,6 @@ dependencies = [ "hex-conservative", ] -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.9.4" @@ -634,9 +622,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.36" +version = "1.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5252b3d2648e5eedbc1a6f501e3c795e07025c1e93bbf8bbdd6eef7f447a6d54" +checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" dependencies = [ "find-msvc-tools", "jobserver", @@ -888,7 +876,7 @@ dependencies = [ [[package]] name = "core-models" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" +source = "git+https://github.com/cryspen/libcrux#4f028e00afff5fcb28310aef5b0c44d25f4f1ef8" dependencies = [ "hax-lib", "pastey", @@ -1283,15 +1271,6 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - [[package]] name = "enum-as-inner" version = "0.6.1" @@ -1496,21 +1475,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "form_urlencoded" version = "1.2.2" @@ -1523,7 +1487,7 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" dependencies = [ "postcard", "proc-macro2", @@ -1770,25 +1734,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "h2" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 0.2.12", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - [[package]] name = "h2" version = "0.4.12" @@ -1800,7 +1745,7 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.3.1", + "http", "indexmap", "slab", "tokio", @@ -2007,17 +1952,6 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f558a64ac9af88b5ba400d99b579451af0d39c6d360980045b91aac966d705e2" -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http" version = "1.3.1" @@ -2029,17 +1963,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http 0.2.12", - "pin-project-lite", -] - [[package]] name = "http-body" version = "1.0.1" @@ -2047,7 +1970,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.3.1", + "http", ] [[package]] @@ -2058,8 +1981,8 @@ checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", "futures-core", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "pin-project-lite", ] @@ -2077,33 +2000,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" - -[[package]] -name = "hyper" -version = "0.14.32" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.5.10", - "tokio", - "tower-service", - "tracing", - "want", -] +checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "hyper" @@ -2115,9 +2014,9 @@ dependencies = [ "bytes", "futures-channel", "futures-core", - "h2 0.4.12", - "http 1.3.1", - "http-body 1.0.1", + "h2", + "http", + "http-body", "httparse", "httpdate", "itoa", @@ -2134,8 +2033,8 @@ version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "http 1.3.1", - "hyper 1.7.0", + "http", + "hyper", "hyper-util", "rustls", "rustls-pki-types", @@ -2145,33 +2044,20 @@ dependencies = [ "webpki-roots 1.0.2", ] -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.32", - "native-tls", - "tokio", - "tokio-native-tls", -] - [[package]] name = "hyper-util" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-channel", "futures-core", "futures-util", - "http 1.3.1", - "http-body 1.0.1", - "hyper 1.7.0", + "http", + "http-body", + "hyper", "ipnet", "libc", "percent-encoding", @@ -2323,9 +2209,9 @@ dependencies = [ "attohttpc", "bytes", "futures", - "http 1.3.1", + "http", "http-body-util", - "hyper 1.7.0", + "hyper", "hyper-util", "log", "rand 0.9.2", @@ -2392,7 +2278,7 @@ version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" dependencies = [ - "bitflags 2.9.4", + "bitflags", "cfg-if", "libc", ] @@ -2444,7 +2330,7 @@ dependencies = [ "futures-util", "getrandom 0.3.3", "hickory-resolver", - "http 1.3.1", + "http", "igd-next", "instant", "iroh-base", @@ -2463,7 +2349,7 @@ dependencies = [ "pkarr", "portmapper", "rand 0.8.5", - "reqwest 0.12.23", + "reqwest", "ring", "rustls", "rustls-pki-types", @@ -2652,9 +2538,9 @@ dependencies = [ "derive_more 2.0.1", "getrandom 0.3.3", "hickory-resolver", - "http 1.3.1", + "http", "http-body-util", - "hyper 1.7.0", + "hyper", "hyper-util", "iroh-base", "iroh-metrics", @@ -2669,7 +2555,7 @@ dependencies = [ "pkarr", "postcard", "rand 0.8.5", - "reqwest 0.12.23", + "reqwest", "rustls", "rustls-pki-types", "rustls-webpki", @@ -2845,7 +2731,7 @@ dependencies = [ [[package]] name = "libcrux-intrinsics" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" +source = "git+https://github.com/cryspen/libcrux#4f028e00afff5fcb28310aef5b0c44d25f4f1ef8" dependencies = [ "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", "hax-lib", @@ -2854,7 +2740,7 @@ dependencies = [ [[package]] name = "libcrux-macros" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" +source = "git+https://github.com/cryspen/libcrux#4f028e00afff5fcb28310aef5b0c44d25f4f1ef8" dependencies = [ "quote", "syn 2.0.106", @@ -2863,7 +2749,7 @@ dependencies = [ [[package]] name = "libcrux-ml-dsa" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" +source = "git+https://github.com/cryspen/libcrux#4f028e00afff5fcb28310aef5b0c44d25f4f1ef8" dependencies = [ "core-models 0.0.3 (git+https://github.com/cryspen/libcrux)", "hax-lib", @@ -2899,7 +2785,7 @@ dependencies = [ [[package]] name = "libcrux-platform" version = "0.0.2" -source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" +source = "git+https://github.com/cryspen/libcrux#4f028e00afff5fcb28310aef5b0c44d25f4f1ef8" dependencies = [ "libc", ] @@ -2916,7 +2802,7 @@ dependencies = [ [[package]] name = "libcrux-secrets" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" +source = "git+https://github.com/cryspen/libcrux#4f028e00afff5fcb28310aef5b0c44d25f4f1ef8" dependencies = [ "hax-lib", ] @@ -2935,7 +2821,7 @@ dependencies = [ [[package]] name = "libcrux-sha3" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" +source = "git+https://github.com/cryspen/libcrux#4f028e00afff5fcb28310aef5b0c44d25f4f1ef8" dependencies = [ "hax-lib", "libcrux-intrinsics 0.0.3 (git+https://github.com/cryspen/libcrux)", @@ -2946,7 +2832,7 @@ dependencies = [ [[package]] name = "libcrux-traits" version = "0.0.3" -source = "git+https://github.com/cryspen/libcrux#d0c25f161ac55af2986ca80dce4c7d07a542a87c" +source = "git+https://github.com/cryspen/libcrux#4f028e00afff5fcb28310aef5b0c44d25f4f1ef8" dependencies = [ "libcrux-secrets 0.0.3 (git+https://github.com/cryspen/libcrux)", "rand 0.9.2", @@ -3072,12 +2958,6 @@ version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -3178,23 +3058,6 @@ dependencies = [ "snafu", ] -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", -] - [[package]] name = "nested_enum_utils" version = "0.2.2" @@ -3220,7 +3083,7 @@ dependencies = [ "netlink-packet-route 0.22.0", "netlink-sys", "once_cell", - "system-configuration 0.6.1", + "system-configuration", "windows-sys 0.59.0", ] @@ -3242,7 +3105,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc0e7987b28514adf555dc1f9a5c30dfc3e50750bbaffb1aec41ca7b23dcd8e4" dependencies = [ "anyhow", - "bitflags 2.9.4", + "bitflags", "byteorder", "libc", "log", @@ -3257,7 +3120,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56d83370a96813d7c977f8b63054f1162df6e5784f1c598d689236564fb5a6f2" dependencies = [ "anyhow", - "bitflags 2.9.4", + "bitflags", "byteorder", "libc", "log", @@ -3485,50 +3348,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" -[[package]] -name = "openssl" -version = "0.10.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" -dependencies = [ - "bitflags 2.9.4", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", -] - [[package]] name = "openssl-probe" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" -[[package]] -name = "openssl-sys" -version = "0.9.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "opentelemetry" version = "0.26.0" @@ -3641,7 +3466,7 @@ version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" dependencies = [ - "base64 0.22.1", + "base64", "serde", ] @@ -3662,9 +3487,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +checksum = "21e0a3a33733faeaf8651dfee72dd0f388f0c8e5ad496a3478fa5a922f49cfa8" dependencies = [ "memchr", "thiserror 2.0.16", @@ -3673,9 +3498,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" +checksum = "bc58706f770acb1dbd0973e6530a3cff4746fb721207feb3a8a6064cd0b6c663" dependencies = [ "pest", "pest_generator", @@ -3683,9 +3508,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" +checksum = "6d4f36811dfe07f7b8573462465d5cb8965fffc2e71ae377a33aecf14c2c9a2f" dependencies = [ "pest", "pest_meta", @@ -3696,9 +3521,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" +checksum = "42919b05089acbd0a5dcd5405fb304d17d1053847b81163d09c4ad18ce8e8420" dependencies = [ "pest", "sha2", @@ -3765,7 +3590,7 @@ dependencies = [ "log", "lru", "ntimestamp", - "reqwest 0.12.23", + "reqwest", "self_cell", "serde", "sha1_smol", @@ -3870,7 +3695,7 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f1975debe62a70557e42b9ff9466e4890cf9d3d156d296408a711f1c5f642b" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "derive_more 2.0.1", "futures-lite", @@ -4297,7 +4122,7 @@ version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.4", + "bitflags", ] [[package]] @@ -4411,60 +4236,20 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" -[[package]] -name = "reqwest" -version = "0.11.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.27", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.32", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration 0.5.1", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - [[package]] name = "reqwest" version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-core", "futures-util", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "http-body-util", - "hyper 1.7.0", + "hyper", "hyper-rustls", "hyper-util", "js-sys", @@ -4477,7 +4262,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tokio-rustls", "tokio-util", @@ -4518,7 +4303,7 @@ version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" dependencies = [ - "bitflags 2.9.4", + "bitflags", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -4562,7 +4347,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.9.4", + "bitflags", "errno", "libc", "linux-raw-sys", @@ -4594,16 +4379,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.4.0", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", + "security-framework", ] [[package]] @@ -4631,7 +4407,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.4.0", + "security-framework", "security-framework-sys", "webpki-root-certs 0.26.11", "windows-sys 0.59.0", @@ -4652,7 +4428,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.4.0", + "security-framework", "security-framework-sys", "webpki-root-certs 1.0.2", "windows-sys 0.59.0", @@ -4666,9 +4442,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.4" +version = "0.103.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" +checksum = "b5a37813727b78798e53c2bec3f5e8fe12a6d6f8389bf9ca7802add4c9905ad8" dependencies = [ "aws-lc-rs", "ring", @@ -4727,26 +4503,13 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.9.4", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - [[package]] name = "security-framework" version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b369d18893388b345804dc0007963c99b7d665ae71d275812d828c6f089640" dependencies = [ - "bitflags 2.9.4", + "bitflags", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -4929,7 +4692,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dee851d0e5e7af3721faea1843e8015e820a234f81fda3dea9247e15bac9a86a" dependencies = [ - "bitflags 2.9.4", + "bitflags", ] [[package]] @@ -5065,7 +4828,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb921f10397d5669e1af6455e9e2d367bf1f9cebcd6b1dd1dc50e19f6a9ac2ac" dependencies = [ - "base64 0.22.1", + "base64", "bounded-integer", "byteorder", "crc", @@ -5138,12 +4901,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.2" @@ -5164,36 +4921,15 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation 0.9.4", - "system-configuration-sys 0.5.0", -] - [[package]] name = "system-configuration" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.9.4", + "bitflags", "core-foundation 0.9.4", - "system-configuration-sys 0.6.0", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", + "system-configuration-sys", ] [[package]] @@ -5436,16 +5172,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.26.2" @@ -5507,12 +5233,12 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5190767f03b86528ab9f4f6a9158072a6d0ef240d9a9591772eb411f315920f4" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "futures-core", "futures-sink", "getrandom 0.3.3", - "http 1.3.1", + "http", "httparse", "rand 0.9.2", "ring", @@ -5573,7 +5299,7 @@ dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 1.0.2", + "sync_wrapper", "tokio", "tower-layer", "tower-service", @@ -5585,11 +5311,11 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.4", + "bitflags", "bytes", "futures-util", - "http 1.3.1", - "http-body 1.0.1", + "http", + "http-body", "iri-string", "pin-project-lite", "tower", @@ -6789,7 +6515,7 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" dependencies = [ "blake3", "flutter_rust_bridge", @@ -6807,7 +6533,7 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" dependencies = [ "anyhow", "chrono", @@ -6817,7 +6543,6 @@ dependencies = [ "iroh-blobs", "irpc 0.5.0", "path-clean", - "reqwest 0.11.27", "serde", "serde_json", "tarpc", @@ -6832,7 +6557,7 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" dependencies = [ "anyhow", "async-once-cell", @@ -6874,7 +6599,7 @@ dependencies = [ [[package]] name = "zoe-client-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" dependencies = [ "anyhow", "async-trait", @@ -6894,7 +6619,7 @@ dependencies = [ [[package]] name = "zoe-encrypted-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" dependencies = [ "aead", "aes-gcm", @@ -6907,7 +6632,7 @@ dependencies = [ [[package]] name = "zoe-state-machine" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" dependencies = [ "blake3", "ed25519-dalek", @@ -6926,12 +6651,12 @@ dependencies = [ [[package]] name = "zoe-wire-protocol" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#5778e9e45d6a21a27c33c1157df601719f8d8bcc" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" dependencies = [ "anyhow", "argon2", "async-trait", - "base64 0.22.1", + "base64", "bip39", "blake3", "chacha20poly1305", From 12eb0de8e68be61f94144f291d779a4ecf6e7111 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 12 Sep 2025 13:14:12 +0100 Subject: [PATCH 17/49] verbose flutter build --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15576e1c..49173413 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,8 +55,8 @@ jobs: - name: Build for Android run: | - flutter build apk --debug - flutter build appbundle --debug + flutter build -v apk --debug + flutter build -v appbundle --debug # Test and build for iOS ios: @@ -83,7 +83,7 @@ jobs: - name: Build for iOS run: | - flutter build ios --debug --no-codesign + flutter build -v ios --debug --no-codesign # Test and build for Linux linux: @@ -122,7 +122,7 @@ jobs: - name: Build for Linux run: | - flutter build linux --debug + flutter build -v linux --debug # Test and build for macOS macos: @@ -152,7 +152,7 @@ jobs: - name: Build for macOS run: | - flutter build macos --debug + flutter build -v macos --debug # Test and build for Windows windows: @@ -182,7 +182,7 @@ jobs: - name: Build for Windows run: | - flutter build windows --debug + flutter build -v windows --debug # Run tests test: From eab01d6bd46bb3a39a70f84c5f3a3d379b921ee5 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 12 Sep 2025 13:32:42 +0100 Subject: [PATCH 18/49] fixing flutter builds for the various platforms --- .github/workflows/ci.yml | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 49173413..31915955 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -84,6 +84,11 @@ jobs: - name: Build for iOS run: | flutter build -v ios --debug --no-codesign + env: + # Ensure iOS SDK paths are available for Rust compilation + DEVELOPER_DIR: /Applications/Xcode_16.4.app/Contents/Developer + # Set minimum iOS deployment target to avoid warnings + IPHONEOS_DEPLOYMENT_TARGET: "12.0" # Test and build for Linux linux: @@ -106,7 +111,9 @@ jobs: pkg-config \ libgtk-3-dev \ liblzma-dev \ - libstdc++-12-dev + libstdc++-12-dev \ + libgstreamer1.0-dev \ + libgstreamer-plugins-base1.0-dev - name: Setup Flutter uses: subosito/flutter-action@v2 with: @@ -152,7 +159,7 @@ jobs: - name: Build for macOS run: | - flutter build -v macos --debug + flutter build -v macos --debug --no-codesign # Test and build for Windows windows: @@ -167,6 +174,18 @@ jobs: targets: 'x86_64-pc-windows-msvc' workspace_path: 'packages/zoe_native/rust' + - name: Install Windows dependencies + run: | + # Install vcpkg + git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg + C:\vcpkg\bootstrap-vcpkg.bat + # Install SQLCipher + C:\vcpkg\vcpkg.exe install sqlcipher:x64-windows + # Set environment variables for Rust to find SQLCipher + echo "VCPKG_ROOT=C:\vcpkg" >> $env:GITHUB_ENV + echo "SQLCIPHER_LIB_DIR=C:\vcpkg\installed\x64-windows\lib" >> $env:GITHUB_ENV + echo "SQLCIPHER_INCLUDE_DIR=C:\vcpkg\installed\x64-windows\include" >> $env:GITHUB_ENV + - name: Setup Flutter uses: subosito/flutter-action@v2 with: @@ -183,6 +202,10 @@ jobs: - name: Build for Windows run: | flutter build -v windows --debug + env: + VCPKG_ROOT: C:\vcpkg + SQLCIPHER_LIB_DIR: C:\vcpkg\installed\x64-windows\lib + SQLCIPHER_INCLUDE_DIR: C:\vcpkg\installed\x64-windows\include # Run tests test: From da969814c7e3b50aae4b935af69634ba72673705 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 12 Sep 2025 13:33:27 +0100 Subject: [PATCH 19/49] only check formatting in lib folder --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 31915955..6d1e698c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -317,4 +317,4 @@ jobs: - name: Check zoe_native Dart formatting working-directory: packages/zoe_native - run: dart format --set-exit-if-changed . \ No newline at end of file + run: dart format --set-exit-if-changed lib \ No newline at end of file From e2367397c18ff25020b1e083472062fcf680d425 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 12 Sep 2025 13:38:40 +0100 Subject: [PATCH 20/49] fix code sign requirement for mac --- .github/workflows/ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6d1e698c..5a751441 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -159,7 +159,12 @@ jobs: - name: Build for macOS run: | - flutter build -v macos --debug --no-codesign + flutter build -v macos --debug + env: + # Disable code signing for CI builds + CODE_SIGN_IDENTITY: "" + CODE_SIGNING_REQUIRED: "NO" + CODE_SIGNING_ALLOWED: "NO" # Test and build for Windows windows: From fabecd7c97c42382590f66d696d421a54999d421 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 12 Sep 2025 13:39:53 +0100 Subject: [PATCH 21/49] and more missing dependencies --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5a751441..a35e9519 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -113,7 +113,8 @@ jobs: liblzma-dev \ libstdc++-12-dev \ libgstreamer1.0-dev \ - libgstreamer-plugins-base1.0-dev + libgstreamer-plugins-base1.0-dev \ + libsecret-1-dev - name: Setup Flutter uses: subosito/flutter-action@v2 with: From 18410d02d4c026343545dcabc60aa91e40385c22 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 12 Sep 2025 14:18:54 +0100 Subject: [PATCH 22/49] move sqlcipher install to shared action --- .github/workflows/ci.yml | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a35e9519..7fe0bb72 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,18 +180,6 @@ jobs: targets: 'x86_64-pc-windows-msvc' workspace_path: 'packages/zoe_native/rust' - - name: Install Windows dependencies - run: | - # Install vcpkg - git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg - C:\vcpkg\bootstrap-vcpkg.bat - # Install SQLCipher - C:\vcpkg\vcpkg.exe install sqlcipher:x64-windows - # Set environment variables for Rust to find SQLCipher - echo "VCPKG_ROOT=C:\vcpkg" >> $env:GITHUB_ENV - echo "SQLCIPHER_LIB_DIR=C:\vcpkg\installed\x64-windows\lib" >> $env:GITHUB_ENV - echo "SQLCIPHER_INCLUDE_DIR=C:\vcpkg\installed\x64-windows\include" >> $env:GITHUB_ENV - - name: Setup Flutter uses: subosito/flutter-action@v2 with: @@ -208,10 +196,6 @@ jobs: - name: Build for Windows run: | flutter build -v windows --debug - env: - VCPKG_ROOT: C:\vcpkg - SQLCIPHER_LIB_DIR: C:\vcpkg\installed\x64-windows\lib - SQLCIPHER_INCLUDE_DIR: C:\vcpkg\installed\x64-windows\include # Run tests test: From 6fedf766050441da548a96190ccaf0980c556bd9 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Fri, 12 Sep 2025 14:53:43 +0100 Subject: [PATCH 23/49] fix env vars on macos --- .github/workflows/ci.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fe0bb72..91465ad8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,12 +160,10 @@ jobs: - name: Build for macOS run: | - flutter build -v macos --debug - env: - # Disable code signing for CI builds - CODE_SIGN_IDENTITY: "" - CODE_SIGNING_REQUIRED: "NO" - CODE_SIGNING_ALLOWED: "NO" + flutter build -v macos --debug \ + --build-args="CODE_SIGNING_REQUIRED=NO" \ + --build-args="CODE_SIGNING_ALLOWED=NO" \ + --build-args="CODE_SIGN_IDENTITY=" # Test and build for Windows windows: From 556fc4e2e11450ee5b06a3351cd3952ff3614d25 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Sun, 14 Sep 2025 11:24:20 +0100 Subject: [PATCH 24/49] upgrade to latest --- packages/zoe_native/Cargo.lock | 123 +++++++++++++++++++++++---------- 1 file changed, 87 insertions(+), 36 deletions(-) diff --git a/packages/zoe_native/Cargo.lock b/packages/zoe_native/Cargo.lock index e4b04608..8e2f807f 100644 --- a/packages/zoe_native/Cargo.lock +++ b/packages/zoe_native/Cargo.lock @@ -254,6 +254,18 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + [[package]] name = "async-compat" version = "0.2.5" @@ -804,6 +816,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "console_error_panic_hook" version = "0.1.7" @@ -1349,6 +1370,27 @@ dependencies = [ "windows-sys 0.61.0", ] +[[package]] +name = "event-listener" +version = "5.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "extend" version = "1.2.0" @@ -1487,7 +1529,7 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" dependencies = [ "postcard", "proc-macro2", @@ -2070,9 +2112,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.63" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -2080,7 +2122,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.2", + "windows-core 0.62.0", ] [[package]] @@ -3356,39 +3398,37 @@ checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "opentelemetry" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "570074cc999d1a58184080966e5bd3bf3a9a4af650c3b05047c2621e7405cd17" +checksum = "aaf416e4cb72756655126f7dd7bb0af49c674f4c1b9903e80c009e0c37e552e6" dependencies = [ "futures-core", "futures-sink", "js-sys", - "once_cell", "pin-project-lite", - "thiserror 1.0.69", + "thiserror 2.0.16", + "tracing", ] [[package]] name = "opentelemetry-semantic-conventions" -version = "0.16.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cefe0543875379e47eb5f1e68ff83f45cc41366a92dfd0d073d513bf68e9a05" +checksum = "83d059a296a47436748557a353c5e6c5705b9470ef6c95cfc52c21a8814ddac2" [[package]] name = "opentelemetry_sdk" -version = "0.26.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c627d9f4c9cdc1f21a29ee4bfbd6028fcb8bcf2a857b43f3abdf72c9c862f3" +checksum = "11f644aa9e5e31d11896e024305d7e3c98a88884d9f8919dbf37a9991bc47a4b" dependencies = [ - "async-trait", "futures-channel", "futures-executor", "futures-util", - "once_cell", "opentelemetry", "percent-encoding", - "rand 0.8.5", - "thiserror 1.0.69", + "rand 0.9.2", + "thiserror 2.0.16", ] [[package]] @@ -4279,9 +4319,9 @@ dependencies = [ [[package]] name = "resolv-conf" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3" +checksum = "6b3789b30bd25ba102de4beabd95d21ac45b69b1be7d14522bab988c526d6799" [[package]] name = "ring" @@ -4549,10 +4589,11 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.221" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "341877e04a22458705eb4e131a1508483c877dca2792b3781d4e5d8a6019ec43" dependencies = [ + "serde_core", "serde_derive", ] @@ -4565,11 +4606,20 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_core" +version = "1.0.221" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c459bc0a14c840cb403fc14b148620de1e0778c96ecd6e0c8c3cacb6d8d00fe" +dependencies = [ + "serde_derive", +] + [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.221" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d6185cf75117e20e62b1ff867b9518577271e58abe0037c40bb4794969355ab0" dependencies = [ "proc-macro2", "quote", @@ -4578,14 +4628,14 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.143" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" +checksum = "56177480b00303e689183f110b4e727bb4211d692c62d4fcd16d02be93077d40" dependencies = [ "itoa", "memchr", "ryu", - "serde", + "serde_core", ] [[package]] @@ -4950,9 +5000,9 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" [[package]] name = "tarpc" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6d259ae043d6480431fdef275cde94455179c9ab7dca1cf01a965902b5262dc" +checksum = "e5cb86a4b5b941909e9896289c01b46ff0bec756b01f366b0d5490a5e8ed7871" dependencies = [ "anyhow", "fnv", @@ -5391,9 +5441,9 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.27.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc58af5d3f6c5811462cabb3289aec0093f7338e367e5a33d28c0433b3c7360b" +checksum = "ddcf5959f39507d0d04d6413119c04f33b623f4f951ebcbdddddfad2d0623a9c" dependencies = [ "js-sys", "once_cell", @@ -6515,7 +6565,7 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" dependencies = [ "blake3", "flutter_rust_bridge", @@ -6533,7 +6583,7 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" dependencies = [ "anyhow", "chrono", @@ -6557,9 +6607,10 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" dependencies = [ "anyhow", + "async-broadcast", "async-once-cell", "async-stream", "async-trait", @@ -6599,7 +6650,7 @@ dependencies = [ [[package]] name = "zoe-client-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" dependencies = [ "anyhow", "async-trait", @@ -6619,7 +6670,7 @@ dependencies = [ [[package]] name = "zoe-encrypted-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" dependencies = [ "aead", "aes-gcm", @@ -6632,7 +6683,7 @@ dependencies = [ [[package]] name = "zoe-state-machine" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" dependencies = [ "blake3", "ed25519-dalek", @@ -6651,7 +6702,7 @@ dependencies = [ [[package]] name = "zoe-wire-protocol" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#4fe842879e6931f91eef482854e6123621b5e9d8" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" dependencies = [ "anyhow", "argon2", From 48f85212dbdc9e43d5d4f93a03468101321d8e6f Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Sun, 14 Sep 2025 11:24:39 +0100 Subject: [PATCH 25/49] fixing macos buildd? --- .github/workflows/ci.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 91465ad8..f3ef2b7c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -160,10 +160,12 @@ jobs: - name: Build for macOS run: | - flutter build -v macos --debug \ - --build-args="CODE_SIGNING_REQUIRED=NO" \ - --build-args="CODE_SIGNING_ALLOWED=NO" \ - --build-args="CODE_SIGN_IDENTITY=" + flutter build -v macos --debug + env: + # Disable code signing for CI builds + CODE_SIGNING_REQUIRED: "NO" + CODE_SIGNING_ALLOWED: "NO" + CODE_SIGN_IDENTITY: "" # Test and build for Windows windows: From eef3195a12f5deaffd6ebfef65fc5d947b1066c5 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Sun, 14 Sep 2025 15:59:50 +0100 Subject: [PATCH 26/49] new built system --- .github/workflows/ci.yml | 21 ++- .github/workflows/prebuilt-binaries.yml | 74 +++++++++ packages/zoe_native/Cargo.lock | 149 +----------------- packages/zoe_native/README.md | 2 +- .../lib/src/artifacts_provider.dart | 11 +- .../cargokit/build_tool/lib/src/options.dart | 15 +- packages/zoe_native/rust/cargokit.yaml | 21 +++ 7 files changed, 142 insertions(+), 151 deletions(-) create mode 100644 .github/workflows/prebuilt-binaries.yml create mode 100644 packages/zoe_native/rust/cargokit.yaml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f3ef2b7c..fad946ae 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,6 +9,8 @@ on: env: FLUTTER_VERSION: '3.35.2' + # Disable precompiled binaries in CI to ensure we test actual compilation + CARGOKIT_DISABLE_PRECOMPILED_BINARIES: '1' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -158,14 +160,23 @@ jobs: - name: Install Flutter dependencies run: flutter pub get + - name: Create CI xcconfig to disable code signing + run: | + cat > macos/Runner/Configs/CI.xcconfig << EOF + #include "Debug.xcconfig" + CODE_SIGN_IDENTITY = + CODE_SIGNING_REQUIRED = NO + CODE_SIGNING_ALLOWED = NO + DEVELOPMENT_TEAM = + EOF + - name: Build for macOS run: | + # Temporarily modify the project to use our CI config + sed -i.bak 's/Debug\.xcconfig/CI.xcconfig/g' macos/Runner.xcodeproj/project.pbxproj flutter build -v macos --debug - env: - # Disable code signing for CI builds - CODE_SIGNING_REQUIRED: "NO" - CODE_SIGNING_ALLOWED: "NO" - CODE_SIGN_IDENTITY: "" + # Restore the original project file + mv macos/Runner.xcodeproj/project.pbxproj.bak macos/Runner.xcodeproj/project.pbxproj # Test and build for Windows windows: diff --git a/.github/workflows/prebuilt-binaries.yml b/.github/workflows/prebuilt-binaries.yml new file mode 100644 index 00000000..0a0d0550 --- /dev/null +++ b/.github/workflows/prebuilt-binaries.yml @@ -0,0 +1,74 @@ +name: Build Precompiled Binaries + +on: + push: + branches: [ main ] + workflow_dispatch: + +env: + FLUTTER_VERSION: '3.35.2' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + precompile-binaries: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + - name: Setup Rust + uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main + with: + targets: 'aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android,aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-darwin,aarch64-apple-darwin,x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-pc-windows-msvc,aarch64-pc-windows-msvc' + workspace_path: 'packages/zoe_native/rust' + install_android_ndk: true + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + channel: 'stable' + cache: true + + - name: Setup Android environment + run: | + echo "ANDROID_NDK_HOME=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV + echo "ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV + + - name: Install cross-compilation dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + gcc-aarch64-linux-gnu \ + gcc-mingw-w64-x86-64 \ + gcc-mingw-w64-i686 + + - name: Install Flutter dependencies + run: flutter pub get + + - name: Install cargokit build tool dependencies + working-directory: packages/zoe_native/cargokit/build_tool + run: dart pub get + + - name: Run precompile binaries + working-directory: packages/zoe_native + run: | + dart cargokit/build_tool/bin/build_tool.dart precompile-binaries \ + --private-key "${{ secrets.PREBUILTS_PRIVATE_KEY }}" \ + --github-token "${{ secrets.GITHUB_TOKEN }}" \ + --repository "acterglobal/zoe" \ + --manifest-dir "rust" \ + --android-sdk-location "$ANDROID_SDK_ROOT" \ + --android-ndk-version "26.1.10909125" diff --git a/packages/zoe_native/Cargo.lock b/packages/zoe_native/Cargo.lock index 8e2f807f..7d2d7732 100644 --- a/packages/zoe_native/Cargo.lock +++ b/packages/zoe_native/Cargo.lock @@ -368,29 +368,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" -[[package]] -name = "aws-lc-rs" -version = "1.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b8ff6c09cd57b16da53641caa860168b88c172a5ee163b0288d3d6eea12786" -dependencies = [ - "aws-lc-sys", - "zeroize", -] - -[[package]] -name = "aws-lc-sys" -version = "0.31.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e44d16778acaf6a9ec9899b92cebd65580b83f685446bf2e1f5d3d732f99dcd" -dependencies = [ - "bindgen", - "cc", - "cmake", - "dunce", - "fs_extra", -] - [[package]] name = "backon" version = "1.5.2" @@ -475,26 +452,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bindgen" -version = "0.72.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" -dependencies = [ - "bitflags", - "cexpr", - "clang-sys", - "itertools", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.106", -] - [[package]] name = "bip39" version = "2.2.0" @@ -639,8 +596,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" dependencies = [ "find-msvc-tools", - "jobserver", - "libc", "shlex", ] @@ -650,15 +605,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - [[package]] name = "cfg-if" version = "1.0.3" @@ -720,17 +666,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "clang-sys" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" -dependencies = [ - "glob", - "libc", - "libloading", -] - [[package]] name = "clap" version = "4.5.47" @@ -771,15 +706,6 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" -[[package]] -name = "cmake" -version = "0.1.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" -dependencies = [ - "cc", -] - [[package]] name = "cobs" version = "0.3.0" @@ -1224,12 +1150,6 @@ dependencies = [ "litrs", ] -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - [[package]] name = "dyn-clone" version = "1.0.20" @@ -1274,12 +1194,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - [[package]] name = "embedded-io" version = "0.4.0" @@ -1529,7 +1443,7 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" dependencies = [ "postcard", "proc-macro2", @@ -1538,12 +1452,6 @@ dependencies = [ "syn 2.0.106", ] -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - [[package]] name = "futures" version = "0.3.31" @@ -2691,15 +2599,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" -[[package]] -name = "itertools" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.15" @@ -2728,16 +2627,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" -[[package]] -name = "jobserver" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" -dependencies = [ - "getrandom 0.3.3", - "libc", -] - [[package]] name = "js-sys" version = "0.3.78" @@ -2880,16 +2769,6 @@ dependencies = [ "rand 0.9.2", ] -[[package]] -name = "libloading" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" -dependencies = [ - "cfg-if", - "windows-targets 0.53.3", -] - [[package]] name = "libm" version = "0.2.15" @@ -3853,16 +3732,6 @@ dependencies = [ "ucd-parse", ] -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn 2.0.106", -] - [[package]] name = "proc-macro-crate" version = "3.3.0" @@ -4400,7 +4269,6 @@ version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ - "aws-lc-rs", "log", "once_cell", "ring", @@ -4486,7 +4354,6 @@ version = "0.103.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5a37813727b78798e53c2bec3f5e8fe12a6d6f8389bf9ca7802add4c9905ad8" dependencies = [ - "aws-lc-rs", "ring", "rustls-pki-types", "untrusted", @@ -6565,7 +6432,7 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" dependencies = [ "blake3", "flutter_rust_bridge", @@ -6583,7 +6450,7 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" dependencies = [ "anyhow", "chrono", @@ -6607,7 +6474,7 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" dependencies = [ "anyhow", "async-broadcast", @@ -6650,7 +6517,7 @@ dependencies = [ [[package]] name = "zoe-client-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" dependencies = [ "anyhow", "async-trait", @@ -6670,7 +6537,7 @@ dependencies = [ [[package]] name = "zoe-encrypted-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" dependencies = [ "aead", "aes-gcm", @@ -6683,7 +6550,7 @@ dependencies = [ [[package]] name = "zoe-state-machine" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" dependencies = [ "blake3", "ed25519-dalek", @@ -6702,7 +6569,7 @@ dependencies = [ [[package]] name = "zoe-wire-protocol" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#d1af59d064e9a8f73ab7870c3904e3fc9f90c630" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" dependencies = [ "anyhow", "argon2", diff --git a/packages/zoe_native/README.md b/packages/zoe_native/README.md index 8744d9f6..12bfad79 100644 --- a/packages/zoe_native/README.md +++ b/packages/zoe_native/README.md @@ -31,7 +31,7 @@ This plugin integrates with: tl;dr command: ``` -flutter_rust_bridge_codegen generate && cargo test && flutter test +cargo update && flutter_rust_bridge_codegen generate && cargo test && flutter test ``` To update Rust dependencies, run: diff --git a/packages/zoe_native/cargokit/build_tool/lib/src/artifacts_provider.dart b/packages/zoe_native/cargokit/build_tool/lib/src/artifacts_provider.dart index e608cece..b31ee549 100644 --- a/packages/zoe_native/cargokit/build_tool/lib/src/artifacts_provider.dart +++ b/packages/zoe_native/cargokit/build_tool/lib/src/artifacts_provider.dart @@ -60,6 +60,8 @@ class ArtifactProvider { pendingTargets.removeWhere((element) => result.containsKey(element)); if (pendingTargets.isEmpty) { + _log.info( + 'Using precompiled binaries for all targets. To disable, create cargokit_options.yaml with use_precompiled_binaries: false'); return result; } @@ -99,7 +101,14 @@ class ArtifactProvider { Future>> _getPrecompiledArtifacts( List targets) async { if (userOptions.usePrecompiledBinaries == false) { - _log.info('Precompiled binaries are disabled'); + final envDisabled = + Platform.environment['CARGOKIT_DISABLE_PRECOMPILED_BINARIES'] == '1'; + if (envDisabled) { + _log.info( + 'Precompiled binaries are disabled by environment variable CARGOKIT_DISABLE_PRECOMPILED_BINARIES=1'); + } else { + _log.info('Precompiled binaries are disabled by user configuration'); + } return {}; } if (environment.crateOptions.precompiledBinaries == null) { diff --git a/packages/zoe_native/cargokit/build_tool/lib/src/options.dart b/packages/zoe_native/cargokit/build_tool/lib/src/options.dart index 22aef1d3..a50f10a8 100644 --- a/packages/zoe_native/cargokit/build_tool/lib/src/options.dart +++ b/packages/zoe_native/cargokit/build_tool/lib/src/options.dart @@ -231,10 +231,19 @@ class CargokitCrateOptions { } class CargokitUserOptions { - // When Rustup is installed always build locally unless user opts into - // using precompiled binaries. + // Default behavior: Always use precompiled binaries when available. + // This provides the best user experience by avoiding the need to install Rust. + // + // To disable precompiled binaries and force local compilation: + // 1. Set environment variable: CARGOKIT_DISABLE_PRECOMPILED_BINARIES=1 + // 2. Or create cargokit_options.yaml file in your project root with: + // use_precompiled_binaries: false static bool defaultUsePrecompiledBinaries() { - return Rustup.executablePath() == null; + // Check environment variable first (useful for CI) + if (Platform.environment['CARGOKIT_DISABLE_PRECOMPILED_BINARIES'] == '1') { + return false; + } + return true; } CargokitUserOptions({ diff --git a/packages/zoe_native/rust/cargokit.yaml b/packages/zoe_native/rust/cargokit.yaml new file mode 100644 index 00000000..7be2aa6d --- /dev/null +++ b/packages/zoe_native/rust/cargokit.yaml @@ -0,0 +1,21 @@ +# Cargokit configuration for precompiled binaries +# Precompiled binaries are used by default to provide the best user experience. +# To disable and force local compilation, create cargokit_options.yaml in your project root: +# use_precompiled_binaries: false + +precompiled_binaries: + # URL prefix where precompiled binaries are hosted + url_prefix: "https://github.com/acterglobal/zoe/releases/download/" + + # Ed25519 public key for verifying binary signatures (hex encoded) + # This will be automatically set by the CI workflow + public_key: "cc42bfb25be01668294f0cf66866b55bd311f22eca6551d508d0c6adffcff84a" + +# Optional: Cargo build configuration +cargo: + release: + toolchain: stable + extra_flags: [] + debug: + toolchain: stable + extra_flags: [] From c5da9b916c36974b06bea673427c7604e588e6be Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Sun, 14 Sep 2025 17:11:19 +0100 Subject: [PATCH 27/49] fixing missing framework link --- packages/zoe_native/ios/zoe_native.podspec | 3 +++ packages/zoe_native/macos/zoe_native.podspec | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/zoe_native/ios/zoe_native.podspec b/packages/zoe_native/ios/zoe_native.podspec index 355c09d5..00e30846 100644 --- a/packages/zoe_native/ios/zoe_native.podspec +++ b/packages/zoe_native/ios/zoe_native.podspec @@ -21,6 +21,9 @@ A new Flutter FFI plugin project. s.source_files = 'Classes/**/*' s.dependency 'Flutter' s.platform = :ios, '11.0' + + # Link required system frameworks + s.frameworks = 'SystemConfiguration' # Flutter.framework does not contain a i386 slice. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } diff --git a/packages/zoe_native/macos/zoe_native.podspec b/packages/zoe_native/macos/zoe_native.podspec index 1b76fb64..047dd1a6 100644 --- a/packages/zoe_native/macos/zoe_native.podspec +++ b/packages/zoe_native/macos/zoe_native.podspec @@ -22,6 +22,9 @@ A new Flutter FFI plugin project. s.dependency 'FlutterMacOS' s.platform = :osx, '10.11' + + # Link required system frameworks + s.frameworks = 'SystemConfiguration' s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } s.swift_version = '5.0' From 295d5c5801e95a5adeb130f91f8d5d8679e9138a Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 10:46:18 +0100 Subject: [PATCH 28/49] remove unused disk space for android build --- .github/workflows/ci.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fad946ae..66642626 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,6 +11,10 @@ env: FLUTTER_VERSION: '3.35.2' # Disable precompiled binaries in CI to ensure we test actual compilation CARGOKIT_DISABLE_PRECOMPILED_BINARIES: '1' + # Optimize Rust builds for CI + CARGO_INCREMENTAL: '0' + CARGO_NET_RETRY: '10' + RUST_BACKTRACE: '1' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -24,6 +28,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - uses: jlumbroso/free-disk-space@main + name: Free Disk Space + with: + tool-cache: true + android: false + - name: Setup Java uses: actions/setup-java@v4 with: @@ -124,6 +134,12 @@ jobs: channel: 'stable' cache: true + - uses: jlumbroso/free-disk-space@main + name: Free Disk Space + with: + tool-cache: true + android: true + - name: Enable Linux desktop run: flutter config --enable-linux-desktop From 1b7166136c4d11ffa0114c4e1b6e3669d6449c7c Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 10:46:40 +0100 Subject: [PATCH 29/49] building apk for testing enough --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66642626..a6bc8db9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,7 +68,6 @@ jobs: - name: Build for Android run: | flutter build -v apk --debug - flutter build -v appbundle --debug # Test and build for iOS ios: From ea3385a69b13c25b9277ec85cf704e0ea311ab00 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 11:07:02 +0100 Subject: [PATCH 30/49] clean up before adding flutter --- .github/workflows/ci.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a6bc8db9..f16a5741 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -126,6 +126,13 @@ jobs: libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ libsecret-1-dev + + - uses: jlumbroso/free-disk-space@main + name: Free Disk Space + with: + tool-cache: true + android: true + - name: Setup Flutter uses: subosito/flutter-action@v2 with: @@ -133,11 +140,6 @@ jobs: channel: 'stable' cache: true - - uses: jlumbroso/free-disk-space@main - name: Free Disk Space - with: - tool-cache: true - android: true - name: Enable Linux desktop run: flutter config --enable-linux-desktop From b7a0ae276f7e5e58e787f0aab34aaec39bf71d15 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 13:11:43 +0100 Subject: [PATCH 31/49] Testing prebuilt --- .github/workflows/prebuilt-binaries.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/prebuilt-binaries.yml b/.github/workflows/prebuilt-binaries.yml index 0a0d0550..dd785ebd 100644 --- a/.github/workflows/prebuilt-binaries.yml +++ b/.github/workflows/prebuilt-binaries.yml @@ -3,6 +3,8 @@ name: Build Precompiled Binaries on: push: branches: [ main ] + pull_request: + branches: [ main ] workflow_dispatch: env: From 1a4c656ffe144d31c5f170a64f9401970b87d70f Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 13:11:58 +0100 Subject: [PATCH 32/49] don't clear linux tool cache --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f16a5741..93587989 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -129,9 +129,6 @@ jobs: - uses: jlumbroso/free-disk-space@main name: Free Disk Space - with: - tool-cache: true - android: true - name: Setup Flutter uses: subosito/flutter-action@v2 From c7818435ad5634fb7320face8900159d5c94ee0a Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 13:12:24 +0100 Subject: [PATCH 33/49] upgrade to latest libs with proper android build support --- packages/zoe_native/Cargo.lock | 66 +++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 20 deletions(-) diff --git a/packages/zoe_native/Cargo.lock b/packages/zoe_native/Cargo.lock index 7d2d7732..3af6142f 100644 --- a/packages/zoe_native/Cargo.lock +++ b/packages/zoe_native/Cargo.lock @@ -1443,7 +1443,7 @@ dependencies = [ [[package]] name = "forward-compatible-enum" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#cd0acf9ac4933e592c3edb11e9ccb80cbcae9c4d" dependencies = [ "postcard", "proc-macro2", @@ -2782,6 +2782,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149" dependencies = [ "cc", + "openssl-sys", "pkg-config", "vcpkg", ] @@ -3275,6 +3276,28 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-src" +version = "300.5.2+3.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d270b79e2926f5150189d475bc7e9d2c69f9c4697b185fa917d5a32b792d21b4" +dependencies = [ + "cc", +] + +[[package]] +name = "openssl-sys" +version = "0.9.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" +dependencies = [ + "cc", + "libc", + "openssl-src", + "pkg-config", + "vcpkg", +] + [[package]] name = "opentelemetry" version = "0.30.0" @@ -4441,11 +4464,12 @@ checksum = "0f7d95a54511e0c7be3f51e8867aa8cf35148d7b9445d44de2f943e2b206e749" [[package]] name = "semver" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -4456,9 +4480,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.221" +version = "1.0.223" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "341877e04a22458705eb4e131a1508483c877dca2792b3781d4e5d8a6019ec43" +checksum = "a505d71960adde88e293da5cb5eda57093379f64e61cf77bf0e6a63af07a7bac" dependencies = [ "serde_core", "serde_derive", @@ -4466,27 +4490,28 @@ dependencies = [ [[package]] name = "serde_bytes" -version = "0.11.17" +version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8437fd221bde2d4ca316d61b90e337e9e702b3820b87d63caa9ba6c02bd06d96" +checksum = "fe07b5d88710e3b807c16a06ccbc9dfecd5fff6a4d2745c59e3e26774f10de6a" dependencies = [ "serde", + "serde_core", ] [[package]] name = "serde_core" -version = "1.0.221" +version = "1.0.223" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c459bc0a14c840cb403fc14b148620de1e0778c96ecd6e0c8c3cacb6d8d00fe" +checksum = "20f57cbd357666aa7b3ac84a90b4ea328f1d4ddb6772b430caa5d9e1309bb9e9" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.221" +version = "1.0.223" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6185cf75117e20e62b1ff867b9518577271e58abe0037c40bb4794969355ab0" +checksum = "3d428d07faf17e306e699ec1e91996e5a165ba5d6bce5b5155173e91a8a01a56" dependencies = [ "proc-macro2", "quote", @@ -4495,13 +4520,14 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.144" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56177480b00303e689183f110b4e727bb4211d692c62d4fcd16d02be93077d40" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", + "serde", "serde_core", ] @@ -6432,7 +6458,7 @@ dependencies = [ [[package]] name = "zoe-app-primitives" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#cd0acf9ac4933e592c3edb11e9ccb80cbcae9c4d" dependencies = [ "blake3", "flutter_rust_bridge", @@ -6450,7 +6476,7 @@ dependencies = [ [[package]] name = "zoe-blob-store" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#cd0acf9ac4933e592c3edb11e9ccb80cbcae9c4d" dependencies = [ "anyhow", "chrono", @@ -6474,7 +6500,7 @@ dependencies = [ [[package]] name = "zoe-client" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#cd0acf9ac4933e592c3edb11e9ccb80cbcae9c4d" dependencies = [ "anyhow", "async-broadcast", @@ -6517,7 +6543,7 @@ dependencies = [ [[package]] name = "zoe-client-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#cd0acf9ac4933e592c3edb11e9ccb80cbcae9c4d" dependencies = [ "anyhow", "async-trait", @@ -6537,7 +6563,7 @@ dependencies = [ [[package]] name = "zoe-encrypted-storage" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#cd0acf9ac4933e592c3edb11e9ccb80cbcae9c4d" dependencies = [ "aead", "aes-gcm", @@ -6550,7 +6576,7 @@ dependencies = [ [[package]] name = "zoe-state-machine" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#cd0acf9ac4933e592c3edb11e9ccb80cbcae9c4d" dependencies = [ "blake3", "ed25519-dalek", @@ -6569,7 +6595,7 @@ dependencies = [ [[package]] name = "zoe-wire-protocol" version = "0.1.0" -source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#3da866c4e348f326c0680c2aeb675011a5885b50" +source = "git+https://github.com/acterglobal/zoe-relay.git?branch=main#cd0acf9ac4933e592c3edb11e9ccb80cbcae9c4d" dependencies = [ "anyhow", "argon2", From 8b17ead353aaafcd0aefb68d5ca5254793b2897d Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 13:12:59 +0100 Subject: [PATCH 34/49] ignore local cargokit overrides --- packages/zoe_native/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/zoe_native/.gitignore b/packages/zoe_native/.gitignore index 9d8fdd60..06722378 100644 --- a/packages/zoe_native/.gitignore +++ b/packages/zoe_native/.gitignore @@ -32,3 +32,4 @@ target/ .flutter-plugins-dependencies /build/ /coverage/ +cargokit_options.yaml \ No newline at end of file From 937c38e4adcbcb30149f80eed0f63e8a17e122be Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 13:17:15 +0100 Subject: [PATCH 35/49] Document the local override for prebuilts in native plugin --- packages/zoe_native/README.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/zoe_native/README.md b/packages/zoe_native/README.md index 12bfad79..6af1c979 100644 --- a/packages/zoe_native/README.md +++ b/packages/zoe_native/README.md @@ -83,12 +83,24 @@ plugin: - Use standard Rust debugging tools for the native code - Use Flutter debugging tools for the Dart side -## Configuration +## Using local config -The `flutter_rust_bridge.yaml` file configures: -- `rust_input`: Which Rust modules to expose -- `dart_output`: Where to generate Dart bindings -- `rust_preamble`: Common imports for generated code +By default the plugin uses prebuilt binaries from github, to make it built locally you can either run it with `CARGOKIT_DISABLE_PRECOMPILED_BINARIES=1 flutter [...]` + +or you create a `cargokit_options.yaml` in the main package folder `packges/zoe_native` overriding the configuration as follows: + +```yaml +# Enables verbose logging of Cargokit during build +verbose_logging: true + +# Opts out of using precompiled binaries. If crate has configured +# and deployed precompiled binaries, these will be by default used whenever Rustup +# is not installed. With `use_precompiled_binaries` set to false, the build will +# instead be aborted prompting user to install Rustup. +use_precompiled_binaries: false +``` + +For more details [consult the cargokit documentation](https://github.com/irondash/cargokit/blob/main/docs/architecture.md#configuring-cargokit). ## Platform Support From b1475a8b88a4405aa412e259909f3d5e3300c96d Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 13:38:24 +0100 Subject: [PATCH 36/49] fix linux built --- .github/workflows/ci.yml | 5 +++++ .github/workflows/prebuilt-binaries.yml | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 93587989..009f69c8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -117,6 +117,7 @@ jobs: sudo apt-get update sudo apt-get install -y \ clang \ + clang++ \ cmake \ ninja-build \ pkg-config \ @@ -126,6 +127,10 @@ jobs: libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ libsecret-1-dev + + # Set C/C++ compiler environment variables for CMake + echo "CC=clang" >> $GITHUB_ENV + echo "CXX=clang++" >> $GITHUB_ENV - uses: jlumbroso/free-disk-space@main name: Free Disk Space diff --git a/.github/workflows/prebuilt-binaries.yml b/.github/workflows/prebuilt-binaries.yml index dd785ebd..f6df89d3 100644 --- a/.github/workflows/prebuilt-binaries.yml +++ b/.github/workflows/prebuilt-binaries.yml @@ -21,6 +21,12 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - uses: jlumbroso/free-disk-space@main + name: Free Disk Space + with: + tool-cache: true + android: false + - name: Setup Java uses: actions/setup-java@v4 with: From 3098aacc7cdaa59ebe58ed848f76a7d9d2d4f24f Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 14:09:34 +0100 Subject: [PATCH 37/49] fixing linux clang dependencies --- .github/workflows/ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 009f69c8..634d6858 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -116,8 +116,6 @@ jobs: run: | sudo apt-get update sudo apt-get install -y \ - clang \ - clang++ \ cmake \ ninja-build \ pkg-config \ @@ -128,6 +126,14 @@ jobs: libgstreamer-plugins-base1.0-dev \ libsecret-1-dev + # Use the existing clang installation (Ubuntu runners have clang pre-installed) + # Verify clang and clang++ are available + which clang && clang --version + which clang++ && clang++ --version || { + echo "clang++ not found, creating symlink..." + sudo ln -sf /usr/bin/clang /usr/bin/clang++ + } + # Set C/C++ compiler environment variables for CMake echo "CC=clang" >> $GITHUB_ENV echo "CXX=clang++" >> $GITHUB_ENV From 37adff1c967b0feac6cd322795b77211b5d00296 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 14:26:23 +0100 Subject: [PATCH 38/49] built linux --- .github/workflows/ci.yml | 24 +++++++----------------- .github/workflows/prebuilt-binaries.yml | 7 ++++--- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 634d6858..147cb4f5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -112,11 +112,16 @@ jobs: uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: workspace_path: 'packages/zoe_native/rust' + + - uses: jlumbroso/free-disk-space@main + name: Free Disk Space + - name: Install Linux dependencies run: | - sudo apt-get update - sudo apt-get install -y \ + sudo apt update + sudo apt install -y \ cmake \ + clang \ ninja-build \ pkg-config \ libgtk-3-dev \ @@ -125,21 +130,6 @@ jobs: libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ libsecret-1-dev - - # Use the existing clang installation (Ubuntu runners have clang pre-installed) - # Verify clang and clang++ are available - which clang && clang --version - which clang++ && clang++ --version || { - echo "clang++ not found, creating symlink..." - sudo ln -sf /usr/bin/clang /usr/bin/clang++ - } - - # Set C/C++ compiler environment variables for CMake - echo "CC=clang" >> $GITHUB_ENV - echo "CXX=clang++" >> $GITHUB_ENV - - - uses: jlumbroso/free-disk-space@main - name: Free Disk Space - name: Setup Flutter uses: subosito/flutter-action@v2 diff --git a/.github/workflows/prebuilt-binaries.yml b/.github/workflows/prebuilt-binaries.yml index f6df89d3..ea00bb66 100644 --- a/.github/workflows/prebuilt-binaries.yml +++ b/.github/workflows/prebuilt-binaries.yml @@ -72,11 +72,12 @@ jobs: - name: Run precompile binaries working-directory: packages/zoe_native + env: + PRIVATE_KEY: ${{ secrets.PREBUILTS_PRIVATE_KEY }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | dart cargokit/build_tool/bin/build_tool.dart precompile-binaries \ - --private-key "${{ secrets.PREBUILTS_PRIVATE_KEY }}" \ - --github-token "${{ secrets.GITHUB_TOKEN }}" \ --repository "acterglobal/zoe" \ --manifest-dir "rust" \ --android-sdk-location "$ANDROID_SDK_ROOT" \ - --android-ndk-version "26.1.10909125" + --android-ndk-version "27.0.12077973" From e736cee738ef7b3caa3f981cb77111d5e4810e1a Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 15:38:17 +0100 Subject: [PATCH 39/49] limiting android built --- .github/workflows/ci.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 147cb4f5..7181e1ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,7 +46,7 @@ jobs: - name: Setup Rust for Android uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - targets: 'aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android' + targets: 'aarch64-linux-android,armv7-linux-androideabi' workspace_path: 'packages/zoe_native/rust' install_android_ndk: true @@ -67,7 +67,12 @@ jobs: - name: Build for Android run: | - flutter build -v apk --debug + # Set Rust optimization for faster builds + export CARGO_PROFILE_DEV_DEBUG=1 + export CARGO_PROFILE_DEV_OPT_LEVEL=1 + + # Build only for essential architectures to save time and space + flutter build -v apk --debug --target-platform android-arm64,android-arm # Test and build for iOS ios: From 6456a11616809daefca451fd43e2e697b5508ccd Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 16:10:10 +0100 Subject: [PATCH 40/49] fix prebuilt support --- .github/workflows/prebuilt-binaries.yml | 52 +++++++++++++++++++------ 1 file changed, 41 insertions(+), 11 deletions(-) diff --git a/.github/workflows/prebuilt-binaries.yml b/.github/workflows/prebuilt-binaries.yml index ea00bb66..549b836f 100644 --- a/.github/workflows/prebuilt-binaries.yml +++ b/.github/workflows/prebuilt-binaries.yml @@ -16,32 +16,58 @@ concurrency: jobs: precompile-binaries: - runs-on: ubuntu-latest + strategy: + matrix: + include: + - os: ubuntu-latest + name: Linux x64 + targets: 'x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu' + - os: ubuntu-latest + name: Android + targets: 'aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android' + setup_android: true + build_args: '--android-sdk-location "$ANDROID_SDK_ROOT" --android-ndk-version "27.0.12077973" --android-min-sdk-version "21"' + - os: macos-latest + name: iOS + targets: 'aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim,' + - os: macos-latest + name: MacOS + targets: 'x86_64-apple-darwin,aarch64-apple-darwin' + - os: windows-latest + name: Windows + targets: 'x86_64-pc-windows-msvc,aarch64-pc-windows-msvc' + + + runs-on: ${{ matrix.os }} + name: Prebuilts for ${{ matrix.name }} steps: - name: Checkout code uses: actions/checkout@v4 - - uses: jlumbroso/free-disk-space@main - name: Free Disk Space + - name: Free Disk Space (Ubuntu only) + if: matrix.setup_android + uses: jlumbroso/free-disk-space@main with: tool-cache: true android: false - - name: Setup Java + - name: Setup Java (Android builds only) + if: matrix.setup_android uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '17' - - name: Setup Android SDK + - name: Setup Android SDK (Android builds only) + if: matrix.setup_android uses: android-actions/setup-android@v3 - name: Setup Rust uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - targets: 'aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android,aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-darwin,aarch64-apple-darwin,x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-pc-windows-msvc,aarch64-pc-windows-msvc' + targets: ${{ matrix.targets }} workspace_path: 'packages/zoe_native/rust' - install_android_ndk: true + install_android_ndk: ${{ matrix.setup_android }} - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -50,12 +76,14 @@ jobs: channel: 'stable' cache: true - - name: Setup Android environment + - name: Setup Android environment (Android builds only) + if: matrix.setup_android run: | echo "ANDROID_NDK_HOME=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV echo "ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV - - name: Install cross-compilation dependencies + - name: Install cross-compilation dependencies (Ubuntu only) + if: matrix.os == 'ubuntu-latest' run: | sudo apt-get update sudo apt-get install -y \ @@ -64,6 +92,7 @@ jobs: gcc-mingw-w64-i686 - name: Install Flutter dependencies + working-directory: packages/zoe_native/ run: flutter pub get - name: Install cargokit build tool dependencies @@ -75,9 +104,10 @@ jobs: env: PRIVATE_KEY: ${{ secrets.PREBUILTS_PRIVATE_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: bash run: | dart cargokit/build_tool/bin/build_tool.dart precompile-binaries \ --repository "acterglobal/zoe" \ --manifest-dir "rust" \ - --android-sdk-location "$ANDROID_SDK_ROOT" \ - --android-ndk-version "27.0.12077973" + --target ${{ matrix.targets }} \ + ${{ matrix.build_args }} From 8ef2f1fa16b1f0f0321d11de7662799e9e3d00be Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 16:11:47 +0100 Subject: [PATCH 41/49] only build for arm64 maybe --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7181e1ce..bafb4fd4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,7 +46,7 @@ jobs: - name: Setup Rust for Android uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: - targets: 'aarch64-linux-android,armv7-linux-androideabi' + targets: aarch64-linux-android workspace_path: 'packages/zoe_native/rust' install_android_ndk: true @@ -72,7 +72,7 @@ jobs: export CARGO_PROFILE_DEV_OPT_LEVEL=1 # Build only for essential architectures to save time and space - flutter build -v apk --debug --target-platform android-arm64,android-arm + flutter build -v apk --debug --target-platform android-arm64 # Test and build for iOS ios: From 518e493e8831fa5c19a9a41516e09710fdc77400 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 16:53:36 +0100 Subject: [PATCH 42/49] try to built all the platforms, don't cancel the others --- .github/workflows/prebuilt-binaries.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/prebuilt-binaries.yml b/.github/workflows/prebuilt-binaries.yml index 549b836f..f00467b2 100644 --- a/.github/workflows/prebuilt-binaries.yml +++ b/.github/workflows/prebuilt-binaries.yml @@ -17,6 +17,7 @@ concurrency: jobs: precompile-binaries: strategy: + fail-fast: false matrix: include: - os: ubuntu-latest @@ -29,7 +30,7 @@ jobs: build_args: '--android-sdk-location "$ANDROID_SDK_ROOT" --android-ndk-version "27.0.12077973" --android-min-sdk-version "21"' - os: macos-latest name: iOS - targets: 'aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim,' + targets: 'aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim' - os: macos-latest name: MacOS targets: 'x86_64-apple-darwin,aarch64-apple-darwin' From a00ebdd4ad96cedc1c47163a9b466f4c95d8fcbc Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 16:54:46 +0100 Subject: [PATCH 43/49] continue wehn test and formatting fail for now --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bafb4fd4..a228522e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -231,6 +231,7 @@ jobs: # Run tests test: runs-on: ubuntu-latest + continue-on-error: true steps: - name: Checkout code uses: actions/checkout@v4 @@ -259,6 +260,7 @@ jobs: # Check code formatting format: runs-on: ubuntu-latest + continue-on-error: true steps: - name: Checkout code uses: actions/checkout@v4 From 0730175363cbd8237d19a2e16a1c55d622878c6a Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 18:56:30 +0100 Subject: [PATCH 44/49] disable precompiled binaries for now --- .github/workflows/ci.yml | 2 -- packages/zoe_native/rust/cargokit.yaml | 10 +--------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a228522e..686911be 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,8 +3,6 @@ name: CI on: push: branches: [ main, develop ] - pull_request: - branches: [ main, develop ] workflow_dispatch: env: diff --git a/packages/zoe_native/rust/cargokit.yaml b/packages/zoe_native/rust/cargokit.yaml index 7be2aa6d..51747ab5 100644 --- a/packages/zoe_native/rust/cargokit.yaml +++ b/packages/zoe_native/rust/cargokit.yaml @@ -1,15 +1,7 @@ # Cargokit configuration for precompiled binaries # Precompiled binaries are used by default to provide the best user experience. # To disable and force local compilation, create cargokit_options.yaml in your project root: -# use_precompiled_binaries: false - -precompiled_binaries: - # URL prefix where precompiled binaries are hosted - url_prefix: "https://github.com/acterglobal/zoe/releases/download/" - - # Ed25519 public key for verifying binary signatures (hex encoded) - # This will be automatically set by the CI workflow - public_key: "cc42bfb25be01668294f0cf66866b55bd311f22eca6551d508d0c6adffcff84a" +# use_precompiled_binaries: false # Optional: Cargo build configuration cargo: From ac7701b0240cb6e6ea68d9e1df819790ed2b37e3 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Mon, 15 Sep 2025 18:56:50 +0100 Subject: [PATCH 45/49] tryint to fix precompiled build --- .github/workflows/prebuilt-binaries.yml | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/.github/workflows/prebuilt-binaries.yml b/.github/workflows/prebuilt-binaries.yml index f00467b2..fabd8bdb 100644 --- a/.github/workflows/prebuilt-binaries.yml +++ b/.github/workflows/prebuilt-binaries.yml @@ -22,12 +22,12 @@ jobs: include: - os: ubuntu-latest name: Linux x64 - targets: 'x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu' + targets: 'x86_64-unknown-linux-gnu' - os: ubuntu-latest name: Android targets: 'aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android' setup_android: true - build_args: '--android-sdk-location "$ANDROID_SDK_ROOT" --android-ndk-version "27.0.12077973" --android-min-sdk-version "21"' + build_args: '--android-sdk-location "$ANDROID_SDK_ROOT" --android-ndk-version "26.1.10909125" --android-min-sdk-version "21"' - os: macos-latest name: iOS targets: 'aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim' @@ -36,7 +36,7 @@ jobs: targets: 'x86_64-apple-darwin,aarch64-apple-darwin' - os: windows-latest name: Windows - targets: 'x86_64-pc-windows-msvc,aarch64-pc-windows-msvc' + targets: 'x86_64-pc-windows-msvc' runs-on: ${{ matrix.os }} @@ -63,12 +63,19 @@ jobs: if: matrix.setup_android uses: android-actions/setup-android@v3 + - name: Install Android NDK (Android builds only) + if: matrix.setup_android + run: | + $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install "ndk;26.1.10909125" + echo "ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/26.1.10909125" >> $GITHUB_ENV + echo "ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/26.1.10909125" >> $GITHUB_ENV + - name: Setup Rust uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: targets: ${{ matrix.targets }} workspace_path: 'packages/zoe_native/rust' - install_android_ndk: ${{ matrix.setup_android }} + install_android_ndk: false - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -77,11 +84,13 @@ jobs: channel: 'stable' cache: true - - name: Setup Android environment (Android builds only) + - name: Verify Android NDK installation (Android builds only) if: matrix.setup_android run: | - echo "ANDROID_NDK_HOME=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV - echo "ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME" >> $GITHUB_ENV + echo "ANDROID_SDK_ROOT: $ANDROID_SDK_ROOT" + echo "ANDROID_NDK_HOME: $ANDROID_NDK_HOME" + ls -la "$ANDROID_SDK_ROOT/ndk/" || echo "No NDK directory in SDK" + ls -la "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/" | head -10 || echo "No NDK bin directory" - name: Install cross-compilation dependencies (Ubuntu only) if: matrix.os == 'ubuntu-latest' From 025c18e5382b88173fcbb6be7859101100a3b235 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 16 Sep 2025 14:23:21 +0100 Subject: [PATCH 46/49] re-add precompilation --- .github/workflows/prebuilt-binaries.yml | 23 ++--------------------- packages/zoe_native/rust/cargokit.yaml | 10 +++++++++- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/.github/workflows/prebuilt-binaries.yml b/.github/workflows/prebuilt-binaries.yml index fabd8bdb..2efd7b47 100644 --- a/.github/workflows/prebuilt-binaries.yml +++ b/.github/workflows/prebuilt-binaries.yml @@ -27,7 +27,7 @@ jobs: name: Android targets: 'aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android' setup_android: true - build_args: '--android-sdk-location "$ANDROID_SDK_ROOT" --android-ndk-version "26.1.10909125" --android-min-sdk-version "21"' + build_args: '--android-sdk-location "$ANDROID_SDK_ROOT" --android-ndk-version "27.0.12077973" --android-min-sdk-version "21"' - os: macos-latest name: iOS targets: 'aarch64-apple-ios,x86_64-apple-ios,aarch64-apple-ios-sim' @@ -59,23 +59,12 @@ jobs: distribution: 'temurin' java-version: '17' - - name: Setup Android SDK (Android builds only) - if: matrix.setup_android - uses: android-actions/setup-android@v3 - - - name: Install Android NDK (Android builds only) - if: matrix.setup_android - run: | - $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install "ndk;26.1.10909125" - echo "ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/26.1.10909125" >> $GITHUB_ENV - echo "ANDROID_NDK_ROOT=$ANDROID_SDK_ROOT/ndk/26.1.10909125" >> $GITHUB_ENV - - name: Setup Rust uses: acterglobal/zoe-relay/.github/actions/setup-rust-cross-platform@main with: targets: ${{ matrix.targets }} workspace_path: 'packages/zoe_native/rust' - install_android_ndk: false + install_android_ndk: ${{ matrix.setup_android }} - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -84,14 +73,6 @@ jobs: channel: 'stable' cache: true - - name: Verify Android NDK installation (Android builds only) - if: matrix.setup_android - run: | - echo "ANDROID_SDK_ROOT: $ANDROID_SDK_ROOT" - echo "ANDROID_NDK_HOME: $ANDROID_NDK_HOME" - ls -la "$ANDROID_SDK_ROOT/ndk/" || echo "No NDK directory in SDK" - ls -la "$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/" | head -10 || echo "No NDK bin directory" - - name: Install cross-compilation dependencies (Ubuntu only) if: matrix.os == 'ubuntu-latest' run: | diff --git a/packages/zoe_native/rust/cargokit.yaml b/packages/zoe_native/rust/cargokit.yaml index 51747ab5..7be2aa6d 100644 --- a/packages/zoe_native/rust/cargokit.yaml +++ b/packages/zoe_native/rust/cargokit.yaml @@ -1,7 +1,15 @@ # Cargokit configuration for precompiled binaries # Precompiled binaries are used by default to provide the best user experience. # To disable and force local compilation, create cargokit_options.yaml in your project root: -# use_precompiled_binaries: false +# use_precompiled_binaries: false + +precompiled_binaries: + # URL prefix where precompiled binaries are hosted + url_prefix: "https://github.com/acterglobal/zoe/releases/download/" + + # Ed25519 public key for verifying binary signatures (hex encoded) + # This will be automatically set by the CI workflow + public_key: "cc42bfb25be01668294f0cf66866b55bd311f22eca6551d508d0c6adffcff84a" # Optional: Cargo build configuration cargo: From 8e5e44fca99d0a44cb5680a12540580aaadf16e9 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 16 Sep 2025 14:36:24 +0100 Subject: [PATCH 47/49] specify when to run the workflows --- .github/workflows/ci.yml | 2 ++ .github/workflows/prebuilt-binaries.yml | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 686911be..a228522e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,6 +3,8 @@ name: CI on: push: branches: [ main, develop ] + pull_request: + branches: [ main, develop ] workflow_dispatch: env: diff --git a/.github/workflows/prebuilt-binaries.yml b/.github/workflows/prebuilt-binaries.yml index 2efd7b47..e631898d 100644 --- a/.github/workflows/prebuilt-binaries.yml +++ b/.github/workflows/prebuilt-binaries.yml @@ -3,8 +3,12 @@ name: Build Precompiled Binaries on: push: branches: [ main ] - pull_request: - branches: [ main ] + paths: + - 'packages/zoe_native/rust/src/**' + - 'packages/zoe_native/flutter_rust_bridge.yaml' + - 'packages/zoe_native/rust/Cargo.toml' + - 'packages/zoe_native/Cargo.toml' + - 'packages/zoe_native/Cargo.lock' workflow_dispatch: env: From 1344b38dd4d76bceaeb732a9ea25b2687283e203 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 16 Sep 2025 14:38:32 +0100 Subject: [PATCH 48/49] run for all pull requests --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a228522e..886f5909 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,6 @@ on: push: branches: [ main, develop ] pull_request: - branches: [ main, develop ] workflow_dispatch: env: From 83dfb0e14de16d7f7419ce8b83553423ee70c207 Mon Sep 17 00:00:00 2001 From: Benjamin Kampmann Date: Tue, 16 Sep 2025 15:06:28 +0100 Subject: [PATCH 49/49] post merge fix --- lib/core/routing/app_router.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/core/routing/app_router.dart b/lib/core/routing/app_router.dart index f3485a57..704bfc19 100644 --- a/lib/core/routing/app_router.dart +++ b/lib/core/routing/app_router.dart @@ -218,6 +218,7 @@ final routerProvider = Provider((ref) { path: AppRoutes.systemsTest.route, name: AppRoutes.systemsTest.name, builder: (context, state) => const SystemsTestScreen(), + ), // Profile route GoRoute( path: AppRoutes.settingsProfile.route,