/// <summary>
 /// Initializes a new instance of the <see cref="ScheduleFlow"/> class.
 /// </summary>
 /// <param name="tracer">Log wrapper</param>
 /// <param name="alertRulesStore">The alert rules store repository</param>
 /// <param name="signalRunsTracker">The signal run tracker</param>
 /// <param name="analysisExecuter">The analysis executer instance</param>
 /// <param name="smartSignalResultPublisher">The signal results publisher instance</param>
 /// <param name="emailSender">The email sender</param>
 public ScheduleFlow(
     ITracer tracer,
     IAlertRuleStore alertRulesStore,
     ISignalRunsTracker signalRunsTracker,
     IAnalysisExecuter analysisExecuter,
     ISmartSignalResultPublisher smartSignalResultPublisher,
     IEmailSender emailSender)
 {
     this.tracer                     = Diagnostics.EnsureArgumentNotNull(() => tracer);
     this.alertRulesStore            = Diagnostics.EnsureArgumentNotNull(() => alertRulesStore);
     this.signalRunsTracker          = Diagnostics.EnsureArgumentNotNull(() => signalRunsTracker);
     this.analysisExecuter           = Diagnostics.EnsureArgumentNotNull(() => analysisExecuter);
     this.smartSignalResultPublisher = Diagnostics.EnsureArgumentNotNull(() => smartSignalResultPublisher);
     this.emailSender                = Diagnostics.EnsureArgumentNotNull(() => emailSender);
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="AlertRuleApi"/> class.
        /// </summary>
        /// <param name="alertRuleStore">The alert rules store.</param>
        public AlertRuleApi(IAlertRuleStore alertRuleStore)
        {
            Diagnostics.EnsureArgumentNotNull(() => alertRuleStore);

            this.alertRuleStore = alertRuleStore;
        }