// Analytics Types
export interface RevenueData {
  total: number
  monthly: number
  weekly: number
  daily: number
}

export interface AgendaItem {
  _id: string
  clientId: string
  start: string
  end: string
  status: "confirmed" | "pending" | "cancelled" | "completed"
  stylistName: string
  serviceName: string
  appointmentFee?: number
}

export interface AgendaData {
  numberOfAppointments: number
  expectedRevenue: number
  timezone: string
  appointments: AgendaItem[]
}

export interface OccupancyRateData {
  rate: number
  totalHours: number
  bookedHours: number
  availableHours: number
}

export interface StylistOccupancyRate {
  stylist: string
  occupancyRate: number
}

export interface PopularService {
  _id: string
  serviceName: string
  totalAppointments: number
  totalSpent: number
}

export interface ServiceAppointment {
  serviceId: string
  serviceName: string
  count: number
  revenue: number
}

export interface ServiceAppointmentsData {
  services: ServiceAppointment[]
  totalAppointments: number
}

export interface WeeklyBooking {
  day: string
  count: number
  date: string
}

export type WeeklyBookingsData = {
  day: string;
  bookings: number;
}[]

export type WeeklyEarningsData = {
  day: string;
  earnings: number;
}[]

export interface PeakHour {
  hour: string
  count: number
  percentage: number
}

export type PeakHourItem = {
  hour: string
  bookings: number
}[]

export interface PeakHoursData {
  peakHours: PeakHour[]
  busiestHour: string
}

export interface BookingRatioData {
  confirmed: number
  noShow: number
  ratio: number
}

export interface StylistPerformance {
  stylistId: string
  stylistName: string
  appointments: number
  revenue: number
  rating: number
  occupancyRate: number
}

export type StylistPerformanceItem = {
  _id: string
  stylistName: string
  totalBookings: number
  totalRevenue: number
}

export type StylistPerformanceData = StylistPerformanceItem[]

export interface RevenueStatsData {
  totalRevenue: number
  monthlyRevenue: number
  todayRevenue: number
}

export interface AppointmentStatsData {
  todayAppointments: number
  totalAppointments: number
}

export interface ClientStatsData {
  totalClients: number
  newClientsToday: number
}

export interface AIAnalyticsData {
  totalCallsConnected: number
  totalDurationSeconds: number
  averageDurationSeconds: number
}

export interface AIAnalyticsResponse {
  success: boolean
  data: AIAnalyticsData
}

export interface AICallDurationData {
  totalCalls: number
  salonId: string
  totalDurationMinutes: number
  avgCallDurationMinutes: number
}

export interface AIAppointmentsCountData {
  salonId: string
  aiAppointmentsCount: number
}

export interface DailyMetricsData {
  totalAppointments: number
  dailyRevenue: number
  remainingSlots: number
}