using Marathon.Domain.AnomalyDetection;
using Marathon.Domain.Entities;
using Marathon.Domain.ValueObjects;
namespace Marathon.Domain.Backtesting;
///
/// Input row for — one anomaly fully resolved
/// against its event metadata and result. The use case constructs these once
/// per simulation run and feeds them to the pure simulator in chronological
/// order.
///
/// The flagged anomaly being simulated.
///
/// Parsed evidence payload (pre- and post-suspension snapshots). The simulator
/// reads the post-suspension favourite and rate from here.
///
/// Final event result — drives the win/loss verdict.
/// Sport metadata, optional, surfaced into the trace row.
public sealed record BacktestCandidate(
Anomaly Anomaly,
AnomalyEvidenceData Evidence,
EventResult Result,
SportCode? Sport);