using MediaBrowser.Controller.Entities ;
using MediaBrowser.Model.Chapters ;
using System.Collections.Generic ;
using System.Threading ;
using System.Threading.Tasks ;
using MediaBrowser.Model.Configuration ;
using MediaBrowser.Model.Entities ;
namespace MediaBrowser.Controller.Chapters
{
/// <summary>
/// Interface IChapterManager
/// </summary>
public interface IChapterManager
{
/// <summary>
/// Adds the parts.
/// </summary>
/// <param name="chapterProviders">The chapter providers.</param>
void AddParts ( IEnumerable < IChapterProvider > chapterProviders ) ;
/// <summary>
/// Gets the chapters.
/// </summary>
/// <param name="itemId">The item identifier.</param>
/// <returns>List{ChapterInfo}.</returns>
IEnumerable < ChapterInfo > GetChapters ( string itemId ) ;
/// <summary>
/// Saves the chapters.
/// </summary>
/// <param name="itemId">The item identifier.</param>
/// <param name="chapters">The chapters.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
Task SaveChapters ( string itemId , IEnumerable < ChapterInfo > chapters , CancellationToken cancellationToken ) ;
/// <summary>
/// Searches the specified video.
/// </summary>
/// <param name="video">The video.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{IEnumerable{RemoteChapterResult}}.</returns>
Task < IEnumerable < RemoteChapterResult > > Search ( Video video , CancellationToken cancellationToken ) ;
/// <summary>
/// Searches the specified request.
/// </summary>
/// <param name="request">The request.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{IEnumerable{RemoteChapterResult}}.</returns>
Task < IEnumerable < RemoteChapterResult > > Search ( ChapterSearchRequest request , CancellationToken cancellationToken ) ;
/// <summary>
/// Gets the chapters.
/// </summary>
/// <param name="id">The identifier.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task{ChapterResponse}.</returns>
Task < ChapterResponse > GetChapters ( string id , CancellationToken cancellationToken ) ;
/// <summary>
/// Gets the providers.
/// </summary>
/// <param name="itemId">The item identifier.</param>
/// <returns>IEnumerable{ChapterProviderInfo}.</returns>
IEnumerable < ChapterProviderInfo > GetProviders ( string itemId ) ;
/// <summary>
/// Gets the providers.
/// </summary>
/// <returns>IEnumerable{ChapterProviderInfo}.</returns>
IEnumerable < ChapterProviderInfo > GetProviders ( ) ;
/// <summary>
/// Gets the configuration.
/// </summary>
/// <returns>ChapterOptions.</returns>
ChapterOptions GetConfiguration ( ) ;
}
}