using Govor.Core.Models; // For ChatGroup and User using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Govor.Application.Interfaces; // Corrected namespace public interface IGroupService { Task GetGroupByIdAsync(Guid groupId); // Added Task CreateGroupAsync(string name, Guid creatorId, IEnumerable initialMemberIds); // Added Task AddUserToGroupAsync(Guid groupId, Guid userId, Guid addedByUserId); // Added Task RemoveUserFromGroupAsync(Guid groupId, Guid userId, Guid removedByUserId); // Added Task DeleteGroupAsync(Guid groupId, Guid userId); // Added Task> GetGroupMembersAsync(Guid groupId); // Added Task>GetUserGroupsAsync(Guid userId); // Added to support ChatsHub group joining // Existing method, assuming it's still relevant for group operations (e.g., joining via invite link) // Consider if this should return Task or throw if not found. ChatGroup? GetGroupByInviteCode(string code); // Renamed parameter for clarity, made nullable }