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

part of '../../scheduling_engine.dart';

/// Planned task intervals keyed by task id.
///
/// The name is historical from the first insertion feature; it now also supports
/// push and rollover placement plans. It remains private so it can be renamed or
/// expanded later without affecting callers.
class _BacklogInsertionPlan {
  /// Creates a `_BacklogInsertionPlan` 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 _BacklogInsertionPlan({required this.placements});

  /// Chosen interval for each task that should be scheduled or moved.
  final Map<String, TimeInterval> placements;
}
