/**
 * Pure derivations for the business workspace's **ranked at-risk list** — turning a model's per-record
 * scoring results (`MJ: Process Run Details` payloads) into a "who to focus on" list sorted by risk, and
 * the model's global feature importance into plain-language "what's driving this" drivers.
 *
 * Honest about the gap: MJ stores only GLOBAL feature importance (not per-record/SHAP), so we surface the
 * top global drivers once for the whole prediction rather than fabricating per-member attribution.
 *
 * Framework-free + deterministic → unit-tested with no Angular.
 */
/** A scored record in the at-risk list. */
export interface AtRiskRow {
    recordId: string;
    /** 0–1 prediction score (probability / risk). */
    score: number;
    /** Risk as a 0–100 integer, for display. */
    riskPct: number;
    /** Predicted class label, when present (classification). */
    class: string | null;
    /** Risk band, for color. */
    band: 'high' | 'medium' | 'low';
}
/** The raw per-record detail the list is built from (a slice of `MJ: Process Run Details`). */
export interface RunDetailLike {
    recordId: string;
    ResultPayload?: string | null;
}
/** Parse + rank the per-record predictions into the at-risk list (highest risk first). */
export declare function parseAtRiskRows(details: RunDetailLike[]): AtRiskRow[];
/**
 * The top plain-language drivers for the whole prediction, from the model's global feature importance.
 * Accepts the object form (`{"MembershipType=Student": 0.9, ...}`) or the array form
 * (`[{feature, importance}]`), strips one-hot `=value` suffixes, de-duplicates, and returns the
 * highest-importance feature names — so a business user sees "what's driving this", not raw weights.
 */
export declare function topGlobalDrivers(featureImportanceJson: string | null | undefined, n?: number): string[];
//# sourceMappingURL=at-risk.view-models.d.ts.map