using RobotNet.VDA5050.Factsheet;
using RobotNet.VDA5050.State;
using RobotNet.VDA5050.Type;
using RobotNet.VDA5050.Visualization;
using RobotNet10.FleetManager.Events.Events;
namespace RobotNet10.FleetManager.Events;
///
/// In-memory event bus for VDA5050 robot messages and domain events
///
public interface IRobotEventBus
{
// VDA5050 Events
event EventHandler? StateMessageReceived;
event EventHandler? ConnectionStateChanged;
event EventHandler? VisualizationMessageReceived;
event EventHandler? FactsheetMessageReceived;
// Domain Events
event EventHandler? RobotModelUpdated;
event EventHandler? RobotModelIdChanged;
// VDA5050 Event Publishers
void PublishStateMessageReceived(string robotId, StateMsg stateMsg);
void PublishConnectionStateChanged(string robotId, ConnectionState connectionState);
void PublishVisualizationMessageReceived(string robotId, VisualizationMsg visualizationMsg);
void PublishFactsheetMessageReceived(string robotId, FactSheetMsg factsheetMsg);
// Domain Event Publishers
void PublishRobotModelUpdated(RobotModelUpdatedEvent e);
void PublishRobotModelIdChanged(RobotModelIdChangedEvent e);
}