using MediaBrowser.Model.LiveTv;
using MediaBrowser.Model.Querying;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.LiveTv
{
///
/// Manages all live tv services installed on the server
///
public interface ILiveTvManager
{
///
/// Gets the active service.
///
/// The active service.
ILiveTvService ActiveService { get; }
///
/// Gets the services.
///
/// The services.
IReadOnlyList Services { get; }
///
/// Schedules the recording.
///
/// The program identifier.
/// Task.
Task ScheduleRecording(string programId);
///
/// Deletes the recording.
///
/// The identifier.
/// Task.
Task DeleteRecording(string id);
///
/// Cancels the timer.
///
/// The identifier.
/// Task.
Task CancelTimer(string id);
///
/// Adds the parts.
///
/// The services.
void AddParts(IEnumerable services);
///
/// Gets the channels.
///
/// The query.
/// IEnumerable{Channel}.
QueryResult GetChannels(ChannelQuery query);
///
/// Gets the recording.
///
/// The identifier.
/// The cancellation token.
/// Task{RecordingInfoDto}.
Task GetRecording(string id, CancellationToken cancellationToken);
///
/// Gets the timer.
///
/// The identifier.
/// The cancellation token.
/// Task{TimerInfoDto}.
Task GetTimer(string id, CancellationToken cancellationToken);
///
/// Gets the recordings.
///
/// The query.
/// The cancellation token.
/// QueryResult{RecordingInfoDto}.
Task> GetRecordings(RecordingQuery query, CancellationToken cancellationToken);
///
/// Gets the timers.
///
/// The query.
/// The cancellation token.
/// Task{QueryResult{TimerInfoDto}}.
Task> GetTimers(TimerQuery query, CancellationToken cancellationToken);
///
/// Gets the channel.
///
/// The identifier.
/// Channel.
Channel GetChannel(string id);
///
/// Gets the channel.
///
/// The identifier.
/// The user identifier.
/// Channel.
ChannelInfoDto GetChannelInfoDto(string id, string userId);
///
/// Gets the programs.
///
/// The query.
/// The cancellation token.
/// IEnumerable{ProgramInfo}.
Task> GetPrograms(ProgramQuery query, CancellationToken cancellationToken);
}
}