/**
 * Next.js client boundary analyzer (T4).
 *
 * Walks `app/**\/*.{tsx,jsx}` files marked with `"use client"` and computes
 * a deterministic ranking score per file from cheap signals (LOC, import
 * counts, dynamic imports, third-party imports). Per design D5 the score
 * is signal-based — no actual bundle bytes are estimated.
 */
import type Parser from "web-tree-sitter";
export interface ComponentSignals {
    loc: number;
    import_count: number;
    dynamic_import_count: number;
    third_party_imports: string[];
}
export interface BoundaryEntry {
    rank: number;
    path: string;
    signals: ComponentSignals;
    score: number;
}
export interface NextjsBoundaryResult {
    entries: BoundaryEntry[];
    client_count: number;
    total_client_loc: number;
    largest_offender: BoundaryEntry | null;
    workspaces_scanned: string[];
    parse_failures: string[];
    scan_errors: string[];
    limitations: string[];
}
export interface NextjsBoundaryOptions {
    workspace?: string | undefined;
    top_n?: number | undefined;
}
export declare function extractComponentSignals(_filePath: string, source: string, tree: Parser.Tree): ComponentSignals;
export declare function rankingScore(signals: ComponentSignals): number;
export declare function nextjsBoundaryAnalyzer(repo: string, options?: NextjsBoundaryOptions): Promise<NextjsBoundaryResult>;
//# sourceMappingURL=nextjs-boundary-tools.d.ts.map