// This file is automatically generated, so please do not edit it.
// @generated by `flutter_rust_bridge`@ 2.12.0.

// 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 are not marked as `pub`: `get_twonly_flutter`
// These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `TwonlyFlutter`

Future<void> initializeTwonlyFlutter({required InitConfig config}) =>
    RustLib.instance.api.crateBridgeInitializeTwonlyFlutter(config: config);

class AnnouncedUser {
  final PlatformInt64 userId;
  final Uint8List publicKey;
  final PlatformInt64 publicId;

  const AnnouncedUser({
    required this.userId,
    required this.publicKey,
    required this.publicId,
  });

  @override
  int get hashCode => userId.hashCode ^ publicKey.hashCode ^ publicId.hashCode;

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is AnnouncedUser &&
          runtimeType == other.runtimeType &&
          userId == other.userId &&
          publicKey == other.publicKey &&
          publicId == other.publicId;
}

class InitConfig {
  final String databaseDir;
  final String dataDir;

  const InitConfig({
    required this.databaseDir,
    required this.dataDir,
  });

  @override
  int get hashCode => databaseDir.hashCode ^ dataDir.hashCode;

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is InitConfig &&
          runtimeType == other.runtimeType &&
          databaseDir == other.databaseDir &&
          dataDir == other.dataDir;
}

class OtherPromotion {
  final int promotionId;
  final PlatformInt64 publicId;
  final PlatformInt64 fromContactId;
  final int threshold;
  final Uint8List announcementShare;
  final PlatformInt64? publicKeyVerifiedTimestamp;

  const OtherPromotion({
    required this.promotionId,
    required this.publicId,
    required this.fromContactId,
    required this.threshold,
    required this.announcementShare,
    this.publicKeyVerifiedTimestamp,
  });

  @override
  int get hashCode =>
      promotionId.hashCode ^
      publicId.hashCode ^
      fromContactId.hashCode ^
      threshold.hashCode ^
      announcementShare.hashCode ^
      publicKeyVerifiedTimestamp.hashCode;

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is OtherPromotion &&
          runtimeType == other.runtimeType &&
          promotionId == other.promotionId &&
          publicId == other.publicId &&
          fromContactId == other.fromContactId &&
          threshold == other.threshold &&
          announcementShare == other.announcementShare &&
          publicKeyVerifiedTimestamp == other.publicKeyVerifiedTimestamp;
}
