using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.TechnicalAnalysis;
///
/// Fully evaluated technical trading setup output from an ITechnicalStrategy.
///
///
/// Which FinlyticTechnicals universe-selection mechanism this ISIN was being monitored under at analysis time
/// (favorite/discovery/sentiment-spike), or if it was analyzed ad hoc (e.g. a manual
/// "Analyze now" call for an ISIN not currently in the scan universe). Carried through unchanged onto
/// EngineEvaluationSnapshotEntity so the admin "why no proposals" Web UI can show not just an
/// evaluation's scores but why the asset was being watched in the first place.
///
/// When the ISIN above entered that scan universe, alongside .
///
/// The overall market/asset technical regime () at analysis time - e.g.
/// whether this setup fired during a strong trend or a choppy/rangebound market. Forwarded onto the AI
/// validation payload (AiReasoningGateService) so the model has the same regime context a human trader
/// would use to judge whether a breakout is likely to follow through.
///
public record StrategyResultDto(
[property: JsonPropertyName("setupId")] Guid SetupId,
[property: JsonPropertyName("isin")] string Isin,
[property: JsonPropertyName("symbol")] string Symbol,
[property: JsonPropertyName("timeframe")] string Timeframe,
[property: JsonPropertyName("strategyKey")] string StrategyKey,
[property: JsonPropertyName("strategyName")] string StrategyName,
[property: JsonPropertyName("direction")] SignalDirection Direction,
[property: JsonPropertyName("qualityScore")] decimal QualityScore,
[property: JsonPropertyName("currentPrice")] decimal CurrentPrice,
[property: JsonPropertyName("entryPrice")] decimal EntryPrice,
[property: JsonPropertyName("invalidationPrice")] decimal InvalidationPrice,
[property: JsonPropertyName("currentAtr")] decimal CurrentAtr,
[property: JsonPropertyName("estimatedRiskRewardRatio")] decimal EstimatedRiskRewardRatio,
[property: JsonPropertyName("exitPlan")] ExitPlan ExitPlan,
[property: JsonPropertyName("technicalRationale")] string TechnicalRationale,
[property: JsonPropertyName("triggeringPatterns")] List TriggeringPatterns,
[property: JsonPropertyName("indicatorSnapshot")] Dictionary IndicatorSnapshot,
[property: JsonPropertyName("createdAt")] DateTime CreatedAt,
[property: JsonPropertyName("expiresAt")] DateTime ExpiresAt,
[property: JsonPropertyName("isTopPick")] bool IsTopPick = false,
[property: JsonPropertyName("rating")] string Rating = "B",
[property: JsonPropertyName("universeSource")] UniverseSource? UniverseSource = null,
[property: JsonPropertyName("universeEnteredAtUtc")] DateTime? UniverseEnteredAtUtc = null,
[property: JsonPropertyName("regime")] MarketRegime? Regime = null
);