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

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

/// Owner-scoped acknowledgement for a one-time scheduling notice.
class NoticeAcknowledgementRecord {
  /// Creates a `NoticeAcknowledgementRecord` 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.
  NoticeAcknowledgementRecord({
    required String noticeId,
    required String ownerId,
    required this.acknowledgedAt,
  })  : noticeId = _requiredTrimmed(noticeId, 'noticeId'),
        ownerId = _requiredTrimmed(ownerId, 'ownerId');

  /// Stable notice id generated by the read/use-case boundary.
  final String noticeId;

  /// Authorization-neutral owner scope.
  final String ownerId;

  /// Instant the notice was consumed.
  final DateTime acknowledgedAt;
}
