export interface AnalyticsParams {
  financial_year?: string;
  filter_user_id?: number;
  filter_user_role?: string;
  veiw_data?: string;
}

export interface FYSummaryData {
  financialYear: string;
  dateRange: { start: string; end: string };
  summary: {
    visits: number;
    visitsUnique?: number;
    visitsDuplicate?: number;
    visitsRepeatVisit?: number;
    tokens: number;
    tokensUnique?: number;
    tokensDuplicate?: number;
    bookings: number;
    cancellations: number;
    netBookings: number;
    netBookingsUnique?: number;
    netBookingsDuplicate?: number;
    business?: number;
    cancelledBusiness?: number;
    netBusiness?: number;
  };
}

export interface LastWeekData {
  weekLabel: string;
  startDate: string;
  endDate: string;
  summary: {
    visits: number;
    visitsUnique?: number;
    visitsDuplicate?: number;
    visitsRepeatVisit?: number;
    tokens: number;
    bookings: number;
    cancellations: number;
    netBookings: number;
    business?: number;
    cancelledBusiness?: number;
    netBusiness?: number;
  };
}

export interface MonthData {
  month: string;
  monthNumber: number;
  visits: number;
  visitsDuplicate?: number;
  visitsRepeatVisit?: number;
  visitsSumOfMonths?: number;
  tokens: number;
  bookings: number;
  cancellations: number;
  enquiriesCancellations?: number | null;
  netBookings: number;
  business?: number;
  cancelledBusiness?: number;
  netBusiness?: number;
}

export interface FYMonthlyData {
  financialYear: string;
  months: MonthData[];
  total: {
    visits: number;
    visitsDuplicate?: number;
    visitsRepeatVisit?: number;
    visitsSumOfMonths?: number;
    tokens: number;
    bookings: number;
    cancellations: number;
    netBookings: number;
    business?: number;
    cancelledBusiness?: number;
    netBusiness?: number;
  };
}

export interface FilterOption {
  userId: number;
  name: string;
  role: string;
  tag: 'active' | 'left' | 'transferred';
  label: string;
  parentTL?: number;
}

export interface RoleFilterOptionsData {
  financialYear: string;
  availableFinancialYears: string[];
  currentRole: string;
  filterOptions: FilterOption[];
}

export interface DrillDownParams extends AnalyticsParams {
  metric: 'visits' | 'tokens' | 'bookings' | 'cancellations';
  month_number: number;
  year: number;
  page?: number;
  page_size?: number;
}

export interface DrillDownLead {
  lead_id: number;
  customer_name: string;
  whatsApp_number: string;
  project_name: string;
  site_visited_at: string | null;
  token_date: string | null;
  booked_at: string | null;
  current_status: number;
  field_sales_name: string;
  pre_sales_name: string;
  agreement_value: number | null;
}

export interface DrillDownData {
  leads: DrillDownLead[];
  total: number;
  page: number;
  pageSize: number;
}
