// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'submissions_provider.dart';

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

// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
/// Project Status Local Data Source Provider

@ProviderFor(projectStatusLocalDataSource)
const projectStatusLocalDataSourceProvider =
    ProjectStatusLocalDataSourceProvider._();

/// Project Status Local Data Source Provider

final class ProjectStatusLocalDataSourceProvider
    extends
        $FunctionalProvider<
          ProjectStatusLocalDataSource,
          ProjectStatusLocalDataSource,
          ProjectStatusLocalDataSource
        >
    with $Provider<ProjectStatusLocalDataSource> {
  /// Project Status Local Data Source Provider
  const ProjectStatusLocalDataSourceProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'projectStatusLocalDataSourceProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

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

  @override
  ProjectStatusLocalDataSource create(Ref ref) {
    return projectStatusLocalDataSource(ref);
  }

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

String _$projectStatusLocalDataSourceHash() =>
    r'c57291e51bd390f9524369860c241d7a0a90fdbf';

/// Project Progress Local Data Source Provider

@ProviderFor(projectProgressLocalDataSource)
const projectProgressLocalDataSourceProvider =
    ProjectProgressLocalDataSourceProvider._();

/// Project Progress Local Data Source Provider

final class ProjectProgressLocalDataSourceProvider
    extends
        $FunctionalProvider<
          ProjectProgressLocalDataSource,
          ProjectProgressLocalDataSource,
          ProjectProgressLocalDataSource
        >
    with $Provider<ProjectProgressLocalDataSource> {
  /// Project Progress Local Data Source Provider
  const ProjectProgressLocalDataSourceProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'projectProgressLocalDataSourceProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

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

  @override
  ProjectProgressLocalDataSource create(Ref ref) {
    return projectProgressLocalDataSource(ref);
  }

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

String _$projectProgressLocalDataSourceHash() =>
    r'653d03b47f5642f3391e7a312649a2603489b224';

/// Submissions Remote Data Source Provider

@ProviderFor(submissionsRemoteDataSource)
const submissionsRemoteDataSourceProvider =
    SubmissionsRemoteDataSourceProvider._();

/// Submissions Remote Data Source Provider

final class SubmissionsRemoteDataSourceProvider
    extends
        $FunctionalProvider<
          AsyncValue<SubmissionsRemoteDataSource>,
          SubmissionsRemoteDataSource,
          FutureOr<SubmissionsRemoteDataSource>
        >
    with
        $FutureModifier<SubmissionsRemoteDataSource>,
        $FutureProvider<SubmissionsRemoteDataSource> {
  /// Submissions Remote Data Source Provider
  const SubmissionsRemoteDataSourceProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'submissionsRemoteDataSourceProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

  @$internal
  @override
  $FutureProviderElement<SubmissionsRemoteDataSource> $createElement(
    $ProviderPointer pointer,
  ) => $FutureProviderElement(pointer);

  @override
  FutureOr<SubmissionsRemoteDataSource> create(Ref ref) {
    return submissionsRemoteDataSource(ref);
  }
}

String _$submissionsRemoteDataSourceHash() =>
    r'ffaa92dd55ef50c8f1166773a83cd5c8cc16ded4';

/// Submissions Repository Provider

@ProviderFor(submissionsRepository)
const submissionsRepositoryProvider = SubmissionsRepositoryProvider._();

/// Submissions Repository Provider

final class SubmissionsRepositoryProvider
    extends
        $FunctionalProvider<
          AsyncValue<SubmissionsRepository>,
          SubmissionsRepository,
          FutureOr<SubmissionsRepository>
        >
    with
        $FutureModifier<SubmissionsRepository>,
        $FutureProvider<SubmissionsRepository> {
  /// Submissions Repository Provider
  const SubmissionsRepositoryProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'submissionsRepositoryProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

  @$internal
  @override
  $FutureProviderElement<SubmissionsRepository> $createElement(
    $ProviderPointer pointer,
  ) => $FutureProviderElement(pointer);

  @override
  FutureOr<SubmissionsRepository> create(Ref ref) {
    return submissionsRepository(ref);
  }
}

String _$submissionsRepositoryHash() =>
    r'652208a4ef93cde9b40ae66164d44bba786dfed0';

/// Project Status List Provider
///
/// Fetches project status options from API with cache-first pattern.
/// This is loaded before submissions to ensure filter options are available.

@ProviderFor(ProjectStatusList)
const projectStatusListProvider = ProjectStatusListProvider._();

/// Project Status List Provider
///
/// Fetches project status options from API with cache-first pattern.
/// This is loaded before submissions to ensure filter options are available.
final class ProjectStatusListProvider
    extends $AsyncNotifierProvider<ProjectStatusList, List<ProjectStatus>> {
  /// Project Status List Provider
  ///
  /// Fetches project status options from API with cache-first pattern.
  /// This is loaded before submissions to ensure filter options are available.
  const ProjectStatusListProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'projectStatusListProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

  @$internal
  @override
  ProjectStatusList create() => ProjectStatusList();
}

String _$projectStatusListHash() => r'69a43b619738dec3a6643a9a780599417403b838';

/// Project Status List Provider
///
/// Fetches project status options from API with cache-first pattern.
/// This is loaded before submissions to ensure filter options are available.

abstract class _$ProjectStatusList extends $AsyncNotifier<List<ProjectStatus>> {
  FutureOr<List<ProjectStatus>> build();
  @$mustCallSuper
  @override
  void runBuild() {
    final created = build();
    final ref =
        this.ref as $Ref<AsyncValue<List<ProjectStatus>>, List<ProjectStatus>>;
    final element =
        ref.element
            as $ClassProviderElement<
              AnyNotifier<AsyncValue<List<ProjectStatus>>, List<ProjectStatus>>,
              AsyncValue<List<ProjectStatus>>,
              Object?,
              Object?
            >;
    element.handleValue(ref, created);
  }
}

/// Project Progress List Provider
///
/// Fetches construction progress stages from API with cache-first pattern.
/// Used for dropdown selection when creating/updating project submissions.

@ProviderFor(ProjectProgressList)
const projectProgressListProvider = ProjectProgressListProvider._();

/// Project Progress List Provider
///
/// Fetches construction progress stages from API with cache-first pattern.
/// Used for dropdown selection when creating/updating project submissions.
final class ProjectProgressListProvider
    extends $AsyncNotifierProvider<ProjectProgressList, List<ProjectProgress>> {
  /// Project Progress List Provider
  ///
  /// Fetches construction progress stages from API with cache-first pattern.
  /// Used for dropdown selection when creating/updating project submissions.
  const ProjectProgressListProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'projectProgressListProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

  @$internal
  @override
  ProjectProgressList create() => ProjectProgressList();
}

String _$projectProgressListHash() =>
    r'5ee1c23f90bfa61237f38a6b72c353f0ecb7a2a9';

/// Project Progress List Provider
///
/// Fetches construction progress stages from API with cache-first pattern.
/// Used for dropdown selection when creating/updating project submissions.

abstract class _$ProjectProgressList
    extends $AsyncNotifier<List<ProjectProgress>> {
  FutureOr<List<ProjectProgress>> build();
  @$mustCallSuper
  @override
  void runBuild() {
    final created = build();
    final ref =
        this.ref
            as $Ref<AsyncValue<List<ProjectProgress>>, List<ProjectProgress>>;
    final element =
        ref.element
            as $ClassProviderElement<
              AnyNotifier<
                AsyncValue<List<ProjectProgress>>,
                List<ProjectProgress>
              >,
              AsyncValue<List<ProjectProgress>>,
              Object?,
              Object?
            >;
    element.handleValue(ref, created);
  }
}

/// All Submissions Provider
///
/// Fetches and manages submissions data from remote.
/// Waits for project status list and progress list to be loaded first.

@ProviderFor(AllSubmissions)
const allSubmissionsProvider = AllSubmissionsProvider._();

/// All Submissions Provider
///
/// Fetches and manages submissions data from remote.
/// Waits for project status list and progress list to be loaded first.
final class AllSubmissionsProvider
    extends $AsyncNotifierProvider<AllSubmissions, List<ProjectSubmission>> {
  /// All Submissions Provider
  ///
  /// Fetches and manages submissions data from remote.
  /// Waits for project status list and progress list to be loaded first.
  const AllSubmissionsProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'allSubmissionsProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

  @$internal
  @override
  AllSubmissions create() => AllSubmissions();
}

String _$allSubmissionsHash() => r'ab0f1ffdc5e6bdb62dbd56ff3e586ecc1ff05bea';

/// All Submissions Provider
///
/// Fetches and manages submissions data from remote.
/// Waits for project status list and progress list to be loaded first.

abstract class _$AllSubmissions
    extends $AsyncNotifier<List<ProjectSubmission>> {
  FutureOr<List<ProjectSubmission>> build();
  @$mustCallSuper
  @override
  void runBuild() {
    final created = build();
    final ref =
        this.ref
            as $Ref<
              AsyncValue<List<ProjectSubmission>>,
              List<ProjectSubmission>
            >;
    final element =
        ref.element
            as $ClassProviderElement<
              AnyNotifier<
                AsyncValue<List<ProjectSubmission>>,
                List<ProjectSubmission>
              >,
              AsyncValue<List<ProjectSubmission>>,
              Object?,
              Object?
            >;
    element.handleValue(ref, created);
  }
}

/// Submissions Filter State
///
/// Manages search and status filter state.
/// Status filter uses the status label string from API (e.g., "Chờ phê duyệt").

@ProviderFor(SubmissionsFilter)
const submissionsFilterProvider = SubmissionsFilterProvider._();

/// Submissions Filter State
///
/// Manages search and status filter state.
/// Status filter uses the status label string from API (e.g., "Chờ phê duyệt").
final class SubmissionsFilterProvider
    extends
        $NotifierProvider<
          SubmissionsFilter,
          ({String searchQuery, String? selectedStatus})
        > {
  /// Submissions Filter State
  ///
  /// Manages search and status filter state.
  /// Status filter uses the status label string from API (e.g., "Chờ phê duyệt").
  const SubmissionsFilterProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'submissionsFilterProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

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

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

String _$submissionsFilterHash() => r'b3c59003922b1786b71f68726f97b210eed94c89';

/// Submissions Filter State
///
/// Manages search and status filter state.
/// Status filter uses the status label string from API (e.g., "Chờ phê duyệt").

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

/// Filtered Submissions Provider
///
/// Combines submissions data with filter state to return filtered results.

@ProviderFor(filteredSubmissions)
const filteredSubmissionsProvider = FilteredSubmissionsProvider._();

/// Filtered Submissions Provider
///
/// Combines submissions data with filter state to return filtered results.

final class FilteredSubmissionsProvider
    extends
        $FunctionalProvider<
          AsyncValue<List<ProjectSubmission>>,
          AsyncValue<List<ProjectSubmission>>,
          AsyncValue<List<ProjectSubmission>>
        >
    with $Provider<AsyncValue<List<ProjectSubmission>>> {
  /// Filtered Submissions Provider
  ///
  /// Combines submissions data with filter state to return filtered results.
  const FilteredSubmissionsProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'filteredSubmissionsProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

  @$internal
  @override
  $ProviderElement<AsyncValue<List<ProjectSubmission>>> $createElement(
    $ProviderPointer pointer,
  ) => $ProviderElement(pointer);

  @override
  AsyncValue<List<ProjectSubmission>> create(Ref ref) {
    return filteredSubmissions(ref);
  }

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

String _$filteredSubmissionsHash() =>
    r'5be22b3242426c6b0c2f9778eaee5c7cf23e4814';

/// Submission Detail Provider
///
/// Fetches full project detail by name for editing.
/// Uses family modifier to cache by submission name.

@ProviderFor(submissionDetail)
const submissionDetailProvider = SubmissionDetailFamily._();

/// Submission Detail Provider
///
/// Fetches full project detail by name for editing.
/// Uses family modifier to cache by submission name.

final class SubmissionDetailProvider
    extends
        $FunctionalProvider<
          AsyncValue<ProjectSubmission>,
          ProjectSubmission,
          FutureOr<ProjectSubmission>
        >
    with
        $FutureModifier<ProjectSubmission>,
        $FutureProvider<ProjectSubmission> {
  /// Submission Detail Provider
  ///
  /// Fetches full project detail by name for editing.
  /// Uses family modifier to cache by submission name.
  const SubmissionDetailProvider._({
    required SubmissionDetailFamily super.from,
    required String super.argument,
  }) : super(
         retry: null,
         name: r'submissionDetailProvider',
         isAutoDispose: true,
         dependencies: null,
         $allTransitiveDependencies: null,
       );

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

  @override
  String toString() {
    return r'submissionDetailProvider'
        ''
        '($argument)';
  }

  @$internal
  @override
  $FutureProviderElement<ProjectSubmission> $createElement(
    $ProviderPointer pointer,
  ) => $FutureProviderElement(pointer);

  @override
  FutureOr<ProjectSubmission> create(Ref ref) {
    final argument = this.argument as String;
    return submissionDetail(ref, argument);
  }

  @override
  bool operator ==(Object other) {
    return other is SubmissionDetailProvider && other.argument == argument;
  }

  @override
  int get hashCode {
    return argument.hashCode;
  }
}

String _$submissionDetailHash() => r'd3c767aa55e74a36c6a2b9b9bf6dd8ad8bf8eff3';

/// Submission Detail Provider
///
/// Fetches full project detail by name for editing.
/// Uses family modifier to cache by submission name.

final class SubmissionDetailFamily extends $Family
    with $FunctionalFamilyOverride<FutureOr<ProjectSubmission>, String> {
  const SubmissionDetailFamily._()
    : super(
        retry: null,
        name: r'submissionDetailProvider',
        dependencies: null,
        $allTransitiveDependencies: null,
        isAutoDispose: true,
      );

  /// Submission Detail Provider
  ///
  /// Fetches full project detail by name for editing.
  /// Uses family modifier to cache by submission name.

  SubmissionDetailProvider call(String name) =>
      SubmissionDetailProvider._(argument: name, from: this);

  @override
  String toString() => r'submissionDetailProvider';
}

/// Save Submission Provider
///
/// Handles creating new project submissions via API.

@ProviderFor(SaveSubmission)
const saveSubmissionProvider = SaveSubmissionProvider._();

/// Save Submission Provider
///
/// Handles creating new project submissions via API.
final class SaveSubmissionProvider
    extends $NotifierProvider<SaveSubmission, AsyncValue<void>> {
  /// Save Submission Provider
  ///
  /// Handles creating new project submissions via API.
  const SaveSubmissionProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'saveSubmissionProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

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

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

String _$saveSubmissionHash() => r'64afa1a9662c36431c143c46a8ca34a786cb0860';

/// Save Submission Provider
///
/// Handles creating new project submissions via API.

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

/// Upload Project Files Provider
///
/// Handles uploading multiple files for a project submission.
/// Tracks upload state for each file individually.

@ProviderFor(UploadProjectFiles)
const uploadProjectFilesProvider = UploadProjectFilesProvider._();

/// Upload Project Files Provider
///
/// Handles uploading multiple files for a project submission.
/// Tracks upload state for each file individually.
final class UploadProjectFilesProvider
    extends $NotifierProvider<UploadProjectFiles, List<FileUploadState>> {
  /// Upload Project Files Provider
  ///
  /// Handles uploading multiple files for a project submission.
  /// Tracks upload state for each file individually.
  const UploadProjectFilesProvider._()
    : super(
        from: null,
        argument: null,
        retry: null,
        name: r'uploadProjectFilesProvider',
        isAutoDispose: true,
        dependencies: null,
        $allTransitiveDependencies: null,
      );

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

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

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

String _$uploadProjectFilesHash() =>
    r'd6219bc1f0b0d6ac70b9e3cea731267c82a68e1f';

/// Upload Project Files Provider
///
/// Handles uploading multiple files for a project submission.
/// Tracks upload state for each file individually.

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