using UniVerse.Application.DTOs.Auth;
using UniVerse.Application.DTOs.Users;

namespace UniVerse.Application.Interfaces;

public interface IAuthService
{
    Task<AuthResult> LoginWithMicrosoftAsync(string authorizationCode, string? redirectUri = null, string? ipAddress = null);
    Task<AuthResult> DevLoginAsync(string email, string? displayName, IReadOnlyCollection<Domain.Enums.UserRole> roles, string? ipAddress = null);
    Task<AuthResult> RefreshTokenAsync(string refreshToken);
    Task RevokeRefreshTokenAsync(string refreshToken);
    Task<CurrentUserDto> GetCurrentUserAsync(int userId);
}
