import type { AxisName, AxisScore, Finding, GradeResult, PerRuleOpportunity } from "./types.js"; export type MaturityTier = "Foundational" | "Managed" | "Defined" | "Quantitative" | "Autonomous"; /** * Map a numeric score (or "N/A") to a CMMI-style maturity tier. * Boundaries: 0-19 Foundational, 20-39 Managed, 40-59 Defined, * 60-79 Quantitative, 80-100 Autonomous. */ export declare function scoreTotier(score: number | "N/A"): MaturityTier | "N/A"; export { score, scoreFromFindings, SCORING_K } from "./scorer-v2-legacy.js"; export type { AxisFindings, AxisScoreV2, ScoreResult, ScoreOptions } from "./scorer-v2-legacy.js"; export type ScoreModel = "v2" | "v3"; export declare const DEFAULT_SCORE_MODEL: ScoreModel; export interface AuditScoreBundle { schemaVersion: 2 | 3; scoringVersion: string; finalScore: number | "N/A"; tier: MaturityTier | "N/A"; grade: GradeResult; axes: AxisScore[]; } /** * Resolve which scoring model to run for this audit. Precedence: explicit * CLI flag > env var > config file > `DEFAULT_SCORE_MODEL`. Throws on any * resolved value outside `["v2", "v3"]` so a typo in .lyse.yaml or * LYSE_SCORE_MODEL fails loudly instead of silently falling back. */ export declare function resolveScoreModel(sources: { flag?: string; env?: string; config?: string; }): ScoreModel; /** * Score an audit under the given model, returning a version-stamped bundle * ready to spread into `AuditResult`. v2 is the legacy severity-weighted * scorer (scorer-v2-legacy.ts); v3 is the clean-rate-of-opportunity scorer * (scorer-v3.ts). The two formulas are NOT comparable — schemaVersion and * scoringVersion travel together so consumers can tell which ran. */ export declare function scoreAudit(model: ScoreModel, run: { findings: Finding[]; opportunitiesByAxis: Record; perRuleOpportunities: PerRuleOpportunity[]; }, opts?: { minSampleSize?: number; aiGovernanceGrace?: number; }): AuditScoreBundle;