using Managing.Core.FixedSizedQueue;
using Managing.Domain.Candles;
using Managing.Domain.Strategies.Base;
using static Managing.Common.Enums;

namespace Managing.Domain.Strategies
{
    public interface IStrategy
    {
        string Name { get; set; }
        StrategyType Type { get; set; }
        SignalType SignalType { get; set; }
        int? Period { get; set; }
        int? FastPeriods { get; set; }
        int? SlowPeriods { get; set; }
        int? SignalPeriods { get; set; }
        FixedSizeQueue<Candle> Candles { get; set; }

        List<Signal> Run();
        StrategiesResultBase GetStrategyValues();
        void UpdateCandles(HashSet<Candle> newCandles);
        string GetName();
    }
}