using Managing.Domain.Candles;
using Managing.Domain.Indicators;
using Managing.Domain.Strategies.Base;
using static Managing.Common.Enums;

namespace Managing.Domain.Strategies
{
    public interface IIndicator
    {
        string Name { get; set; }
        IndicatorType Type { get; set; }
        SignalType SignalType { get; set; }
        int? Period { get; set; }
        int? FastPeriods { get; set; }
        int? SlowPeriods { get; set; }
        int? SignalPeriods { get; set; }
        double? Multiplier { get; set; }
        int? StochPeriods { get; set; }
        int? SmoothPeriods { get; set; }
        int? CyclePeriods { get; set; }

        List<LightSignal> Run(HashSet<Candle> candles);
        IndicatorsResultBase GetIndicatorValues(HashSet<Candle> candles);
    }
}