using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
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{DynamicImageInfo}.
Task GetChannelImage(ImageType type, CancellationToken cancellationToken);
///
/// Gets the supported channel images.
///
/// IEnumerable{ImageType}.
IEnumerable GetSupportedChannelImages();
}
}