// SPDX-FileCopyrightText: 2026 FocusFlow contributors
// SPDX-License-Identifier: AGPL-3.0-only

part of '../../../persistence_contract.dart';

/// Document field names for [ProjectStatistics] documents.
abstract final class ProjectStatisticsDocumentFields {
  /// Stable storage field for `schemaVersion`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const schemaVersion = DocumentFields.schemaVersion;

  /// Stable storage field for `id`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const id = DocumentFields.id;

  /// Stable storage field for `ownerId`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const ownerId = DocumentFields.ownerId;

  /// Stable storage field for `revision`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const revision = DocumentFields.revision;

  /// Stable storage field for `createdAt`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const createdAt = DocumentFields.createdAt;

  /// Stable storage field for `updatedAt`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const updatedAt = DocumentFields.updatedAt;

  /// Stable storage field for `projectId`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const projectId = 'projectId';

  /// Stable storage field for `completedTaskCount`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const completedTaskCount = 'completedTaskCount';

  /// Stable storage field for `durationMinuteCounts`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const durationMinuteCounts = 'durationMinuteCounts';

  /// Stable storage field for `completionTimeBucketCounts`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const completionTimeBucketCounts = 'completionTimeBucketCounts';

  /// Stable storage field for `totalPushesBeforeCompletion`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const totalPushesBeforeCompletion = 'totalPushesBeforeCompletion';

  /// Stable storage field for `completedAfterPushCount`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const completedAfterPushCount = 'completedAfterPushCount';

  /// Stable storage field for `rewardCounts`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const rewardCounts = 'rewardCounts';

  /// Stable storage field for `difficultyCounts`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const difficultyCounts = 'difficultyCounts';

  /// Stable storage field for `reminderProfileCounts`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const reminderProfileCounts = 'reminderProfileCounts';

  /// Stable storage field for `appliedActivityIds`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const appliedActivityIds = 'appliedActivityIds';

  /// Stable storage field for `all`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const all = <String>{
    ...DocumentFields.common,
    projectId,
    completedTaskCount,
    durationMinuteCounts,
    completionTimeBucketCounts,
    totalPushesBeforeCompletion,
    completedAfterPushCount,
    rewardCounts,
    difficultyCounts,
    reminderProfileCounts,
    appliedActivityIds,
  };
}
