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

part of '../../application_layer.dart';

/// Owner-local time context supplied to application operations.
class OwnerTimeZoneContext {
  /// Creates a `OwnerTimeZoneContext` 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.
  OwnerTimeZoneContext({
    required String ownerId,
    required String timeZoneId,
  })  : ownerId = _requiredTrimmed(ownerId, 'ownerId'),
        timeZoneId = _requiredTrimmed(timeZoneId, 'timeZoneId');

  /// Authorization-neutral owner scope. V1 does not implement accounts.
  final String ownerId;

  /// IANA-style time-zone identifier chosen by the app boundary.
  final String timeZoneId;
}
