import type { TraceRisk, TraceRiskBand } from '../trace/trace.js';
/**
 * Closed risk table. Bands come from the action name in catalog metadata.
 * A workspace spec cannot lower a band: this module never reads `spec.risk`
 * or `spec.allowedActions`.
 *
 * low:  hover, resize, pan, zoom
 * held: submit, approve, reject, filter, drag
 * anything else is held — an unlisted action is not low
 */
export declare const RISK_EFFECTS: readonly ["observe", "commit", "narrow", "move", "unlisted"];
export declare const RISK_REVERSIBILITIES: readonly ["reversible", "irreversible"];
export declare const RISK_SCOPES: readonly ["view", "record", "query", "layout", "unknown"];
export type RiskEffect = (typeof RISK_EFFECTS)[number];
export type RiskReversibility = (typeof RISK_REVERSIBILITIES)[number];
export type RiskScope = (typeof RISK_SCOPES)[number];
export type RiskAssessment = {
    effect: RiskEffect;
    reversibility: RiskReversibility;
    scope: RiskScope;
    band: TraceRiskBand;
};
export type ClassifiedAction = TraceRisk & RiskAssessment;
export declare const RISK_TABLE: Readonly<Record<string, RiskAssessment>>;
export declare function classifyAction(action: string): RiskAssessment;
/** `allowedActions` from the catalog entry. Do not pass the spec's list. */
export declare function classifyActions(catalogActions: readonly string[]): ClassifiedAction[];
/**
 * Catalog actions win. `spec` is accepted so a caller can pass the hostile
 * document and we can prove it is ignored — including `spec.risk` and
 * `spec.allowedActions`.
 */
export declare function classifyCatalogActions(catalogActions: readonly string[] | undefined, spec?: unknown): ClassifiedAction[];
