import 'package:dartz/dartz.dart';
import '../entities/dashboard_entity.dart';
import '../entities/compte_adherent_entity.dart';
import '../../../../core/error/failures.dart';

abstract class DashboardRepository {
  /// Récupère le compte adhérent unifié (soldes, crédits, capacité d'emprunt).
  Future<Either<Failure, CompteAdherentEntity>> getCompteAdherent();

  Future<Either<Failure, DashboardEntity>> getDashboardData(
    String organizationId,
    String userId, {
    bool useGlobalDashboard = false,
  });

  Future<Either<Failure, DashboardStatsEntity>> getDashboardStats(
    String organizationId,
    String userId,
  );

  Future<Either<Failure, List<RecentActivityEntity>>> getRecentActivities(
    String organizationId,
    String userId, {
    int limit = 10,
  });

  Future<Either<Failure, List<UpcomingEventEntity>>> getUpcomingEvents(
    String organizationId,
    String userId, {
    int limit = 5,
  });
}
