import type { I18nResource, I18nOptions } from "./types"; /** * I18n context class for managing translation resources and language settings. * Supports deep merging of resources with configurable override behavior. * * @template T - The type definition for translation resources. * * @example * ```typescript * const i18n = new I18nContext(); * i18n.language = 'en'; * i18n.setResource({ welcome: 'Hello' }); * i18n.getText('welcome'); // "Hello" * ``` */ declare class I18nContext { private resources; private _language; /** * Checks if a value is a plain object (not null, not array, typeof object). */ private isObject; /** * Deep merges two values with configurable override behavior. * Handles objects, arrays, and primitive values with prototype pollution protection. * * @param target - The target value to merge into. * @param source - The source value to merge from. * @param override - Whether to override existing values. Default is true. * @returns The merged value. * @internal */ private deepMerge; /** * Sets translation resources with optional override control. * * @param langRes - Partial translation resources to add. * @param options - Options object with override boolean. * @example * ```typescript * setResource({ welcome: 'Hello' }, { override: true }); * ``` */ setResource(langRes: Partial, options?: I18nOptions): void; /** * Sets translation resources with optional override control. * * @param langRes - Partial translation resources to add. * @param override - Whether to override existing keys. Default is true. * @example * ```typescript * setResource({ welcome: 'Hello' }, true); // Override * setResource({ welcome: 'Hello' }, false); // Don't override * ``` */ setResource(langRes: Partial, override?: boolean): void; /** * Sets the current language. * @param value - The language code to set. * @example * ```typescript * i18n.language = 'en'; * ``` */ set language(value: string); /** * Gets the current language. * @returns The current language code. * @example * ```typescript * console.log(i18n.language); // 'en' * ``` */ get language(): string; /** * Gets translated text by key with optional default fallback. * Supports nested key access using dot notation. * * @param key - Translation key (supports dot notation for nested keys). * @param defaultText - Optional default text if key is not found. * @returns Translated text, default text, or error message. * @example * ```typescript * getText('welcome'); // "Welcome" * getText('buttons.submit'); // "Submit" * getText('missing', 'Default'); // "Default" * ``` */ getText(key: K, defaultText?: string): string; /** * Gets any value from resources by key, including objects and arrays. * Supports nested key access using dot notation. * * @param key - Resource key (supports dot notation for nested keys). * @returns The value at the key path, or undefined if not found. * @example * ```typescript * get('welcome'); // "Welcome" * get('buttons'); // { submit: "Submit", cancel: "Cancel" } * ``` */ get(key: K): unknown; } /** * Default i18n context instance. * Use this instance for most i18n operations. */ declare const i18n: I18nContext; export default i18n; export { I18nContext }; export type { I18nResource, I18nOptions };