using System.ComponentModel.DataAnnotations;
using Managing.Domain.Bots;
using Managing.Domain.Candles;
using Managing.Domain.Strategies;
using Managing.Domain.Trades;

namespace Managing.Api.Models.Responses
{
    public class TradingBotResponse
    {
        /// <summary>
        /// Current status of the bot (Up, Down, etc.)
        /// </summary>
        [Required] public string Status { get; internal set; }
        
        /// <summary>
        /// List of signals generated by the bot
        /// </summary>
        [Required] public List<Signal> Signals { get; internal set; }
        
        /// <summary>
        /// List of positions opened by the bot
        /// </summary>
        [Required] public List<Position> Positions { get; internal set; }
        
        /// <summary>
        /// Candles used by the bot for analysis
        /// </summary>
        [Required] public List<Candle> Candles { get; internal set; }
        
        /// <summary>
        /// Current win rate percentage
        /// </summary>
        [Required] public int WinRate { get; internal set; }
        
        /// <summary>
        /// Current profit and loss
        /// </summary>
        [Required] public decimal ProfitAndLoss { get; internal set; }
        
        /// <summary>
        /// Unique identifier for the bot
        /// </summary>
        [Required] public string Identifier { get; set; }
        
        /// <summary>
        /// Agent name associated with the bot
        /// </summary>
        [Required] public string AgentName { get; set; }
        
        /// <summary>
        /// The full trading bot configuration
        /// </summary>
        [Required] public TradingBotConfig Config { get; internal set; }
    }
}