using RobotNet10.NavigationTune.Shared.Interfaces;
using RobotNet10.NavigationTune.Shared.Models;
using BatchTestResult = RobotNet10.NavigationTune.Shared.Models.BatchTestResult;
using ComparisonResult = RobotNet10.NavigationTune.Shared.Models.ComparisonResult;
namespace RobotNet10.NavigationTune.Services;
///
/// Main orchestrator for tuning operations
///
public interface ITuningOrchestrator
{
///
/// Start a test and return immediately with testRunId and status Running.
/// Test runs in background; completion is notified via SignalR (ReceiveTestResult).
/// Use this for UI single-test execution so Stop/Pause buttons become active right away.
///
Task StartTestAsync(
TestScenario scenario,
NavigationParameterSet parameters,
string? connectionId = null,
Guid? testRunId = null,
CancellationToken cancellationToken = default
);
Task RunSingleTestAsync(
TestScenario scenario,
NavigationParameterSet parameters,
string? connectionId = null,
Guid? testRunId = null,
CancellationToken cancellationToken = default
);
Task RunBatchTestsAsync(
List scenarios,
NavigationParameterSet parameters,
CancellationToken cancellationToken = default
);
Task CompareConfigurationsAsync(
List parameterSets,
TestScenario scenario,
CancellationToken cancellationToken = default
);
void PauseTest(string testRunId);
void ResumeTest(string testRunId);
void StopTest(string testRunId);
void EmergencyStop(string testRunId);
}