/** The display bound on a grant candidate's directory: generous next to a real `PATH_MAX`, tight enough
 *  that the seat cannot become an unbounded prose channel onto an approval card. */
export declare const READ_ROOT_CANDIDATE_DIR_MAX = 1024;
/**
 * The validator for a probe's {@link import("./tool-spec.js").ReversibilityVerdict.readRootCandidate}: the
 * errand `normalizeProbeCause` does for the cause, fail-closed on the disclosure alone — a malformed value
 * yields `undefined`, the ask stands, the card carries no offer. It REFUSES where the cause NEUTRALIZES,
 * per `shell.read_boundary.grant_candidate_is_the_grant`: the cause is prose, so folding a separator out of
 * it keeps it true, while this string IS the grant, and a card showing one spelling while the deployment
 * applies another is the failure the seat prevents.
 */
export declare function normalizeReadRootCandidate(value: unknown): import("./tool-spec.js").ReadRootGrantCandidate | undefined;
