public interface IAuthenticationService
{
/// <summary>
/// Performs user sign-in using username and password.
/// Виконує вхід користувача за допомогою імені користувача та пароля.
/// </summary>
/// <param name="username">Username. Ім'я користувача.</param>
/// <param name="password">Password. Пароль.</param>
/// <returns>Task that returns an authentication token upon successful sign-in. Завдання, яке повертає токен аутентифікації у разі успішного входу.</returns>
Task<string> PasswordSignInAsync(string username, string password);
/// <summary>
/// Registers a new user using username and password.
/// Реєструє нового користувача за допомогою імені користувача та пароля.
/// </summary>
/// <param name="username">Username. Ім'я користувача.</param>
/// <param name="password">Password. Пароль.</param>
/// <returns>Task that returns an authentication token upon successful registration. Завдання, яке повертає токен аутентифікації у разі успішної реєстрації.</returns>
Task<string> PasswordSignUpAsync(string username, string password);
/// <summary>
/// Refreshes an existing authentication token.
/// Оновлює існуючий токен аутентифікації.
/// </summary>
/// <param name="token">Token to refresh. Токен, який потрібно оновити.</param>
/// <returns>Task that returns a new authentication token. Завдання, яке повертає новий токен аутентифікації.</returns>
Task<string> RefreshTokenAsync(string token);
/// <summary>
/// Validates the authentication token.
/// Перевіряє валідність токена аутентифікації.
/// </summary>
/// <param name="token">Token to validate. Токен для перевірки.</param>
/// <returns>Boolean indicating if the token is valid. Повертає булеве значення, що вказує на валідність токена.</returns>
bool ValidateToken(string token);
}