/// Interface du repository pour la gestion de la configuration système
library i_system_config_repository;

import '../../data/models/system_config_model.dart';
import '../../data/models/cache_stats_model.dart';
import '../../data/models/system_metrics_model.dart';

/// Interface définissant le contrat pour la gestion de la configuration système
abstract class ISystemConfigRepository {
  /// Récupère la configuration système actuelle
  Future<SystemConfigModel> getConfig();

  /// Met à jour la configuration système
  Future<SystemConfigModel> updateConfig(Map<String, dynamic> config);

  /// Récupère les statistiques du cache
  Future<CacheStatsModel> getCacheStats();

  /// Récupère les métriques système
  Future<SystemMetricsModel> getMetrics();

  /// Vide le cache applicatif
  Future<void> clearCache();

  /// Teste la connexion à la base de données
  Future<Map<String, dynamic>> testDatabase();

  /// Teste la configuration email
  Future<Map<String, dynamic>> testEmail();

  /// Réinitialise la configuration aux valeurs par défaut
  Future<SystemConfigModel> resetConfig();

  // ── Base de données ────────────────────────────────────────────────────────
  Future<Map<String, dynamic>> optimizeDatabase();

  // ── Sécurité / sessions ───────────────────────────────────────────────────
  Future<Map<String, dynamic>> forceGlobalLogout();
  Future<Map<String, dynamic>> cleanupSessions();

  // ── Logs ──────────────────────────────────────────────────────────────────
  Future<Map<String, dynamic>> cleanOldLogs();
  Future<Map<String, dynamic>> exportLogs();

  // ── Données ───────────────────────────────────────────────────────────────
  Future<Map<String, dynamic>> purgeExpiredData();

  // ── Performance ───────────────────────────────────────────────────────────
  Future<Map<String, dynamic>> analyzePerformance();

  // ── Sauvegarde ────────────────────────────────────────────────────────────
  Future<Map<String, dynamic>> createBackup();

  // ── Maintenance ───────────────────────────────────────────────────────────
  Future<Map<String, dynamic>> scheduleMaintenance({String? scheduledAt, String? reason});
  Future<Map<String, dynamic>> emergencyMaintenance();

  // ── Mises à jour ──────────────────────────────────────────────────────────
  Future<Map<String, dynamic>> checkUpdates();

  // ── Rapports ──────────────────────────────────────────────────────────────
  Future<Map<String, dynamic>> generateUsageReport();
  Future<Map<String, dynamic>> generateAuditReport();

  // ── RGPD ──────────────────────────────────────────────────────────────────
  Future<Map<String, dynamic>> exportGDPRData();
}
