using Application.DTOs.RobotDTOs; namespace Application.Abstractions.Interfaces { public interface IRobotService { Task CreateRobotAsync(CreateRobotDTO robotDto); Task GetRobotByIdAsync(int robotId); Task> GetAllRobotsAsync(); Task> GetByStatusAsync(RobotStatus status); Task> GetByTypeAsync(RobotType type); Task> GetAvailableRobotsAsync(); Task UpdateRobotAsync(UpdateRobotDTO robotDto); Task DeleteRobotAsync(int robotId); Task UpdateRobotStatusAsync(int robotId, RobotStatusUpdateDTO statusUpdate); // IoT Device Authentication Task<(bool Success, int? RobotId, string? ErrorMessage)> RegisterRobotAsync(RobotRegisterDTO registerDto); Task<(bool Success, int? RobotId, string? ErrorMessage)> AuthenticateRobotAsync(RobotLoginDTO loginDto); // IoT Order Management Task> GetMyOrdersAsync(int robotId); Task AcceptOrderAsync(int robotId, int orderId); Task UpdateOrderPhaseAsync(int robotId, int orderId, OrderPhaseUpdateDTO phaseUpdate); // Diagnostic / Testing Task RoutingTestAsync(RoutingTestDTO testDto); } }