import type { FieldContext, ValidationFields, ValidationMessages, MessagesProviderContact } from '../types.js'; /** * Default messages provider that performs message lookup using key-value pairs. * Provides internationalization and custom error message support for validation. * Supports field-specific messages, wildcard patterns, and placeholder interpolation. * * @example * const provider = new SimpleMessagesProvider({ * 'required': 'The {{ field }} field is required', * 'email': 'The {{ field }} field must be a valid email', * 'user.email.required': 'Email address is required' * }, { * 'user.email': 'Email Address' * }) */ export declare class SimpleMessagesProvider implements MessagesProviderContact { #private; /** * Creates a new SimpleMessagesProvider instance. * * @param messages - Map of validation rule names to error message templates * @param fields - Optional map of field paths to human-readable names * * @example * new SimpleMessagesProvider({ * 'required': 'The {{ field }} field is required' * }, { * 'user_name': 'Username' * }) */ constructor(messages: ValidationMessages, fields?: ValidationFields); /** * Returns a validation error message for a given field and rule. * Uses a priority-based lookup system to find the most specific message. * * Priority order: * 1. Field-specific messages (e.g., 'user.email.required') * 2. Wildcard path messages (e.g., '*.email.required') * 3. Generic rule messages (e.g., 'required') * 4. Fallback to raw message * * @param rawMessage - The default raw message from the validation rule * @param rule - The name of the validation rule that failed * @param field - Context information about the field being validated * @param args - Additional arguments to interpolate into the message * @returns Formatted and interpolated error message * * @example * // With field-specific message * provider.getMessage('Required', 'required', fieldContext, {}) * // Returns: "Email address is required" (if field-specific message exists) * * // With rule arguments * provider.getMessage('Min length', 'minLength', fieldContext, { min: 5 }) * // Returns: "The username must be at least 5 characters" */ getMessage(rawMessage: string, rule: string, field: FieldContext, args?: Record): string; /** * Serializes the messages provider to a JSON-compatible object. * Useful for debugging, logging, or transferring configuration. * * @returns Object containing messages and field mappings * * @example * const config = provider.toJSON() * console.log(config) * // { messages: { required: "..." }, fields: { user_name: "Username" } } */ toJSON(): { messages: ValidationMessages; fields: ValidationFields; }; }