import type {
  Installer,
  InstallerProfile,
  CreateInstallerPayload,
  UpdateInstallerPayload,
  UpdateInstallerPasswordPayload,
} from "@/domain/entities/installer";

export interface InstallerRepository {
  /** @param archived true → liste des installateurs archivés (soft-deleted). */
  findAll(archived?: boolean): Promise<Installer[]>;
  create(payload: CreateInstallerPayload): Promise<InstallerProfile>;
  update(id: number, payload: UpdateInstallerPayload): Promise<InstallerProfile>;
  updatePassword(
    id: number,
    payload: UpdateInstallerPasswordPayload,
  ): Promise<InstallerProfile>;
  /** Archive (soft delete) un installateur actif. */
  remove(id: number): Promise<void>;
  /** Restaure un installateur archivé. */
  restore(id: number): Promise<InstallerProfile>;
  /** Suppression définitive (irréversible) d'un installateur archivé. */
  forceRemove(id: number): Promise<void>;
}
