/**
 * Derives the secondary project signals that enrich setup prompts and audit
 * policy: code-generation and deployment tooling, LLM integration, static-analysis
 * tools, compliance-sensitive docs, and per-language formatter gaps.
 *
 * These are advisory signals, not hard facts - compliance detection in particular
 * is signal-only and audit policy decides whether a hit matters. Detector tables
 * come from project-stack-data.js; file matching goes through the read-only fs
 * adapter so a missing or unreadable file is a non-match, never a throw.
 */
import type { ProjectSignals, ReadonlyFS } from "../types.js";
/**
 * Count distinct source files under the conventional code roots, used as a coarse
 * project-size signal. Globs only src/lib/app/packages, so generated, vendor, and
 * build output outside those trees is excluded by construction rather than filtered.
 *
 * @param fs - read-only filesystem adapter for the target project
 * @returns the de-duplicated file count across the code roots; 0 when none match
 */
export declare function countSourceFiles(fs: ReadonlyFS): number;
/**
 * Aggregate every secondary signal into one ProjectSignals record for the setup
 * and audit pipelines. The single entry point so callers run detection once and
 * read a complete picture rather than invoking each detector piecemeal.
 *
 * @param fs - read-only filesystem adapter for the target project
 * @param languages - detected languages in precedence order; gates per-language formatter checks
 * @param formatCommand - the project's configured format command, or null when none is detected
 * @returns the populated signal record; list fields are empty (not null) when nothing is detected
 */
export declare function detectProjectSignals(fs: ReadonlyFS, languages: string[], formatCommand: string | null): ProjectSignals;
//# sourceMappingURL=project-stack-signals.d.ts.map