package api.collectionEditions;

import org.jetbrains.annotations.NotNull;
import api.ExecuteResult;

/**
 * Апи для работы с коллекционными изданиями.
 *
 * @author andrey.kuprishov
 */
public interface CollectionEditionAPI {
  /**
   * Получить список всех доступных коллекционных изданий.
   */
  @NotNull
  CollectionEditionList getCollectionEditions();

  /**
   * Добавить коллекционное издание.
   */
  @NotNull
  ExecuteResult addEdition(int editionResourceId, @Nullable String description);

  /**
   * Удалить коллекционное издание.
   */
  @NotNull
  ExecuteResult removeEdition(int editionResourceId);

  /**
   * Получить список изданий, подключённых для заданного аккаунта.
   */
  @NotNull
  EditionOfAccountList getEditionsOfAccount(@NotNull String accountName);

  /**
   * Подключить издание к аккаунту по идентификатору ресурса.
   */
  @NotNull
  ExecuteResult addEditionToAccount(int editionResourceId, @NotNull String accountName);

  /**
   * Отключить издание от аккаунта по идентификатору ресурса.
   */
  @NotNull
  ExecuteResult removeEditionFromAccount(int editionResourceId, @NotNull String accountName);
}
