type InterpolateFn<T> = ((value: unknown) => T) & {
    expressions: string[];
};
/**
 * Handles string interpolation with customizable delimiters
 * @param startSymbol - Opening delimiter for expressions (default: '{{')
 * @param endSymbol - Closing delimiter for expressions (default: '}}')
 * @example
 * const interpolator = new Interpolate('${', '}');
 * const template = interpolator.build('Hello ${name}!');
 * template({ name: 'World' }); // Returns 'Hello World!'
 */
export declare class Interpolate {
    readonly startSymbol: string;
    readonly endSymbol: string;
    constructor(startSymbol?: string, endSymbol?: string);
    private unescapeText;
    private readonly escapedStartRegexp;
    private readonly escapedEndRegexp;
    /**
     * Recursively processes objects/arrays/values to create an interpolation function
     * @template T - Type of the input object
     * @param obj - Object to interpolate (can be nested)
     * @param mustHaveExpression - Require at least one interpolation expression
     * @param evaluator - Custom expression evaluation function
     * @param allOrNothing - Return undefined if any expression evaluates to undefined
     * @returns Interpolation function with expressions metadata
     */
    buildObject<T>(obj: T, mustHaveExpression?: boolean, evaluator?: (expression: string) => ((target: unknown) => any), allOrNothing?: boolean): InterpolateFn<T>;
    static readonly Evaluator: (exp: string) => import("./parser/evaluator-as-function.js").ParsedFunction<unknown>;
    /**
     * Creates an interpolation function from a template string
     * @template T - Template string type
     * @param text - String containing interpolation expressions
     * @param mustHaveExpression - Require at least one interpolation expression
     * @param evaluator - Custom expression evaluation function
     * @param allOrNothing - Return undefined if any expression evaluates to undefined
     * @returns Interpolation function with expressions metadata
     */
    build<T extends string>(text: T, mustHaveExpression?: boolean, evaluator?: (expression: string) => ((target: unknown) => any), allOrNothing?: boolean): InterpolateFn<T>;
}
export {};
