/**
 * Suppression Manager
 * Central class for managing all suppression logic
 */
import type { Vulnerability, ScanFile } from '../types';
import type { SuppressionConfig, SuppressionMatch, SuppressionResult, RuleSuppression, FindingSuppression } from './types';
/**
 * Options for SuppressionManager
 */
export interface SuppressionManagerOptions {
    /** Path to the project root (for finding config files) */
    projectPath: string;
    /** Optional pre-loaded config (skips file loading) */
    config?: SuppressionConfig;
    /** Whether to include expired suppressions (for auditing) */
    includeExpired?: boolean;
}
/**
 * SuppressionManager handles all suppression logic
 *
 * Priority order for suppressions:
 * 1. Inline comment suppressions (highest priority)
 * 2. Config file finding suppressions (by hash)
 * 3. Config file rule suppressions (by category)
 */
export declare class SuppressionManager {
    private config;
    private configPath;
    private configErrors;
    private includeExpired;
    private projectPath;
    private inlineSuppressionCache;
    constructor(options: SuppressionManagerOptions);
    /**
     * Get configuration errors (if any)
     */
    getConfigErrors(): string[];
    /**
     * Get the path to the config file (if found)
     */
    getConfigPath(): string | undefined;
    /**
     * Check if a file path should be ignored entirely
     */
    isPathIgnored(filePath: string): boolean;
    /**
     * Parse inline suppressions for a file
     */
    private getInlineSuppressions;
    /**
     * Check if a finding is suppressed
     *
     * Priority:
     * 1. Inline comment (highest)
     * 2. Config finding suppression (by hash)
     * 3. Config rule suppression (by category)
     */
    isFindingSuppressed(finding: Vulnerability, fileContent?: string): SuppressionMatch;
    /**
     * Apply suppressions to a list of findings
     */
    applySuppressions(findings: Vulnerability[], files: ScanFile[]): SuppressionResult;
    /**
     * Get all suppressions from config
     */
    getAllSuppressions(): {
        rules: RuleSuppression[];
        findings: FindingSuppression[];
    };
    /**
     * Get ignore patterns from config
     */
    getIgnorePatterns(): string[];
    /**
     * Check if suppression system is active (has any suppressions)
     */
    hasSuppressions(): boolean;
    /**
     * Get summary of suppression configuration
     */
    getSummary(): {
        configPath: string | undefined;
        ruleCount: number;
        findingCount: number;
        ignorePatternCount: number;
        hasErrors: boolean;
    };
    /**
     * Clear the inline suppression cache
     * (useful if files have been modified)
     */
    clearCache(): void;
}
//# sourceMappingURL=manager.d.ts.map