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

namespace Models.Interfaces
{
    // 1.1 Data (Repo)
    public interface IExpeditionRepository
    {
        /// <summary>
        /// Crea la expedición completa (encabezado + detalles) y la deja emitida con numeración de serie.
        /// </summary>
        Task<(int Id, string Expeditionnumber)> CreateFullExpeditionAsync(ELSExpeditionHeader expedition, int formSeriesId);
        Task<ExpeditionDto?> GetDtoByIdAsync(int id);
        Task<PagedResult<ExpeditionDto>> SearchAsync(string? expeditionNumber, string? status, DateTime? issueDateFrom, DateTime? issueDateTo, int? locationId, int page, int pageSize);
    }

}
