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

part of '../../today_state.dart';

/// Request for the V1 Today read model.
class GetTodayStateRequest {
  /// Creates a `GetTodayStateRequest` 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 GetTodayStateRequest({
    required this.context,
    required this.date,
    this.revealHiddenLockedBlocks = false,
    this.includeNextFlexibleItem = true,
    this.fullTimelineExpanded = false,
  });

  /// Operation/read context. [ApplicationOperationContext.now] is the read
  /// instant and is never recomputed during the query.
  final ApplicationOperationContext context;

  /// Owner-local day to read.
  final CivilDate date;

  /// Whether hidden locked-time overlays should be present in the item list.
  final bool revealHiddenLockedBlocks;

  /// Whether compact projection should expose a next flexible task.
  final bool includeNextFlexibleItem;

  /// Whether compact mode is currently showing the full timeline.
  final bool fullTimelineExpanded;
}
