using System;
using System.Collections.Generic;
using System.Text;

namespace ProxyTunnel.Models
{
    /// <summary>
    /// Rules controlling silence for both the bot and human in and exchange
    /// </summary>
    public class SilenceRules
    {
        /// <summary>
        /// To seem more human, random or arbitrary delay can be enforced before next bot prompt
        /// This might intentionally engage the comfortSequence
        /// In the case of chat, 'typing...' indicator can be displayed, or 'filler/thinking noise' in the case of voice
        /// MattPage 8-19-2019 - this is a cool idea but not yet supported
        /// </summary>
        //public int millisecondsToDelayNextPrompt { get; set; }

        /// <summary>
        /// If true, the comfortPromptSequence will be rendered if 'botResponseDelayTolerance' elapses before the next BotExchangeResponse is returned
        /// </summary>
        public bool engageComfortSequence { get; set; }

        /// <summary>
        /// How long (in milliseconds) the user should endure silence from the bot before comfortSequence starts (if engageComfortSequence is true)
        /// Anecdotal recommendation is that more than 4 seconds (4000ms) of silence in a conversation becomes awkward.
        /// </summary>
        public int botResponseDelayTolerance { get; set; }

        /// <summary>
        /// Sequence of prompts to render if botResponseDelayTolerance is exceeded
        /// </summary>
        public PromptSequence comfortPromptSequence { get; set; }

        /// <summary>
        /// Overall interval to wait for user input, before submitting a NO_INPUT
        /// </summary>
        public int millisecondsToWaitForUserResponse { get; set; }
    }
}
