using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Media.Imaging;
using XplorePlane.ViewModels;

namespace XplorePlane.Services
{
    public record PipelineProgress(int CurrentStep, int TotalSteps, string CurrentOperator);

    public interface IPipelineExecutionService
    {
        Task<BitmapSource> ExecutePipelineAsync(
            IEnumerable<PipelineNodeViewModel> nodes,
            BitmapSource source,
            IProgress<PipelineProgress> progress = null,
            CancellationToken cancellationToken = default);
    }
}
