import { NotificationChannel, NotificationStatus } from '../entities/notification.entity';

export interface NotificationCreatedEvent {
  notificationId: string;
  userId: string;
  channel: NotificationChannel;
  title: string;
  timestamp: string;
}

export interface NotificationSentEvent {
  notificationId: string;
  userId: string;
  channel: NotificationChannel;
  status: NotificationStatus;
  sentAt: string;
  timestamp: string;
}

export interface NotificationReadEvent {
  notificationId: string;
  userId: string;
  readAt: string;
  timestamp: string;
}

export interface NotificationFailedEvent {
  notificationId: string;
  userId: string;
  channel: NotificationChannel;
  reason: string;
  timestamp: string;
}

export interface BroadcastSentEvent {
  broadcastId: string;
  channel: NotificationChannel;
  segment: string;
  recipientCount: number;
  timestamp: string;
}

// ── Announcement Events ──

export interface AnnouncementCreatedEvent {
  announcementId: string;
  title: string;
  targetType: string;
  createdBy: string | null;
  timestamp: string;
}

export interface AnnouncementPublishedEvent {
  announcementId: string;
  title: string;
  targetType: string;
  publishedAt: string;
  timestamp: string;
}
