package api.account;

import api.ExecuteResult;
import org.jetbrains.annotations.NotNull;
import replicationAnnotations.AccessLevel;

/**
 * 7-ая версия аккаунт-апи. Предоставляет информацию об аккаунте с уровнями доступа.
 * Позволяет изменять базовый и текущий уровни доступа аккаунта.
 * @author andrey.kuprishov
 */
public interface AccountAPIInterface7 extends AccountAPIInterface6 {
  /**
   * Получить информацию об аккаунте с уровнями доступа.
   */
  @NotNull
  AccountDetailsEx getAccountDetailsEx(@NotNull String accountName);

  /**
   * Устанавливает базовый уровень доступа. Если текущий уровень доступа больше, чем новый базовый уровень, то устанавливает и текущий уровень доступа в базовый.
   */
  @NotNull
  ExecuteResult setBaseAccessLevel(@NotNull String accountName, @NotNull AccessLevel level);

  /**
   * Устанавливает текущий уровень доступа. Если базовый уровень доступа меньше нового текущего, то изменение не происходит.
   */
  @NotNull
  ExecuteResult setCurrentAccessLevel(@NotNull String accountName, @NotNull AccessLevel level);
}
