using Predictalytics.Domain.Entities;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace Predictalytics.Application.Interfaces;

public class BacktestResult
{
    public int LatencySeconds { get; set; }
    public decimal HypotheticalFollowerPnl { get; set; }
    public decimal TraderPnl { get; set; }
    public decimal AlphaDecayPercentage { get; set; }
}

public interface ICopytradingBacktestHarness
{
    /// <summary>
    /// Runs a latency sweep (0s, 10s, 30s, 60s) for a given trader over their historical trades
    /// to determine exactly how much alpha is lost to the tape execution.
    /// </summary>
    Task<List<BacktestResult>> RunLatencySweepAsync(Trader trader, IReadOnlyList<Trade> trades, CancellationToken ct = default);
}
