using Managing.Domain.Accounts; using Managing.Domain.Candles; using Managing.Domain.Statistics; using Managing.Domain.Trades; using Managing.Infrastructure.Exchanges.Abstractions; using static Managing.Common.Enums; namespace Managing.Infrastructure.Exchanges.Exchanges { public abstract class BaseProcessor : IExchangeProcessor { public abstract void LoadClient(Account account); public abstract Task CancelOrder(Account account, Ticker ticker); public abstract TradingExchanges Exchange(); public abstract Task GetBalance(Account account, bool isForPaperTrading = false); public abstract Task GetCandle(Account account, Ticker ticker, DateTime date); public abstract Task> GetCandles(Account account, Ticker ticker, DateTime startDate, Timeframe interval); public abstract Task GetFee(Account account, bool isForPaperTrading = false); public abstract Task GetPrice(Account account, Ticker ticker, DateTime date); public abstract Task GetCurrentPrice(Account account, Ticker ticker); public abstract Task GetQuantityInPosition(Account account, Ticker ticker); public abstract Task GetTrade(Account account, string order, Ticker ticker); public abstract Task> GetTrades(Account account, Ticker ticker); public abstract decimal GetVolume(Account account, Ticker ticker); public abstract Task OpenTrade( Account account, Ticker ticker, TradeDirection direction, decimal price, decimal quantity, decimal? leverage = null, TradeType tradeType = TradeType.Limit, bool reduceOnly = false, bool isForPaperTrading = false, DateTime? currentDate = null, bool ioc = true, decimal? stopLossPrice = null, decimal? takeProfitPrice = null); public abstract Orderbook GetOrderbook(Account account, Ticker ticker); public abstract Task> GetBalances(Account account, bool isForPaperTrading = false); public abstract Task> GetOrders(Account account, Ticker ticker); public abstract Task GetTrade(string reference, string orderId, Ticker ticker); public abstract Task> GetFundingRates(); public abstract Task> GetPositions(Account account); public abstract Task> GetPositionHistory( Account account, Ticker ticker, DateTime? fromDate = null, DateTime? toDate = null); } }