using System.Threading.Tasks;
using DiplomovaPrace.Contracts.Customer.Security.InputModels;

namespace DiplomovaPrace.Services.Security
{
	public interface ISecurityService
	{
		Task<string> AuthenticateUserAsync(LoginAccountIM inputModel);

		Task<bool> ChangeUserPasswordAsync(PasswordChangeIM inputModel);

		Task RecoverPasswordAsync(PasswordRecoveryIM inputModel);

		Task<bool> RegisterUserAsync(RegisterUserIM inputModel);

		Task<string> RefreshJwtTokenAsync(int userID);

		Task PasswordResetAsync(Contracts.Security.InputModels.PasswordResetIM inputModel);

		Task<Contracts.Security.ViewModels.TokenValidationResult> ValidatePasswordResetTokenAsync(Contracts.Security.InputModels.PasswordResetTokenIM inputModel);
	}
}
