import type { CriterionMatch } from '../../types/index.js';
export { extractBddEntities } from './bdd-entity-extractor.js';
/**
 * Extracts meaningful keywords from a criterion text.
 * Captures: camelCase/PascalCase identifiers, route patterns,
 * quoted strings, and significant technical terms.
 */
export declare function extractKeywords(criterion: string): string[];
/**
 * Build a shared file-contents cache by scanning the project once.
 * Caps the scan at MAX_FILES to bound memory and I/O.
 */
export declare function buildFileContentsCache(projectPath: string, signal?: AbortSignal): Promise<Map<string, string>>;
/**
 * Scans the codebase for evidence matching a single criterion.
 * Reuses a pre-built fileContents cache to avoid re-reading files per criterion.
 *
 * Entity-based scoring (SPEC-786):
 *   - When BDD entities > 0: score by entity coverage (all found → verified, any found → partial, none → unverified)
 *   - When BDD entities = 0 AND all keywords are BDD prose: criterion is a behavioural assertion → partial
 *   - When BDD entities = 0 AND criterion is empty: → unverified
 *   - Otherwise: fall back to classic keyword scoring (2+ → verified, 1 → partial, 0 → unverified)
 */
export declare function matchCriterionFromCache(criterion: string, fileContents: Map<string, string>): CriterionMatch;
/**
 * Scans the codebase for evidence matching the criterion.
 * Accepts an optional pre-built fileContents cache to avoid redundant I/O.
 * When fileContents is not provided, performs a single glob + read (capped at MAX_FILES).
 *
 * Prefer passing fileContents when checking multiple criteria against the same project
 * to share a single read pass across all criteria.
 */
export declare function matchCriterion(criterion: string, projectPath: string, signal?: AbortSignal, fileContents?: Map<string, string>): Promise<CriterionMatch>;
/**
 * Match multiple criteria against the same project in a single file-read pass.
 * This is the preferred entry point when checking N criteria — O(F) instead of O(N×F).
 */
export declare function matchCriteria(criteria: string[], projectPath: string, signal?: AbortSignal, fileContents?: Map<string, string>): Promise<CriterionMatch[]>;
//# sourceMappingURL=criterion-matcher.d.ts.map