using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
namespace MediaBrowser.Controller.Trickplay;
///
/// Interface ITrickplayManager.
///
public interface ITrickplayManager
{
///
/// Generate or replace trickplay data.
///
/// The video.
/// Whether or not existing data should be replaced.
/// CancellationToken to use for operation.
/// Task.
Task RefreshTrickplayDataAsync(Video video, bool replace, CancellationToken cancellationToken);
///
/// Get available trickplay resolutions and corresponding info.
///
/// The item.
/// Map of width resolutions to trickplay tiles info.
Dictionary GetTilesResolutions(Guid itemId);
///
/// Saves trickplay tiles info.
///
/// The item.
/// The trickplay tiles info.
void SaveTilesInfo(Guid itemId, TrickplayTilesInfo tilesInfo);
///
/// Gets the trickplay manifest.
///
/// The item.
/// A map of media source id to a map of tile width to tile info.
Dictionary> GetTrickplayManifest(BaseItem item);
///
/// Gets the path to a trickplay tiles image.
///
/// The item.
/// The width of a single tile.
/// The tile grid's index.
/// The absolute path.
string GetTrickplayTilePath(BaseItem item, int width, int index);
}