#nullable disable
#pragma warning disable CS1591
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
    {
        /// 
        /// Gets the channel features.
        /// 
        /// The identifier.
        /// ChannelFeatures.
        ChannelFeatures GetChannelFeatures(Guid? 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.
        /// The channels.
        Task> GetChannelsInternalAsync(ChannelQuery query);
        /// 
        /// Gets the channels.
        /// 
        /// The query.
        /// The channels.
        Task> GetChannelsAsync(ChannelQuery query);
        /// 
        /// Gets the latest channel items.
        /// 
        /// The item query.
        /// The cancellation token.
        /// The latest channels.
        Task> GetLatestChannelItems(InternalItemsQuery query, CancellationToken cancellationToken);
        /// 
        /// Gets the latest channel items.
        /// 
        /// The item query.
        /// The cancellation token.
        /// The latest channels.
        Task> GetLatestChannelItemsInternal(InternalItemsQuery query, CancellationToken cancellationToken);
        /// 
        /// Gets the channel items.
        /// 
        /// The query.
        /// The cancellation token.
        /// The channel items.
        Task> GetChannelItems(InternalItemsQuery query, CancellationToken cancellationToken);
        /// 
        /// Gets the channel items.
        /// 
        /// The query.
        /// The progress to report to.
        /// The cancellation token.
        /// The channel items.
        Task> GetChannelItemsInternal(InternalItemsQuery query, IProgress progress, CancellationToken cancellationToken);
        /// 
        /// Gets the channel item media sources.
        /// 
        /// The item.
        /// The cancellation token.
        /// The item media sources.
        IEnumerable GetStaticMediaSources(BaseItem item, CancellationToken cancellationToken);
    }
}