using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using CommonUsage.Protocols.VDA5050.Messages;

namespace CommonUsage.Protocols.VDA5050
{
    public interface IVDACommunicationProtocol
    {
        Task PublishConnectionStatus(string status);
        Task PublishFactSheet(factsheetMessage msg);
        void SetupOrderListener(Action<orderMessage> orderReceived);
        void SetUpInstanActionListener(Action<instanceAction> onInstanceActionReceived);
        void SetUpImmediateCommandListener(Action<string> onChangeCarFieldsReceived);
        Task SendMessageAsync<T>(T message, string topic);
        Task SendVisualizationMessageAsync<T>(T message, string topic);
    }
}
