namespace TeleWave.Application.Common.Interfaces;
///
/// Локальное хранилище картинок метаданных (постеры/кадры) под metadata/ в корне хранилища. Скачивает
/// изображения к себе, чтобы не зависеть от внешнего CDN на этапе показа.
///
public interface IMetadataImageStore
{
/// Скачивает постер по URL и сохраняет для шоу. Возвращает относительный путь или null при ошибке.
Task DownloadShowPosterAsync(
Guid showId,
string url,
CancellationToken cancellationToken
);
/// Сохраняет загруженный вручную постер шоу. Возвращает относительный путь.
Task SaveShowPosterAsync(
Guid showId,
string extension,
Stream content,
CancellationToken cancellationToken
);
void DeleteShowImages(Guid showId);
/// Скачивает кадр серии по URL. Возвращает относительный путь или null при ошибке.
Task DownloadEpisodeStillAsync(
Guid episodeId,
string url,
CancellationToken cancellationToken
);
void DeleteEpisodeImages(Guid episodeId);
/// Абсолютный путь к файлу по относительному (с защитой от traversal) или null, если вне корня.
string? ResolveAbsolutePath(string relativePath);
}