using System; using System.Threading; using System.Threading.Tasks; using ImageCatalog_2.Models; namespace ImageCatalog_2.Services; public sealed class AiExtractionRequest { public required string SearchRoot { get; init; } public required bool Recursive { get; init; } public bool IncludeThumbnails { get; init; } public required string ModelsFolderPath { get; init; } public bool UseGpu { get; init; } public string CsvOutputPath { get; init; } = string.Empty; } public interface IAiExtractionService { Task RunAsync( AiExtractionRequest request, CancellationToken token, Func onResult, Func onProgress); }