// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'selected_role_provider.dart';

// **************************************************************************
// RiverpodGenerator
// **************************************************************************

// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
/// Selected Role Provider
///
/// Manages the currently selected user role in the registration form.
/// Provides methods to select and clear role selection.
///
/// This provider is used to:
/// - Track which role the user has selected
/// - Conditionally show/hide verification fields based on role
/// - Validate required documents for dealer/worker roles
///
/// Usage in widgets:
/// ```dart
/// // Watch the selected role
/// final selectedRole = ref.watch(selectedRoleProvider);
///
/// // Select a role
/// ref.read(selectedRoleProvider.notifier).selectRole(UserRole.customer);
///
/// // Clear selection
/// ref.read(selectedRoleProvider.notifier).clearRole();
///
/// // Show verification section conditionally
/// if (selectedRole == UserRole.customer) {
///   VerificationSection(),
/// }
/// ```

@ProviderFor(SelectedRole)
const selectedRoleProvider = SelectedRoleProvider._();

/// Selected Role Provider
///
/// Manages the currently selected user role in the registration form.
/// Provides methods to select and clear role selection.
///
/// This provider is used to:
/// - Track which role the user has selected
/// - Conditionally show/hide verification fields based on role
/// - Validate required documents for dealer/worker roles
///
/// Usage in widgets:
/// ```dart
/// // Watch the selected role
/// final selectedRole = ref.watch(selectedRoleProvider);
///
/// // Select a role
/// ref.read(selectedRoleProvider.notifier).selectRole(UserRole.customer);
///
/// // Clear selection
/// ref.read(selectedRoleProvider.notifier).clearRole();
///
/// // Show verification section conditionally
/// if (selectedRole == UserRole.customer) {
///   VerificationSection(),
/// }
/// ```
final class SelectedRoleProvider
    extends $NotifierProvider<SelectedRole, UserRole?> {
  /// Selected Role Provider
  ///
  /// Manages the currently selected user role in the registration form.
  /// Provides methods to select and clear role selection.
  ///
  /// This provider is used to:
  /// - Track which role the user has selected
  /// - Conditionally show/hide verification fields based on role
  /// - Validate required documents for dealer/worker roles
  ///
  /// Usage in widgets:
  /// ```dart
  /// // Watch the selected role
  /// final selectedRole = ref.watch(selectedRoleProvider);
  ///
  /// // Select a role
  /// ref.read(selectedRoleProvider.notifier).selectRole(UserRole.customer);
  ///
  /// // Clear selection
  /// ref.read(selectedRoleProvider.notifier).clearRole();
  ///
  /// // Show verification section conditionally
  /// if (selectedRole == UserRole.customer) {
  ///   VerificationSection(),
  /// }
  /// ```
  const SelectedRoleProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'selectedRoleProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

  @override
  String debugGetCreateSourceHash() => _$selectedRoleHash();

  @$internal
  @override
  SelectedRole create() => SelectedRole();

  /// {@macro riverpod.override_with_value}
  Override overrideWithValue(UserRole? value) {
    return $ProviderOverride(
      origin: this,
      providerOverride: $SyncValueProvider<UserRole?>(value),
    );
  }
}

String _$selectedRoleHash() => r'098c7fdaec4694d14a48c049556960eb6ed2dc06';

/// Selected Role Provider
///
/// Manages the currently selected user role in the registration form.
/// Provides methods to select and clear role selection.
///
/// This provider is used to:
/// - Track which role the user has selected
/// - Conditionally show/hide verification fields based on role
/// - Validate required documents for dealer/worker roles
///
/// Usage in widgets:
/// ```dart
/// // Watch the selected role
/// final selectedRole = ref.watch(selectedRoleProvider);
///
/// // Select a role
/// ref.read(selectedRoleProvider.notifier).selectRole(UserRole.customer);
///
/// // Clear selection
/// ref.read(selectedRoleProvider.notifier).clearRole();
///
/// // Show verification section conditionally
/// if (selectedRole == UserRole.customer) {
///   VerificationSection(),
/// }
/// ```

abstract class _$SelectedRole extends $Notifier<UserRole?> {
  UserRole? build();
  @$mustCallSuper
  @override
  void runBuild() {
    final created = build();
    final ref = this.ref as $Ref<UserRole?, UserRole?>;
    final element =
        ref.element
            as $ClassProviderElement<
              AnyNotifier<UserRole?, UserRole?>,
              UserRole?,
              Object?,
              Object?
            >;
    element.handleValue(ref, created);
  }
}

/// Convenience provider for checking if verification is required
///
/// Returns true if the currently selected role requires verification
/// documents (CCCD, certificates, etc.).
///
/// Usage:
/// ```dart
/// final needsVerification = ref.watch(requiresVerificationProvider);
/// if (needsVerification) {
///   // Show verification section with file uploads
/// }
/// ```

@ProviderFor(requiresVerification)
const requiresVerificationProvider = RequiresVerificationProvider._();

/// Convenience provider for checking if verification is required
///
/// Returns true if the currently selected role requires verification
/// documents (CCCD, certificates, etc.).
///
/// Usage:
/// ```dart
/// final needsVerification = ref.watch(requiresVerificationProvider);
/// if (needsVerification) {
///   // Show verification section with file uploads
/// }
/// ```

final class RequiresVerificationProvider
    extends $FunctionalProvider<bool, bool, bool>
    with $Provider<bool> {
  /// Convenience provider for checking if verification is required
  ///
  /// Returns true if the currently selected role requires verification
  /// documents (CCCD, certificates, etc.).
  ///
  /// Usage:
  /// ```dart
  /// final needsVerification = ref.watch(requiresVerificationProvider);
  /// if (needsVerification) {
  ///   // Show verification section with file uploads
  /// }
  /// ```
  const RequiresVerificationProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'requiresVerificationProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

  @override
  String debugGetCreateSourceHash() => _$requiresVerificationHash();

  @$internal
  @override
  $ProviderElement<bool> $createElement($ProviderPointer pointer) =>
      $ProviderElement(pointer);

  @override
  bool create(Ref ref) {
    return requiresVerification(ref);
  }

  /// {@macro riverpod.override_with_value}
  Override overrideWithValue(bool value) {
    return $ProviderOverride(
      origin: this,
      providerOverride: $SyncValueProvider<bool>(value),
    );
  }
}

String _$requiresVerificationHash() =>
    r'400b4242bca2defd14e46361d2b77dd94a4e3e5e';

/// Convenience provider for getting role display name
///
/// Returns a user-friendly Vietnamese name for the selected role,
/// or null if no role is selected.
///
/// Usage:
/// ```dart
/// final roleName = ref.watch(roleDisplayNameProvider);
/// if (roleName != null) {
///   Text('Bạn đang đăng ký với vai trò: $roleName');
/// }
/// ```

@ProviderFor(roleDisplayName)
const roleDisplayNameProvider = RoleDisplayNameProvider._();

/// Convenience provider for getting role display name
///
/// Returns a user-friendly Vietnamese name for the selected role,
/// or null if no role is selected.
///
/// Usage:
/// ```dart
/// final roleName = ref.watch(roleDisplayNameProvider);
/// if (roleName != null) {
///   Text('Bạn đang đăng ký với vai trò: $roleName');
/// }
/// ```

final class RoleDisplayNameProvider
    extends $FunctionalProvider<String?, String?, String?>
    with $Provider<String?> {
  /// Convenience provider for getting role display name
  ///
  /// Returns a user-friendly Vietnamese name for the selected role,
  /// or null if no role is selected.
  ///
  /// Usage:
  /// ```dart
  /// final roleName = ref.watch(roleDisplayNameProvider);
  /// if (roleName != null) {
  ///   Text('Bạn đang đăng ký với vai trò: $roleName');
  /// }
  /// ```
  const RoleDisplayNameProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'roleDisplayNameProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

  @override
  String debugGetCreateSourceHash() => _$roleDisplayNameHash();

  @$internal
  @override
  $ProviderElement<String?> $createElement($ProviderPointer pointer) =>
      $ProviderElement(pointer);

  @override
  String? create(Ref ref) {
    return roleDisplayName(ref);
  }

  /// {@macro riverpod.override_with_value}
  Override overrideWithValue(String? value) {
    return $ProviderOverride(
      origin: this,
      providerOverride: $SyncValueProvider<String?>(value),
    );
  }
}

String _$roleDisplayNameHash() => r'6cb4bfd9e76fb2f3ed52d4a249e5a2477bc6f39e';
