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

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

/// Bounded payload and retention policy for non-authoritative documents.
abstract final class PersistencePayloadLimits {
  /// Shared constant value for `maxTaskActivityMetadataEntries`.
  /// The constant gives this repeated scheduler or UI value one documented source of truth instead of scattering literals across call sites.
  static const maxTaskActivityMetadataEntries = 50;

  /// Shared constant value for `maxSchedulingSnapshotTasks`.
  /// The constant gives this repeated scheduler or UI value one documented source of truth instead of scattering literals across call sites.
  static const maxSchedulingSnapshotTasks = 250;

  /// Shared constant value for `maxSchedulingSnapshotNotices`.
  /// The constant gives this repeated scheduler or UI value one documented source of truth instead of scattering literals across call sites.
  static const maxSchedulingSnapshotNotices = 100;

  /// Shared constant value for `maxSchedulingSnapshotChanges`.
  /// The constant gives this repeated scheduler or UI value one documented source of truth instead of scattering literals across call sites.
  static const maxSchedulingSnapshotChanges = 250;

  /// Shared constant value for `maxAppliedActivityIds`.
  /// The constant gives this repeated scheduler or UI value one documented source of truth instead of scattering literals across call sites.
  static const maxAppliedActivityIds = 1000;

  /// Shared constant value for `taskActivityRetention`.
  /// The constant gives this repeated scheduler or UI value one documented source of truth instead of scattering literals across call sites.
  static const taskActivityRetention = Duration(days: 365);

  /// Shared constant value for `applicationOperationRetention`.
  /// The constant gives this repeated scheduler or UI value one documented source of truth instead of scattering literals across call sites.
  static const applicationOperationRetention = Duration(days: 90);

  /// Shared constant value for `schedulingSnapshotRetention`.
  /// The constant gives this repeated scheduler or UI value one documented source of truth instead of scattering literals across call sites.
  static const schedulingSnapshotRetention = Duration(days: 30);
}
