/**
 * Options for the interpolate function.
 */
export interface IInterpolateOptions {
    /**
     * Custom regex pattern to match placeholders.
     * Defaults to `\{([^}]+)\}` for `{key}` format.
     * The regex should have a capturing group for the key.
     */
    tagRegex?: RegExp;
    /**
     * Custom function to format values before interpolation.
     * If not provided, a default formatter will be used.
     * @param value - The value to format
     * @param tagName - The name of the tag being replaced
     * @param defaultFormatter - The default value formatter function
     * @returns The formatted string representation
     */
    valueFormatter?: (value: any, tagName: string, defaultFormatter: typeof defaultValueFormatter) => string;
}
/**
 * Interpolates placeholders in a string with values from a parameters object.
 *
 * This function is particularly useful for internationalization (i18n) and dynamic string formatting,
 * where text templates contain placeholders that need to be replaced with actual values.
 * By default, placeholders are in the format `{key}`, where `key` can be a simple string or a dotted path.
 *
 * If a placeholder's key is not found in the params object or the value is empty,
 * the placeholder is replaced with an empty string.
 *
 * @param text - The template string containing placeholders.
 * @param params - An object containing key-value pairs for interpolation.
 * @param options - Optional configuration object for interpolation behavior.
 * @returns The interpolated string with placeholders replaced by their corresponding values.
 *
 * @example
 * // Basic interpolation with default {key} format
 * const result = interpolate("Hello, {name}!", { name: "World" });
 * // Result: "Hello, World!"
 *
 * @example
 * // Multiple placeholders
 * const result = interpolate("User {firstName} {lastName} is {age} years old.", {
 *   firstName: "John",
 *   lastName: "Doe",
 *   age: 30
 * });
 * // Result: "User John Doe is 30 years old."
 *
 * @example
 * // Missing or empty parameters - placeholders are removed
 * const result = interpolate("Welcome {user} to {location}.", {
 *   user: "Alice"
 * });
 * // Result: "Welcome Alice to ."
 *
 * @example
 * // Dotted keys (treated as flat keys)
 * const result = interpolate("Contact: {user.email}", {
 *   "user.email": "alice@example.com"
 * });
 * // Result: "Contact: alice@example.com"
 *
 * @example
 * // Custom regex for double braces {{key}}
 * const result = interpolate("Hello, {{name}}!", { name: "World" }, { tagRegex: /\{\{([^}]+)\}\}/g });
 * // Result: "Hello, World!"
 *
 * @example
 * // Custom value formatter for uppercase strings
 * const result = interpolate("Hello {name}!", { name: "world" }, {
 *   valueFormatter: (value, tagName) => typeof value === 'string' ? value.toUpperCase() : String(value)
 * });
 * // Result: "Hello WORLD!"
 *
 * @example
 * // Custom value formatter for numbers with currency
 * const result = interpolate("Price: {amount}", { amount: 99.99 }, {
 *   valueFormatter: (value, tagName) => typeof value === 'number' ? `$${value.toFixed(2)}` : String(value)
 * });
 * // Result: "Price: $99.99"
 *
 * @example
 * // Custom value formatter based on tag name
 * const result = interpolate("User: {name}, Age: {age}", { name: "John", age: 25 }, {
 *   valueFormatter: (value, tagName) => {
 *     if (tagName === 'age') return `${value} years old`;
 *     return String(value);
 *   }
 * });
 * // Result: "User: John, Age: 25 years old"
 *
 * @example
 * // No params provided - returns original string
 * const result = interpolate("No placeholders here.");
 * // Result: "No placeholders here."
 *
/**
 * Default value formatter for interpolation.
 * Handles all common JavaScript value types.
 */
declare function defaultValueFormatter(value: any, tagName: string): string;
export declare function interpolate(text?: string, params?: Record<string, any>, options?: IInterpolateOptions): string;
export {};
