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

part of '../../../time_contracts.dart';

/// Represents `TimeZoneResolutionOptions` within the pure scheduler domain package.
/// The type groups related data and behavior behind a named API so readers can understand this part of the scheduler without relying on tribal knowledge about the surrounding files.
class TimeZoneResolutionOptions {
  /// Creates a `TimeZoneResolutionOptions` 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 TimeZoneResolutionOptions({
    this.nonexistentLocalTimePolicy = NonexistentLocalTimePolicy.shiftForward,
    this.repeatedLocalTimePolicy = RepeatedLocalTimePolicy.earlier,
  });

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

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