using RobotNet.VDA5050.Connection;
using RobotNet.VDA5050.Factsheet;
using RobotNet.VDA5050.InstantAction;
using RobotNet.VDA5050.State;
using RobotNet.VDA5050.Type;
using RobotNet.VDA5050.Visualization;
namespace RobotNet10.RobotApp.Services.Robot.Connection;
///
/// Service interface for managing MQTT connections to robots via VDA5050 protocol
///
public interface IRobotConnectionsService
{
///
/// Start MQTT connection and subscribe to topics
///
Task StartAsync(CancellationToken? cancellationToken);
///
/// Stop MQTT connection
///
Task StopAsync();
///
/// Check if MQTT client is connected
///
bool IsConnected { get; }
///
/// Publish order message from robot
///
Task PublishStateAsync(StateMsg state, CancellationToken cancellationToken = default);
///
/// Publish visualization message from robot
///
Task PublishVisualizationAsync(VisualizationMsg visualization, CancellationToken cancellationToken = default);
///
/// Publish factsheet message from robot
///
///
///
///
Task PublishFactsheetAsync(FactSheetMsg factsheet, CancellationToken cancellationToken = default);
///
/// Publish connection message from robot
///
///
///
///
Task PublishConnectionAsync(ConnectionMsg connection, CancellationToken cancellationToken = default);
///
/// Publish Connection state from robot
///
///
///
Task PublishConnectionStateAsync(ConnectionState state);
}