using CalledIt.Domain.Dtos;

namespace CalledIt.Domain.Services;

public interface IGroupService
{
    Task<GroupDto> CreateAsync(int userId, CreateGroupDto dto);
    Task<GroupDto> JoinByCodeAsync(int userId, string inviteCode);
    Task<IReadOnlyList<GroupDto>> GetByCompetitionAsync(int userId, int competitionId);
    Task<IReadOnlyList<LeaderboardEntryDto>> GetLeaderboardAsync(int groupId, int userId);
    Task LeaveAsync(int userId, int groupId);
    Task DeleteAsync(int userId, int groupId);
}
