package billingserver.billingserverapi;

import billingserver.commons.CurrencyValue;
import org.jetbrains.annotations.NotNull;
import replicationAnnotations.OuterWorldAPI;

/**
 * 2nd version of api. New method added: addMoneyWithTranType. 
 * @author andrey.kuprishov
 */
@OuterWorldAPI
public interface BillingServerAPI2 extends BillingServerAPI {
  /**
   * Добавляет указанную сумму на аккаунт, метит операцию транзакцией.
   * Оператор может использовать значение tranType от 0 до 3 (например, 0 - для оплаты по смс, 2 - по банковской карте etc.).
   *
   * Итоговый номер транзакции получается путём сдвига transactionId на 3 бита влево и заполнения младших 3 битов значением tranType.
   * Не допускается дублирование номера транзакции. 
   *
   */
  @NotNull
  AddMoneyResult addMoneyWithTranType(@NotNull String accountName, int money, int tranType, long transactionId);

  @NotNull
  AddMoneyResult addMoneyWithCurrency(@NotNull String accountName, @NotNull CurrencyValue money, int tranType, long transactionId);
}
