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

part of '../../repositories.dart';

/// Status/project filters for backlog candidate queries.
class BacklogCandidateQuery {
  /// Creates a `BacklogCandidateQuery` instance with the values required by its invariants.
  /// Callers should pass already-normalized scheduler data because validation and defaulting belong at the model or service boundary, not in arbitrary UI code.
  const BacklogCandidateQuery({
    required this.ownerId,
    this.projectId,
    this.tags = const <BacklogTag>{},
    this.page = const RepositoryPageRequest(),
  });

  /// Stores the `ownerId` value for this object.
  /// This field is part of the explicit state that downstream scheduling, persistence, or UI code reads when composing behavior.
  final String ownerId;

  /// Stores the `projectId` value for this object.
  /// This field is part of the explicit state that downstream scheduling, persistence, or UI code reads when composing behavior.
  final String? projectId;

  /// Stores the `tags` value for this object.
  /// This field is part of the explicit state that downstream scheduling, persistence, or UI code reads when composing behavior.
  final Set<BacklogTag> tags;

  /// Stores the `page` value for this object.
  /// This field is part of the explicit state that downstream scheduling, persistence, or UI code reads when composing behavior.
  final RepositoryPageRequest page;
}
