using Managing.Domain.Accounts; using Managing.Domain.Scenarios; using Managing.Domain.Statistics; using Managing.Domain.Strategies; using Managing.Domain.Trades; using Managing.Infrastructure.Evm.Models.Privy; using static Managing.Common.Enums; namespace Managing.Application.Abstractions.Services; public interface ITradingService { Scenario GetScenarioByName(string scenario); void InsertSignal(Signal signal); void InsertPosition(Position position); void UpdatePosition(Position position); Indicator GetStrategyByName(string strategy); void InsertScenario(Scenario scenario); void InsertStrategy(Indicator indicator); IEnumerable GetScenarios(); IEnumerable GetStrategies(); void DeleteScenario(string name); void DeleteStrategy(string name); void DeleteScenarios(); void DeleteStrategies(); Position GetPositionByIdentifier(string identifier); IEnumerable GetPositions(PositionInitiator positionInitiator); IEnumerable GetPositions(); IEnumerable GetPositionsByStatus(PositionStatus positionStatus); Task ManagePosition(Account account, Position position); void UpdateFee(TradingExchanges evm); decimal GetFee(Account account, bool isForPaperTrading = false); Task WatchTrader(); IEnumerable GetTradersWatch(); void UpdateDeltaNeutralOpportunities(); void UpdateScenario(Scenario scenario); void UpdateStrategy(Indicator indicator); Task> GetBrokerPositions(Account account); Task InitPrivyWallet(string publicAddress); }