using Knoks.Core.Entities;
using Knoks.Core.Entities.Args;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Knoks.Core.Logic.Interfaces
{
    public interface IBackofficeManager
    {
        Task<AccountTransaction> FreeTokensCredit(AddAccountTransactionArgs args);
        Task<AccountTransaction> Deposit(AddAccountTransactionArgs args);
        Task<AccountTransaction> Withdraw(AddAccountTransactionArgs args);
        Task<AccountTransaction> PublishKnok(AddAccountTransactionArgs args);
        Task<AccountTransaction> KnokerWinsToken(AddAccountTransactionArgs args);
        Task<AccountTransaction> PlatformWinsToken(AddAccountTransactionArgs args);
        Task<AccountTransaction> UserBuyExposure(AddAccountTransactionArgs args);
        Task<AccountTransaction> UserBuyKnok(AddAccountTransactionArgs args);
        Task<AccountTransaction> UserRefundToken(AddAccountTransactionArgs args);
        Task<AccountTransaction> UserBuySideBet(AddAccountTransactionArgs args);
        Task<AccountTransaction> UserWinsSideBet(AddAccountTransactionArgs args);
        Task<AccountTransaction> PlatformLooseSideBet(AddAccountTransactionArgs args);
        Task<AccountTransaction> UserReceiveToken(AddAccountTransactionArgs args);
        Task<AccountTransaction> UserUpgradeToGold(AddAccountTransactionArgs args);
        Task<AccountTransaction> AffiliateCommision(AddAccountTransactionArgs args);
        Task<AccountTransaction> FreeTokensReturn(AddAccountTransactionArgs args);
    }
}
