import type { TypeAliasEntry, VariableType } from "../../types.js"; /** * A sentence naming what is wrong with a rejected value, or null. * * CONTAINMENT RULE: this walk NEVER decides whether to reject — * `isAssignable` already has. It only annotates, and null means "cannot * localize, use the general message". Deliberately partial, so it never * grows into a second comparer that can disagree with the checker. * * Every sub-question goes through `isAssignable` too. Comparing printed * names would mis-blame an aliased property: `name: Name` given "Alice" * reads as wrong while the real problem, a missing `age`, goes unnamed. */ export declare function explainMismatch(value: unknown, expected: VariableType, aliases: Record, path?: string): string | null;