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

namespace Managing.Application.Abstractions.Services;

public interface IStatisticService
{
    Task<AgentBalanceHistory> GetAgentBalances(string agentName, DateTime start, DateTime? end = null);

    Task<(IList<AgentBalanceHistory> Agents, int TotalCount)> GetBestAgents(DateTime start, DateTime? end = null,
        int page = 1,
        int pageSize = 10);

    List<Trader> GetBadTraders();
    List<Trader> GetBestTraders();
    SpotlightOverview GetLastSpotlight(DateTime dateTime);
    IList<TopVolumeTicker> GetLastTopVolumeTicker();
    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();
}