using System.ComponentModel.DataAnnotations;
using static Managing.Common.Enums;

namespace Managing.Domain.Backtests;

/// <summary>
/// Request model for indicator configuration without user information
/// </summary>
public class IndicatorRequest
{
    /// <summary>
    /// The name of the indicator
    /// </summary>
    [Required]
    public string Name { get; set; }

    /// <summary>
    /// The type of indicator
    /// </summary>
    [Required]
    public IndicatorType Type { get; set; }

    /// <summary>
    /// The signal type for this indicator
    /// </summary>
    [Required]
    public SignalType SignalType { get; set; }

    /// <summary>
    /// Minimum history required for this indicator
    /// </summary>
    public int MinimumHistory { get; set; }

    /// <summary>
    /// Period parameter for the indicator
    /// </summary>
    public int? Period { get; set; }

    /// <summary>
    /// Fast periods parameter for indicators like MACD
    /// </summary>
    public int? FastPeriods { get; set; }

    /// <summary>
    /// Slow periods parameter for indicators like MACD
    /// </summary>
    public int? SlowPeriods { get; set; }

    /// <summary>
    /// Signal periods parameter for indicators like MACD
    /// </summary>
    public int? SignalPeriods { get; set; }

    /// <summary>
    /// Multiplier parameter for indicators like SuperTrend
    /// </summary>
    public double? Multiplier { get; set; }

    /// <summary>
    /// Smooth periods parameter
    /// </summary>
    public int? SmoothPeriods { get; set; }

    /// <summary>
    /// Stochastic periods parameter
    /// </summary>
    public int? StochPeriods { get; set; }

    /// <summary>
    /// Cycle periods parameter
    /// </summary>
    public int? CyclePeriods { get; set; }
} 