ox 1.0.0-beta.8 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/CHANGELOG.md +1143 -0
  2. package/dist/core/Abi.d.ts +6 -2
  3. package/dist/core/Abi.d.ts.map +1 -1
  4. package/dist/core/Abi.js +6 -3
  5. package/dist/core/Abi.js.map +1 -1
  6. package/dist/core/AbiConstructor.d.ts +2 -1
  7. package/dist/core/AbiConstructor.d.ts.map +1 -1
  8. package/dist/core/AbiConstructor.js +2 -2
  9. package/dist/core/AbiConstructor.js.map +1 -1
  10. package/dist/core/AbiError.d.ts +3 -1
  11. package/dist/core/AbiError.d.ts.map +1 -1
  12. package/dist/core/AbiError.js +2 -2
  13. package/dist/core/AbiError.js.map +1 -1
  14. package/dist/core/AbiEvent.d.ts +3 -1
  15. package/dist/core/AbiEvent.d.ts.map +1 -1
  16. package/dist/core/AbiEvent.js +2 -2
  17. package/dist/core/AbiEvent.js.map +1 -1
  18. package/dist/core/AbiFunction.d.ts +3 -1
  19. package/dist/core/AbiFunction.d.ts.map +1 -1
  20. package/dist/core/AbiFunction.js +2 -2
  21. package/dist/core/AbiFunction.js.map +1 -1
  22. package/dist/core/AbiItem.d.ts +6 -3
  23. package/dist/core/AbiItem.d.ts.map +1 -1
  24. package/dist/core/AbiItem.js +9 -7
  25. package/dist/core/AbiItem.js.map +1 -1
  26. package/dist/core/AbiParameter.d.ts +88 -0
  27. package/dist/core/AbiParameter.d.ts.map +1 -0
  28. package/dist/core/AbiParameter.js +82 -0
  29. package/dist/core/AbiParameter.js.map +1 -0
  30. package/dist/core/AbiParameters.d.ts +58 -2
  31. package/dist/core/AbiParameters.d.ts.map +1 -1
  32. package/dist/core/AbiParameters.js +60 -6
  33. package/dist/core/AbiParameters.js.map +1 -1
  34. package/dist/core/Rlp.d.ts +27 -5
  35. package/dist/core/Rlp.d.ts.map +1 -1
  36. package/dist/core/Rlp.js +40 -4
  37. package/dist/core/Rlp.js.map +1 -1
  38. package/dist/core/RpcSchema.d.ts +2 -2
  39. package/dist/core/internal/abiParameters.d.ts.map +1 -1
  40. package/dist/core/internal/abiParameters.js +21 -3
  41. package/dist/core/internal/abiParameters.js.map +1 -1
  42. package/dist/core/internal/human-readable/errors.d.ts +103 -0
  43. package/dist/core/internal/human-readable/errors.d.ts.map +1 -0
  44. package/dist/core/internal/human-readable/errors.js +142 -0
  45. package/dist/core/internal/human-readable/errors.js.map +1 -0
  46. package/dist/core/internal/human-readable/formatAbi.d.ts +19 -0
  47. package/dist/core/internal/human-readable/formatAbi.d.ts.map +1 -0
  48. package/dist/core/internal/human-readable/formatAbi.js +18 -0
  49. package/dist/core/internal/human-readable/formatAbi.js.map +1 -0
  50. package/dist/core/internal/human-readable/formatAbiItem.d.ts +23 -0
  51. package/dist/core/internal/human-readable/formatAbiItem.d.ts.map +1 -0
  52. package/dist/core/internal/human-readable/formatAbiItem.js +25 -0
  53. package/dist/core/internal/human-readable/formatAbiItem.js.map +1 -0
  54. package/dist/core/internal/human-readable/formatAbiParameter.d.ts +41 -0
  55. package/dist/core/internal/human-readable/formatAbiParameter.d.ts.map +1 -0
  56. package/dist/core/internal/human-readable/formatAbiParameter.js +36 -0
  57. package/dist/core/internal/human-readable/formatAbiParameter.js.map +1 -0
  58. package/dist/core/internal/human-readable/formatAbiParameters.d.ts +26 -0
  59. package/dist/core/internal/human-readable/formatAbiParameters.d.ts.map +1 -0
  60. package/dist/core/internal/human-readable/formatAbiParameters.js +19 -0
  61. package/dist/core/internal/human-readable/formatAbiParameters.js.map +1 -0
  62. package/dist/core/internal/human-readable/parseAbi.d.ts +22 -0
  63. package/dist/core/internal/human-readable/parseAbi.d.ts.map +1 -0
  64. package/dist/core/internal/human-readable/parseAbi.js +22 -0
  65. package/dist/core/internal/human-readable/parseAbi.js.map +1 -0
  66. package/dist/core/internal/human-readable/parseAbiItem.d.ts +23 -0
  67. package/dist/core/internal/human-readable/parseAbiItem.d.ts.map +1 -0
  68. package/dist/core/internal/human-readable/parseAbiItem.js +30 -0
  69. package/dist/core/internal/human-readable/parseAbiItem.js.map +1 -0
  70. package/dist/core/internal/human-readable/parseAbiParameter.d.ts +28 -0
  71. package/dist/core/internal/human-readable/parseAbiParameter.d.ts.map +1 -0
  72. package/dist/core/internal/human-readable/parseAbiParameter.js +32 -0
  73. package/dist/core/internal/human-readable/parseAbiParameter.js.map +1 -0
  74. package/dist/core/internal/human-readable/parseAbiParameters.d.ts +38 -0
  75. package/dist/core/internal/human-readable/parseAbiParameters.d.ts.map +1 -0
  76. package/dist/core/internal/human-readable/parseAbiParameters.js +39 -0
  77. package/dist/core/internal/human-readable/parseAbiParameters.js.map +1 -0
  78. package/dist/core/internal/human-readable/regex.d.ts +9 -0
  79. package/dist/core/internal/human-readable/regex.d.ts.map +1 -0
  80. package/dist/core/internal/human-readable/regex.js +12 -0
  81. package/dist/core/internal/human-readable/regex.js.map +1 -0
  82. package/dist/core/internal/human-readable/runtime/cache.d.ts +22 -0
  83. package/dist/core/internal/human-readable/runtime/cache.d.ts.map +1 -0
  84. package/dist/core/internal/human-readable/runtime/cache.js +86 -0
  85. package/dist/core/internal/human-readable/runtime/cache.js.map +1 -0
  86. package/dist/core/internal/human-readable/runtime/signatures.d.ts +39 -0
  87. package/dist/core/internal/human-readable/runtime/signatures.d.ts.map +1 -0
  88. package/dist/core/internal/human-readable/runtime/signatures.js +67 -0
  89. package/dist/core/internal/human-readable/runtime/signatures.js.map +1 -0
  90. package/dist/core/internal/human-readable/runtime/structs.d.ts +3 -0
  91. package/dist/core/internal/human-readable/runtime/structs.d.ts.map +1 -0
  92. package/dist/core/internal/human-readable/runtime/structs.js +79 -0
  93. package/dist/core/internal/human-readable/runtime/structs.js.map +1 -0
  94. package/dist/core/internal/human-readable/runtime/utils.d.ts +205 -0
  95. package/dist/core/internal/human-readable/runtime/utils.d.ts.map +1 -0
  96. package/dist/core/internal/human-readable/runtime/utils.js +232 -0
  97. package/dist/core/internal/human-readable/runtime/utils.js.map +1 -0
  98. package/dist/core/internal/human-readable/types/signatures.d.ts +38 -0
  99. package/dist/core/internal/human-readable/types/signatures.d.ts.map +1 -0
  100. package/dist/core/internal/human-readable/types/signatures.js +2 -0
  101. package/dist/core/internal/human-readable/types/signatures.js.map +1 -0
  102. package/dist/core/internal/human-readable/types/structs.d.ts +48 -0
  103. package/dist/core/internal/human-readable/types/structs.d.ts.map +1 -0
  104. package/dist/core/internal/human-readable/types/structs.js +2 -0
  105. package/dist/core/internal/human-readable/types/structs.js.map +1 -0
  106. package/dist/core/internal/human-readable/types/utils.d.ts +163 -0
  107. package/dist/core/internal/human-readable/types/utils.d.ts.map +1 -0
  108. package/dist/core/internal/human-readable/types/utils.js +2 -0
  109. package/dist/core/internal/human-readable/types/utils.js.map +1 -0
  110. package/dist/core/internal/human-readable/types.d.ts +29 -0
  111. package/dist/core/internal/human-readable/types.d.ts.map +1 -0
  112. package/dist/core/internal/human-readable/types.js +2 -0
  113. package/dist/core/internal/human-readable/types.js.map +1 -0
  114. package/dist/core/internal/rpcSchemas/eth.d.ts +36 -0
  115. package/dist/core/internal/rpcSchemas/eth.d.ts.map +1 -1
  116. package/dist/erc4337/EntryPoint.d.ts +1072 -1
  117. package/dist/erc4337/EntryPoint.d.ts.map +1 -1
  118. package/dist/erc4337/EntryPoint.js +872 -0
  119. package/dist/erc4337/EntryPoint.js.map +1 -1
  120. package/dist/erc4337/RpcSchema.d.ts +2 -2
  121. package/dist/erc4337/RpcSchema.d.ts.map +1 -1
  122. package/dist/erc4337/UserOperation.d.ts +39 -10
  123. package/dist/erc4337/UserOperation.d.ts.map +1 -1
  124. package/dist/erc4337/UserOperation.js +62 -48
  125. package/dist/erc4337/UserOperation.js.map +1 -1
  126. package/dist/erc4337/UserOperationGas.d.ts +9 -5
  127. package/dist/erc4337/UserOperationGas.d.ts.map +1 -1
  128. package/dist/erc4337/UserOperationGas.js +17 -15
  129. package/dist/erc4337/UserOperationGas.js.map +1 -1
  130. package/dist/erc4337/UserOperationReceipt.d.ts +4 -4
  131. package/dist/erc4337/UserOperationReceipt.d.ts.map +1 -1
  132. package/dist/erc4337/UserOperationReceipt.js.map +1 -1
  133. package/dist/index.d.ts +37 -0
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.js +37 -0
  136. package/dist/index.js.map +1 -1
  137. package/dist/tempo/Channel.d.ts +8 -14
  138. package/dist/tempo/Channel.d.ts.map +1 -1
  139. package/dist/tempo/Channel.js +4 -8
  140. package/dist/tempo/Channel.js.map +1 -1
  141. package/dist/tempo/KeyAuthorization.d.ts +5 -5
  142. package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
  143. package/dist/tempo/KeyAuthorization.js +4 -4
  144. package/dist/tempo/KeyAuthorization.js.map +1 -1
  145. package/dist/tempo/MultisigConfig.d.ts +37 -85
  146. package/dist/tempo/MultisigConfig.d.ts.map +1 -1
  147. package/dist/tempo/MultisigConfig.js +39 -83
  148. package/dist/tempo/MultisigConfig.js.map +1 -1
  149. package/dist/tempo/PoolId.d.ts +8 -7
  150. package/dist/tempo/PoolId.d.ts.map +1 -1
  151. package/dist/tempo/PoolId.js +10 -6
  152. package/dist/tempo/PoolId.js.map +1 -1
  153. package/dist/tempo/SignatureEnvelope.d.ts +32 -30
  154. package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
  155. package/dist/tempo/SignatureEnvelope.js +56 -51
  156. package/dist/tempo/SignatureEnvelope.js.map +1 -1
  157. package/dist/tempo/Transaction.d.ts +16 -5
  158. package/dist/tempo/Transaction.d.ts.map +1 -1
  159. package/dist/tempo/Transaction.js +34 -7
  160. package/dist/tempo/Transaction.js.map +1 -1
  161. package/dist/tempo/TransactionReceipt.d.ts +3 -3
  162. package/dist/tempo/TransactionReceipt.d.ts.map +1 -1
  163. package/dist/tempo/TransactionReceipt.js +8 -1
  164. package/dist/tempo/TransactionReceipt.js.map +1 -1
  165. package/dist/tempo/TransactionRequest.d.ts +15 -2
  166. package/dist/tempo/TransactionRequest.d.ts.map +1 -1
  167. package/dist/tempo/TransactionRequest.js +65 -29
  168. package/dist/tempo/TransactionRequest.js.map +1 -1
  169. package/dist/tempo/TxEnvelopeTempo.d.ts +2 -3
  170. package/dist/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  171. package/dist/tempo/TxEnvelopeTempo.js +5 -6
  172. package/dist/tempo/TxEnvelopeTempo.js.map +1 -1
  173. package/dist/tempo/index.d.ts +6 -26
  174. package/dist/tempo/index.d.ts.map +1 -1
  175. package/dist/tempo/index.js +6 -26
  176. package/dist/tempo/index.js.map +1 -1
  177. package/dist/zod/Abi.d.ts +214 -0
  178. package/dist/zod/Abi.d.ts.map +1 -0
  179. package/dist/zod/Abi.js +5 -0
  180. package/dist/zod/Abi.js.map +1 -0
  181. package/dist/zod/AbiConstructor.d.ts +58 -0
  182. package/dist/zod/AbiConstructor.d.ts.map +1 -0
  183. package/dist/zod/AbiConstructor.js +18 -0
  184. package/dist/zod/AbiConstructor.js.map +1 -0
  185. package/dist/zod/AbiError.d.ts +20 -0
  186. package/dist/zod/AbiError.d.ts.map +1 -0
  187. package/dist/zod/AbiError.js +9 -0
  188. package/dist/zod/AbiError.js.map +1 -0
  189. package/dist/zod/AbiEvent.d.ts +23 -0
  190. package/dist/zod/AbiEvent.d.ts.map +1 -0
  191. package/dist/zod/AbiEvent.js +11 -0
  192. package/dist/zod/AbiEvent.js.map +1 -0
  193. package/dist/zod/AbiFallback.d.ts +16 -0
  194. package/dist/zod/AbiFallback.d.ts.map +1 -0
  195. package/dist/zod/AbiFallback.js +16 -0
  196. package/dist/zod/AbiFallback.js.map +1 -0
  197. package/dist/zod/AbiFunction.d.ts +109 -0
  198. package/dist/zod/AbiFunction.d.ts.map +1 -0
  199. package/dist/zod/AbiFunction.js +26 -0
  200. package/dist/zod/AbiFunction.js.map +1 -0
  201. package/dist/zod/AbiItem.d.ts +216 -0
  202. package/dist/zod/AbiItem.d.ts.map +1 -0
  203. package/dist/zod/AbiItem.js +26 -0
  204. package/dist/zod/AbiItem.js.map +1 -0
  205. package/dist/zod/AbiParameter.d.ts +32 -0
  206. package/dist/zod/AbiParameter.d.ts.map +1 -0
  207. package/dist/zod/AbiParameter.js +28 -0
  208. package/dist/zod/AbiParameter.js.map +1 -0
  209. package/dist/zod/AbiParameters.d.ts +30 -0
  210. package/dist/zod/AbiParameters.d.ts.map +1 -0
  211. package/dist/zod/AbiParameters.js +6 -0
  212. package/dist/zod/AbiParameters.js.map +1 -0
  213. package/dist/zod/AbiReceive.d.ts +6 -0
  214. package/dist/zod/AbiReceive.d.ts.map +1 -0
  215. package/dist/zod/AbiReceive.js +7 -0
  216. package/dist/zod/AbiReceive.js.map +1 -0
  217. package/dist/zod/RpcSchema.d.ts +6 -5
  218. package/dist/zod/RpcSchema.d.ts.map +1 -1
  219. package/dist/zod/Solidity.d.ts +15 -0
  220. package/dist/zod/Solidity.d.ts.map +1 -0
  221. package/dist/zod/Solidity.js +41 -0
  222. package/dist/zod/Solidity.js.map +1 -0
  223. package/dist/zod/TypedData.d.ts +226 -0
  224. package/dist/zod/TypedData.d.ts.map +1 -0
  225. package/dist/zod/TypedData.js +84 -0
  226. package/dist/zod/TypedData.js.map +1 -0
  227. package/dist/zod/internal/rpcSchemas/Eth.d.ts +1 -0
  228. package/dist/zod/internal/rpcSchemas/Eth.d.ts.map +1 -1
  229. package/dist/zod/internal/rpcSchemas/Eth.js +5 -0
  230. package/dist/zod/internal/rpcSchemas/Eth.js.map +1 -1
  231. package/dist/zod/tempo/AuthorizationTempo.d.ts +0 -20
  232. package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
  233. package/dist/zod/tempo/KeyAuthorization.d.ts +503 -67
  234. package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
  235. package/dist/zod/tempo/KeyAuthorization.js +32 -15
  236. package/dist/zod/tempo/KeyAuthorization.js.map +1 -1
  237. package/dist/zod/tempo/RpcSchemaTempo.d.ts +216 -34
  238. package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
  239. package/dist/zod/tempo/SignatureEnvelope.d.ts +0 -6
  240. package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
  241. package/dist/zod/tempo/SignatureEnvelope.js +0 -2
  242. package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
  243. package/dist/zod/tempo/Transaction.d.ts +1479 -333
  244. package/dist/zod/tempo/Transaction.d.ts.map +1 -1
  245. package/dist/zod/tempo/Transaction.js +65 -16
  246. package/dist/zod/tempo/Transaction.js.map +1 -1
  247. package/dist/zod/tempo/TransactionRequest.d.ts +410 -57
  248. package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
  249. package/dist/zod/tempo/TransactionRequest.js +81 -18
  250. package/dist/zod/tempo/TransactionRequest.js.map +1 -1
  251. package/dist/zod/tempo/TxEnvelopeTempo.d.ts +225 -18
  252. package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  253. package/dist/zod/tempo/TxEnvelopeTempo.js +1 -1
  254. package/dist/zod/tempo/TxEnvelopeTempo.js.map +1 -1
  255. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +0 -3
  256. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts.map +1 -1
  257. package/dist/zod/tempo/z.d.ts +0 -1
  258. package/dist/zod/tempo/z.d.ts.map +1 -1
  259. package/dist/zod/tempo/z.js +0 -1
  260. package/dist/zod/tempo/z.js.map +1 -1
  261. package/dist/zod/z.d.ts +12 -0
  262. package/dist/zod/z.d.ts.map +1 -1
  263. package/dist/zod/z.js +12 -0
  264. package/dist/zod/z.js.map +1 -1
  265. package/package.json +67 -11
  266. package/src/core/Abi.bench.ts +30 -0
  267. package/src/core/Abi.ts +13 -4
  268. package/src/core/AbiConstructor.ts +3 -2
  269. package/src/core/AbiError.ts +6 -2
  270. package/src/core/AbiEvent.ts +6 -2
  271. package/src/core/AbiFunction.ts +6 -2
  272. package/src/core/AbiItem.bench.ts +19 -0
  273. package/src/core/AbiItem.ts +20 -10
  274. package/src/core/AbiParameter.bench.ts +35 -0
  275. package/src/core/AbiParameter.ts +126 -0
  276. package/src/core/AbiParameters.bench.ts +22 -0
  277. package/src/core/AbiParameters.ts +77 -8
  278. package/src/core/Rlp.ts +66 -3
  279. package/src/core/RpcSchema.ts +2 -2
  280. package/src/core/_test/Abi.test.ts +4 -0
  281. package/src/core/_test/AbiItem.test.ts +3 -0
  282. package/src/core/_test/AbiParameter.test-d.ts +41 -0
  283. package/src/core/_test/AbiParameter.test.ts +84 -0
  284. package/src/core/_test/AbiParameters.decode.test.ts +88 -12
  285. package/src/core/_test/AbiParameters.encode.test.ts +68 -0
  286. package/src/core/_test/AbiParameters.test.ts +7 -0
  287. package/src/core/_test/Rlp.test.ts +101 -0
  288. package/src/core/_test/index.test.ts +1 -0
  289. package/src/core/internal/abiParameters.ts +21 -3
  290. package/src/core/internal/human-readable/_snap/formatAbi.test.ts.snap +74 -0
  291. package/src/core/internal/human-readable/_snap/parseAbi.test.ts.snap +2353 -0
  292. package/src/core/internal/human-readable/errors.test.ts +258 -0
  293. package/src/core/internal/human-readable/errors.ts +205 -0
  294. package/src/core/internal/human-readable/formatAbi.test-d.ts +144 -0
  295. package/src/core/internal/human-readable/formatAbi.test.ts +23 -0
  296. package/src/core/internal/human-readable/formatAbi.ts +37 -0
  297. package/src/core/internal/human-readable/formatAbiItem.test-d.ts +115 -0
  298. package/src/core/internal/human-readable/formatAbiItem.test.ts +102 -0
  299. package/src/core/internal/human-readable/formatAbiItem.ts +136 -0
  300. package/src/core/internal/human-readable/formatAbiParameter.test-d.ts +125 -0
  301. package/src/core/internal/human-readable/formatAbiParameter.test.ts +126 -0
  302. package/src/core/internal/human-readable/formatAbiParameter.ts +86 -0
  303. package/src/core/internal/human-readable/formatAbiParameters.test-d.ts +92 -0
  304. package/src/core/internal/human-readable/formatAbiParameters.test.ts +32 -0
  305. package/src/core/internal/human-readable/formatAbiParameters.ts +46 -0
  306. package/src/core/internal/human-readable/human-readable.bench-d.ts +58 -0
  307. package/src/core/internal/human-readable/integration.test.ts +68 -0
  308. package/src/core/internal/human-readable/parseAbi.test-d.ts +188 -0
  309. package/src/core/internal/human-readable/parseAbi.test.ts +82 -0
  310. package/src/core/internal/human-readable/parseAbi.ts +59 -0
  311. package/src/core/internal/human-readable/parseAbiItem.test-d.ts +183 -0
  312. package/src/core/internal/human-readable/parseAbiItem.test.ts +264 -0
  313. package/src/core/internal/human-readable/parseAbiItem.ts +91 -0
  314. package/src/core/internal/human-readable/parseAbiParameter.test-d.ts +68 -0
  315. package/src/core/internal/human-readable/parseAbiParameter.test.ts +207 -0
  316. package/src/core/internal/human-readable/parseAbiParameter.ts +95 -0
  317. package/src/core/internal/human-readable/parseAbiParameters.test-d.ts +160 -0
  318. package/src/core/internal/human-readable/parseAbiParameters.test.ts +80 -0
  319. package/src/core/internal/human-readable/parseAbiParameters.ts +123 -0
  320. package/src/core/internal/human-readable/regex.ts +15 -0
  321. package/src/core/internal/human-readable/runtime/cache.ts +96 -0
  322. package/src/core/internal/human-readable/runtime/signatures.test.ts +236 -0
  323. package/src/core/internal/human-readable/runtime/signatures.ts +106 -0
  324. package/src/core/internal/human-readable/runtime/structs.test.ts +210 -0
  325. package/src/core/internal/human-readable/runtime/structs.ts +97 -0
  326. package/src/core/internal/human-readable/runtime/utils.test.ts +717 -0
  327. package/src/core/internal/human-readable/runtime/utils.ts +344 -0
  328. package/src/core/internal/human-readable/types/signatures.test-d.ts +255 -0
  329. package/src/core/internal/human-readable/types/signatures.ts +369 -0
  330. package/src/core/internal/human-readable/types/structs.test-d.ts +221 -0
  331. package/src/core/internal/human-readable/types/structs.ts +88 -0
  332. package/src/core/internal/human-readable/types/utils.test-d.ts +1029 -0
  333. package/src/core/internal/human-readable/types/utils.ts +392 -0
  334. package/src/core/internal/human-readable/types.ts +69 -0
  335. package/src/core/internal/rpcSchemas/eth.ts +36 -0
  336. package/src/erc4337/EntryPoint.ts +875 -1
  337. package/src/erc4337/RpcSchema.ts +4 -2
  338. package/src/erc4337/UserOperation.ts +130 -60
  339. package/src/erc4337/UserOperationGas.ts +36 -28
  340. package/src/erc4337/UserOperationReceipt.ts +15 -7
  341. package/src/erc4337/_test/EntryPoint.test.ts +48 -0
  342. package/src/erc4337/_test/RpcSchema.test-d.ts +56 -0
  343. package/src/erc4337/_test/UserOperation.snap-d.ts +31 -0
  344. package/src/erc4337/_test/UserOperation.test.ts +221 -5
  345. package/src/erc4337/_test/UserOperationGas.test.ts +30 -1
  346. package/src/index.ts +38 -0
  347. package/src/tempo/Channel.test.ts +2 -23
  348. package/src/tempo/Channel.ts +10 -22
  349. package/src/tempo/KeyAuthorization.test.ts +22 -0
  350. package/src/tempo/KeyAuthorization.ts +9 -9
  351. package/src/tempo/MultisigConfig.test.ts +54 -37
  352. package/src/tempo/MultisigConfig.ts +59 -134
  353. package/src/tempo/PoolId.test.ts +7 -41
  354. package/src/tempo/PoolId.ts +15 -10
  355. package/src/tempo/SignatureEnvelope.test.ts +118 -17
  356. package/src/tempo/SignatureEnvelope.ts +77 -72
  357. package/src/tempo/Transaction.test.ts +0 -15
  358. package/src/tempo/Transaction.ts +63 -12
  359. package/src/tempo/TransactionReceipt.test.ts +76 -0
  360. package/src/tempo/TransactionReceipt.ts +11 -5
  361. package/src/tempo/TransactionRequest.test.ts +174 -1
  362. package/src/tempo/TransactionRequest.ts +84 -32
  363. package/src/tempo/TxEnvelopeTempo.test.ts +2 -2
  364. package/src/tempo/TxEnvelopeTempo.ts +7 -7
  365. package/src/tempo/e2e.test.ts +228 -50
  366. package/src/tempo/index.ts +6 -26
  367. package/src/version.ts +1 -1
  368. package/src/zod/Abi.ts +5 -0
  369. package/src/zod/AbiConstructor.ts +24 -0
  370. package/src/zod/AbiError.ts +9 -0
  371. package/src/zod/AbiEvent.ts +11 -0
  372. package/src/zod/AbiFallback.ts +22 -0
  373. package/src/zod/AbiFunction.ts +32 -0
  374. package/src/zod/AbiItem.ts +28 -0
  375. package/src/zod/AbiParameter.ts +36 -0
  376. package/src/zod/AbiParameters.ts +7 -0
  377. package/src/zod/AbiReceive.ts +7 -0
  378. package/src/zod/RpcSchema.ts +5 -5
  379. package/src/zod/Solidity.ts +83 -0
  380. package/src/zod/TypedData.ts +111 -0
  381. package/src/zod/_test/Abi.test-d.ts +46 -0
  382. package/src/zod/_test/Abi.test.ts +163 -0
  383. package/src/zod/_test/TypedData.test-d.ts +20 -0
  384. package/src/zod/_test/TypedData.test.ts +87 -0
  385. package/src/zod/_test/z.test-d.ts +6 -0
  386. package/src/zod/_test/z.test.ts +17 -0
  387. package/src/zod/internal/rpcSchemas/Eth.ts +6 -0
  388. package/src/zod/tempo/KeyAuthorization.ts +34 -15
  389. package/src/zod/tempo/SignatureEnvelope.ts +0 -2
  390. package/src/zod/tempo/Transaction.ts +84 -22
  391. package/src/zod/tempo/TransactionRequest.ts +86 -20
  392. package/src/zod/tempo/TxEnvelopeTempo.ts +1 -1
  393. package/src/zod/tempo/_test/KeyAuthorization.test.ts +53 -0
  394. package/src/zod/tempo/_test/SignatureEnvelope.test.ts +0 -2
  395. package/src/zod/tempo/_test/Transaction.test.ts +155 -0
  396. package/src/zod/tempo/_test/TransactionRequest.test.ts +44 -0
  397. package/src/zod/tempo/z.ts +0 -1
  398. package/src/zod/z.ts +12 -0
  399. package/dist/tempo/TokenId.d.ts +0 -87
  400. package/dist/tempo/TokenId.d.ts.map +0 -1
  401. package/dist/tempo/TokenId.js +0 -123
  402. package/dist/tempo/TokenId.js.map +0 -1
  403. package/dist/zod/tempo/TokenId.d.ts +0 -6
  404. package/dist/zod/tempo/TokenId.d.ts.map +0 -1
  405. package/dist/zod/tempo/TokenId.js +0 -14
  406. package/dist/zod/tempo/TokenId.js.map +0 -1
  407. package/src/CHANGELOG.md +0 -820
  408. package/src/tempo/TokenId.bench.ts +0 -36
  409. package/src/tempo/TokenId.test.ts +0 -79
  410. package/src/tempo/TokenId.ts +0 -141
  411. package/src/zod/tempo/TokenId.ts +0 -15
  412. package/src/zod/tempo/_test/TokenId.test-d.ts +0 -17
  413. package/src/zod/tempo/_test/TokenId.test.ts +0 -21
@@ -0,0 +1,28 @@
1
+ /* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
2
+ import * as z_AbiConstructor from './AbiConstructor.js'
3
+ import * as z_AbiError from './AbiError.js'
4
+ import * as z_AbiEvent from './AbiEvent.js'
5
+ import * as z_AbiFallback from './AbiFallback.js'
6
+ import * as z_AbiFunction from './AbiFunction.js'
7
+ import * as z_AbiReceive from './AbiReceive.js'
8
+ import * as z from 'zod/mini'
9
+
10
+ export const Type = z.union([
11
+ z.literal('constructor'),
12
+ z.literal('event'),
13
+ z.literal('error'),
14
+ z.literal('fallback'),
15
+ z.literal('function'),
16
+ z.literal('receive'),
17
+ ])
18
+
19
+ export const AbiItem = z.union([
20
+ z_AbiConstructor.AbiConstructor,
21
+ z_AbiError.AbiError,
22
+ z_AbiEvent.AbiEvent,
23
+ z_AbiFallback.AbiFallback,
24
+ z_AbiFunction.AbiFunction,
25
+ z_AbiReceive.AbiReceive,
26
+ ])
27
+
28
+ export const AbiItemType = Type
@@ -0,0 +1,36 @@
1
+ /* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
2
+ import * as z_Solidity from './Solidity.js'
3
+ import * as z from 'zod/mini'
4
+
5
+ const Name = z.union([z.optional(z_Solidity.Identifier), z.literal('')])
6
+ const SimpleType = z.union([
7
+ z_Solidity.Address,
8
+ z_Solidity.Bool,
9
+ z_Solidity.Bytes,
10
+ z_Solidity.Function,
11
+ z_Solidity.String,
12
+ z_Solidity.Int,
13
+ z_Solidity.ArrayWithoutTuple,
14
+ ])
15
+ const TupleType = z.union([z_Solidity.Tuple, z_Solidity.ArrayWithTuple])
16
+
17
+ export const AbiParameter = z.intersection(
18
+ z.object({
19
+ name: Name,
20
+ internalType: z.optional(z.string()),
21
+ }),
22
+ z.union([
23
+ z.object({ type: SimpleType }),
24
+ z.object({
25
+ type: TupleType,
26
+ get components() {
27
+ return z.readonly(z.array(AbiParameter))
28
+ },
29
+ }),
30
+ ]),
31
+ )
32
+
33
+ export const AbiEventParameter = z.intersection(
34
+ AbiParameter,
35
+ z.object({ indexed: z.optional(z.boolean()) }),
36
+ )
@@ -0,0 +1,7 @@
1
+ /* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
2
+ import * as z_AbiParameter from './AbiParameter.js'
3
+ import * as z from 'zod/mini'
4
+
5
+ export const AbiParameters = z.readonly(z.array(z_AbiParameter.AbiParameter))
6
+
7
+ export const Parameter = z_AbiParameter.AbiParameter
@@ -0,0 +1,7 @@
1
+ /* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
2
+ import * as z from 'zod/mini'
3
+
4
+ export const AbiReceive = z.object({
5
+ type: z.literal('receive'),
6
+ stateMutability: z.literal('payable'),
7
+ })
@@ -88,7 +88,7 @@ export declare namespace from {
88
88
  { params: z.ZodMiniType; returns: z.ZodMiniType }
89
89
  >
90
90
 
91
- /** The normalized `RpcSchema.Namespace` derived from a {@link from.Namespace}. */
91
+ /** The normalized `RpcSchema.Namespace` derived from `from.Namespace`. */
92
92
  type ReturnType<namespace extends Namespace> = {
93
93
  [method in keyof namespace & string]: Item<
94
94
  method,
@@ -167,7 +167,7 @@ function resolveItem(args: readonly unknown[]): [item: Item, value: unknown] {
167
167
  * Decodes (wire → native) the `params` for a method. Use on the receiving side
168
168
  * (e.g. a server) to coerce incoming wire params into their native
169
169
  * representation. Accepts either a namespace + method name, or a resolved
170
- * `RpcSchema.Item` (from {@link parseItem}/{@link from}).
170
+ * `RpcSchema.Item` (from `parseItem`/`from`).
171
171
  *
172
172
  * @example
173
173
  * ```ts twoslash
@@ -218,7 +218,7 @@ export function decodeParams(...args: readonly unknown[]): unknown {
218
218
  * Encodes (native → wire) the `params` for a method. Use on the sending side
219
219
  * (e.g. a client) to serialize native params into the wire shape a JSON-RPC
220
220
  * endpoint expects. Accepts either a namespace + method name, or a resolved
221
- * `RpcSchema.Item` (from {@link parseItem}/{@link from}).
221
+ * `RpcSchema.Item` (from `parseItem`/`from`).
222
222
  *
223
223
  * @example
224
224
  * ```ts twoslash
@@ -269,7 +269,7 @@ export function encodeParams(...args: readonly unknown[]): unknown {
269
269
  * Decodes (wire → native) the `returns` value for a method. Use on the
270
270
  * receiving side (e.g. a client) to coerce a wire result into its native
271
271
  * representation. Accepts either a namespace + method name, or a resolved
272
- * `RpcSchema.Item` (from {@link parseItem}/{@link from}).
272
+ * `RpcSchema.Item` (from `parseItem`/`from`).
273
273
  *
274
274
  * @example
275
275
  * ```ts twoslash
@@ -320,7 +320,7 @@ export function decodeReturns(...args: readonly unknown[]): unknown {
320
320
  * Encodes (native → wire) the `returns` value for a method. Use on the sending
321
321
  * side (e.g. a server) to serialize a native result into the wire shape.
322
322
  * Accepts either a namespace + method name, or a resolved `RpcSchema.Item`
323
- * (from {@link parseItem}/{@link from}).
323
+ * (from `parseItem`/`from`).
324
324
  *
325
325
  * @example
326
326
  * ```ts twoslash
@@ -0,0 +1,83 @@
1
+ /* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
2
+ import type * as abitype from 'abitype'
3
+ import * as z from 'zod/mini'
4
+
5
+ export const Identifier = z
6
+ .string()
7
+ .check(
8
+ z.refine(
9
+ (value) => /^[a-zA-Z$_][a-zA-Z0-9$_]*$/.test(value),
10
+ 'expected identifier',
11
+ ),
12
+ )
13
+
14
+ export const Address = z.literal('address')
15
+ export const Bool = z.literal('bool')
16
+ export const Bytes = z
17
+ .string()
18
+ .check(
19
+ z.refine(
20
+ (value): value is abitype.SolidityBytes =>
21
+ /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(value),
22
+ 'expected Solidity bytes type',
23
+ ),
24
+ )
25
+ export const Function = z.literal('function')
26
+ export const String = z.literal('string')
27
+ export const Tuple = z.literal('tuple')
28
+ export const Int = z
29
+ .string()
30
+ .check(
31
+ z.refine(
32
+ (value): value is abitype.SolidityInt =>
33
+ /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(
34
+ value,
35
+ ),
36
+ 'expected Solidity integer type',
37
+ ),
38
+ )
39
+ export const ArrayWithoutTuple = z
40
+ .string()
41
+ .check(
42
+ z.refine(
43
+ (value): value is abitype.SolidityArrayWithoutTuple =>
44
+ /^(address|bool|function|string|bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?|u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?)(\[[0-9]{0,}\])+$/.test(
45
+ value,
46
+ ),
47
+ 'expected Solidity array type',
48
+ ),
49
+ )
50
+ export const ArrayWithTuple = z
51
+ .string()
52
+ .check(
53
+ z.refine(
54
+ (value): value is abitype.SolidityArrayWithTuple =>
55
+ /^tuple(\[[0-9]{0,}\])+$/.test(value),
56
+ 'expected Solidity tuple array type',
57
+ ),
58
+ )
59
+ export const Array = z.union([ArrayWithTuple, ArrayWithoutTuple])
60
+
61
+ export const Type = z.union([
62
+ Address,
63
+ Bool,
64
+ Bytes,
65
+ Function,
66
+ String,
67
+ Tuple,
68
+ Int,
69
+ Array,
70
+ ])
71
+
72
+ export function isType(type: string) {
73
+ return (
74
+ type === 'address' ||
75
+ type === 'bool' ||
76
+ type === 'function' ||
77
+ type === 'string' ||
78
+ /^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(type) ||
79
+ /^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(
80
+ type,
81
+ )
82
+ )
83
+ }
@@ -0,0 +1,111 @@
1
+ /* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
2
+ import type * as core_TypedData from '../core/TypedData.js'
3
+ import * as z_Address from './Address.js'
4
+ import * as z_Solidity from './Solidity.js'
5
+ import * as z from 'zod/mini'
6
+
7
+ export const Domain = z.object({
8
+ chainId: z.optional(z.union([z.number(), z.bigint()])),
9
+ name: z.optional(z_Solidity.Identifier),
10
+ salt: z.optional(z.string()),
11
+ verifyingContract: z.optional(z_Address.Address),
12
+ version: z.optional(z.string()),
13
+ })
14
+
15
+ export const Type = z.union([
16
+ z_Solidity.Address,
17
+ z_Solidity.Bool,
18
+ z_Solidity.Bytes,
19
+ z_Solidity.String,
20
+ z_Solidity.Int,
21
+ z_Solidity.Array,
22
+ ])
23
+
24
+ export const Parameter = z.object({
25
+ name: z_Solidity.Identifier,
26
+ type: z.string(),
27
+ })
28
+
29
+ const Raw = z.record(z_Solidity.Identifier, z.readonly(z.array(Parameter)))
30
+
31
+ export const TypedData = z.pipe(
32
+ Raw,
33
+ z.transform((value, ctx) => validate(value, ctx)),
34
+ )
35
+
36
+ function validate(
37
+ typedData: Record<string, readonly core_TypedData.Parameter[]>,
38
+ ctx: z.core.ParsePayload,
39
+ ) {
40
+ for (const key of Object.keys(typedData)) {
41
+ if (z_Solidity.isType(key)) {
42
+ ctx.issues.push({
43
+ code: 'custom',
44
+ input: key,
45
+ message: `Invalid key. ${key} is a solidity type.`,
46
+ })
47
+ return z.NEVER
48
+ }
49
+
50
+ validateParameters(key, typedData, ctx)
51
+ }
52
+
53
+ return typedData as core_TypedData.TypedData
54
+ }
55
+
56
+ const typeWithoutTupleRegex =
57
+ /^(?<type>[a-zA-Z$_][a-zA-Z0-9$_]*?)(?<array>(?:\[\d*?\])+?)?$/
58
+
59
+ function validateParameters(
60
+ key: string,
61
+ typedData: Record<string, readonly core_TypedData.Parameter[]>,
62
+ ctx: z.core.ParsePayload,
63
+ ancestors = new Set<string>(),
64
+ ) {
65
+ const value = typedData[key]
66
+ if (!value) return
67
+
68
+ for (const parameter of value) {
69
+ if (parameter.type === key) {
70
+ ctx.issues.push({
71
+ code: 'custom',
72
+ input: parameter.type,
73
+ message: `Invalid type. ${key} is a self reference.`,
74
+ })
75
+ return z.NEVER
76
+ }
77
+
78
+ const match = typeWithoutTupleRegex.exec(parameter.type)?.groups as
79
+ | { array?: string | undefined; type?: string | undefined }
80
+ | undefined
81
+ const type = match?.type
82
+ if (!type) {
83
+ ctx.issues.push({
84
+ code: 'custom',
85
+ input: parameter.type,
86
+ message: `Invalid type. ${key} does not have a type.`,
87
+ })
88
+ return z.NEVER
89
+ }
90
+
91
+ if (type in typedData) {
92
+ if (ancestors.has(type)) {
93
+ ctx.issues.push({
94
+ code: 'custom',
95
+ input: type,
96
+ message: `Invalid type. ${type} is a circular reference.`,
97
+ })
98
+ return z.NEVER
99
+ }
100
+
101
+ validateParameters(type, typedData, ctx, new Set([...ancestors, type]))
102
+ } else if (!z_Solidity.isType(type)) {
103
+ ctx.issues.push({
104
+ code: 'custom',
105
+ input: type,
106
+ message: `Invalid type. ${type} is not a valid EIP-712 type.`,
107
+ })
108
+ return z.NEVER
109
+ }
110
+ }
111
+ }
@@ -0,0 +1,46 @@
1
+ import type * as core_Abi from '../../core/Abi.js'
2
+ import type * as core_AbiConstructor from '../../core/AbiConstructor.js'
3
+ import type * as core_AbiError from '../../core/AbiError.js'
4
+ import type * as core_AbiEvent from '../../core/AbiEvent.js'
5
+ import type * as core_AbiFunction from '../../core/AbiFunction.js'
6
+ import type * as core_AbiItem from '../../core/AbiItem.js'
7
+ import type * as core_AbiParameter from '../../core/AbiParameter.js'
8
+ import type * as core_AbiParameters from '../../core/AbiParameters.js'
9
+ import { expectTypeOf, test } from 'vp/test'
10
+ import * as z_Abi from '../Abi.js'
11
+ import * as z_AbiConstructor from '../AbiConstructor.js'
12
+ import * as z_AbiError from '../AbiError.js'
13
+ import * as z_AbiEvent from '../AbiEvent.js'
14
+ import * as z_AbiFunction from '../AbiFunction.js'
15
+ import * as z_AbiItem from '../AbiItem.js'
16
+ import * as z_AbiParameter from '../AbiParameter.js'
17
+ import * as z_AbiParameters from '../AbiParameters.js'
18
+ import type * as z from 'zod/mini'
19
+
20
+ test('ABI schemas output Ox core ABI types', () => {
21
+ expectTypeOf<z.output<typeof z_Abi.Abi>>().toMatchTypeOf<core_Abi.Abi>()
22
+ expectTypeOf<
23
+ z.output<typeof z_AbiConstructor.AbiConstructor>
24
+ >().toMatchTypeOf<core_AbiConstructor.AbiConstructor>()
25
+ expectTypeOf<
26
+ z.output<typeof z_AbiError.AbiError>
27
+ >().toMatchTypeOf<core_AbiError.AbiError>()
28
+ expectTypeOf<
29
+ z.output<typeof z_AbiEvent.AbiEvent>
30
+ >().toMatchTypeOf<core_AbiEvent.AbiEvent>()
31
+ expectTypeOf<
32
+ z.output<typeof z_AbiFunction.AbiFunction>
33
+ >().toMatchTypeOf<core_AbiFunction.AbiFunction>()
34
+ expectTypeOf<
35
+ z.output<typeof z_AbiItem.AbiItem>
36
+ >().toMatchTypeOf<core_AbiItem.AbiItem>()
37
+ expectTypeOf<
38
+ z.output<typeof z_AbiParameter.AbiParameter>
39
+ >().toMatchTypeOf<core_AbiParameter.AbiParameter>()
40
+ expectTypeOf<
41
+ z.output<typeof z_AbiParameter.AbiEventParameter>
42
+ >().toMatchTypeOf<core_AbiParameter.AbiEventParameter>()
43
+ expectTypeOf<
44
+ z.output<typeof z_AbiParameters.AbiParameters>
45
+ >().toMatchTypeOf<core_AbiParameters.AbiParameters>()
46
+ })
@@ -0,0 +1,163 @@
1
+ import { describe, expect, test } from 'vp/test'
2
+ import * as z_Abi from '../Abi.js'
3
+ import * as z_AbiConstructor from '../AbiConstructor.js'
4
+ import * as z_AbiFunction from '../AbiFunction.js'
5
+ import * as z_AbiParameter from '../AbiParameter.js'
6
+ import * as z_Solidity from '../Solidity.js'
7
+ import * as z from 'zod/mini'
8
+
9
+ describe('Abi', () => {
10
+ test('decodes ABI items and normalizes legacy mutability fields', () => {
11
+ const input = [
12
+ {
13
+ constant: true,
14
+ inputs: [{ name: 'owner', type: 'address' }],
15
+ name: 'balanceOf',
16
+ outputs: [{ name: 'balance', type: 'uint256' }],
17
+ type: 'function',
18
+ },
19
+ {
20
+ inputs: [{ name: 'owner', type: 'address' }],
21
+ payable: true,
22
+ type: 'constructor',
23
+ },
24
+ {
25
+ payable: false,
26
+ type: 'fallback',
27
+ },
28
+ ] as const
29
+
30
+ expect(z.decode(z_Abi.Abi, input)).toMatchInlineSnapshot(`
31
+ [
32
+ {
33
+ "constant": true,
34
+ "inputs": [
35
+ {
36
+ "name": "owner",
37
+ "type": "address",
38
+ },
39
+ ],
40
+ "name": "balanceOf",
41
+ "outputs": [
42
+ {
43
+ "name": "balance",
44
+ "type": "uint256",
45
+ },
46
+ ],
47
+ "stateMutability": "view",
48
+ "type": "function",
49
+ },
50
+ {
51
+ "inputs": [
52
+ {
53
+ "name": "owner",
54
+ "type": "address",
55
+ },
56
+ ],
57
+ "payable": true,
58
+ "stateMutability": "payable",
59
+ "type": "constructor",
60
+ },
61
+ {
62
+ "payable": false,
63
+ "stateMutability": "nonpayable",
64
+ "type": "fallback",
65
+ },
66
+ ]
67
+ `)
68
+ expect(input[0]).not.toHaveProperty('stateMutability')
69
+ })
70
+
71
+ test('strips unknown keys', () => {
72
+ const input: unknown = {
73
+ type: 'function',
74
+ inputs: [],
75
+ name: 'totalSupply',
76
+ outputs: [{ type: 'uint256', extra: true }],
77
+ stateMutability: 'view',
78
+ extra: true,
79
+ }
80
+
81
+ expect(z.parse(z_AbiFunction.AbiFunction, input)).toMatchInlineSnapshot(`
82
+ {
83
+ "inputs": [],
84
+ "name": "totalSupply",
85
+ "outputs": [
86
+ {
87
+ "type": "uint256",
88
+ },
89
+ ],
90
+ "stateMutability": "view",
91
+ "type": "function",
92
+ }
93
+ `)
94
+ })
95
+
96
+ test('decodes tuple parameters recursively', () => {
97
+ expect(
98
+ z.decode(z_AbiParameter.AbiParameter, {
99
+ name: 'foo',
100
+ type: 'tuple[]',
101
+ components: [
102
+ { name: 'owner', type: 'address' },
103
+ { name: 'ids', type: 'uint256[]' },
104
+ ],
105
+ }),
106
+ ).toMatchInlineSnapshot(`
107
+ {
108
+ "components": [
109
+ {
110
+ "name": "owner",
111
+ "type": "address",
112
+ },
113
+ {
114
+ "name": "ids",
115
+ "type": "uint256[]",
116
+ },
117
+ ],
118
+ "name": "foo",
119
+ "type": "tuple[]",
120
+ }
121
+ `)
122
+ })
123
+
124
+ test('rejects invalid parameter types', () => {
125
+ expect(
126
+ z.safeDecode(z_AbiParameter.AbiParameter, { type: 'notAValidType' })
127
+ .success,
128
+ ).toBe(false)
129
+ })
130
+
131
+ test('decodes constructors with explicit mutability', () => {
132
+ expect(
133
+ z.decode(z_AbiConstructor.AbiConstructor, {
134
+ type: 'constructor',
135
+ inputs: [],
136
+ payable: true,
137
+ stateMutability: 'nonpayable',
138
+ }),
139
+ ).toMatchInlineSnapshot(`
140
+ {
141
+ "inputs": [],
142
+ "payable": true,
143
+ "stateMutability": "nonpayable",
144
+ "type": "constructor",
145
+ }
146
+ `)
147
+ })
148
+ })
149
+
150
+ describe('Solidity', () => {
151
+ test('decodes Solidity type tokens', () => {
152
+ expect(z.decode(z_Solidity.Address, 'address')).toMatchInlineSnapshot(
153
+ `"address"`,
154
+ )
155
+ expect(z.decode(z_Solidity.Int, 'uint256')).toMatchInlineSnapshot(
156
+ `"uint256"`,
157
+ )
158
+ expect(z.decode(z_Solidity.Array, 'tuple[2][]')).toMatchInlineSnapshot(
159
+ `"tuple[2][]"`,
160
+ )
161
+ expect(z.safeDecode(z_Solidity.Bytes, 'bytes33').success).toBe(false)
162
+ })
163
+ })
@@ -0,0 +1,20 @@
1
+ import type * as core_TypedData from '../../core/TypedData.js'
2
+ import { expectTypeOf, test } from 'vp/test'
3
+ import * as z_TypedData from '../TypedData.js'
4
+ import type * as z from 'zod/mini'
5
+
6
+ test('TypedData schemas output Ox core TypedData types', () => {
7
+ expectTypeOf<z.output<typeof z_TypedData.Domain>>().toMatchTypeOf<{
8
+ chainId?: number | bigint | undefined
9
+ name?: string | undefined
10
+ salt?: string | undefined
11
+ verifyingContract?: core_TypedData.Domain['verifyingContract'] | undefined
12
+ version?: string | undefined
13
+ }>()
14
+ expectTypeOf<
15
+ z.output<typeof z_TypedData.Parameter>
16
+ >().toMatchTypeOf<core_TypedData.Parameter>()
17
+ expectTypeOf<
18
+ z.output<typeof z_TypedData.TypedData>
19
+ >().toMatchTypeOf<core_TypedData.TypedData>()
20
+ })
@@ -0,0 +1,87 @@
1
+ import { describe, expect, test } from 'vp/test'
2
+ import * as z_TypedData from '../TypedData.js'
3
+ import * as z from 'zod/mini'
4
+
5
+ describe('TypedData', () => {
6
+ test('decodes EIP-712 types maps', () => {
7
+ expect(
8
+ z.decode(z_TypedData.TypedData, {
9
+ Person: [
10
+ { name: 'name', type: 'string' },
11
+ { name: 'wallet', type: 'address' },
12
+ ],
13
+ Mail: [
14
+ { name: 'from', type: 'Person' },
15
+ { name: 'to', type: 'Person' },
16
+ { name: 'contents', type: 'string' },
17
+ ],
18
+ }),
19
+ ).toMatchInlineSnapshot(`
20
+ {
21
+ "Mail": [
22
+ {
23
+ "name": "from",
24
+ "type": "Person",
25
+ },
26
+ {
27
+ "name": "to",
28
+ "type": "Person",
29
+ },
30
+ {
31
+ "name": "contents",
32
+ "type": "string",
33
+ },
34
+ ],
35
+ "Person": [
36
+ {
37
+ "name": "name",
38
+ "type": "string",
39
+ },
40
+ {
41
+ "name": "wallet",
42
+ "type": "address",
43
+ },
44
+ ],
45
+ }
46
+ `)
47
+ })
48
+
49
+ test('rejects invalid references', () => {
50
+ expect(
51
+ z.safeDecode(z_TypedData.TypedData, {
52
+ Mail: [{ name: 'from', type: 'Person' }],
53
+ }).success,
54
+ ).toBe(false)
55
+ expect(
56
+ z.safeDecode(z_TypedData.TypedData, {
57
+ Person: [{ name: 'parent', type: 'Person' }],
58
+ }).success,
59
+ ).toBe(false)
60
+ expect(
61
+ z.safeDecode(z_TypedData.TypedData, {
62
+ Foo: [{ name: 'bar', type: 'Bar' }],
63
+ Bar: [{ name: 'foo', type: 'Foo' }],
64
+ }).success,
65
+ ).toBe(false)
66
+ })
67
+
68
+ test('decodes domains with ABIType-compatible salt strings', () => {
69
+ expect(
70
+ z.decode(z_TypedData.Domain, {
71
+ chainId: 1,
72
+ name: 'EtherMail',
73
+ salt: 'not-hex',
74
+ verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC',
75
+ version: '1',
76
+ }),
77
+ ).toMatchInlineSnapshot(`
78
+ {
79
+ "chainId": 1,
80
+ "name": "EtherMail",
81
+ "salt": "not-hex",
82
+ "verifyingContract": "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC",
83
+ "version": "1",
84
+ }
85
+ `)
86
+ })
87
+ })
@@ -1,5 +1,6 @@
1
1
  import type * as core_AccountProof from '../../core/AccountProof.js'
2
2
  import type * as core_AccessList from '../../core/AccessList.js'
3
+ import type * as core_Abi from '../../core/Abi.js'
3
4
  import type * as core_Authorization from '../../core/Authorization.js'
4
5
  import type * as core_Block from '../../core/Block.js'
5
6
  import type * as core_BlockOverrides from '../../core/BlockOverrides.js'
@@ -12,12 +13,17 @@ import type * as core_Transaction from '../../core/Transaction.js'
12
13
  import type * as core_TransactionEnvelope from '../../core/TxEnvelope.js'
13
14
  import type * as core_TransactionReceipt from '../../core/TransactionReceipt.js'
14
15
  import type * as core_TransactionRequest from '../../core/TransactionRequest.js'
16
+ import type * as core_TypedData from '../../core/TypedData.js'
15
17
  import type * as core_TxEnvelopeEip1559 from '../../core/TxEnvelopeEip1559.js'
16
18
  import { z } from 'ox/zod'
17
19
  import type * as zod from 'zod/mini'
18
20
  import { expectTypeOf, test } from 'vp/test'
19
21
 
20
22
  test('z entrypoint exposes module and direct integer schema types', () => {
23
+ expectTypeOf<zod.output<typeof z.Abi.Abi>>().toMatchTypeOf<core_Abi.Abi>()
24
+ expectTypeOf<
25
+ zod.output<typeof z.TypedData.TypedData>
26
+ >().toMatchTypeOf<core_TypedData.TypedData>()
21
27
  expectTypeOf<
22
28
  zod.output<typeof z.AccountProof.AccountProof>
23
29
  >().toEqualTypeOf<core_AccountProof.AccountProof>()
@@ -5,6 +5,23 @@ const address = '0x0000000000000000000000000000000000000000'
5
5
  const storageKey = `0x${'11'.repeat(32)}` as const
6
6
 
7
7
  test('exports zod mini utilities, modules, and integer schemas', () => {
8
+ expect(
9
+ z.decode(z.Abi.Abi, [
10
+ {
11
+ inputs: [],
12
+ name: 'totalSupply',
13
+ outputs: [{ type: 'uint256' }],
14
+ stateMutability: 'view',
15
+ type: 'function',
16
+ },
17
+ ]),
18
+ ).toMatchObject([{ name: 'totalSupply', type: 'function' }])
19
+ expect(z.decode(z.Solidity.Int, 'uint256')).toBe('uint256')
20
+ expect(
21
+ z.decode(z.TypedData.TypedData, {
22
+ Person: [{ name: 'wallet', type: 'address' }],
23
+ }),
24
+ ).toMatchObject({ Person: [{ name: 'wallet', type: 'address' }] })
8
25
  expect(
9
26
  z.decode(z.AccountProof.AccountProof, {
10
27
  address,