using Managing.Common;
using Managing.Domain.Statistics;
using Managing.Domain.Trades;

namespace Managing.Application.Abstractions.Services;

public interface IStatisticService
{
    List<Trader> GetBadTraders();
    Task<List<Trader>> GetBadTradersAsync();
    List<Trader> GetBestTraders();
    Task<List<Trader>> GetBestTradersAsync();
    Task<SpotlightOverview> GetLastSpotlight(DateTime dateTime);
    Task<SpotlightOverview> GetLastSpotlightAsync(DateTime dateTime);
    IList<TopVolumeTicker> GetLastTopVolumeTicker();
    Task<IList<TopVolumeTicker>> GetLastTopVolumeTickerAsync();
    Task<List<Trade>> GetLeadboardPositons();
    Task<IList<Enums.Ticker>> GetTickers();
    Task UpdateLeaderboard();
    Task UpdateNoobiesboard();
    Task UpdateSpotlight();
    Task UpdateTopVolumeTicker(Enums.TradingExchanges exchange, int top);
    Task UpdateFundingRates();
    Task<List<FundingRate>> GetFundingRates();
}