export interface ScanResult {
    type: 'error' | 'warning' | 'info';
    category: 'security' | 'links' | 'performance' | 'accessibility' | 'seo';
    message: string;
    file?: string;
    line?: number;
    range?: {
        startLine: number;
        startColumn: number;
        endLine: number;
        endColumn: number;
    };
    severity: 'high' | 'medium' | 'low';
    ruleId: string;
    confidence: number;
    match?: string;
    fingerprint?: string;
    fix?: string;
    fixEdits?: FixEdit[];
    helpUri?: string;
    suppressed?: boolean;
    suppressionReason?: string;
}
export interface ScanOptions {
    directory: string;
    port?: number;
    skipBuild?: boolean;
    include?: string[];
    exclude?: string[];
    verbose?: boolean;
    minConfidence?: number;
    enabledRules?: string[];
    disabledRules?: string[];
    failOn?: 'none' | 'warning' | 'error';
    baselinePath?: string;
    updateBaseline?: boolean;
    useBaseline?: boolean;
    changedFiles?: string[];
    gitChangedSince?: string;
    profile?: 'auto' | 'react' | 'next' | 'python' | 'vue' | 'rails';
    gitHistoryDepth?: number;
    crawlInternal?: boolean;
    crawlStartUrl?: string;
    crawlDepth?: number;
    crawlTimeoutMs?: number;
    fast?: boolean;
    skipPatterns?: string[];
    maxFileSize?: number;
    focusCritical?: boolean;
    focusSecurity?: boolean;
    focusNew?: boolean;
    detailed?: boolean;
    quickTopN?: number;
    json?: boolean;
    color?: 'auto' | 'always' | 'never';
    groupBy?: 'category' | 'file' | 'rule' | 'severity';
    minSeverity?: 'low' | 'medium' | 'high';
    maxIssues?: number;
    showContext?: boolean;
    explain?: boolean;
    showConfidence?: boolean;
    showSuppressed?: boolean;
    ignoreSuppressed?: boolean;
    clearCache?: boolean;
    noCache?: boolean;
}
export interface FixEdit {
    file: string;
    startLine: number;
    startColumn: number;
    endLine: number;
    endColumn: number;
    replacement: string;
}
export interface Scanner {
    name: string;
    scan(options: ScanOptions): Promise<ScanResult[]>;
}
