import ts from "typescript";
import { TranslationAnalysisResult } from "../../../types/translation.types";
import { ReactI18nextFileFinder } from "./fileFinder";
import { ReactI18nextKeyFinder } from "./keyFinder";
/**
 * Analyzer for detecting react-i18next translation issues in a React project
 */
export declare class ReactI18nextAnalyzer {
    private sourceFiles;
    private context;
    private fileFinder;
    private keyFinder;
    private missingTranslationAnalyzer;
    private duplicateTranslationAnalyzer;
    private coverageAnalyzer;
    /**
     * Constructor for the react-i18next analyzer
     * @param projectPath Path to the project root
     * @param sourceFiles Map of source files to analyze
     */
    constructor(projectPath: string, sourceFiles: Map<string, ts.SourceFile>);
    /**
     * Main analysis method for react-i18next
     * @returns Promise that resolves to analysis results
     */
    analyze(): Promise<TranslationAnalysisResult>;
    /**
     * Analyzes duplicate translations across react-i18next namespaces
     * @param translationKeys Translation keys found in code
     * @param translationFiles Translation files to analyze
     * @returns Array of duplicate translations
     */
    private analyzeDuplicateTranslations;
    /**
     * Finds duplicate translations across different namespaces
     * @param translationFiles Translation files to analyze
     * @returns Array of cross-namespace duplicates
     */
    private findCrossNamespaceDuplicates;
    /**
     * Flattens translations with namespace information
     * @param obj Translation object
     * @param prefix Current key prefix
     * @param namespace Namespace name
     * @param filePath File path
     * @param valueMap Map to populate with values and their locations
     */
    private flattenTranslationsWithNamespace;
    /**
     * Checks if text is significant enough to warn about duplication
     * @param value The text value to check
     * @returns Boolean indicating if the text is significant
     */
    private isSignificantTextForDuplication;
    /**
     * Generate react-i18next specific statistics
     * @param translationKeys Translation keys found
     * @param missingTranslations Missing translations
     * @param duplicateTranslations Duplicate translations
     * @returns Statistics object
     */
    private generateReactI18nextStatistics;
    /**
     * Counts usage of interpolation in translation keys
     * @param translationKeys Translation keys to analyze
     * @returns Number of keys using interpolation
     */
    private countInterpolationUsage;
    /**
     * Counts usage of pluralization in translation files
     * @returns Number of plural keys found
     */
    private countPluralizationUsage;
    /**
     * Counts plural keys in a translation object
     * @param obj Translation object
     * @returns Number of plural keys
     */
    private countPluralKeys;
    /**
     * Gets react-i18next specific analysis information
     * @returns React-i18next setup information
     */
    getReactI18nextInfo(): {
        setup: ReturnType<ReactI18nextFileFinder["detectReactI18nextSetup"]>;
        keyStatistics: ReturnType<ReactI18nextKeyFinder["getUsageStatistics"]>;
        namespaceAnalysis: {
            componentName: string;
            namespaces: string[];
            keyCount: number;
        }[];
    };
}
