import { T as TemplateRenderer } from "../packem_shared/types.d-I-KeZ5w2.js"; /** * A map of locale code (e.g. `en`, `en-US`, `de`) to that locale's template. * * The template value is whatever the underlying {@link TemplateRenderer} accepts (a string for * Handlebars/MJML/Liquid, a component for react-email/jsx-email, etc.). */ type LocaleTemplates = Record; /** * Options for {@link renderI18n} and {@link createI18nRenderer}. */ interface I18nRenderOptions { /** * Locale to fall back to when the requested locale (and its language root) is missing. */ defaultLocale?: string; /** * Options forwarded to the underlying renderer. */ rendererOptions?: Record; } /** * Resolves the best-matching available locale key: exact match, then the language subtag * (`en-US` → `en`), then the default locale. * @param templates The available locale templates. * @param locale The requested locale. * @param defaultLocale Optional fallback locale. * @returns The matching key, or `undefined` when nothing matches. */ declare const resolveLocale: (templates: LocaleTemplates, locale: string, defaultLocale?: string) => string | undefined; /** * Renders the template for a given locale using the supplied engine, with locale fallback. * @param templates The per-locale templates. See {@link LocaleTemplates}. * @param locale The requested locale (e.g. `de-AT`). * @param renderer The underlying template engine (Handlebars, MJML, Liquid, react-email, …). * @param data Data/variables passed to the renderer. * @param options Fallback locale and renderer options. See {@link I18nRenderOptions}. * @returns The rendered output for the resolved locale. * @throws {EmailError} When no template matches the locale or the fallback. */ declare const renderI18n: (templates: LocaleTemplates, locale: string, renderer: TemplateRenderer, data?: Record, options?: I18nRenderOptions) => Promise; /** * A locale-resolving renderer produced by {@link createI18nRenderer}. */ type LocalizedRenderer = (templates: LocaleTemplates, locale: string, data?: Record, rendererOptions?: Record) => Promise; /** * Creates a reusable localized renderer bound to an engine and default locale. * @param renderer The underlying template engine. * @param defaultLocale Optional default/fallback locale applied to every call. * @returns A {@link LocalizedRenderer}. * @example * ```ts * import { renderHandlebars } from "@visulima/email/template/handlebars"; * import { createI18nRenderer } from "@visulima/email/template/i18n"; * * const render = createI18nRenderer(renderHandlebars, "en"); * await render({ en: "Hello {{name}}", de: "Hallo {{name}}" }, "de", { name: "Ada" }); * ``` */ declare const createI18nRenderer: (renderer: TemplateRenderer, defaultLocale?: string) => LocalizedRenderer; export { I18nRenderOptions, LocaleTemplates, LocalizedRenderer, createI18nRenderer, renderI18n, resolveLocale };