using RobotNet10.FleetManager.Services.TrafficControl.Models;
using RobotNet10.GlobalPathPlanner.Model;
namespace RobotNet10.FleetManager.Services.TrafficControl.Services;
///
/// Service for route planning
///
public interface IRoutePlanningService
{
///
/// Plan route for a robot from start to goal
///
Task PlanRouteAsync(
string robotId,
Guid startNodeId,
Guid goalNodeId,
CancellationToken cancellationToken = default);
///
/// Plan route with optional constraints (angle, startDirection, finalDirection)
///
Task PlanRouteAsync(
string robotId,
Guid startNodeId,
Guid goalNodeId,
double? goalAngle,
Orientation? startDirection,
Orientation? finalDirection,
CancellationToken cancellationToken = default);
///
/// Plan route from current position (x, y, theta) to goal node
///
Task PlanRouteFromPositionAsync(
string robotId,
double x,
double y,
double theta,
Guid goalNodeId,
double? goalAngle,
Orientation? startDirection,
Orientation? finalDirection,
CancellationToken cancellationToken = default);
///
/// Plan route from current position (x, y, theta) to goal node
///
Task PlanRouteFromPositionACSTrafficAsync(
string robotId,
double x,
double y,
double theta,
Guid goalNodeId,
double? goalAngle,
Orientation? startDirection,
Orientation? finalDirection,
CancellationToken cancellationToken = default);
}