using System; using System.Threading; using System.Threading.Tasks; using MaddoShared; namespace ImageCatalog_2.Services { public readonly record struct ImageProcessedUpdate(string Status, int Total, int Processed); public sealed class ImageProcessingRunRequest { public required ImageCreationService.Options Options { get; init; } } public sealed class ImageProcessingRunResult { public required string FinalSpeedCounter { get; init; } } public interface IImageProcessingCoordinator { Task RunAsync( ImageProcessingRunRequest request, CancellationToken token, Action onImageProcessed, Action onSpeedUpdated); } }