using System; using System.Threading; using System.Threading.Tasks; using Jellyfin.Plugin.JRay.Models; namespace Jellyfin.Plugin.JRay.Services.Interfaces; /// /// Loads and caches scene-actor-extraction "truth" files for library items. /// public interface ITruthDataService { /// /// Gets the truth file for the given library item, if one exists. /// /// The Jellyfin library item id. /// Cancellation token. /// The parsed truth file, or null if no truth file exists for this item. Task GetTruthAsync(Guid itemId, CancellationToken cancellationToken); /// /// Gets how the item's truth data was obtained, or null if it has none. /// /// /// Resolves the same precedence as : managed /// truth (pushed or fetched) wins, and a sidecar is reported as such. /// /// The Jellyfin library item id. /// The provenance of the truth data that would be served. TruthProvenance? GetProvenance(Guid itemId); /// /// Removes any cached truth file for the given item, so the next /// call re-reads from the managed store or sidecar file. /// /// The Jellyfin library item id. void Invalidate(Guid itemId); /// /// Cheaply checks whether truth data exists for an item (managed upload /// or sidecar file), without loading or caching it. /// /// The Jellyfin library item id. /// The item's media file path. /// true if truth data exists for this item. bool HasTruth(Guid itemId, string itemPath); }