import type { z } from 'zod'; /** * Structural fingerprint of a Zod schema (phase 181, T2). * * `ToolDef.inputSchema` is a Zod raw shape whose values are live Zod schema * instances (functions/prototypes) -- these cannot be `JSON.stringify`'d * directly. This walks the schema's internal `._def` and produces a plain, * JSON-serializable description: a type tag, whether the field is optional, * and (recursively) the element type for arrays or the sorted value set for * enums. * * Zod v4 represents `.optional()` as a wrapper node (`_def.type === * 'optional'`, inner schema at `_def.innerType`). That wrapper is unwrapped * here so optionality shows up as an explicit `optional` flag on the * underlying type's description, rather than as its own nesting level -- * matching "type tag + recursively-described inner/element type + enum * values if present + whether optional". */ export declare function describeZodType(schema: z.ZodTypeAny): unknown; /** * Sha256 structural fingerprint of a tool's name, description, and * inputSchema shape. Used to bind an MCP trust-envelope grant (T3+) to the * exact tool definition it was granted against -- so a schema-stable- * looking but behavior-changed server (different description, added/ * removed/retyped field, changed optionality) invalidates prior grants * (revoke-on-version-change, AC-1). */ export declare function computeToolDefHash(tool: { name: string; description: string; inputSchema: z.ZodRawShape; }): string; //# sourceMappingURL=def-hash.d.ts.map