/**
 * Shared internationalization (i18n) primitives used by all Apex visualization
 * libraries (tree, sankey, gantt). This module is bundled into each library, so
 * keeping the surface tiny and dependency-free is intentional.
 *
 * Each library owns its own message dictionary; this module only provides the
 * generic plumbing: merging user overrides onto English defaults, applying the
 * `dir` attribute, and resolving the effective direction for layout code.
 */
/**
 * Text/layout direction.
 *
 * - `'ltr'` left-to-right (the default; output is identical to pre-i18n builds).
 * - `'rtl'` right-to-left (mirrors layout geometry and sets `dir="rtl"`).
 * - `'auto'` defer to the surrounding document/element's computed direction.
 */
export type TextDirection = 'ltr' | 'rtl' | 'auto';
/**
 * Merge a partial set of user overrides onto a complete set of defaults.
 *
 * Message dictionaries are flat maps of `string | ((params) => string)`, so a
 * shallow merge is correct: any provided key (including a formatter function)
 * replaces the default, and `undefined` values are ignored so callers can spread
 * sparse objects without clobbering defaults.
 *
 * @param defaults Complete dictionary of English defaults.
 * @param overrides Sparse user-supplied overrides. Optional.
 * @returns A new dictionary; inputs are not mutated.
 */
export declare function resolveMessages<T extends object>(defaults: T, overrides?: Partial<T>): T;
/**
 * Apply a text direction to a root element via the `dir` attribute.
 *
 * For `'ltr'` the attribute is removed rather than set, so a chart configured
 * with the default direction produces byte-for-byte the same markup as builds
 * that predate i18n support.
 *
 * @param el Root container or SVG element.
 * @param dir Requested direction.
 */
export declare function applyDirection(el: Element | null | undefined, dir: TextDirection): void;
/**
 * Resolve whether layout geometry should be mirrored for the given direction.
 *
 * `'auto'` is resolved against the element's computed CSS `direction` (falling
 * back to the document element), so it only ever reports RTL in a browser where
 * the ambient direction is actually right-to-left. In non-DOM (SSR) contexts
 * `'auto'` resolves to `false`.
 *
 * @param dir Requested direction.
 * @param el Element used to resolve `'auto'`. Optional.
 * @returns `true` when content should flow right-to-left.
 */
export declare function isRTL(dir: TextDirection, el?: Element | null): boolean;
//# sourceMappingURL=i18n.d.ts.map