import { type ReactNode } from 'react'; /** * Resincronización del documento en pantalla, disponible para cualquier * componente montado dentro de `SmartMasterDocument`. * * @see useMasterDocumentReload - El caso de uso normal (solo `reload`). * @see FactBoxWidgetRenderContext - Los widgets custom lo reciben ya en su contexto. */ export interface MasterDocumentRefreshApi { /** * Vuelve a leer el documento del servidor y reemplaza el estado del kit con la * respuesta: encabezado, líneas, totales, `docState` y `row_version`. Es la * MISMA operación que dispara "Recargar documento" del modal de conflicto. * * Descarta la edición en vuelo del encabezado (lo escrito y no guardado), así * que se invoca DESPUÉS de persistir, no antes. Resuelve cuando el estado ya * se aplicó; si la lectura falla, el error se reporta por el mismo canal que * la carga inicial (toast + log) y la promesa igual resuelve. */ reload: () => Promise; /** * Contador que sube tras cada mutación del kit (guardar, borrar o duplicar una * línea, acción de fila, `reload`). Úsalo como dependencia del fetch propio del * host —una React Query key, un `useEffect`— para refrescar SU listado cuando * el documento cambió por fuera de él. Es el mismo valor que reciben las * pestañas de detalle en `LineTabRenderContext.refreshToken`. */ refreshToken: number; } /** * `reload` inerte para los dos casos en que no hay documento montado: el hook * llamado fuera de `SmartMasterDocument` y el valor por defecto del builder del * FactBox. Avisa por consola en vez de lanzar —un widget del host no debe tumbar * la pantalla por estar mal cableado— y es una constante de módulo para que su * identidad sirva como dependencia estable. */ export declare const INERT_REFRESH: MasterDocumentRefreshApi; /** * API completa de resincronización, o `null` fuera de un `SmartMasterDocument` * (mismo contrato nullable que `useMasterDocumentPrint`/`useMasterDocumentAudit`: * subsistema ausente ⇒ contexto en null, nunca excepción). * * Úsalo cuando necesites `refreshToken` además de `reload`; si solo vas a * recargar, `useMasterDocumentReload()` evita el chequeo de null. */ export declare function useMasterDocumentRefresh(): MasterDocumentRefreshApi | null; /** * Recarga el documento del `SmartMasterDocument` que envuelve al componente. * * Pensado para el host que persiste por su cuenta y necesita que la pantalla se * entere: widgets custom del FactBox, renderers de pestañas de detalle, paneles * propios montados en cualquier slot del kit. * * Siempre devuelve una función invocable: fuera del árbol de un documento es un * no-op que avisa por consola, para que el consumidor no tenga que ramificar. * * @example * ```tsx * function CrossingsWidget() { * const reload = useMasterDocumentReload(); * const onAccept = async () => { * await api.crossLines(...); // persistencia propia del host * await reload(); // el kit vuelve a leer líneas y totales * }; * // ... * } * ``` */ export declare function useMasterDocumentReload(): () => Promise; interface MasterDocumentRefreshProviderProps { value: MasterDocumentRefreshApi; children: ReactNode; } /** * Publica la resincronización a todo el subárbol del documento. Lo monta * `SmartMasterDocument` —el único que tiene el reducer y por tanto lo único que * puede recargar de verdad— y por eso NO se exporta al consumidor: montarlo a * mano obligaría al host a fabricar un `reload`, que es justo lo que no puede. */ export declare function MasterDocumentRefreshProvider({ value, children, }: MasterDocumentRefreshProviderProps): import("react/jsx-runtime").JSX.Element; export {}; //# sourceMappingURL=MasterDocumentRefreshProvider.d.ts.map