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,183 @@
1
+ import { expectTypeOf, test } from 'vp/test'
2
+
3
+ import type { Abi } from 'abitype'
4
+ import type { ParseAbiItem } from './parseAbiItem.js'
5
+ import { parseAbiItem } from './parseAbiItem.js'
6
+
7
+ test('ParseAbiItem', () => {
8
+ expectTypeOf<ParseAbiItem<''>>().toEqualTypeOf<never>()
9
+ expectTypeOf<ParseAbiItem<['']>>().toEqualTypeOf<never>()
10
+ expectTypeOf<
11
+ ParseAbiItem<['struct Foo { string name; }']>
12
+ >().toEqualTypeOf<never>()
13
+
14
+ // string
15
+ expectTypeOf<ParseAbiItem<'function foo()'>>().toEqualTypeOf<{
16
+ readonly name: 'foo'
17
+ readonly type: 'function'
18
+ readonly stateMutability: 'nonpayable'
19
+ readonly inputs: readonly []
20
+ readonly outputs: readonly []
21
+ }>()
22
+
23
+ // Array
24
+ expectTypeOf<
25
+ ParseAbiItem<['function bar(Foo, bytes32)', 'struct Foo { string name; }']>
26
+ >().toEqualTypeOf<{
27
+ readonly name: 'bar'
28
+ readonly type: 'function'
29
+ readonly stateMutability: 'nonpayable'
30
+ readonly inputs: readonly [
31
+ {
32
+ readonly type: 'tuple'
33
+ readonly components: readonly [
34
+ {
35
+ readonly name: 'name'
36
+ readonly type: 'string'
37
+ },
38
+ ]
39
+ },
40
+ {
41
+ readonly type: 'bytes32'
42
+ },
43
+ ]
44
+ readonly outputs: readonly []
45
+ }>()
46
+
47
+ expectTypeOf<
48
+ ParseAbiItem<
49
+ [
50
+ 'event Transfer(address indexed from, address indexed to, uint256 amount)',
51
+ ]
52
+ >
53
+ >().toEqualTypeOf<{
54
+ readonly name: 'Transfer'
55
+ readonly type: 'event'
56
+ readonly inputs: readonly [
57
+ {
58
+ readonly name: 'from'
59
+ readonly type: 'address'
60
+ readonly indexed: true
61
+ },
62
+ {
63
+ readonly name: 'to'
64
+ readonly type: 'address'
65
+ readonly indexed: true
66
+ },
67
+ {
68
+ readonly name: 'amount'
69
+ readonly type: 'uint256'
70
+ },
71
+ ]
72
+ }>()
73
+
74
+ const abiItem = ['function bar(Foo, bytes32)', 'struct Foo { string name; }']
75
+ expectTypeOf<ParseAbiItem<typeof abiItem>>().toEqualTypeOf<Abi[number]>()
76
+
77
+ expectTypeOf<ParseAbiItem<['function foo ()']>>().toEqualTypeOf<never>()
78
+ })
79
+
80
+ test('parseAbiItem', () => {
81
+ // @ts-expect-error empty array not allowed
82
+ expectTypeOf(parseAbiItem([])).toEqualTypeOf<never>()
83
+ expectTypeOf(
84
+ parseAbiItem(['struct Foo { string name; }']),
85
+ ).toEqualTypeOf<never>()
86
+
87
+ // string
88
+ expectTypeOf(parseAbiItem('function foo()')).toEqualTypeOf<{
89
+ readonly name: 'foo'
90
+ readonly type: 'function'
91
+ readonly stateMutability: 'nonpayable'
92
+ readonly inputs: readonly []
93
+ readonly outputs: readonly []
94
+ }>()
95
+ expectTypeOf(parseAbiItem('function foo((string), address)')).toEqualTypeOf<{
96
+ readonly name: 'foo'
97
+ readonly type: 'function'
98
+ readonly stateMutability: 'nonpayable'
99
+ readonly inputs: readonly [
100
+ {
101
+ readonly type: 'tuple'
102
+ readonly components: readonly [
103
+ {
104
+ readonly type: 'string'
105
+ },
106
+ ]
107
+ },
108
+ {
109
+ readonly type: 'address'
110
+ },
111
+ ]
112
+ readonly outputs: readonly []
113
+ }>()
114
+
115
+ expectTypeOf(
116
+ // @ts-expect-error invalid signature
117
+ parseAbiItem(''),
118
+ ).toEqualTypeOf<never>()
119
+
120
+ // Array
121
+ const res2 = parseAbiItem([
122
+ 'function bar(Foo, bytes32)',
123
+ 'struct Foo { string name; }',
124
+ ])
125
+ expectTypeOf<typeof res2>().toEqualTypeOf<{
126
+ readonly name: 'bar'
127
+ readonly type: 'function'
128
+ readonly stateMutability: 'nonpayable'
129
+ readonly inputs: readonly [
130
+ {
131
+ readonly type: 'tuple'
132
+ readonly components: readonly [
133
+ {
134
+ readonly name: 'name'
135
+ readonly type: 'string'
136
+ },
137
+ ]
138
+ },
139
+ {
140
+ readonly type: 'bytes32'
141
+ },
142
+ ]
143
+ readonly outputs: readonly []
144
+ }>()
145
+
146
+ const abi2 = [
147
+ 'function foo()',
148
+ 'function bar(Foo, bytes32)',
149
+ 'struct Foo { string name; }',
150
+ ]
151
+ expectTypeOf(parseAbiItem(abi2)).toEqualTypeOf<Abi[number]>()
152
+
153
+ // @ts-expect-error invalid signature
154
+ expectTypeOf(parseAbiItem(['function foo ()'])).toEqualTypeOf<never>()
155
+
156
+ const signature: string = 'function foo()'
157
+ expectTypeOf(parseAbiItem(signature)).toEqualTypeOf<Abi[number]>()
158
+
159
+ // fallback
160
+ expectTypeOf(parseAbiItem('fallback() external')).toEqualTypeOf<{
161
+ readonly type: 'fallback'
162
+ readonly stateMutability: 'nonpayable'
163
+ }>()
164
+ expectTypeOf(parseAbiItem('fallback() external payable')).toEqualTypeOf<{
165
+ readonly type: 'fallback'
166
+ readonly stateMutability: 'payable'
167
+ }>()
168
+
169
+ // receive
170
+ expectTypeOf(parseAbiItem('receive() external payable')).toEqualTypeOf<{
171
+ readonly type: 'receive'
172
+ readonly stateMutability: 'payable'
173
+ }>()
174
+ })
175
+
176
+ test('nested tuples', () => {
177
+ const formattedAbiItem =
178
+ 'function stepChanges((uint256 characterID, uint64 newPosition, uint24 xp, uint24 epoch, uint8 hp, (int32 x, int32 y, uint8 hp, uint8 kind)[5] monsters, (uint8 monsterIndexPlus1, uint8 attackCardsUsed1, uint8 attackCardsUsed2, uint8 defenseCardsUsed1, uint8 defenseCardsUsed2) battle) stateChanges, uint256 action, bool revetOnInvalidMoves) pure returns ((uint256 characterID, uint64 newPosition, uint24 xp, uint24 epoch, uint8 hp, (int32 x, int32 y, uint8 hp, uint8 kind)[5] monsters, (uint8 monsterIndexPlus1, uint8 attackCardsUsed1, uint8 attackCardsUsed2, uint8 defenseCardsUsed1, uint8 defenseCardsUsed2) battle))'
179
+
180
+ const abiItem = parseAbiItem(formattedAbiItem)
181
+ expectTypeOf(abiItem.stateMutability).toEqualTypeOf<'pure'>()
182
+ expectTypeOf(abiItem.inputs.length).toEqualTypeOf<3>()
183
+ })
@@ -0,0 +1,264 @@
1
+ import { expect, test } from 'vp/test'
2
+
3
+ import { parseAbiItem } from './parseAbiItem.js'
4
+
5
+ test('parseAbiItem', () => {
6
+ // @ts-expect-error invalid signature type
7
+ expect(() => parseAbiItem('')).toThrowErrorMatchingInlineSnapshot(
8
+ `[Abi.UnknownSignatureError: Unknown signature.]`,
9
+ )
10
+ // @ts-expect-error invalid signature type
11
+ expect(() => parseAbiItem([])).toThrowErrorMatchingInlineSnapshot(
12
+ `
13
+ [AbiItem.InvalidAbiItemError: Failed to parse ABI item.
14
+
15
+ Details: parseAbiItem([])
16
+ See: https://oxlib.sh/api/AbiItem/from]
17
+ `,
18
+ )
19
+ expect(() =>
20
+ parseAbiItem(['struct Foo { string name; }']),
21
+ ).toThrowErrorMatchingInlineSnapshot(
22
+ `
23
+ [AbiItem.InvalidAbiItemError: Failed to parse ABI item.
24
+
25
+ Details: parseAbiItem([
26
+ "struct Foo { string name; }"
27
+ ])
28
+ See: https://oxlib.sh/api/AbiItem/from]
29
+ `,
30
+ )
31
+ })
32
+
33
+ test.each([
34
+ {
35
+ signature: ['function foo(string)'],
36
+ expected: {
37
+ type: 'function',
38
+ name: 'foo',
39
+ inputs: [{ type: 'string' }],
40
+ outputs: [],
41
+ stateMutability: 'nonpayable',
42
+ },
43
+ },
44
+ {
45
+ signature: [
46
+ 'event Foo(address indexed from, address indexed to, uint256 amount)',
47
+ ],
48
+ expected: {
49
+ type: 'event',
50
+ name: 'Foo',
51
+ inputs: [
52
+ { type: 'address', name: 'from', indexed: true },
53
+ { type: 'address', name: 'to', indexed: true },
54
+ { type: 'uint256', name: 'amount' },
55
+ ],
56
+ },
57
+ },
58
+ {
59
+ signature: ['fallback() external'],
60
+ expected: {
61
+ type: 'fallback',
62
+ stateMutability: 'nonpayable',
63
+ },
64
+ },
65
+ {
66
+ signature: ['fallback() external payable'],
67
+ expected: {
68
+ type: 'fallback',
69
+ stateMutability: 'payable',
70
+ },
71
+ },
72
+ ])('parseAbiItem($signature)', ({ signature, expected }) => {
73
+ expect(parseAbiItem(signature)).toEqual(expected)
74
+ })
75
+
76
+ test.each([
77
+ {
78
+ signature: ['struct Foo { string bar; }', 'function foo(Foo)'],
79
+ expected: {
80
+ type: 'function',
81
+ name: 'foo',
82
+ inputs: [
83
+ { type: 'tuple', components: [{ name: 'bar', type: 'string' }] },
84
+ ],
85
+ outputs: [],
86
+ stateMutability: 'nonpayable',
87
+ },
88
+ },
89
+ ])('parseAbiItem($signature)', ({ signature, expected }) => {
90
+ expect(parseAbiItem(signature)).toEqual(expected)
91
+ })
92
+
93
+ test('nested tuples', () => {
94
+ const formattedAbiItem =
95
+ 'function stepChanges((uint256 characterID, uint64 newPosition, uint24 xp, uint24 epoch, uint8 hp, (int32 x, int32 y, uint8 hp, uint8 kind)[5] monsters, (uint8 monsterIndexPlus1, uint8 attackCardsUsed1, uint8 attackCardsUsed2, uint8 defenseCardsUsed1, uint8 defenseCardsUsed2) battle) stateChanges, uint256 action, bool revetOnInvalidMoves) pure returns ((uint256 characterID, uint64 newPosition, uint24 xp, uint24 epoch, uint8 hp, (int32 x, int32 y, uint8 hp, uint8 kind)[5] monsters, (uint8 monsterIndexPlus1, uint8 attackCardsUsed1, uint8 attackCardsUsed2, uint8 defenseCardsUsed1, uint8 defenseCardsUsed2) battle))'
96
+ expect(parseAbiItem(formattedAbiItem)).toMatchInlineSnapshot(
97
+ `
98
+ {
99
+ "inputs": [
100
+ {
101
+ "components": [
102
+ {
103
+ "name": "characterID",
104
+ "type": "uint256",
105
+ },
106
+ {
107
+ "name": "newPosition",
108
+ "type": "uint64",
109
+ },
110
+ {
111
+ "name": "xp",
112
+ "type": "uint24",
113
+ },
114
+ {
115
+ "name": "epoch",
116
+ "type": "uint24",
117
+ },
118
+ {
119
+ "name": "hp",
120
+ "type": "uint8",
121
+ },
122
+ {
123
+ "components": [
124
+ {
125
+ "name": "x",
126
+ "type": "int32",
127
+ },
128
+ {
129
+ "name": "y",
130
+ "type": "int32",
131
+ },
132
+ {
133
+ "name": "hp",
134
+ "type": "uint8",
135
+ },
136
+ {
137
+ "name": "kind",
138
+ "type": "uint8",
139
+ },
140
+ ],
141
+ "name": "monsters",
142
+ "type": "tuple[5]",
143
+ },
144
+ {
145
+ "components": [
146
+ {
147
+ "name": "monsterIndexPlus1",
148
+ "type": "uint8",
149
+ },
150
+ {
151
+ "name": "attackCardsUsed1",
152
+ "type": "uint8",
153
+ },
154
+ {
155
+ "name": "attackCardsUsed2",
156
+ "type": "uint8",
157
+ },
158
+ {
159
+ "name": "defenseCardsUsed1",
160
+ "type": "uint8",
161
+ },
162
+ {
163
+ "name": "defenseCardsUsed2",
164
+ "type": "uint8",
165
+ },
166
+ ],
167
+ "name": "battle",
168
+ "type": "tuple",
169
+ },
170
+ ],
171
+ "name": "stateChanges",
172
+ "type": "tuple",
173
+ },
174
+ {
175
+ "name": "action",
176
+ "type": "uint256",
177
+ },
178
+ {
179
+ "name": "revetOnInvalidMoves",
180
+ "type": "bool",
181
+ },
182
+ ],
183
+ "name": "stepChanges",
184
+ "outputs": [
185
+ {
186
+ "components": [
187
+ {
188
+ "name": "characterID",
189
+ "type": "uint256",
190
+ },
191
+ {
192
+ "name": "newPosition",
193
+ "type": "uint64",
194
+ },
195
+ {
196
+ "name": "xp",
197
+ "type": "uint24",
198
+ },
199
+ {
200
+ "name": "epoch",
201
+ "type": "uint24",
202
+ },
203
+ {
204
+ "name": "hp",
205
+ "type": "uint8",
206
+ },
207
+ {
208
+ "components": [
209
+ {
210
+ "name": "x",
211
+ "type": "int32",
212
+ },
213
+ {
214
+ "name": "y",
215
+ "type": "int32",
216
+ },
217
+ {
218
+ "name": "hp",
219
+ "type": "uint8",
220
+ },
221
+ {
222
+ "name": "kind",
223
+ "type": "uint8",
224
+ },
225
+ ],
226
+ "name": "monsters",
227
+ "type": "tuple[5]",
228
+ },
229
+ {
230
+ "components": [
231
+ {
232
+ "name": "monsterIndexPlus1",
233
+ "type": "uint8",
234
+ },
235
+ {
236
+ "name": "attackCardsUsed1",
237
+ "type": "uint8",
238
+ },
239
+ {
240
+ "name": "attackCardsUsed2",
241
+ "type": "uint8",
242
+ },
243
+ {
244
+ "name": "defenseCardsUsed1",
245
+ "type": "uint8",
246
+ },
247
+ {
248
+ "name": "defenseCardsUsed2",
249
+ "type": "uint8",
250
+ },
251
+ ],
252
+ "name": "battle",
253
+ "type": "tuple",
254
+ },
255
+ ],
256
+ "type": "tuple",
257
+ },
258
+ ],
259
+ "stateMutability": "pure",
260
+ "type": "function",
261
+ }
262
+ `,
263
+ )
264
+ })
@@ -0,0 +1,91 @@
1
+ import type { Abi } from 'abitype'
2
+ import type { Narrow } from 'abitype'
3
+ import type { Error, Filter } from './types.js'
4
+ import { InvalidAbiItemError } from './errors.js'
5
+ import { isStructSignature } from './runtime/signatures.js'
6
+ import { parseStructs } from './runtime/structs.js'
7
+ import { parseSignature } from './runtime/utils.js'
8
+ import type { Signature, Signatures } from './types/signatures.js'
9
+ import type { ParseStructs } from './types/structs.js'
10
+ import type { ParseSignature } from './types/utils.js'
11
+
12
+ /**
13
+ * Parses human-readable ABI item (e.g. error, event, function) into `Abi` item.
14
+ *
15
+ * @param signature - Human-readable ABI item
16
+ * @returns Parsed `Abi` item.
17
+ */
18
+ export type ParseAbiItem<
19
+ signature extends string | readonly string[] | readonly unknown[],
20
+ > =
21
+ | (signature extends string
22
+ ? string extends signature
23
+ ? Abi[number]
24
+ : signature extends Signature<signature> // Validate signature
25
+ ? ParseSignature<signature>
26
+ : never
27
+ : never)
28
+ | (signature extends readonly string[]
29
+ ? string[] extends signature
30
+ ? Abi[number] // Return generic Abi item since type was no inferrable
31
+ : signature extends Signatures<signature> // Validate signature
32
+ ? ParseStructs<signature> extends infer structs
33
+ ? {
34
+ [key in keyof signature]: ParseSignature<
35
+ signature[key] extends string ? signature[key] : never,
36
+ structs
37
+ >
38
+ } extends infer mapped extends readonly unknown[]
39
+ ? // Filter out `never` since those are structs
40
+ Filter<mapped, never>[0] extends infer result
41
+ ? result extends undefined // convert `undefined` to `never` (e.g. `ParseAbiItem<['struct Foo { string name; }']>`)
42
+ ? never
43
+ : result
44
+ : never
45
+ : never
46
+ : never
47
+ : never
48
+ : never)
49
+
50
+ /**
51
+ * Parses human-readable ABI item (e.g. error, event, function) into `Abi` item.
52
+ *
53
+ * @param signature - Human-readable ABI item
54
+ * @returns Parsed `Abi` item.
55
+ */
56
+ export function parseAbiItem<
57
+ signature extends string | readonly string[] | readonly unknown[],
58
+ >(
59
+ signature: Narrow<signature> &
60
+ (
61
+ | (signature extends string
62
+ ? string extends signature
63
+ ? unknown
64
+ : Signature<signature>
65
+ : never)
66
+ | (signature extends readonly string[]
67
+ ? signature extends readonly [] // empty array
68
+ ? Error<'At least one signature required.'>
69
+ : string[] extends signature
70
+ ? unknown
71
+ : Signatures<signature>
72
+ : never)
73
+ ),
74
+ ): ParseAbiItem<signature> {
75
+ let abiItem: ParseAbiItem<signature> | undefined
76
+ if (typeof signature === 'string')
77
+ abiItem = parseSignature(signature) as ParseAbiItem<signature>
78
+ else {
79
+ const structs = parseStructs(signature as readonly string[])
80
+ const length = signature.length as number
81
+ for (let i = 0; i < length; i++) {
82
+ const signature_ = (signature as readonly string[])[i]!
83
+ if (isStructSignature(signature_)) continue
84
+ abiItem = parseSignature(signature_, structs) as ParseAbiItem<signature>
85
+ break
86
+ }
87
+ }
88
+
89
+ if (!abiItem) throw new InvalidAbiItemError({ signature })
90
+ return abiItem as ParseAbiItem<signature>
91
+ }
@@ -0,0 +1,68 @@
1
+ import { expectTypeOf, test } from 'vp/test'
2
+
3
+ import type { AbiParameter } from 'abitype'
4
+ import type { ParseAbiParameter } from './parseAbiParameter.js'
5
+ import { parseAbiParameter } from './parseAbiParameter.js'
6
+
7
+ test('ParseAbiParameter', () => {
8
+ expectTypeOf<ParseAbiParameter<''>>().toEqualTypeOf<never>()
9
+ expectTypeOf<ParseAbiParameter<[]>>().toEqualTypeOf<never>()
10
+ expectTypeOf<
11
+ ParseAbiParameter<['struct Foo { string name; }']>
12
+ >().toEqualTypeOf<never>()
13
+
14
+ // string
15
+ expectTypeOf<ParseAbiParameter<'address from'>>().toEqualTypeOf<{
16
+ readonly type: 'address'
17
+ readonly name: 'from'
18
+ }>()
19
+ expectTypeOf<ParseAbiParameter<'address indexed from'>>().toEqualTypeOf<{
20
+ readonly type: 'address'
21
+ readonly name: 'from'
22
+ readonly indexed: true
23
+ }>()
24
+ expectTypeOf<ParseAbiParameter<'address calldata foo'>>().toEqualTypeOf<{
25
+ readonly type: 'address'
26
+ readonly name: 'foo'
27
+ }>()
28
+
29
+ // Array
30
+ expectTypeOf<
31
+ ParseAbiParameter<['Foo', 'struct Foo { string name; }']>
32
+ >().toEqualTypeOf<{
33
+ readonly type: 'tuple'
34
+ readonly components: readonly [
35
+ {
36
+ readonly name: 'name'
37
+ readonly type: 'string'
38
+ },
39
+ ]
40
+ }>()
41
+
42
+ expectTypeOf<ParseAbiParameter<'(string bar) foo'>>().toEqualTypeOf<{
43
+ readonly type: 'tuple'
44
+ readonly components: readonly [
45
+ {
46
+ readonly type: 'string'
47
+ readonly name: 'bar'
48
+ },
49
+ ]
50
+ readonly name: 'foo'
51
+ }>()
52
+ })
53
+
54
+ test('parseAbiParameter', () => {
55
+ // @ts-expect-error empty array not allowed
56
+ expectTypeOf(parseAbiParameter([])).toEqualTypeOf<never>()
57
+ expectTypeOf(
58
+ parseAbiParameter(['struct Foo { string name; }']),
59
+ ).toEqualTypeOf<never>()
60
+
61
+ expectTypeOf(parseAbiParameter('(string)')).toEqualTypeOf<{
62
+ readonly type: 'tuple'
63
+ readonly components: readonly [{ readonly type: 'string' }]
64
+ }>()
65
+
66
+ const param: string = 'address'
67
+ expectTypeOf(parseAbiParameter(param)).toEqualTypeOf<AbiParameter>()
68
+ })