/** * Variable replacement and personalization system */ export type TemplateVariableMap = Record; export interface TemplatePersonalizerOptions { variablePattern: RegExp; allowUndefined: boolean; undefinedReplacement: string; caseSensitive: boolean; enableFormatting: boolean; enableConditionals: boolean; enableLoops: boolean; maxRecursionDepth: number; } export interface TemplateVariableInfo { name: string; value: any; formatted: string; type: "string" | "number" | "date" | "boolean" | "array" | "object" | "undefined"; position: { start: number; end: number; }; } export interface ReplacementResult { content: string; variables: TemplateVariableInfo[]; missingVariables: string[]; errors: ReplacementError[]; metadata: { originalLength: number; finalLength: number; variableCount: number; replacementTime: number; }; } export interface ReplacementError { type: "missing_variable" | "format_error" | "syntax_error" | "recursion_limit"; message: string; variable?: string; position?: { start: number; end: number; }; } export interface ConditionalBlock { condition: string; content: string; elseContent?: string; } export interface LoopBlock { variable: string; array: string; content: string; } export declare class TemplatePersonalizer { private options; private defaultOptions; constructor(options?: Partial); /** * Replace variables in content */ replace(content: string, variables: TemplateVariableMap): ReplacementResult; /** * Extract variables from content without replacing */ extractVariables(content: string): string[]; /** * Validate that all required variables are provided */ validate(content: string, variables: TemplateVariableMap): { isValid: boolean; missingVariables: string[]; errors: ReplacementError[]; }; /** * Preview replacement result without actually replacing */ preview(content: string, variables: TemplateVariableMap): { originalContent: string; previewContent: string; variableHighlights: Array<{ variable: string; value: string; positions: Array<{ start: number; end: number; }>; }>; }; private replaceSimpleVariables; private replaceRecursive; private processConditionals; private processLoops; private parseVariableName; private getVariableValue; private formatValue; private formatDate; private getValueType; private hasVariables; private extractConditionals; private extractLoops; private extractVariablesFromExpression; private evaluateCondition; private buildConditionalPattern; private buildLoopPattern; } /** * Default instance with Korean-optimized settings */ export declare const defaultTemplatePersonalizer: TemplatePersonalizer; /** * Utility functions */ export declare const TemplateVariableUtils: { /** * Extract all variables from content */ extractVariables: (content: string) => string[]; /** * Replace variables in content */ replace: (content: string, variables: TemplateVariableMap) => string; /** * Validate content has all required variables */ validate: (content: string, variables: TemplateVariableMap) => boolean; /** * Create personalized content for multiple recipients */ personalize: (content: string, recipients: Array<{ phoneNumber: string; variables: TemplateVariableMap; }>) => Array<{ phoneNumber: string; content: string; errors?: string[]; }>; };