using Ablera.Serdica.Authority.Plugins.Base.Models;

namespace Ablera.Serdica.Authority.Plugins.Base.Contracts;

public interface IAuthService<TUser>
    where TUser : class
{
    /// <summary>
    /// Authenticates a user given a login identifier (email/username) and password.
    /// </summary>
    Task<AuthenticationResult> AuthenticateAsync(TUser user, string password, bool lockoutOnFailure = false, CancellationToken ct = default);
}
