using RobotNet.MapShares.Dtos;
using RobotNet.RobotManager.Services.Simulation.Models;
using RobotNet.Shares;

namespace RobotNet.RobotManager.Services.Simulation;

public interface INavigationService : IRobotOrder, IDisposable
{
    Guid MapId { get; set; }
    NavigationNode? InNode { get; }
    List<ZoneDto> CurrentZones { get; set; }
    NavigationStateType NavigationState { get; }
    MessageResult Rotate(double angle);
    MessageResult Move(NavigationNode[] path);
    MessageResult Move(NodeDto[] nodes, EdgeDto[] edges);
    MessageResult MoveStraight(NavigationNode[] path);
    MessageResult Cancel();
}
