import 'package:dartz/dartz.dart';

import '../../core/errors/failures.dart';
import '../entities/user.dart';

/// Interface pour le dépôt de l'utilisateur.
/// Cette interface définit les contrats que doit respecter tout dépôt
/// qui gère les données relatives aux utilisateurs.
abstract class UserRepository {
  /// Méthode pour récupérer un utilisateur par son identifiant.
  /// Cette méthode retourne [Right] avec un objet [User] si succès,
  /// [Left] avec une [Failure] si erreur.
  Future<Either<Failure, User>> getUser(String id);
}
