using adas_core.Domain.Models.MongoModels;
using adas_core.Domain.Models.Responses;
using MongoDB.Bson;
namespace adas_core.Application.Services.Interfaces;
public interface IAuthService
{
///
/// Asynchronously retrieves the current login response, returning null when no login state is available.
///
/// A that resolves to the current , or null if no login response exists.
Task GetLoginResponse();
///
/// Asynchronously retrieves a token.
///
/// A task that represents the asynchronous operation. The task result contains the retrieved token string.
Task GetToken();
///
/// Retrieves a list of authorizations associated with the specified unit identifier.
///
/// The unique identifier of the unit whose authorizations are being queried.
/// A task that represents the asynchronous operation, containing a list of objects matching the provided unit identifier.
Task> GetByUnitId(ObjectId unitId);
///
/// Asynchronously deletes the record identified by the specified display identifier.
///
/// The display identifier of the record to delete.
/// A task that represents the asynchronous operation, containing a value indicating whether the record was successfully deleted.
Task DeleteByDisplayId(ObjectId displayId);
///
/// Asynchronously deletes the entity associated with the specified unit identifier.
///
/// The unique identifier of the unit whose associated entity should be deleted.
/// A task that represents the asynchronous operation, containing a value indicating whether the deletion was successful.
Task DeleteByUnitId(ObjectId unitId);
///
/// Retrieves the list of authorizations associated with the specified user identifier.
///
/// The unique identifier of the user whose authorizations are being retrieved.
/// A task that represents the asynchronous operation, containing the list of authorizations for the user.
Task> GetUserAuthorities(ObjectId id);
}