using adas_core.Domain.Models; using adas_core.Domain.Models.MongoModels; using adas_core.Domain.Models.Pumps; namespace adas_core.Application.Services.Interfaces; public interface IConfigPumpsService { /// /// Asynchronously maps the source PumpObservation to a new PumpObservation instance, transforming its data into the target representation. /// /// The source PumpObservation to be mapped. /// A task that represents the asynchronous mapping operation, containing the resulting PumpObservation. Task Map(PumpObservation obs); /// /// Retrieves all available pump configurations from the configuration store. /// /// A task containing a list of with all pump configurations, or null if no configurations are available. Task?> GetAllPumpConfigs(); /// /// Asynchronously retrieves the configuration pump items associated with the specified identifier. /// Returns null if no configuration items are found for the given id. /// /// The unique identifier used to look up the configuration items. /// A task containing a list of ConfigPumpItem objects if found, or null if no items exist for the specified id. Task?> GetConfigItems(string id); /// /// Asynchronously retrieves the pump configuration that matches the specified identifier. /// /// The unique identifier of the pump configuration to look up. /// A task that represents the asynchronous operation. The task result contains the matching configuration if found; otherwise, null when no configuration exists for the given identifier. Task GetPumpConfigById(string id); /// /// Updates the pump configuration asynchronously and returns the updated configuration. /// /// The pump configuration to update. /// A task that represents the asynchronous operation, containing the updated , or null if the configuration was not found. Task UpdatePumpConfig(ConfigPumps pumpConfig); /// /// Inserts a new pump configuration into the data store. /// /// The pump configuration to insert. /// The inserted entity, or null if the insertion was not performed. Task InsertPumpConfig(ConfigPumps pumpConfig); /// /// Asynchronously deletes the specified pump configuration. /// /// The pump configuration to delete. /// A task that represents the asynchronous operation. The task result contains a boolean indicating whether the deletion was successful. Task DeletePumpConfig(ConfigPumps config); /// /// Asynchronously evaluates and applies retention actions for a pump observation, returning the resulting retention outcome. /// /// The pump observation to process for retention actions. /// A task that represents the asynchronous operation, containing the retention result, or null if no retention action applies. Task RetentionActions(PumpObservation obs); }