using Managing.Domain.Synth.Models;
namespace Managing.Application.Abstractions.Services;
///
/// Interface for communicating with the Synth API
///
public interface ISynthApiClient
{
///
/// Fetches the current leaderboard from Synth API
///
/// Synth configuration containing API key and settings
/// List of miners with their rankings and stats
Task> GetLeaderboardAsync(SynthConfiguration config);
///
/// Fetches historical leaderboard data from Synth API for a specific time range
///
/// Start time for historical data (ISO 8601 format)
/// End time for historical data (ISO 8601 format)
/// Synth configuration containing API key and settings
/// List of miners with their historical rankings and stats
Task> GetHistoricalLeaderboardAsync(DateTime startTime, DateTime endTime, SynthConfiguration config);
///
/// Fetches latest predictions from specified miners
///
/// List of miner UIDs to get predictions from
/// Asset symbol (e.g., "BTC", "ETH")
/// Time interval in seconds between each prediction point
/// Total prediction time length in seconds
/// Synth configuration containing API key and settings
/// List of predictions from the specified miners
Task> GetMinerPredictionsAsync(
List minerUids,
string asset,
int timeIncrement,
int timeLength,
SynthConfiguration config);
///
/// Fetches historical predictions from specified miners for a specific time point
///
/// List of miner UIDs to get predictions from
/// Asset symbol (e.g., "BTC", "ETH")
/// Start time for historical predictions (when the prediction was made)
/// Time interval in seconds between each prediction point
/// Total prediction time length in seconds
/// Synth configuration containing API key and settings
/// List of historical predictions from the specified miners
Task> GetHistoricalMinerPredictionsAsync(
List minerUids,
string asset,
DateTime startTime,
int timeIncrement,
int timeLength,
SynthConfiguration config);
}