using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Querying;
namespace MediaBrowser.Controller.Channels
{
public interface IChannelManager
{
///
/// Adds the parts.
///
/// The channels.
void AddParts(IEnumerable channels);
///
/// Gets the channel features.
///
/// The identifier.
/// ChannelFeatures.
ChannelFeatures GetChannelFeatures(string id);
///
/// Gets all channel features.
///
/// IEnumerable{ChannelFeatures}.
ChannelFeatures[] GetAllChannelFeatures();
bool EnableMediaSourceDisplay(BaseItem item);
bool CanDelete(BaseItem item);
Task DeleteItem(BaseItem item);
///
/// Gets the channel.
///
/// The identifier.
/// Channel.
Channel GetChannel(string id);
///
/// Gets the channels internal.
///
/// The query.
QueryResult GetChannelsInternal(ChannelQuery query);
///
/// Gets the channels.
///
/// The query.
QueryResult GetChannels(ChannelQuery query);
///
/// Gets the latest media.
///
Task> GetLatestChannelItems(InternalItemsQuery query, CancellationToken cancellationToken);
///
/// Gets the latest media.
///
Task> GetLatestChannelItemsInternal(InternalItemsQuery query, CancellationToken cancellationToken);
///
/// Gets the channel items.
///
Task> GetChannelItems(InternalItemsQuery query, CancellationToken cancellationToken);
///
/// Gets the channel items internal.
///
Task> GetChannelItemsInternal(InternalItemsQuery query, IProgress progress, CancellationToken cancellationToken);
///
/// Gets the channel item media sources.
///
/// The item.
/// The cancellation token.
/// Task{IEnumerable{MediaSourceInfo}}.
IEnumerable GetStaticMediaSources(BaseItem item, CancellationToken cancellationToken);
bool EnableMediaProbe(BaseItem item);
}
}