import type { IMasterDocumentAdapter } from '../adapter/MasterDocumentAdapter.types'; /** * Motivo por el que el kit pide navegar a otro documento que ya existe en el backend. * * Los dos orígenes piden destinos distintos, y por eso el motivo viaja al host: * - `'traceability'`: nodo del grafo de trazabilidad → normalmente solo lectura. * - `'generated'`: documento recién generado por un cruce → normalmente edición. */ export type DocumentNavigationReason = 'traceability' | 'generated'; /** Contexto entregado a `onNavigateToDocument`. */ export interface DocumentNavigationContext { reason: DocumentNavigationReason; } export interface SmartMasterDocumentProps { /** * UUID (v7) del documento a cargar. Es la PK de document_headers.id. * Si no se pasa, entra en modo 'create'. * * NO es el document_number legible ("PV-2026-004821"), sino el UUID * globalmente único que identifica el registro sin ambigüedad, * independiente de compañía, centro de operación o tipo de documento. */ documentId?: string; /** * Estado inicial pre-poblado por el backend via GET /documents/new. * Cuando se provee, el documento arranca en modo 'create' con los * headerValues ya resueltos (compañía, CO, tipo). No hay ID todavía; * el POST se hace al guardar por primera vez. */ initialState?: import('../adapter/MasterDocumentAdapter.types').DocumentState; /** Llamado tras un guardado exitoso. Usado por MasterDocumentPage para volver al listado. */ onSaved?: () => void; /** * Llamado cuando una acción elimina el documento y devuelve * `{ success: true, navigateToList: true }`. Usado por MasterDocumentPage * para volver al listado tras borrar/anular el documento desde el detalle. */ onNavigateToList?: () => void; /** * Fuerza el modo 'view' (solo lectura) independiente de lo que retorne el adapter. * Usado por "Ver detalle" en el listado. */ viewOnly?: boolean; /** * Adapter alternativo. Si se pasa, toma precedencia sobre el del contexto. * Usado por MasterDocumentPage para inyectar un adapter con navegación interceptada. */ adapterOverride?: IMasterDocumentAdapter; /** * Navegación a OTRO documento que ya existe en el backend, pedida desde el detalle: * un nodo del grafo de trazabilidad, o el documento recién generado por un cruce. * * ⚠️ Sin este prop el kit emite el pseudo-key `navigate_document:` por el canal * de `adapter.executeAction` — comportamiento histórico, que solo * `MasterDocumentPage` intercepta. Un host que renderiza este componente en su * propia ruta DEBE pasarlo: de lo contrario el pseudo-key llega a su `executeAction` * real, que no lo conoce, y el clic termina en un error visible o en nada. * * @see DocumentNavigationReason — para distinguir el origen y elegir el destino */ onNavigateToDocument?: (documentId: string, context: DocumentNavigationContext) => void; } /** * SmartMasterDocument — componente inteligente que conecta el template JSON * con el adaptador de datos para renderizar un documento maestro completo. * * Orquesta el ciclo de vida del documento: * - Carga y mutación de estado vía `useMasterDocumentReducer` * - Carga asíncrona de datos del FactBox vía `useFactBoxData` * - Conflicto de concurrencia duro derivado del 409 del servidor (`state.conflict`) * - Construcción de transiciones, acciones y secciones del FactBox * a partir del template declarativo * * @see MasterDocumentProvider — proveedor que inyecta el template y el adaptador * @see MasterDocument — componente de presentación pura que recibe los datos * * @example * ```tsx * * * * ``` */ export declare function SmartMasterDocument({ documentId, initialState, onSaved, viewOnly, adapterOverride, onNavigateToList, onNavigateToDocument }: SmartMasterDocumentProps): import("react/jsx-runtime").JSX.Element; //# sourceMappingURL=SmartMasterDocument.d.ts.map