using adas_core.Domain.Models;
using adas_core.Domain.Models.Pumps;

namespace adas_core.Application.Services.Interfaces;

public interface IConfigUnitsService
{
    /// <summary>
    /// Maps a patient observation of type <typeparamref name="T"/> to a corresponding output representation.
    /// </summary>
    /// <typeparam name="T">The specific patient observation type, constrained to <see cref="BasePatientObservation"/>.</typeparam>
    /// <param name="obs">The patient observation instance to be mapped.</param>
    /// <returns>A task that represents the asynchronous mapping operation, yielding the mapped patient observation.</returns>
    Task<T> Map<T>(T obs) where T : BasePatientObservation;
    /// <summary>
    /// Asynchronously maps the specified <see cref="PumpObservation"/> to a resulting <see cref="PumpObservation"/>.
    /// </summary>
    /// <param name="obs">The pump observation to be mapped.</param>
    /// <returns>A task that represents the asynchronous mapping operation, containing the resulting <see cref="PumpObservation"/>.</returns>
    Task<PumpObservation> Map(PumpObservation obs);
}