using System.Diagnostics.CodeAnalysis; using StabilityMatrix.Core.Models.Progress; namespace StabilityMatrix.Core.Models.PackageModification; public interface IPackageModificationRunner { Task ExecuteSteps(IReadOnlyList steps); bool IsRunning { get; } [MemberNotNullWhen(true, nameof(Exception))] bool Failed { get; } Exception? Exception { get; } ProgressReport CurrentProgress { get; set; } IPackageStep? CurrentStep { get; set; } event EventHandler? ProgressChanged; event EventHandler? Completed; List ConsoleOutput { get; } Guid Id { get; } bool ShowDialogOnStart { get; init; } bool HideCloseButton { get; init; } string? ModificationCompleteTitle { get; init; } string ModificationCompleteMessage { get; init; } string? ModificationFailedTitle { get; init; } string? ModificationFailedMessage { get; init; } }