/**
 * Helpers for working with ValidationRuleResult. Since v4, `result.issues` is
 * always a present array — consumers iterate it directly without a normalizer.
 */
/**
 * Build a deterministic id from arbitrary parts. Same input → same id across
 * re-runs, so persisted client responses re-attach when validation re-runs.
 *
 * Falls back to the fallback id if the slug is empty.
 */
export declare function make_issue_id(parts: Array<string | number | undefined | null>, fallback: string): string;
/** Canonical clarification id for an issue. Stable across re-runs when issue_id is deterministic. */
export declare function make_clarification_id(content_id: string, rule_id: string, issue_id: string): string;
/**
 * Coerce a possibly-legacy ValidationRuleResult into the v4 shape. Persisted
 * form data from before v4.0.0 may still have `{ has_issue, issue_description }`
 * without an `issues` array — this helper safely upgrades it on read.
 *
 * Cheap: if the input already has `issues`, returns the input unchanged.
 */
export declare function normalize_validation_rule_result<T extends {
    issues?: unknown;
}>(result: T): T & {
    issues: unknown[];
};
/** Coerce a list of possibly-legacy results. */
export declare function normalize_validation_rule_results<T extends {
    issues?: unknown;
}>(results: T[] | undefined): Array<T & {
    issues: unknown[];
}>;
//# sourceMappingURL=validation_result.d.ts.map