#pragma warning disable CS1591
using System;
using System.Text.Json.Serialization;
namespace MediaBrowser.Model.Updates
{
    /// 
    /// Class PackageVersionInfo.
    /// 
    public class PackageVersionInfo
    {
        /// 
        /// Gets or sets the name.
        /// 
        /// The name.
        public string name { get; set; }
        /// 
        /// Gets or sets the guid.
        /// 
        /// The guid.
        public string guid { get; set; }
        /// 
        /// Gets or sets the version STR.
        /// 
        /// The version STR.
        public string versionStr { get; set; }
        /// 
        /// The _version
        /// 
        private Version _version;
        /// 
        /// Gets or sets the version.
        /// Had to make this an interpreted property since Protobuf can't handle Version
        /// 
        /// The version.
        [JsonIgnore]
        public Version Version
        {
            get
            {
                if (_version == null)
                {
                    var ver = versionStr;
                    _version = new Version(string.IsNullOrEmpty(ver) ? "0.0.0.1" : ver);
                }
                return _version;
            }
        }
        /// 
        /// Gets or sets the classification.
        /// 
        /// The classification.
        public PackageVersionClass classification { get; set; }
        /// 
        /// Gets or sets the description.
        /// 
        /// The description.
        public string description { get; set; }
        /// 
        /// Gets or sets the required version STR.
        /// 
        /// The required version STR.
        public string requiredVersionStr { get; set; }
        /// 
        /// Gets or sets the source URL.
        /// 
        /// The source URL.
        public string sourceUrl { get; set; }
        /// 
        /// Gets or sets the source URL.
        /// 
        /// The source URL.
        public string checksum { get; set; }
        /// 
        /// Gets or sets the target filename.
        /// 
        /// The target filename.
        public string targetFilename { get; set; }
        public string infoUrl { get; set; }
        public string runtimes { get; set; }
    }
}