using ApplicationLayer.Services.Users.Requests;
using Domains.Users;
namespace ApplicationLayer.Services.Users
{
    /// user accounts service
    public interface IUsersService
    {
        /// Returns all user accounts with role of approving authority
        /// Cancellation token
        Task> GetAuthoritiesAccountsAsync(CancellationToken cancellationToken);
        /// Changes authentication data for an account
        ///  Request object with identifier of user and new authentication data
        /// Cancellation token
        Task ChangeAccountAuthDataAsync(ChangeUserAuthDataRequest request, CancellationToken cancellationToken);
        /// Removes user account
        /// Identifier of account
        /// Cancellation token
        Task RemoveUserAccount(Guid userId, CancellationToken cancellationToken);
    }
}