namespace TeleWave.Application.Common.Interfaces;

/// <summary>
/// Файловое хранилище картинок общего реестра: файлы лежат под images/{imageId}{ext} в корне
/// хранилища и отдаются как есть (не режутся). Один файл на запись реестра.
/// </summary>
public interface IImageStore
{
    Task SaveAsync(
        Guid imageId,
        string extension,
        Stream content,
        CancellationToken cancellationToken
    );

    /// <summary>Сохранить готовые байты (например, скачанный из метадаты постер).</summary>
    Task SaveAsync(
        Guid imageId,
        string extension,
        byte[] content,
        CancellationToken cancellationToken
    );

    Task DeleteAsync(Guid imageId, string extension, CancellationToken cancellationToken);

    /// <summary>Абсолютный путь к файлу изображения или null, если файла нет.</summary>
    string? ResolvePath(Guid imageId, string extension);
}
