// 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 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';

import '../frb_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`, `fmt`, `from`, `from`, `from`, `from`

/// Flutter-compatible representation of user metadata following Nostr protocol standards.
///
/// This struct provides a bridge between the core library's `Metadata` type and Flutter's
/// type system. The `custom` field is kept private to avoid flutter_rust_bridge
/// auto-generation issues and is accessed through getter/setter methods.
///
/// # Nostr Metadata Fields
/// Most fields correspond to standard Nostr metadata as defined in NIP-01 and related NIPs.
class FlutterMetadata {
  /// User's name/username
  final String? name;

  /// Display name for the user (can be different from name)
  final String? displayName;

  /// User's bio/description
  final String? about;

  /// URL to user's profile picture
  final String? picture;

  /// URL to user's banner/header image
  final String? banner;

  /// User's website URL
  final String? website;

  /// NIP-05 verification identifier (e.g., "user@domain.com")
  final String? nip05;

  /// Lightning Network address in older format
  final String? lud06;

  /// Lightning Network address in newer format
  final String? lud16;

  /// Additional custom metadata fields
  final Map<String, String> custom;

  const FlutterMetadata({
    this.name,
    this.displayName,
    this.about,
    this.picture,
    this.banner,
    this.website,
    this.nip05,
    this.lud06,
    this.lud16,
    required this.custom,
  });

  @override
  int get hashCode =>
      name.hashCode ^
      displayName.hashCode ^
      about.hashCode ^
      picture.hashCode ^
      banner.hashCode ^
      website.hashCode ^
      nip05.hashCode ^
      lud06.hashCode ^
      lud16.hashCode ^
      custom.hashCode;

  @override
  bool operator ==(Object other) =>
      identical(this, other) ||
      other is FlutterMetadata &&
          runtimeType == other.runtimeType &&
          name == other.name &&
          displayName == other.displayName &&
          about == other.about &&
          picture == other.picture &&
          banner == other.banner &&
          website == other.website &&
          nip05 == other.nip05 &&
          lud06 == other.lud06 &&
          lud16 == other.lud16 &&
          custom == other.custom;
}
