// <auto-generated>
// Code generated by Microsoft (R) AutoRest Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is
// regenerated.
// </auto-generated>

namespace Microsoft.Bonsai.SimulatorApi.Models
{
    using Newtonsoft.Json;
    using System.Linq;

    /// <summary>
    /// SimulatorSession progress:
    /// Has the simulator ever attached to a Scholar;
    /// Has the simulator ever iterated (i.e., sent a state and received an
    /// action);
    /// Has the simulator ever completed an episode (i.e., received an
    /// EpisodeFinish message).
    /// </summary>
    public partial class SimulatorSessionProgress
    {
        /// <summary>
        /// Initializes a new instance of the SimulatorSessionProgress class.
        /// </summary>
        public SimulatorSessionProgress()
        {
            CustomInit();
        }

        /// <summary>
        /// Initializes a new instance of the SimulatorSessionProgress class.
        /// </summary>
        public SimulatorSessionProgress(SimulatorSessionMilestone attached = default(SimulatorSessionMilestone), SimulatorSessionMilestone iterated = default(SimulatorSessionMilestone), SimulatorSessionMilestone finishedEpisode = default(SimulatorSessionMilestone))
        {
            Attached = attached;
            Iterated = iterated;
            FinishedEpisode = finishedEpisode;
            CustomInit();
        }

        /// <summary>
        /// An initialization method that performs custom operations like setting defaults
        /// </summary>
        partial void CustomInit();

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "attached")]
        public SimulatorSessionMilestone Attached { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "iterated")]
        public SimulatorSessionMilestone Iterated { get; set; }

        /// <summary>
        /// </summary>
        [JsonProperty(PropertyName = "finishedEpisode")]
        public SimulatorSessionMilestone FinishedEpisode { get; set; }

    }
}
