using System.IO;
using System.Threading;
using System.Threading.Tasks;
using Kavita.Models.Entities.Enums;
using Kavita.Models.Entities.Interfaces;
namespace Kavita.API.Services;
public interface IImageService
{
void ExtractImages(string fileFilePath, string targetDirectory, int fileCount = 1);
string GetCoverImage(string path, string fileName, string outputDirectory, EncodeFormat encodeFormat, CoverImageSize size);
///
/// Creates a Thumbnail version of a base64 image
///
/// base64 encoded image
///
/// Convert and save as encoding format
/// Width of thumbnail
/// If null, will write to
/// File name with extension of the file.
string CreateThumbnailFromBase64(string encodedImage, string fileName, EncodeFormat encodeFormat, int thumbnailWidth = 320, string? targetDirectory = null);
///
/// Writes out a thumbnail by stream input
///
///
///
///
///
///
string WriteCoverThumbnail(Stream stream, string fileName, string outputDirectory, EncodeFormat encodeFormat, CoverImageSize size = CoverImageSize.Default);
///
/// Writes out a thumbnail by file path input
///
///
///
///
///
///
string WriteCoverThumbnail(string sourceFile, string fileName, string outputDirectory, EncodeFormat encodeFormat, CoverImageSize size = CoverImageSize.Default);
///
/// Converts the passed image to encoding and outputs it in the same directory
///
/// Full path to the image to convert
/// Where to output the file
/// Encoding Format
///
/// File of written encoded image
Task ConvertToEncodingFormat(string filePath, string outputPath, EncodeFormat encodeFormat, CancellationToken ct = default);
///
/// Performs I/O to determine if the file is a valid Image
///
///
///
///
Task IsImage(string filePath, CancellationToken ct = default);
void UpdateColorScape(IHasCoverImage entity);
}