using RobotNet10.FleetManager.Shared.DTOs.RobotModel;
using RobotNet10.MapManager.Data;
namespace RobotNet10.FleetManager.Services;
///
/// Service for managing robot model map data based on VehicleType filtering
///
public interface IRobotModelMapService
{
///
/// Get filtered nodes for a robot model based on VehicleType properties
/// Returns only nodes that have NodeVehicleProperties for the robot model's VehicleType
///
Task> GetFilteredNodesAsync(Guid robotModelId);
///
/// Get filtered edges for a robot model based on VehicleType properties
/// Returns only edges that have EdgeVehicleProperties for the robot model's VehicleType
///
Task> GetFilteredEdgesAsync(Guid robotModelId);
///
/// Get filtered nodes for a robot model based on VehicleType properties and LevelId
/// Returns only nodes that have NodeVehicleProperties for the robot model's VehicleType and belong to the specified level
///
Task> GetFilteredNodesByLevelAsync(Guid robotModelId, Guid levelId);
///
/// Get filtered edges for a robot model based on VehicleType properties and LevelId
/// Returns only edges that have EdgeVehicleProperties for the robot model's VehicleType and belong to the specified level
///
Task> GetFilteredEdgesByLevelAsync(Guid robotModelId, Guid levelId);
///
/// Get validated map data (nodes + edges) for a robot model
/// Returns only valid nodes/edges after validation (nodes with edges, edges with both nodes)
///
Task GetValidatedMapDataAsync(Guid robotModelId);
///
/// Validate map data for a robot model
/// Returns validation result with errors/warnings
///
Task ValidateMapForRobotModelAsync(Guid robotModelId);
///
/// Check if robot model has valid map configuration
/// Returns true if VehicleTypeId and MapId are set and map data is valid
///
Task HasValidMapConfigurationAsync(Guid robotModelId);
}