export interface FileUpload { /** * Binario del archivo. Los consumidores de SUBIDA lo envían siempre (sin cambio). * Para un archivo PRECARGADO (ver `preloaded`) que no tiene binario en cliente, * se pasa un placeholder (`new File([], nombre)`) SOLO para satisfacer el tipo: * cuando `preloaded` está presente, la card NO lee ni descarga este blob. */ file: File; valid: boolean; validating?: boolean; /** * ADITIVO — Marca este item como archivo YA CARGADO en servidor, representado por * REFERENCIA (sin binario real): nombre a mostrar + descarga por URL (+ tamaño si * el back lo expone). Cuando está presente, la card se pinta como cargada (100%) * sin leer el blob, muestra `name`/tamaño de la referencia y descarga vía * `downloadUrl`. `undefined` → comportamiento actual intacto (los consumidores * existentes no se ven afectados; `file` sigue siendo requerido). */ preloaded?: PreloadedFileRef; } /** * Referencia a un archivo ya cargado en servidor (sin binario en cliente). * Permite mostrar el estado "cargado" reutilizando la card de `kit-upload-files` * cuando el consumidor solo tiene el link del documento (no el `File`). */ export interface PreloadedFileRef { /** Nombre a mostrar (derivado del documento / link). */ name: string; /** URL de descarga directa (p. ej. storageLocation). Opcional. */ downloadUrl?: string; /** Tamaño en bytes, si el back lo expone. Opcional → se oculta el tamaño. */ sizeBytes?: number; }