/**
 * Analyzer Configuration System
 * Provides configurable rules and thresholds for all analyzers
 */
export interface AnalyzerConfig {
    enabled: boolean;
    severity: {
        critical: number;
        high: number;
        medium: number;
        low: number;
    };
    security?: SecurityAnalyzerConfig;
    performance?: PerformanceAnalyzerConfig;
    documentation?: DocumentationAnalyzerConfig;
    codeQuality?: CodeQualityAnalyzerConfig;
    crossPlatform?: CrossPlatformAnalyzerConfig;
    unusedCode?: UnusedCodeAnalyzerConfig;
}
export interface SecurityAnalyzerConfig {
    enabled: boolean;
    rules: {
        hardcodedSecrets: {
            enabled: boolean;
            severity: 'critical' | 'high' | 'medium' | 'low';
            patterns?: RegExp[];
            excludePatterns?: RegExp[];
        };
        vulnerableDependencies: {
            enabled: boolean;
            severity: 'critical' | 'high' | 'medium' | 'low';
            checkDevDependencies: boolean;
            auditLevel: 'low' | 'moderate' | 'high' | 'critical';
        };
        owaspCompliance: {
            enabled: boolean;
            minComplianceScore: number;
            categories: string[];
        };
        entropyAnalysis: {
            enabled: boolean;
            minEntropy: number;
            fileExtensions: string[];
            excludePaths: string[];
        };
    };
    thresholds: {
        criticalIssuesMax: number;
        highIssuesMax: number;
        minSecurityScore: number;
        entropyThreshold: number;
    };
}
export interface PerformanceAnalyzerConfig {
    enabled: boolean;
    rules: {
        bundleSize: {
            enabled: boolean;
            maxSizeKB: number;
            warnSizeKB: number;
            checkSourceMaps: boolean;
        };
        complexityAnalysis: {
            enabled: boolean;
            maxCyclomaticComplexity: number;
            maxCognitiveComplexity: number;
            maxFunctionLength: number;
            maxFileLength: number;
        };
        memoryLeaks: {
            enabled: boolean;
            patterns: string[];
            severity: 'critical' | 'high' | 'medium' | 'low';
        };
        caching: {
            enabled: boolean;
            minCacheableResponseTime: number;
            recommendedCacheDuration: number;
        };
    };
    thresholds: {
        maxLoadTimeMs: number;
        maxMemoryUsageMB: number;
        minPerformanceScore: number;
    };
}
export interface DocumentationAnalyzerConfig {
    enabled: boolean;
    rules: {
        readmeQuality: {
            enabled: boolean;
            requiredSections: string[];
            minWordCount: number;
            requireExamples: boolean;
            requireBadges: boolean;
        };
        apiDocumentation: {
            enabled: boolean;
            requireJSDoc: boolean;
            requireParamDescriptions: boolean;
            requireReturnDescriptions: boolean;
            requireExamples: boolean;
            minCoveragePercent: number;
        };
        changelog: {
            enabled: boolean;
            requireSemanticVersioning: boolean;
            requireDates: boolean;
            format: 'keepachangelog' | 'conventional' | 'custom';
        };
        codeComments: {
            enabled: boolean;
            minCommentRatio: number;
            requireComplexFunctionComments: boolean;
            complexityThreshold: number;
        };
    };
    thresholds: {
        minDocumentationScore: number;
        minReadmeScore: number;
        minAPIDocCoverage: number;
    };
}
export interface CodeQualityAnalyzerConfig {
    enabled: boolean;
    rules: {
        duplicateCode: {
            enabled: boolean;
            minTokens: number;
            minLines: number;
            threshold: number;
        };
        codeSmells: {
            enabled: boolean;
            detectLongMethods: boolean;
            detectLargeClasses: boolean;
            detectDeepNesting: boolean;
            maxNestingDepth: number;
        };
        namingConventions: {
            enabled: boolean;
            variablePattern: RegExp;
            functionPattern: RegExp;
            classPattern: RegExp;
            constantPattern: RegExp;
        };
        testCoverage: {
            enabled: boolean;
            minCoverage: number;
            requireUnitTests: boolean;
            requireIntegrationTests: boolean;
        };
    };
    thresholds: {
        maxDuplicatePercent: number;
        maxComplexity: number;
        minMaintainabilityIndex: number;
        minTestCoverage: number;
    };
}
export interface CrossPlatformAnalyzerConfig {
    enabled: boolean;
    targetPlatforms: Array<'windows' | 'macOS' | 'linux' | 'unix'>;
    rules: {
        pathHandling: {
            enabled: boolean;
            severity: 'critical' | 'high' | 'medium' | 'low';
            requirePathModule: boolean;
        };
        shellCommands: {
            enabled: boolean;
            allowedCommands: string[];
            requireCrossPlatformChecks: boolean;
        };
        filePermissions: {
            enabled: boolean;
            checkSymlinks: boolean;
            checkExecutePermissions: boolean;
        };
        environmentVariables: {
            enabled: boolean;
            requireFallbacks: boolean;
            platformSpecificVars: {
                [key: string]: string[];
            };
        };
    };
    thresholds: {
        minCompatibilityScore: number;
        maxPlatformSpecificCode: number;
    };
}
export interface UnusedCodeAnalyzerConfig {
    enabled: boolean;
    rules: {
        unusedFunctions: {
            enabled: boolean;
            excludePatterns: string[];
            checkPrivateMethods: boolean;
            checkExports: boolean;
        };
        unusedImports: {
            enabled: boolean;
            checkTypeImports: boolean;
            checkSideEffectImports: boolean;
        };
        unusedVariables: {
            enabled: boolean;
            checkGlobalVariables: boolean;
            checkParameters: boolean;
            allowUnusedCatchErrors: boolean;
        };
        deadCode: {
            enabled: boolean;
            checkUnreachableCode: boolean;
            checkEmptyBlocks: boolean;
            checkCommentedCode: boolean;
        };
    };
    thresholds: {
        maxUnusedPercent: number;
        minActiveCodeRatio: number;
    };
}
export declare const defaultAnalyzerConfig: AnalyzerConfig;
export declare class AnalyzerConfigLoader {
    private config;
    constructor(customConfig?: Partial<AnalyzerConfig>);
    private mergeConfig;
    private mergeAnalyzerConfig;
    getConfig(): AnalyzerConfig;
    getSecurityConfig(): SecurityAnalyzerConfig | undefined;
    getPerformanceConfig(): PerformanceAnalyzerConfig | undefined;
    getDocumentationConfig(): DocumentationAnalyzerConfig | undefined;
    getCodeQualityConfig(): CodeQualityAnalyzerConfig | undefined;
    getCrossPlatformConfig(): CrossPlatformAnalyzerConfig | undefined;
    getUnusedCodeConfig(): UnusedCodeAnalyzerConfig | undefined;
    static loadFromFile(configPath: string): Promise<AnalyzerConfigLoader>;
    saveToFile(configPath: string): Promise<void>;
}
//# sourceMappingURL=analyzer-config.d.ts.map