export interface InstallerRecentInstallation {
  id: number;
  license_plate: string | null;
  device_label: string | null;
  date: string | null;
  status: string;
  status_color: string;
}

export interface InstallerStats {
  /** Nombre total d'installations de l'installateur. */
  total: number;
  validated: number;
  errors: number;
  /** Taux de validation (validées / total), en pourcentage entier. */
  ok_rate: number;
  /** Temps de pose moyen en minutes (création -> validation), null si aucune validée. */
  avg_minutes: number | null;
}

export interface Installer {
  id: number;
  name: string;
  email: string;
  /** Date d'entrée (created_at), format YYYY-MM-DD. */
  since: string | null;
  /** Date d'archivage (deleted_at) si l'installateur est archivé, sinon null. */
  archived_at: string | null;
  stats: InstallerStats;
  recent_installations: InstallerRecentInstallation[];
}

/** Profil minimal renvoyé par les mutations CRUD (sans agrégats). */
export interface InstallerProfile {
  id: number;
  name: string;
  email: string;
  is_active: boolean;
  since: string | null;
}

/** Charge utile de création d'un installateur (mot de passe défini par l'admin). */
export interface CreateInstallerPayload {
  name: string;
  email: string;
  password: string;
  password_confirmation: string;
}

/** Charge utile de modification (nom + e-mail). */
export interface UpdateInstallerPayload {
  name: string;
  email: string;
}

/** Charge utile de réinitialisation du mot de passe. */
export interface UpdateInstallerPasswordPayload {
  password: string;
  password_confirmation: string;
}
