declare type ValueType = string | boolean | number | bigint; declare type GetVariablesHelper< Text extends string, Prefix extends string, Suffix extends string, Accumulator, > = string extends Text ? string : Prefix extends "" ? Suffix extends "" ? Text extends `${infer Letter}${infer Rest}` ? GetVariablesHelper : Accumulator : Text extends `${infer Variable}${Suffix}${infer Rest}` ? GetVariablesHelper : Accumulator : Suffix extends "" ? Text extends `${infer _Start}${Prefix}${infer Variable}` ? Variable extends `${infer _Variable}${Prefix}${infer Rest}` ? GetVariablesHelper< `${Prefix}${Rest}`, Prefix, Suffix, _Variable | Accumulator > : Variable | Accumulator : Accumulator : Text extends `${infer _Start}${Prefix}${infer Variable}${Suffix}${infer Rest}` ? Variable extends `${infer _Start}${Prefix}${infer _Variable}` ? GetVariablesHelper< `${_Start}${Prefix}${_Variable}${Suffix}${Rest}`, Prefix, Suffix, Accumulator > : GetVariablesHelper : Accumulator; declare type GetVariables< Text extends string, Prefix extends string, Suffix extends string, > = GetVariablesHelper; interface InterpolationOptions { prefix: Prefix; suffix: Suffix; } declare type DefaultPrefix = "{"; declare type DefaultSuffix = "}"; interface HydrateText { < Text extends string, Prefix extends string = DefaultPrefix, Suffix extends string = DefaultSuffix, >( text: Text, variables?: Record, ValueType>, interpolationOptions?: InterpolationOptions, ): string; } interface ConfigureHydrateText { < _Prefix extends string = DefaultPrefix, _Suffix extends string = DefaultSuffix, >( interpolationOptions: InterpolationOptions<_Prefix, _Suffix>, ): < Text extends string, Prefix extends string = _Prefix, Suffix extends string = _Suffix, >( text: Text, variables?: Record, ValueType>, interpolationOptions?: InterpolationOptions, ) => string; } declare const hydrateText: HydrateText; declare const configureHydrateText: ConfigureHydrateText; export { configureHydrateText, hydrateText }; export type { ConfigureHydrateText, DefaultPrefix, DefaultSuffix, HydrateText, InterpolationOptions, ValueType, };