/// Interface du repository de profil (Clean Architecture - Domain Layer) library profile_repository; import '../../../members/data/models/membre_complete_model.dart'; /// Interface du repository pour la gestion du profil utilisateur /// Contrat défini dans la couche Domain, implémenté dans la couche Data abstract class IProfileRepository { /// Récupère le profil du membre connecté (GET /api/membres/me) Future getMe(); /// Récupère un profil par email (recherche) Future getProfileByEmail(String email); /// Met à jour le profil d'un membre (PUT /api/membres/{id}) Future updateProfile(String id, MembreCompletModel membre); /// Met à jour la photo de profil /// Utilise l'endpoint de mise à jour générale avec copyWith Future updateAvatar(String id, String photoUrl); /// Change le mot de passe via Keycloak (POST /api/auth/change-password) /// Proxy vers l'API Keycloak pour changement de mot de passe Future changePassword(String id, String oldPassword, String newPassword); /// Met à jour les préférences utilisateur (PUT /api/membres/{id}/preferences) /// Fallback sur stockage local si endpoint backend non disponible Future> updatePreferences(String id, Map preferences); /// Supprime le compte utilisateur (POST /api/membres/{id}/desactiver) /// Soft delete: marque le compte comme inactif au lieu de supprimer les données Future deleteAccount(String id); }