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

part of '../../application_management.dart';

/// Patch used when updating owner settings.
class OwnerSettingsUpdate {
  /// Creates a `OwnerSettingsUpdate` 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 OwnerSettingsUpdate({
    this.timeZoneId,
    this.dayStart,
    this.dayEnd,
    this.compactModeEnabled,
    this.backlogStalenessSettings,
  });

  /// Stores the `timeZoneId` 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? timeZoneId;

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

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

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

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