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

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

/// Document field names for [SchedulingStateSnapshot] documents.
abstract final class SchedulingSnapshotDocumentFields {
  /// 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 `capturedAt`.
  /// Keeping the key in one documented constant protects repository adapters, migrations, and tests from drifting string literals.
  static const capturedAt = 'capturedAt';

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

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

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

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

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

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

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

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

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

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

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

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

  /// 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,
    capturedAt,
    sourceDate,
    targetDate,
    window,
    tasks,
    lockedIntervals,
    requiredVisibleIntervals,
    notices,
    changes,
    overlaps,
    operationName,
    retentionExpiresAt,
    truncated,
  };
}
