using System.Runtime.Serialization;

namespace TINK.Model.State
{
    /// <summary>
    /// Base type for serialization purposes.
    /// </summary>
    [DataContract]
    [KnownType(typeof(StateAvailableInfo))]
    [KnownType(typeof(StateRequestedInfo))]
    [KnownType(typeof(StateOccupiedInfo))]
    public abstract class BaseState
    {
        /// <summary> Constructor for Json serialization. </summary>
        /// <param name="p_eValue">State value.</param>
        protected BaseState(InUseStateEnum p_eValue) {}
            
        public abstract InUseStateEnum Value { get; }
    }
}