using ApplicationLayer.Services.Applicants.Models;
using ApplicationLayer.Services.Users.Models;
using ApplicationLayer.Services.Users.Requests;
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 authority account
    ///  Request object with identifier of user and new authentication data
    /// Cancellation token
    Task ChangeAuthorityAuthDataAsync(ChangeUserAuthDataRequest request, CancellationToken cancellationToken);
    /// Removes account of authority
    /// Identifier of account
    /// Cancellation token
    Task RemoveAuthorityAccount(Guid userId, CancellationToken cancellationToken);
    /// Get applicant that made request
    /// cancellation token
    Task GetAuthenticatedApplicant(CancellationToken cancellationToken);
}