/**
 * Pattern Analyzer
 *
 * Detects architectural patterns and framework choices from codebase.
 * Categories: State Management, API Style, Auth, Database, Testing
 */
import type { RepoInfo } from './repo-scanner.js';
export interface Pattern {
    category: PatternCategory;
    name: string;
    confidence: number;
    evidence: Evidence[];
    decision: string;
}
export type PatternCategory = 'state-management' | 'api-style' | 'auth' | 'database' | 'testing' | 'other';
export interface Evidence {
    file: string;
    lineNumber?: number;
    snippet?: string;
    reason: string;
}
export interface Inconsistency {
    type: 'mixed-patterns' | 'outdated-deps' | 'code-duplication' | 'large-files';
    severity: 'P1' | 'P2' | 'P3';
    description: string;
    affectedFiles: string[];
    recommendation: string;
}
export interface AnalysisResult {
    patterns: Pattern[];
    inconsistencies: Inconsistency[];
}
/**
 * Analyzes codebases to detect patterns and architectural decisions.
 */
export declare class PatternAnalyzer {
    private repos;
    constructor(repos: RepoInfo[]);
    /**
     * Analyze all patterns across all repos.
     */
    analyzeAll(): Promise<AnalysisResult>;
    /**
     * Detect state management patterns (Redux, Context API, MobX, Zustand).
     */
    detectStateManagement(repo: RepoInfo): Promise<Pattern[]>;
    /**
     * Detect API style patterns (REST, GraphQL, gRPC).
     */
    detectAPIStyle(repo: RepoInfo): Promise<Pattern[]>;
    /**
     * Detect authentication strategy.
     */
    detectAuthStrategy(repo: RepoInfo): Promise<Pattern[]>;
    /**
     * Detect database access patterns.
     */
    detectDatabaseAccess(repo: RepoInfo): Promise<Pattern[]>;
    /**
     * Detect testing approach.
     */
    detectTestingApproach(repo: RepoInfo): Promise<Pattern[]>;
    /**
     * Detect inconsistencies (mixed patterns, TS/JS mix).
     */
    detectInconsistencies(): Promise<Inconsistency[]>;
    private findReduxEvidence;
    private findContextAPIEvidence;
    private findMobXEvidence;
    private findZustandEvidence;
    private findRESTEvidence;
    private findGraphQLEvidence;
    private findJWTEvidence;
    private findOAuthEvidence;
    private findPrismaEvidence;
    private findTypeORMEvidence;
    private findJestEvidence;
    private findVitestEvidence;
    private countFiles;
    private countPatternUsage;
}
//# sourceMappingURL=pattern-analyzer.d.ts.map