export interface NotificationReceivedPayload {
  id: string;
  type: string;
  type_label?: string;
  title: string;
  message: string;
  related_type?: string | null;
  related_id?: string | null;
  is_read?: boolean;
  created_at?: string;
}

export interface TicketActivityPayload {
  ticket_id: string;
  department_id: string;
  ticket_number?: string;
  subject?: string;
  status?: string;
  priority?: string;
  assignee_id?: string | null;
  updated_at?: string;
}

export interface ReplyAddedPayload {
  id: string;
  ticket_id: string;
  department_id: string;
  user?: { id: string; name: string };
  created_at?: string;
}

export interface NoteAddedPayload {
  id: string;
  ticket_id: string;
  department_id: string;
  user?: { id: string; name: string };
  created_at?: string;
}

export interface DashboardRefreshPayload {
  department_id: string;
  reason: string;
  ticket_id?: string | null;
}

export function isNotificationReceivedPayload(value: unknown): value is NotificationReceivedPayload {
  return (
    typeof value === 'object' &&
    value !== null &&
    typeof (value as NotificationReceivedPayload).id === 'string' &&
    typeof (value as NotificationReceivedPayload).title === 'string'
  );
}
