package api.account;

import org.jetbrains.annotations.NotNull;
import api.ExecuteResult;

/**
 * Интерфейс апи аккаунтинга.
 *
 * @author eugene.ivanovsky
 */
public interface AccountAPIInterface {
  /**
   * Устанавливает новый пароль для аккаунта по имени аккаунта.
   */
  @NotNull
  ExecuteResult changePassword(@NotNull String userName, @NotNull String newPassword);

  /**
   * Сравнивает пароль аккаунта с указанным.
   */
  @NotNull
  ExecuteResult checkPassword(@NotNull String userName, @NotNull String password);

  /**
   * Создаёт аккаунт с заданным именем и паролем. Возвращает ошибку, если аккаунт с таким именем уже существует.
   */
  @NotNull
  ExecuteResult createAccount(@NotNull String userName, @NotNull String password);

  /**
   * Возвращает информацию об аккаунте по его имени.
   */
  @NotNull
  AccountInfoResult getAccountInfo(@NotNull String userName);
}
