using System;
using System.IO;
using MediaBrowser.Model.LiveTv;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.LiveTv
{
///
/// Represents a single live tv back end (next pvr, media portal, etc).
///
public interface ILiveTvService
{
///
/// Gets the name.
///
/// The name.
string Name { get; }
///
/// Gets the channels async.
///
/// The cancellation token.
/// Task{IEnumerable{ChannelInfo}}.
Task> GetChannelsAsync(CancellationToken cancellationToken);
///
/// Cancels the recording asynchronous.
///
/// The recording identifier.
/// The cancellation token.
/// Task.
Task CancelRecordingAsync(string recordingId, CancellationToken cancellationToken);
///
/// Schedules the recording asynchronous.
///
/// The channel identifier.
/// The start time.
/// The duration.
/// The cancellation token.
/// Task.
Task ScheduleRecordingAsync(string channelId, DateTime startTime, TimeSpan duration, CancellationToken cancellationToken);
///
/// Gets the channel image asynchronous.
///
/// The channel identifier.
/// The cancellation token.
/// Task{Stream}.
Task GetChannelImageAsync(string channelId, CancellationToken cancellationToken);
///
/// Gets the recordings asynchronous.
///
/// The query.
/// The cancellation token.
/// Task{IEnumerable{RecordingInfo}}.
Task> GetRecordingsAsync(RecordingQuery query, CancellationToken cancellationToken);
///
/// Gets the channel guides.
///
/// The channel identifier list.
/// The cancellation token.
/// Task{IEnumerable{ChannelGuide}}.
Task> GetChannelGuidesAsync(IEnumerable channelIdList, CancellationToken cancellationToken);
}
}