export interface SecretPattern {
    name: string;
    pattern: RegExp;
    severity: 'critical' | 'high' | 'medium' | 'low';
    description: string;
}
export interface SecurityFinding {
    file: string;
    line: number;
    column: number;
    match: string;
    pattern: SecretPattern;
    context: string;
}
export interface ScanResult {
    passed: boolean;
    findings: SecurityFinding[];
    scannedFiles: number;
    duration: number;
    summary: {
        critical: number;
        high: number;
        medium: number;
        low: number;
    };
}
export interface ScanOptions {
    directory: string;
    exclude?: string[];
    include?: string[];
    skipPatterns?: string[];
    maxFileSize?: number;
    failOnSeverity?: 'critical' | 'high' | 'medium' | 'low';
}
/**
 * Common secret patterns to detect
 */
export declare const SECRET_PATTERNS: SecretPattern[];
/**
 * Pre-deployment security scanner
 */
export declare class PreDeployScanner {
    private patterns;
    private excludeDirs;
    private excludeFiles;
    private maxFileSize;
    constructor(options?: {
        customPatterns?: SecretPattern[];
        excludeDirs?: string[];
        excludeFiles?: string[];
        maxFileSize?: number;
    });
    /**
     * Scan a directory for secrets
     */
    scan(options: ScanOptions): Promise<ScanResult>;
    /**
     * Scan content for secrets
     */
    private scanContent;
    /**
     * Check if a match is likely a placeholder/example
     */
    private isLikelyPlaceholder;
    /**
     * Heuristic for `this match has way too little entropy to be a real secret`.
     * Real cryptographic keys spread their characters across the alphabet; ASCII
     * art dividers, padding placeholders, and runs of repeated chars do not.
     *
     * Drops a match when EITHER:
     *   - fewer than 8 distinct characters across the whole string, OR
     *   - any single character repeats 4+ times consecutively
     *
     * A real 40-char base64 key has ~30+ distinct chars and no long runs.
     */
    private isLowEntropy;
    /**
     * Mask a secret for display
     */
    private maskSecret;
    /**
     * Get all files to scan in a directory
     */
    private getFilesToScan;
    /**
     * Check if a file should be excluded
     */
    private shouldExcludeFile;
    /**
     * Add custom patterns
     */
    addPattern(pattern: SecretPattern): void;
    /**
     * Get all registered patterns
     */
    getPatterns(): SecretPattern[];
}
/**
 * Convenience function to scan a directory
 */
export declare function scanForSecrets(options: ScanOptions): Promise<ScanResult>;
/**
 * Format scan results for CLI output
 */
export declare function formatScanResults(result: ScanResult): string;
