using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Providers;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Subtitles
{
public interface ISubtitleManager
{
///
/// Occurs when [subtitle download failure].
///
event EventHandler SubtitleDownloadFailure;
///
/// Occurs when [subtitles downloaded].
///
event EventHandler SubtitlesDownloaded;
///
/// Adds the parts.
///
/// The subtitle providers.
void AddParts(IEnumerable subtitleProviders);
///
/// Searches the subtitles.
///
Task SearchSubtitles(Video video,
string language,
bool? isPerfectMatch,
CancellationToken cancellationToken);
///
/// Searches the subtitles.
///
/// The request.
/// The cancellation token.
/// Task{IEnumerable{RemoteSubtitleInfo}}.
Task SearchSubtitles(SubtitleSearchRequest request,
CancellationToken cancellationToken);
///
/// Downloads the subtitles.
///
/// The video.
/// The subtitle identifier.
/// The cancellation token.
/// Task.
Task DownloadSubtitles(Video video,
string subtitleId,
CancellationToken cancellationToken);
///
/// Gets the remote subtitles.
///
/// The identifier.
/// The cancellation token.
/// Task{SubtitleResponse}.
Task GetRemoteSubtitles(string id, CancellationToken cancellationToken);
///
/// Deletes the subtitles.
///
/// The item identifier.
/// The index.
/// Task.
Task DeleteSubtitles(string itemId, int index);
///
/// Gets the providers.
///
/// The item identifier.
/// IEnumerable{SubtitleProviderInfo}.
SubtitleProviderInfo[] GetProviders(string itemId);
}
}