package api.account;

import org.jetbrains.annotations.NotNull;
import api.ExecuteResult;
import replicationAnnotations.AccessLevel;

/**
 * Allows to work with account status.
 *
 * @author andrey.kuprishov
 */
public interface AccountAPIInterface8 extends AccountAPIInterface7 {

  /**
   * Creates account with required access level and status.
   */
  @NotNull
  ExecuteResult createAccountEx(@NotNull String userName, @NotNull String password, @NotNull AccessLevel acccesLevel, @NotNull AccountStatus status);

  /**
   * Gets account status (for existing account).
   */
  @NotNull
  AccountStatusResult getAccountStatus(@NotNull String login);

  /**
   * Sets new status to account. Only active account can enter server.
   */
  @NotNull
  ExecuteResult setAccountStatus(@NotNull String login, @NotNull AccountStatus newStatus);
}
