using System.Threading.Tasks;
using Knoks.Core.Entities;

namespace Knoks.Core.Logic.Interfaces
{
    public interface IAccountTransactionManager
    {
        //Task ActivateFreeCredit(User targetUser, Account userAccount);

        //Task ExecutePublishKnokTransaction(User knokerUser, Account knokerAccount, long knokId, decimal amount, decimal? amountUsd = null);

        //Task ExecuteUserBuyKnokTransaction(User user, Account account, long knokId, decimal amount, decimal? amountUsd = null);
        Task<AccountTransaction> GetLatestDepositEvent();

        //Task Deposit(User targetUser, Account targetUserAccount, decimal amount, decimal amountUsd,
        //    string externalReferenceId, string walletAddress, ulong blockNumber, int? operatorId = null);

        Task Transfer(User fromUser, Account fromUserAccount, User toUser, Account toUserAccount, decimal amount,
            decimal? amountUsd, string externalReferenceId, ulong blockNumber);
    }
}