#nullable enable using System; using System.Collections.Generic; using System.Threading.Tasks; namespace NadekoBot.Core.Modules.Music { public interface ITrackCacher { Task GetOrCreateStreamLink( string id, MusicPlatform platform, Func> streamUrlFactory ); Task CacheTrackDataAsync(ICachableTrackData data); Task GetCachedDataByIdAsync(string id, MusicPlatform platform); Task GetCachedDataByQueryAsync(string query, MusicPlatform platform); Task CacheTrackDataByQueryAsync(string query, ICachableTrackData data); Task CacheStreamUrlAsync(string id, MusicPlatform platform, string url, TimeSpan expiry); Task> GetPlaylistTrackIdsAsync(string playlistId, MusicPlatform platform); Task CachePlaylistTrackIdsAsync(string playlistId, MusicPlatform platform, IEnumerable ids); Task CachePlaylistIdByQueryAsync(string query, MusicPlatform platform, string playlistId); Task GetPlaylistIdByQueryAsync(string query, MusicPlatform platform); } }