namespace adas_core.module.ProxyDevices.Services;

/// <summary>
/// Interface for the Proxy Device Service, which handles processing and streaming of data from proxy devices.
/// </summary>
public interface IProxyDeviceService
{
    /// <summary>
    /// Processes data from a proxy device identified by the given device ID. This method is responsible for handling
    /// </summary>
    /// <param name="deviceId">The unique identifier of the proxy device to be processed.</param>
    /// <returns>A task that represents the asynchronous operation. The task result contains the HttpResponseMessage returned by the device's Process method.</returns>
    Task<HttpResponseMessage> Process(string deviceId);

    /// <summary>
    /// Streams data from a proxy device identified by the given device ID. This method is responsible for handling
    /// </summary>
    /// <param name="deviceId">The unique identifier of the proxy device to be streamed.</param>
    /// <returns>A task that represents the asynchronous operation. The task result contains the HttpResponseMessage returned by the device's Stream method.</returns>
    Task<HttpResponseMessage> Stream(string deviceId);
}