using Model;
namespace Services;
///
/// Represents a service for managing users.
///
public interface IUserService
{
///
/// Retrieves the count of users whose names contain the specified needle.
///
Task UsersCount(string nameNeedle);
///
/// Retrieves the total count of users.
///
Task UsersCount();
///
/// Lists a range of users, optionally filtering by name.
///
Task> ListUsers(int start, int count, string? nameNeedle = null);
///
/// Retrieves the user with the specified ID.
///
Task GetUser(int id);
///
/// Retrieves the user with the specified email.
///
Task GetUser(string email);
///
/// Creates a new user.
///
Task CreateUser(string username, string email, string password, string profilePicture, bool isAdmin);
///
/// Removes one or more users.
///
Task RemoveUsers(params int[] identifiers);
///
/// Updates an existing user.
///
Task UpdateUser(User user);
///
/// Authorizes a user with the specified email and password.
///
Task Authorize(string email, string password);
}