/**
 * Options for scanning a directory for secrets
 */
export interface ScanOptions {
    /**
     * Directory to scan (default: current directory)
     */
    directory?: string;
    /**
     * Scan from project root
     */
    root?: boolean;
    /**
     * File patterns to exclude
     */
    excludeFiles?: string[];
    /**
     * Directory patterns to exclude
     */
    excludeDirs?: string[];
    /**
     * Check for potentially missed secrets
     */
    checkMissed?: boolean;
    /**
     * Include additional information
     */
    verbose?: boolean;
    /**
     * Output file path
     */
    output?: string;
    /**
     * Enable file size limits (default: false)
     */
    limitFileSize?: boolean;
    /**
     * Maximum file size to scan in bytes (default: 0, no limit)
     */
    maxFileSize?: number;
    /**
     * Scan git history (default: false)
     */
    scanGitHistory?: boolean;
    /**
     * Starting commit for git history scan
     */
    fromCommit?: string;
    /**
     * Ending commit for git history scan
     */
    toCommit?: string;
    /**
     * Enrich scan results with git blame information (default: true)
     */
    enrichWithGitInfo?: boolean;
    /**
     * Git repository path for external scans
     */
    gitRepoPath?: string;
    /**
     * Whether to include node_modules in the scan (not recommended)
     */
    includeNodeModules?: boolean;
}
/**
 * Secret details returned from scanning
 */
export interface Secret {
    /**
     * File path where the secret was found
     */
    file: string;
    /**
     * Line number where the secret was found
     */
    line: number;
    /**
     * Secret type (e.g. 'AWS Access Key', 'API Key', etc.)
     */
    types: string[];
    /**
     * Whether this is likely a false positive
     */
    is_false_positive: boolean;
    /**
     * A hash of the secret for reporting without exposing the value
     */
    hashed_secret?: string;
    /**
     * Git commit hash where the secret was found
     */
    commit?: string;
    /**
     * Author who committed the secret
     */
    author?: string;
    /**
     * Email of the author who committed the secret
     */
    email?: string;
    /**
     * Date when the secret was committed
     */
    date?: string;
    /**
     * Commit message when the secret was added
     */
    message?: string;
}
/**
 * A potentially missed secret
 */
export interface MissedSecret {
    /**
     * File path where the secret was found
     */
    file: string;
    /**
     * Line number where the secret was found
     */
    line: number;
    /**
     * Type of secret
     */
    type: string;
}
/**
 * Results from a secret scan
 */
export interface ScanResults {
    /**
     * List of secrets found
     */
    secrets: Secret[];
    /**
     * List of potentially missed secrets
     */
    missed_secrets: MissedSecret[];
    /**
     * Whether any files were truncated due to size
     */
    truncated?: boolean;
}
