using Domain.Dtos.Stock;
using Domain.Generics;

namespace Models.Interfaces
{
    public interface IPhLSMStockItemRepository
    {
        Task<PagedResult<StockItemScanResultDto>> SearchStockItemsAsync(
            string? codeOrText,
            string? batch,
            int? locationId,
            int? productType,
            int? traceabilityType,
            bool? plusProcess,
            int page,
            int take
        );
        // Búsqueda con datos parseados (GS1/DataMatrix)
        Task<PagedResult<StockItemScanResultDto>> SearchStockItemsParsedAsync(
            string? gtin,
            string? batch,
            DateOnly? expiration,
            string? serial,         // reservado (si agregás columna Serial en StockItem)
            int? locationId,
            int page,
            int take);

        // Obtener disponibilidad por IDs de StockItem
        Task<List<StockItemAvailabilityDto>> GetAvailabilityByStockItemIdsAsync(
            IEnumerable<int> stockItemIds);
    }
}
