namespace NexusReader.Application.Abstractions.Services;

/// <summary>
/// Service for managing ebook and cover file storage.
/// </summary>
public interface IBookStorageService
{
    /// <summary>
    /// Saves an ebook file and returns its relative path/URL.
    /// </summary>
    Task<string> SaveEbookAsync(byte[] data, string fileName);

    /// <summary>
    /// Saves an ebook file using a stream and returns its relative path/URL.
    /// </summary>
    Task<string> SaveEbookAsync(Stream data, string fileName);

    /// <summary>
    /// Saves a cover image and returns its relative path/URL. 
    /// Returns null if no cover data is provided.
    /// </summary>
    Task<string?> SaveCoverAsync(byte[] data, string fileName);

    /// <summary>
    /// Saves a cover image using a stream and returns its relative path/URL.
    /// Returns null if no cover data is provided.
    /// </summary>
    Task<string?> SaveCoverAsync(Stream data, string fileName);
}
