import React from 'react';
import type { TranslationProviderProps, TranslationLookup, TranslationArg, Language } from '../types';
/**
* Interfaz del contexto interno de traducción
*/
interface TranslationContextType {
/**
* Traduce una llave y, si se pasan `params`, sustituye sus marcadores `{{nombre}}`.
*
* `params` es OPCIONAL y el parámetro se añadió sin cambiar la forma de un solo argumento,
* así que todas las llamadas existentes siguen valiendo. Antes de esto el kit no tenía forma de
* interpolar: una clave del catálogo con marcadores llegaba a la pantalla con el marcador crudo
* («Detalle — {{number}}»), y cada consumidor lo rodeaba con `t(...).replace('{{x}}', v)` — un
* `replace` por marcador, que es exactamente donde se olvida el segundo.
*/
translate: (key: string, arg?: TranslationArg) => string;
t: (key: string, arg?: TranslationArg) => string;
/**
* Resolución con procedencia: devuelve el valor y el idioma en el que se
* encontró, o `null` si la clave no está registrada. Permite a un consumidor
* con diccionarios propios distinguir una traducción del idioma activo de un
* fallback al idioma base. Ver `TranslationEngine.resolve`.
*
* Es opcional: un motor de terceros puede no implementarlo.
*/
resolve?: (key: string) => TranslationLookup | null;
setLanguage: (lang: string) => Promise;
currentLanguage: string;
languages: Language[];
isReady: boolean;
error: string | null;
/**
* Invalidación explícita: borra la caché del idioma activo (y del idioma por
* defecto, que se usa como fallback) y vuelve a pedir el catálogo al backend.
*/
refreshTranslations: () => Promise;
/**
* Contador que se incrementa cada vez que el motor recibe recursos nuevos.
*
* El motor de traducción es un objeto mutable, así que cargarle recursos NO
* re-renderiza a los consumidores. Este contador viaja en el `value` del
* contexto para invalidarlos cuando llega un catálogo fresco.
*/
resourceVersion: number;
}
/**
* Provider principal para la internacionalización de Siesa
*
* ## Política de caché: stale-while-revalidate
*
* El catálogo cacheado en `localStorage` se sirve al instante (para no bloquear
* el primer render) y *además* se revalida contra el backend. Cuando llegan los
* datos frescos se mergean en el motor, se reescribe la caché y se re-renderiza
* a los consumidores. Así las claves nuevas añadidas en el backend aparecen en
* la siguiente carga de la app sin limpiar la caché a mano.
*
* La revalidación automática ocurre una vez por idioma y carga de la app.
* Para forzarla en caliente existe `refreshTranslations()`, y un evento de
* cambio de sesión (`sessionChangeEventName`) limpia la caché completa.
*
* En modo `mfe` se mantiene la optimización de red: si el microfrontend ya tiene
* catálogo (caché o memoria) no llama al API; solo el Shell revalida y difunde
* el resultado por `broadcastEventName`.
*/
export declare const TranslationProvider: React.FC;
/**
* Hook para acceder al contexto de traducción
* Implementa una política de "Fallo Amistoso" (Graceful Fallback):
* Si no hay un TranslationProvider en la raíz, no rompe la aplicación,
* sino que devuelve un estado seguro por defecto.
*/
export declare const useTranslationInternal: () => TranslationContextType;
export {};
//# sourceMappingURL=TranslationProvider.d.ts.map