using System;
using System.Collections.Generic;
using System.ComponentModel;
using Jellyfin.Data.Enums;
namespace MediaBrowser.Model.Search
{
    /// 
    /// Class SearchHintResult.
    /// 
    public class SearchHint
    {
        /// 
        /// Initializes a new instance of the  class.
        /// 
        public SearchHint()
        {
            Name = string.Empty;
            MatchedTerm = string.Empty;
            MediaType = Jellyfin.Data.Enums.MediaType.Unknown;
            Artists = Array.Empty();
        }
        /// 
        /// Gets or sets the item id.
        /// 
        /// The item id.
        [Obsolete("Use Id instead")]
        public Guid ItemId { get; set; }
        /// 
        /// Gets or sets the item id.
        /// 
        /// The item id.
        public Guid Id { get; set; }
        /// 
        /// Gets or sets the name.
        /// 
        /// The name.
        public string Name { get; set; }
        /// 
        /// Gets or sets the matched term.
        /// 
        /// The matched term.
        public string? MatchedTerm { get; set; }
        /// 
        /// Gets or sets the index number.
        /// 
        /// The index number.
        public int? IndexNumber { get; set; }
        /// 
        /// Gets or sets the production year.
        /// 
        /// The production year.
        public int? ProductionYear { get; set; }
        /// 
        /// Gets or sets the parent index number.
        /// 
        /// The parent index number.
        public int? ParentIndexNumber { get; set; }
        /// 
        /// Gets or sets the image tag.
        /// 
        /// The image tag.
        public string? PrimaryImageTag { get; set; }
        /// 
        /// Gets or sets the thumb image tag.
        /// 
        /// The thumb image tag.
        public string? ThumbImageTag { get; set; }
        /// 
        /// Gets or sets the thumb image item identifier.
        /// 
        /// The thumb image item identifier.
        public string? ThumbImageItemId { get; set; }
        /// 
        /// Gets or sets the backdrop image tag.
        /// 
        /// The backdrop image tag.
        public string? BackdropImageTag { get; set; }
        /// 
        /// Gets or sets the backdrop image item identifier.
        /// 
        /// The backdrop image item identifier.
        public string? BackdropImageItemId { get; set; }
        /// 
        /// Gets or sets the type.
        /// 
        /// The type.
        public BaseItemKind Type { get; set; }
        /// 
        /// Gets or sets a value indicating whether this instance is folder.
        /// 
        /// true if this instance is folder; otherwise, false.
        public bool? IsFolder { get; set; }
        /// 
        /// Gets or sets the run time ticks.
        /// 
        /// The run time ticks.
        public long? RunTimeTicks { get; set; }
        /// 
        /// Gets or sets the type of the media.
        /// 
        /// The type of the media.
        [DefaultValue(MediaType.Unknown)]
        public MediaType MediaType { get; set; }
        /// 
        /// Gets or sets the start date.
        /// 
        /// The start date.
        public DateTime? StartDate { get; set; }
        /// 
        /// Gets or sets the end date.
        /// 
        /// The end date.
        public DateTime? EndDate { get; set; }
        /// 
        /// Gets or sets the series.
        /// 
        /// The series.
        public string? Series { get; set; }
        /// 
        /// Gets or sets the status.
        /// 
        /// The status.
        public string? Status { get; set; }
        /// 
        /// Gets or sets the album.
        /// 
        /// The album.
        public string? Album { get; set; }
        /// 
        /// Gets or sets the album id.
        /// 
        /// The album id.
        public Guid? AlbumId { get; set; }
        /// 
        /// Gets or sets the album artist.
        /// 
        /// The album artist.
        public string? AlbumArtist { get; set; }
        /// 
        /// Gets or sets the artists.
        /// 
        /// The artists.
        public IReadOnlyList Artists { get; set; }
        /// 
        /// Gets or sets the song count.
        /// 
        /// The song count.
        public int? SongCount { get; set; }
        /// 
        /// Gets or sets the episode count.
        /// 
        /// The episode count.
        public int? EpisodeCount { get; set; }
        /// 
        /// Gets or sets the channel identifier.
        /// 
        /// The channel identifier.
        public Guid? ChannelId { get; set; }
        /// 
        /// Gets or sets the name of the channel.
        /// 
        /// The name of the channel.
        public string? ChannelName { get; set; }
        /// 
        /// Gets or sets the primary image aspect ratio.
        /// 
        /// The primary image aspect ratio.
        public double? PrimaryImageAspectRatio { get; set; }
    }
}