#pragma warning disable CS1591
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.Channels
{
    public interface IChannel
    {
        /// 
        /// Gets the name.
        /// 
        /// The name.
        string Name { get; }
        /// 
        /// Gets the description.
        /// 
        /// The description.
        string Description { get; }
        /// 
        /// Gets the data version.
        /// 
        /// The data version.
        string DataVersion { get; }
        /// 
        /// Gets the home page URL.
        /// 
        /// The home page URL.
        string HomePageUrl { get; }
        /// 
        /// Gets the parental rating.
        /// 
        /// The parental rating.
        ChannelParentalRating ParentalRating { get; }
        /// 
        /// Gets the channel information.
        /// 
        /// ChannelFeatures.
        InternalChannelFeatures GetChannelFeatures();
        /// 
        /// Determines whether [is enabled for] [the specified user].
        /// 
        /// The user identifier.
        /// true if [is enabled for] [the specified user]; otherwise, false.
        bool IsEnabledFor(string userId);
        /// 
        /// Gets the channel items.
        /// 
        /// The query.
        /// The cancellation token.
        /// Task{IEnumerable{ChannelItem}}.
        Task GetChannelItems(InternalChannelItemQuery query, CancellationToken cancellationToken);
        /// 
        /// Gets the channel image.
        /// 
        /// The type.
        /// The cancellation token.
        /// Task{DynamicImageResponse}.
        Task GetChannelImage(ImageType type, CancellationToken cancellationToken);
        /// 
        /// Gets the supported channel images.
        /// 
        /// IEnumerable{ImageType}.
        IEnumerable GetSupportedChannelImages();
    }
}