using Managing.Common; using Managing.Domain.Accounts; using Managing.Domain.Candles; using Managing.Domain.Statistics; using Managing.Domain.Trades; using static Managing.Common.Enums; namespace Managing.Infrastructure.Exchanges.Abstractions; public interface IExchangeProcessor { public Enums.TradingExchanges Exchange(); void LoadClient(Account account); 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); Task GetBalance(Account account, bool isForPaperTrading = false); Task> GetBalances(Account account, bool isForPaperTrading = false); decimal GetPrice(Account account, Ticker ticker, DateTime date); Task GetTrade(Account account, string order, Ticker ticker); Task> GetCandles(Account account, Ticker ticker, DateTime startDate, Timeframe interval); decimal GetVolume(Account account, Ticker ticker); Task> GetTrades(Account account, Ticker ticker); Task CancelOrder(Account account, Ticker ticker); decimal GetFee(Account account, bool isForPaperTrading = false); Candle GetCandle(Account account, Ticker ticker, DateTime date); Task GetQuantityInPosition(Account account, Ticker ticker); Orderbook GetOrderbook(Account account, Ticker ticker); Task> GetOrders(Account account, Ticker ticker); Task GetTrade(string reference, string orderId, Ticker ticker); Task> GetFundingRates(); }