using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.LiveTv;
///
/// Service responsible for managing LiveTV recordings.
///
public interface IRecordingsManager
{
///
/// Gets the path for the provided timer id.
///
/// The timer id.
/// The recording path, or null if none exists.
string? GetActiveRecordingPath(string id);
///
/// Gets the information for an active recording.
///
/// The recording path.
/// The , or null if none exists.
ActiveRecordingInfo? GetActiveRecordingInfo(string path);
///
/// Gets the recording folders.
///
/// The for each recording folder.
IEnumerable GetRecordingFolders();
///
/// Ensures that the recording folders all exist, and removes unused folders.
///
/// Task.
Task CreateRecordingFolders();
///
/// Cancels the recording with the provided timer id, if one is active.
///
/// The timer id.
/// The timer.
void CancelRecording(string timerId, TimerInfo? timer);
///
/// Records a stream.
///
/// The recording info.
/// The channel associated with the recording timer.
/// The time to stop recording.
/// Task representing the recording process.
Task RecordStream(ActiveRecordingInfo recordingInfo, BaseItem channel, DateTime recordingEndDate);
}