import type { TypedDataDefinition } from "viem"; import { TypedDataDefinition as TTypedDataDefinition } from "./schemas.js"; import { z } from "./zod.js"; /* Encodes TypedDataDefinition to a JSON-safe format */ export const formatTypedData = ( typedData: TypedDataDefinition, ): z.input => { // viem's TypedDataDefinition uses readonly arrays; our Zod schema uses // mutable ones. The structures are identical at runtime, so the minimal // cast bridges the variance gap without lying about the shape. return TTypedDataDefinition.encode( typedData as unknown as z.output, ); };