import type { FormatOptions, IFormatHandler, ValidationResult } from "../format.interface.js"; import type { TranslationFile } from "../translate.interface.js"; /** * Base class for format handlers that provides common validation functionality */ export declare abstract class BaseFormatHandler implements IFormatHandler { abstract canHandle(filePath: string, content?: string): boolean; abstract parse(content: string): TranslationFile; abstract serialize(data: TranslationFile, options?: FormatOptions): string; abstract getFileExtension(): string; abstract validateStructure(data: TranslationFile): ValidationResult; /** * Get the format name for this handler */ protected abstract getFormatName(): string; /** * Enhanced validation using the centralized validation system */ validateWithRules(data: TranslationFile, filePath?: string, originalContent?: string): ValidationResult; /** * Comprehensive validation with error recovery */ validateWithRecovery(content: string, filePath?: string, options?: { attemptRecovery?: boolean; includeGuidance?: boolean; strictMode?: boolean; }): Promise; /** * Merge multiple validation results */ protected mergeValidationResults(...results: ValidationResult[]): ValidationResult; /** * Remove duplicate validation issues */ private removeDuplicateIssues; /** * Create a validation error */ protected createValidationError(code: string, message: string, line?: number, column?: number): { code: string; message: string; line: number | undefined; column: number | undefined; }; /** * Create a validation warning */ protected createValidationWarning(code: string, message: string, line?: number, column?: number): { code: string; message: string; line: number | undefined; column: number | undefined; }; /** * Validate that a string contains valid content for translation */ protected validateTranslationString(value: string, path: string): { errors: any[]; warnings: any[]; }; /** * Validate object structure recursively */ protected validateObjectStructure(obj: any, path?: string, visited?: Set): { errors: any[]; warnings: any[]; }; /** * Check if content appears to be valid for this format */ protected validateContentFormat(content: string): { errors: any[]; warnings: any[]; }; }