export interface FileEntry {
    path: string;
    type: "file" | "dir";
    size?: number;
    extension?: string;
}
export interface FileSnippet {
    path: string;
    content: string;
    lines: number;
}
export interface ProjectSnapshot {
    scannedAt: string;
    projectRoot: string;
    fileTree: FileEntry[];
    keyFiles: FileSnippet[];
    stats: {
        totalFiles: number;
        totalDirs: number;
        routeFiles: number;
        componentFiles: number;
        apiFiles: number;
        schemaFiles: number;
        testFiles: number;
        i18nFiles: number;
        securitySurface: number;
    };
}
export interface ContextDiffItem {
    type: "missing_in_context" | "missing_in_code" | "outdated" | "suggestion";
    category: "route" | "component" | "entity" | "config" | "general";
    description: string;
    suggestion: string;
}
export interface ContextDiffReport {
    assessedAt: string;
    overallProgress: number;
    progressSummary: string;
    diffs: ContextDiffItem[];
    suggestedContextMerge: any;
}
export declare class ProjectScanner {
    private projectRoot;
    private ai;
    constructor(projectRoot?: string);
    /**
     * Shared state for budget-aware scanning
     */
    private scanState;
    /**
     * Check if scan budget (time or file count) is exhausted
     */
    private isBudgetExhausted;
    /**
     * Fast file discovery using bash commands (git or find)
     */
    private discoverFilesBash;
    /**
     * Full scan: priority-based walk + read key files + build snapshot
     *
     * Scanning strategy:
     * 1. Read root-level config files directly (no walk needed)
     * 2. Walk Tier 1 priority dirs (app/, pages/) — defines architecture
     * 3. Walk Tier 2 priority dirs (components/, lib/, hooks/) — design system & logic
     * 4. Walk remaining top-level dirs only if budget allows
     * 5. Read key files from collected entries (primary then secondary patterns)
     */
    scan(onProgress?: (message: string) => void): Promise<ProjectSnapshot>;
    /**
     * Recursively walk a directory with budget-aware early termination
     */
    private walkDirectory;
    /**
     * Categorize a file for stats tracking (extracted for clarity)
     */
    private categorizeFile;
    /**
     * Read a file, truncated to MAX_FILE_READ_SIZE
     */
    private readFileSnippet;
    /**
     * Compare a snapshot against context.json and get LLM assessment
     */
    assessProgress(snapshot: ProjectSnapshot, existingContext: any): Promise<ContextDiffReport>;
    /**
     * Display the scan results nicely
     */
    displaySnapshot(snapshot: ProjectSnapshot): void;
    /**
     * Display the diff report nicely
     */
    displayReport(report: ContextDiffReport): void;
    /**
     * Get or initialize AICore safely
     */
    private getAICore;
    private makeProgressBar;
}
//# sourceMappingURL=ProjectScanner.d.ts.map