using Domain.Dtos.Stock;
using Domain.Entities;
using Domain.Generics;
namespace Models.Interfaces
{
public interface IPhLSMProductRepository
{
///
/// Realiza una búsqueda paginada de productos según los parámetros provistos.
///
/// Parámetros de búsqueda y paginación.
/// Página de productos que cumplen con los filtros.
Task> SearchAsync(LSProductSearchParams searchParams);
///
/// Obtiene un producto por su identificador único.
///
/// ID del producto.
/// Producto encontrado o null si no existe.
Task GetByIdAsync(int id);
///
/// Inserta una lista de productos importados. Devuelve la cantidad de insertados y los omitidos/skipped.
///
/// Lista de productos a importar (vista previa validada).
/// Resultado de la importación con cantidades y errores.
Task ImportProductsAsync(List items);
///
/// Crea un nuevo producto en la base de datos.
///
/// Entidad de producto a crear.
/// Producto creado.
Task CreateAsync(ELSProduct entity);
///
/// Actualiza un producto existente.
///
/// Entidad de producto con los datos actualizados.
/// True si la actualización fue exitosa.
Task UpdateAsync(ELSProduct entity);
///
/// Elimina un producto por su identificador único.
///
/// ID del producto a eliminar.
/// True si la eliminación fue exitosa.
Task DeleteAsync(int id);
}
}