namespace Transversal.Models
{ 
    /// <summary>
    /// Resultado del análisis de un código GS1 escaneado.
    /// Contiene la información parseada de acuerdo a los Application Identifiers (AIs).
    /// </summary>
    public class Gs1ScanResult
    {
        /// <summary>
        /// GTIN (AI 01). Identificador global del producto.
        /// Puede provenir del código de fábrica, del GTIN oficial o de un código alternativo.
        /// </summary>
        public string? Gtin { get; set; }

        /// <summary>
        /// Lote / Batch (AI 10). Identifica el lote de producción del producto.
        /// </summary>
        public string? Lot { get; set; }

        /// <summary>
        /// Fecha de vencimiento (AI 17).
        /// Se expresa en formato YYYY-MM-DD. Puede ser null si el producto no aplica trazabilidad por fecha.
        /// </summary>
        public DateTime? ExpirationDate { get; set; }

        /// <summary>
        /// Número de serie (AI 21).
        /// Aplica para productos con trazabilidad por unidad.
        /// </summary>
        public string? Serial { get; set; }

        /// <summary>
        /// Código original leído (raw input).
        /// Puede ser un código GS1 completo o un valor tipeado manualmente.
        /// </summary>
        public string? Raw { get; set; }

        /// <summary>
        /// Variante o presentación (AI 22).
        /// Identifica una sub-versión del GTIN en caso de existir.
        /// </summary>
        public string? Variant { get; set; }
    }
}
