using MediaBrowser.Controller.Entities;
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 channel information.
///
/// ChannelInfo.
ChannelInfo GetChannelInfo();
///
/// Determines whether [is enabled for] [the specified user].
///
/// The user.
/// true if [is enabled for] [the specified user]; otherwise, false.
bool IsEnabledFor(User user);
///
/// Searches the specified search term.
///
/// The search information.
/// The user.
/// The cancellation token.
/// Task{IEnumerable{ChannelItemInfo}}.
Task> Search(ChannelSearchInfo searchInfo, User user, CancellationToken cancellationToken);
///
/// 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();
}
}