import type { HelpAnalytics, HelpArticle, HelpCategory, HelpTicket } from "@/types/help";

export type TicketViewMode = "table" | "kanban" | "inbox";

export interface HelpTicketMessage {
  id: number;
  senderType: "user" | "admin" | "bot";
  message: string;
  attachments?: { url: string; name?: string; mime?: string }[];
  author?: { id: number; name: string };
  createdAt?: string;
}

export interface HelpTicketNote {
  id: number;
  body: string;
  isInternal: boolean;
  author?: { id: number; name: string };
  createdAt?: string;
}

export interface HelpTicketDetail extends HelpTicket {
  botActive?: boolean;
  assignedTo?: number | null;
  userId?: number | null;
  isCustomer?: boolean | null;
  ticketCategory?: string | null;
  preferredContact?: string | null;
  projectReference?: string | null;
  channel?: string;
  firstResponseAt?: string | null;
  resolvedAt?: string | null;
  slaDueAt?: string | null;
  createdAt?: string;
  updatedAt?: string;
  tags?: { id: number; name: string; color: string }[];
  messages?: HelpTicketMessage[];
  notes?: HelpTicketNote[];
  messagesCount?: number;
}

export interface HelpDeskDashboard extends HelpAnalytics {
  ticketsInProgress?: number;
  ticketsResolved?: number;
  ticketsClosed?: number;
  avgResponseMinutes?: number | null;
  slaBreached?: number;
  ticketsByCategory?: { ticket_category: string; total: number }[];
  recentTickets?: HelpTicketDetail[];
  agentRanking?: HelpAgentProfile[];
  recentActivity?: HelpAuditEntry[];
  ticketsByDay?: { day: string; total: number }[];
}

export interface HelpAgentProfile {
  id: number;
  user_id: number;
  help_role: string;
  is_online: boolean;
  tickets_resolved: number;
  avg_response_minutes?: number | null;
  user?: { id: number; name: string; email: string };
}

export interface HelpClientRecord {
  id: number;
  user_id?: number | null;
  name: string;
  email: string;
  phone?: string | null;
  company?: string | null;
  internal_notes?: string | null;
  tickets_count: number;
  created_at?: string;
}

export interface HelpAutomationRule {
  id: number;
  name: string;
  trigger_event: string;
  conditions?: Record<string, unknown> | null;
  actions?: Record<string, unknown> | null;
  active: boolean;
}

export interface HelpAuditEntry {
  id: number;
  user_id?: number | null;
  entity_type: string;
  entity_id?: number | null;
  action: string;
  ip?: string | null;
  created_at?: string;
  user?: { id: number; name: string; email?: string };
}

export interface HelpDeskSettings {
  settings: Record<string, unknown>;
  tags: { id: number; name: string; color: string }[];
}

export type { HelpArticle, HelpCategory };
