/**
 * Detect frontend-app subtrees: sub-package directories whose package.json
 * declares a UI framework and NO server framework. The ROOT package.json is
 * never classified — without a sub-package boundary there's no way to tell a
 * frontend file from a backend file within a single package, so a lone app
 * yields an empty result and the caller no-ops.
 *
 * Returns absolute directory prefixes (each ending in the platform separator
 * is NOT guaranteed — callers compare with `startsWith(dir + sep)` or exact).
 */
export declare function detectFrontendAppDirs(sourceDir: string): string[];
export interface ViewReachabilityDropRecord {
    name: string;
    /** The frontend-app dirs that contained every reference. */
    referencedOnlyIn: string[];
}
export interface GateViewOnlyOptions {
    /** SpecVerseFacts (mutated in place). */
    facts: {
        entities: any[];
        relationships: any[];
    };
    /** Absolute source root. */
    sourceDir: string;
    /** Max source files to scan before bailing (cost backstop). */
    fileCap?: number;
}
/**
 * Drop TSI-extracted entities that are reachable ONLY from frontend-app
 * subtrees. Mutates `facts.entities` + `facts.relationships`. Returns the
 * drops for logging / tests. No-op (returns []) when there is no
 * frontend/backend split or no eligible entities.
 */
export declare function gateViewOnlyEntities(opts: GateViewOnlyOptions): ViewReachabilityDropRecord[];
//# sourceMappingURL=view-reachability.d.ts.map