import type {
  Installation,
  InstallationDetail,
  InstallationEditOptions,
  InstallationStats,
  InstallerOption,
  UpdateInstallationPayload,
} from "@/domain/entities/installation";
import type { BackendPaginatedData, PaginationQueryParams } from "@/shared/types";

export interface InstallationRepository {
  findAll(params: PaginationQueryParams): Promise<BackendPaginatedData<Installation>>;
  findById(id: number): Promise<InstallationDetail>;
  getStats(): Promise<InstallationStats>;
  getInstallerOptions(): Promise<InstallerOption[]>;
  getEditOptions(): Promise<InstallationEditOptions>;
  update(id: number, payload: UpdateInstallationPayload): Promise<InstallationDetail>;
  validate(id: number): Promise<InstallationDetail>;
}
