using ApplicationLayer.Services.AuthServices.Requests;
using Domains.Users;
namespace ApplicationLayer.Services.ApprovingAuthorities
{
    /// 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
        /// identifier of account
        /// request data with new email and password
        /// Cancellation token
        Task ChangeAccountAuthDataAsync(Guid userId, RegisterRequest data, CancellationToken cancellationToken);
        /// Removes user account
        /// Identifier of account
        /// Cancellation token
        Task RemoveUserAccount(Guid userId, CancellationToken cancellationToken);
    }
}