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

part of '../../../../application_layer.dart';

/// Repository set available inside one application unit of work.
abstract interface class ApplicationUnitOfWorkRepositories {
  /// Returns the derived `tasks` value for this object.
  /// Keeping this as an accessor gives callers a stable read surface while the owning type controls how the value is calculated.
  TaskRepository get tasks;

  /// Returns the derived `projects` value for this object.
  /// Keeping this as an accessor gives callers a stable read surface while the owning type controls how the value is calculated.
  ProjectRepository get projects;

  /// Returns the derived `lockedBlocks` value for this object.
  /// Keeping this as an accessor gives callers a stable read surface while the owning type controls how the value is calculated.
  LockedBlockRepository get lockedBlocks;

  /// Returns the derived `schedulingSnapshots` value for this object.
  /// Keeping this as an accessor gives callers a stable read surface while the owning type controls how the value is calculated.
  SchedulingSnapshotRepository get schedulingSnapshots;

  /// Returns the derived `taskActivities` value for this object.
  /// Keeping this as an accessor gives callers a stable read surface while the owning type controls how the value is calculated.
  TaskActivityRepository get taskActivities;

  /// Returns the derived `projectStatistics` value for this object.
  /// Keeping this as an accessor gives callers a stable read surface while the owning type controls how the value is calculated.
  ProjectStatisticsRepository get projectStatistics;

  /// Returns the derived `ownerSettings` value for this object.
  /// Keeping this as an accessor gives callers a stable read surface while the owning type controls how the value is calculated.
  OwnerSettingsRepository get ownerSettings;

  /// Returns the derived `noticeAcknowledgements` value for this object.
  /// Keeping this as an accessor gives callers a stable read surface while the owning type controls how the value is calculated.
  NoticeAcknowledgementRepository get noticeAcknowledgements;

  /// Returns the derived `operations` value for this object.
  /// Keeping this as an accessor gives callers a stable read surface while the owning type controls how the value is calculated.
  ApplicationOperationRepository get operations;
}
