using System.Threading;
using System.Threading.Tasks;
using FinlyticCore.Dtos.Fundamentals;
using FinlyticCore.Dtos.Sentiment;
using FinlyticCore.Dtos.Simulation;
using FinlyticCore.Dtos.TechnicalAnalysis;
using FinlyticCore.Dtos.Trading;
using FinlyticEngine.Services.Scoring;
namespace FinlyticEngine.Services.Ai;
public interface IAiReasoningGateService
{
///
/// Validiert ein technisches Setup entweder über den konfigurierten KI-Webhook oder, falls das
/// Gate deaktiviert ist bzw. der Webhook nicht verfügbar ist, über eine regelbasierte
/// Ersatzentscheidung. Das Ergebnis kennzeichnet über
/// eindeutig, welcher der beiden Fälle vorliegt.
///
///
/// FinlyticSimulation's backtest-reliability verdict for this exact (Isin, StrategyKey) combination, if
/// one has ever been computed (see QuantSimulationEngine) - forwarded onto the AI payload so the
/// model sees the same win-rate/profit-factor evidence already
/// used for its bonus/veto. when nobody has ever run a backtest for this
/// combination yet (never fabricated, Rules.md §4).
///
Task ValidateOpportunityAsync(
StrategyResultDto setup,
IsinSentimentSummaryDto? sentiment,
AssetFundamentalsDto? fundamentals,
ScoringResult score,
StrategyAssetReliabilityDto? reliability = null,
CancellationToken cancellationToken = default);
}