export interface Zone {
  id: number;
  name: string;
  imagePath?: string;
  lastMowedDate?: string;
  intervalDays?: number;
  nextMowDate?: string;
  scheduleType: 'interval' | 'specific';
  area: number;
  createdAt: string;
  daysSinceLastMow?: number;
  daysUntilNext?: number;
  status: 'ok' | 'due' | 'overdue' | 'new' | 'off-season';
  isOverdue: boolean;
  isDueToday: boolean;
  isNew: boolean;
  isOffSeason?: boolean;
}

export interface ZoneFormData {
  name: string;
  intervalDays?: number;
  lastMowedDate?: string;
  nextMowDate?: string;
  scheduleType: 'interval' | 'specific';
  area: number;
  image?: File;
}

export interface Mower {
  id: number;
  name: string;
  type: string;
  brand?: string;
  model?: string;
  isActive: boolean;
  createdAt: string;
}

export interface SeasonSettings {
  id?: number;
  startMonth: number; // 1-12
  startDay: number; // 1-31
  endMonth: number; // 1-12
  endDay: number; // 1-31
  isActive: boolean;
  createdAt?: string;
  updatedAt?: string;
}

export interface MowerFormData {
  name: string;
  type: string;
  brand?: string;
  model?: string;
}

export interface MowingHistory {
  id: number;
  zoneId: number;
  zoneName: string;
  zoneArea: number;
  mowerId?: number;
  mowerName?: string;
  mowerType?: string;
  mowedDate: string;
  notes?: string;
  duration?: number; // in minutes
  weather?: string;
  activityType?: 'mowing' | 'trimming';
  sessionId?: string;
  createdAt: string;
}

export interface MowingHistoryResponse {
  data: MowingHistory[];
  pagination: {
    total: number;
    currentPage: number;
    totalPages: number;
    hasNextPage: boolean;
    hasPrevPage: boolean;
    limit: number;
    offset: number;
  };
}

export interface MowingStats {
  period: number;
  totalSessions: number;
  totalMinutes: number;
  totalArea: number;
  mostActiveZone: {
    name: string;
    sessions: number;
  } | null;
  mostUsedMower: {
    name: string;
    type: string;
    sessions: number;
  } | null;
  dailyActivity: {
    date: string;
    sessions: number;
    duration: number;
    area: number;
  }[];
}

export interface MowingFormData {
  notes?: string;
  duration?: number;
  weather?: string;
  mowerId?: number;
  activityType?: 'mowing' | 'trimming';
}

export interface BulkMowingFormData {
  selectedZoneIds: number[];
  notes?: string;
  totalDuration?: number;
  weather?: string;
  mowerId?: number;
  activityType?: 'mowing' | 'trimming';
}