using System;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Channels;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Querying;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
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);
bool SupportsSync(string channelId);
///
/// Gets all channel features.
///
/// IEnumerable{ChannelFeatures}.
ChannelFeatures[] GetAllChannelFeatures();
///
/// Gets the channel.
///
/// The identifier.
/// Channel.
Channel GetChannel(string id);
///
/// Gets the channels internal.
///
/// The query.
/// The cancellation token.
/// Task<QueryResult<Channel>>.
Task> GetChannelsInternal(ChannelQuery query, CancellationToken cancellationToken);
///
/// Gets the channels.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{BaseItemDto}}.
Task> GetChannels(ChannelQuery query, CancellationToken cancellationToken);
///
/// Gets all media internal.
///
/// The query.
/// The cancellation token.
/// Task<QueryResult<BaseItem>>.
Task> GetAllMediaInternal(AllChannelMediaQuery query, CancellationToken cancellationToken);
///
/// Gets all media.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{BaseItemDto}}.
Task> GetAllMedia(AllChannelMediaQuery query, CancellationToken cancellationToken);
///
/// Gets the latest media.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{BaseItemDto}}.
Task> GetLatestChannelItems(AllChannelMediaQuery query, CancellationToken cancellationToken);
///
/// Gets the latest channel items internal.
///
/// The query.
/// The cancellation token.
/// Task<QueryResult<BaseItem>>.
Task> GetLatestChannelItemsInternal(AllChannelMediaQuery query, CancellationToken cancellationToken);
///
/// Gets the channel items.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{BaseItemDto}}.
Task> GetChannelItems(ChannelItemQuery query, CancellationToken cancellationToken);
///
/// Gets the channel items internal.
///
/// The query.
/// The progress.
/// The cancellation token.
/// Task<QueryResult<BaseItem>>.
Task> GetChannelItemsInternal(ChannelItemQuery 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);
///
/// Gets the channel folder.
///
/// The cancellation token.
/// BaseItemDto.
Task GetInternalChannelFolder(CancellationToken cancellationToken);
///
/// Gets the channel folder.
///
/// The user identifier.
/// The cancellation token.
/// BaseItemDto.
Task GetChannelFolder(string userId, CancellationToken cancellationToken);
}
}