ox 1.0.0-beta.2 → 1.0.0-beta.21

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 (666) hide show
  1. package/dist/core/Abi.d.ts +6 -2
  2. package/dist/core/Abi.d.ts.map +1 -1
  3. package/dist/core/Abi.js +6 -3
  4. package/dist/core/Abi.js.map +1 -1
  5. package/dist/core/AbiConstructor.d.ts +2 -1
  6. package/dist/core/AbiConstructor.d.ts.map +1 -1
  7. package/dist/core/AbiConstructor.js +2 -2
  8. package/dist/core/AbiConstructor.js.map +1 -1
  9. package/dist/core/AbiError.d.ts +3 -1
  10. package/dist/core/AbiError.d.ts.map +1 -1
  11. package/dist/core/AbiError.js +2 -2
  12. package/dist/core/AbiError.js.map +1 -1
  13. package/dist/core/AbiEvent.d.ts +3 -1
  14. package/dist/core/AbiEvent.d.ts.map +1 -1
  15. package/dist/core/AbiEvent.js +2 -2
  16. package/dist/core/AbiEvent.js.map +1 -1
  17. package/dist/core/AbiFunction.d.ts +3 -1
  18. package/dist/core/AbiFunction.d.ts.map +1 -1
  19. package/dist/core/AbiFunction.js +2 -2
  20. package/dist/core/AbiFunction.js.map +1 -1
  21. package/dist/core/AbiItem.d.ts +6 -3
  22. package/dist/core/AbiItem.d.ts.map +1 -1
  23. package/dist/core/AbiItem.js +9 -7
  24. package/dist/core/AbiItem.js.map +1 -1
  25. package/dist/core/AbiParameter.d.ts +88 -0
  26. package/dist/core/AbiParameter.d.ts.map +1 -0
  27. package/dist/core/AbiParameter.js +82 -0
  28. package/dist/core/AbiParameter.js.map +1 -0
  29. package/dist/core/AbiParameters.d.ts +58 -2
  30. package/dist/core/AbiParameters.d.ts.map +1 -1
  31. package/dist/core/AbiParameters.js +60 -6
  32. package/dist/core/AbiParameters.js.map +1 -1
  33. package/dist/core/AccountProof.d.ts +3 -1
  34. package/dist/core/AccountProof.d.ts.map +1 -1
  35. package/dist/core/AccountProof.js +3 -4
  36. package/dist/core/AccountProof.js.map +1 -1
  37. package/dist/core/Authorization.d.ts +6 -2
  38. package/dist/core/Authorization.d.ts.map +1 -1
  39. package/dist/core/Authorization.js +3 -2
  40. package/dist/core/Authorization.js.map +1 -1
  41. package/dist/core/Block.d.ts +3 -1
  42. package/dist/core/Block.d.ts.map +1 -1
  43. package/dist/core/Block.js +12 -13
  44. package/dist/core/Block.js.map +1 -1
  45. package/dist/core/BlockOverrides.d.ts +5 -1
  46. package/dist/core/BlockOverrides.d.ts.map +1 -1
  47. package/dist/core/BlockOverrides.js +12 -12
  48. package/dist/core/BlockOverrides.js.map +1 -1
  49. package/dist/core/Filter.d.ts +3 -1
  50. package/dist/core/Filter.d.ts.map +1 -1
  51. package/dist/core/Filter.js +4 -4
  52. package/dist/core/Filter.js.map +1 -1
  53. package/dist/core/Log.d.ts +4 -2
  54. package/dist/core/Log.d.ts.map +1 -1
  55. package/dist/core/Log.js +4 -4
  56. package/dist/core/Log.js.map +1 -1
  57. package/dist/core/Rlp.d.ts +27 -5
  58. package/dist/core/Rlp.d.ts.map +1 -1
  59. package/dist/core/Rlp.js +40 -4
  60. package/dist/core/Rlp.js.map +1 -1
  61. package/dist/core/RpcSchema.d.ts +2 -2
  62. package/dist/core/Signature.d.ts +3 -1
  63. package/dist/core/Signature.d.ts.map +1 -1
  64. package/dist/core/Signature.js +2 -1
  65. package/dist/core/Signature.js.map +1 -1
  66. package/dist/core/StateOverrides.d.ts +5 -1
  67. package/dist/core/StateOverrides.d.ts.map +1 -1
  68. package/dist/core/StateOverrides.js +4 -4
  69. package/dist/core/StateOverrides.js.map +1 -1
  70. package/dist/core/Transaction.d.ts +3 -1
  71. package/dist/core/Transaction.d.ts.map +1 -1
  72. package/dist/core/Transaction.js +26 -26
  73. package/dist/core/Transaction.js.map +1 -1
  74. package/dist/core/TransactionReceipt.d.ts +3 -1
  75. package/dist/core/TransactionReceipt.d.ts.map +1 -1
  76. package/dist/core/TransactionReceipt.js +8 -8
  77. package/dist/core/TransactionReceipt.js.map +1 -1
  78. package/dist/core/TransactionRequest.d.ts +3 -1
  79. package/dist/core/TransactionRequest.d.ts.map +1 -1
  80. package/dist/core/TransactionRequest.js +11 -10
  81. package/dist/core/TransactionRequest.js.map +1 -1
  82. package/dist/core/TxEnvelope.d.ts +3 -1
  83. package/dist/core/TxEnvelope.d.ts.map +1 -1
  84. package/dist/core/TxEnvelope.js.map +1 -1
  85. package/dist/core/TxEnvelopeEip1559.d.ts +3 -1
  86. package/dist/core/TxEnvelopeEip1559.d.ts.map +1 -1
  87. package/dist/core/TxEnvelopeEip1559.js +12 -11
  88. package/dist/core/TxEnvelopeEip1559.js.map +1 -1
  89. package/dist/core/TxEnvelopeEip2930.d.ts +3 -1
  90. package/dist/core/TxEnvelopeEip2930.d.ts.map +1 -1
  91. package/dist/core/TxEnvelopeEip2930.js +10 -9
  92. package/dist/core/TxEnvelopeEip2930.js.map +1 -1
  93. package/dist/core/TxEnvelopeEip4844.d.ts +3 -1
  94. package/dist/core/TxEnvelopeEip4844.d.ts.map +1 -1
  95. package/dist/core/TxEnvelopeEip4844.js +16 -13
  96. package/dist/core/TxEnvelopeEip4844.js.map +1 -1
  97. package/dist/core/TxEnvelopeEip7702.d.ts +3 -1
  98. package/dist/core/TxEnvelopeEip7702.d.ts.map +1 -1
  99. package/dist/core/TxEnvelopeEip7702.js +12 -11
  100. package/dist/core/TxEnvelopeEip7702.js.map +1 -1
  101. package/dist/core/TxEnvelopeLegacy.d.ts +7 -1
  102. package/dist/core/TxEnvelopeLegacy.d.ts.map +1 -1
  103. package/dist/core/TxEnvelopeLegacy.js +9 -8
  104. package/dist/core/TxEnvelopeLegacy.js.map +1 -1
  105. package/dist/core/Withdrawal.d.ts +4 -2
  106. package/dist/core/Withdrawal.d.ts.map +1 -1
  107. package/dist/core/Withdrawal.js +4 -4
  108. package/dist/core/Withdrawal.js.map +1 -1
  109. package/dist/core/internal/abiParameters.d.ts.map +1 -1
  110. package/dist/core/internal/abiParameters.js +21 -3
  111. package/dist/core/internal/abiParameters.js.map +1 -1
  112. package/dist/core/internal/human-readable/errors.d.ts +103 -0
  113. package/dist/core/internal/human-readable/errors.d.ts.map +1 -0
  114. package/dist/core/internal/human-readable/errors.js +142 -0
  115. package/dist/core/internal/human-readable/errors.js.map +1 -0
  116. package/dist/core/internal/human-readable/formatAbi.d.ts +19 -0
  117. package/dist/core/internal/human-readable/formatAbi.d.ts.map +1 -0
  118. package/dist/core/internal/human-readable/formatAbi.js +18 -0
  119. package/dist/core/internal/human-readable/formatAbi.js.map +1 -0
  120. package/dist/core/internal/human-readable/formatAbiItem.d.ts +23 -0
  121. package/dist/core/internal/human-readable/formatAbiItem.d.ts.map +1 -0
  122. package/dist/core/internal/human-readable/formatAbiItem.js +25 -0
  123. package/dist/core/internal/human-readable/formatAbiItem.js.map +1 -0
  124. package/dist/core/internal/human-readable/formatAbiParameter.d.ts +41 -0
  125. package/dist/core/internal/human-readable/formatAbiParameter.d.ts.map +1 -0
  126. package/dist/core/internal/human-readable/formatAbiParameter.js +36 -0
  127. package/dist/core/internal/human-readable/formatAbiParameter.js.map +1 -0
  128. package/dist/core/internal/human-readable/formatAbiParameters.d.ts +26 -0
  129. package/dist/core/internal/human-readable/formatAbiParameters.d.ts.map +1 -0
  130. package/dist/core/internal/human-readable/formatAbiParameters.js +19 -0
  131. package/dist/core/internal/human-readable/formatAbiParameters.js.map +1 -0
  132. package/dist/core/internal/human-readable/parseAbi.d.ts +22 -0
  133. package/dist/core/internal/human-readable/parseAbi.d.ts.map +1 -0
  134. package/dist/core/internal/human-readable/parseAbi.js +22 -0
  135. package/dist/core/internal/human-readable/parseAbi.js.map +1 -0
  136. package/dist/core/internal/human-readable/parseAbiItem.d.ts +23 -0
  137. package/dist/core/internal/human-readable/parseAbiItem.d.ts.map +1 -0
  138. package/dist/core/internal/human-readable/parseAbiItem.js +30 -0
  139. package/dist/core/internal/human-readable/parseAbiItem.js.map +1 -0
  140. package/dist/core/internal/human-readable/parseAbiParameter.d.ts +28 -0
  141. package/dist/core/internal/human-readable/parseAbiParameter.d.ts.map +1 -0
  142. package/dist/core/internal/human-readable/parseAbiParameter.js +32 -0
  143. package/dist/core/internal/human-readable/parseAbiParameter.js.map +1 -0
  144. package/dist/core/internal/human-readable/parseAbiParameters.d.ts +38 -0
  145. package/dist/core/internal/human-readable/parseAbiParameters.d.ts.map +1 -0
  146. package/dist/core/internal/human-readable/parseAbiParameters.js +39 -0
  147. package/dist/core/internal/human-readable/parseAbiParameters.js.map +1 -0
  148. package/dist/core/internal/human-readable/regex.d.ts +9 -0
  149. package/dist/core/internal/human-readable/regex.d.ts.map +1 -0
  150. package/dist/core/internal/human-readable/regex.js +12 -0
  151. package/dist/core/internal/human-readable/regex.js.map +1 -0
  152. package/dist/core/internal/human-readable/runtime/cache.d.ts +22 -0
  153. package/dist/core/internal/human-readable/runtime/cache.d.ts.map +1 -0
  154. package/dist/core/internal/human-readable/runtime/cache.js +86 -0
  155. package/dist/core/internal/human-readable/runtime/cache.js.map +1 -0
  156. package/dist/core/internal/human-readable/runtime/signatures.d.ts +39 -0
  157. package/dist/core/internal/human-readable/runtime/signatures.d.ts.map +1 -0
  158. package/dist/core/internal/human-readable/runtime/signatures.js +67 -0
  159. package/dist/core/internal/human-readable/runtime/signatures.js.map +1 -0
  160. package/dist/core/internal/human-readable/runtime/structs.d.ts +3 -0
  161. package/dist/core/internal/human-readable/runtime/structs.d.ts.map +1 -0
  162. package/dist/core/internal/human-readable/runtime/structs.js +79 -0
  163. package/dist/core/internal/human-readable/runtime/structs.js.map +1 -0
  164. package/dist/core/internal/human-readable/runtime/utils.d.ts +205 -0
  165. package/dist/core/internal/human-readable/runtime/utils.d.ts.map +1 -0
  166. package/dist/core/internal/human-readable/runtime/utils.js +232 -0
  167. package/dist/core/internal/human-readable/runtime/utils.js.map +1 -0
  168. package/dist/core/internal/human-readable/types/signatures.d.ts +38 -0
  169. package/dist/core/internal/human-readable/types/signatures.d.ts.map +1 -0
  170. package/dist/core/internal/human-readable/types/signatures.js +2 -0
  171. package/dist/core/internal/human-readable/types/signatures.js.map +1 -0
  172. package/dist/core/internal/human-readable/types/structs.d.ts +48 -0
  173. package/dist/core/internal/human-readable/types/structs.d.ts.map +1 -0
  174. package/dist/core/internal/human-readable/types/structs.js +2 -0
  175. package/dist/core/internal/human-readable/types/structs.js.map +1 -0
  176. package/dist/core/internal/human-readable/types/utils.d.ts +163 -0
  177. package/dist/core/internal/human-readable/types/utils.d.ts.map +1 -0
  178. package/dist/core/internal/human-readable/types/utils.js +2 -0
  179. package/dist/core/internal/human-readable/types/utils.js.map +1 -0
  180. package/dist/core/internal/human-readable/types.d.ts +29 -0
  181. package/dist/core/internal/human-readable/types.d.ts.map +1 -0
  182. package/dist/core/internal/human-readable/types.js +2 -0
  183. package/dist/core/internal/human-readable/types.js.map +1 -0
  184. package/dist/core/internal/quantity.d.ts +15 -0
  185. package/dist/core/internal/quantity.d.ts.map +1 -1
  186. package/dist/core/internal/quantity.js +23 -0
  187. package/dist/core/internal/quantity.js.map +1 -1
  188. package/dist/core/internal/rpcSchemas/eth.d.ts +56 -10
  189. package/dist/core/internal/rpcSchemas/eth.d.ts.map +1 -1
  190. package/dist/erc4337/UserOperation.d.ts +3 -1
  191. package/dist/erc4337/UserOperation.d.ts.map +1 -1
  192. package/dist/erc4337/UserOperation.js +11 -10
  193. package/dist/erc4337/UserOperation.js.map +1 -1
  194. package/dist/erc4337/UserOperationGas.d.ts +5 -1
  195. package/dist/erc4337/UserOperationGas.d.ts.map +1 -1
  196. package/dist/erc4337/UserOperationGas.js +8 -8
  197. package/dist/erc4337/UserOperationGas.js.map +1 -1
  198. package/dist/erc4337/UserOperationReceipt.d.ts +5 -1
  199. package/dist/erc4337/UserOperationReceipt.d.ts.map +1 -1
  200. package/dist/erc4337/UserOperationReceipt.js +4 -4
  201. package/dist/erc4337/UserOperationReceipt.js.map +1 -1
  202. package/dist/index.d.ts +37 -0
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +37 -0
  205. package/dist/index.js.map +1 -1
  206. package/dist/tempo/AuthorizationTempo.d.ts +6 -2
  207. package/dist/tempo/AuthorizationTempo.d.ts.map +1 -1
  208. package/dist/tempo/AuthorizationTempo.js +3 -2
  209. package/dist/tempo/AuthorizationTempo.js.map +1 -1
  210. package/dist/tempo/Channel.d.ts +8 -14
  211. package/dist/tempo/Channel.d.ts.map +1 -1
  212. package/dist/tempo/Channel.js +4 -8
  213. package/dist/tempo/Channel.js.map +1 -1
  214. package/dist/tempo/KeyAuthorization.d.ts +8 -6
  215. package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
  216. package/dist/tempo/KeyAuthorization.js +10 -8
  217. package/dist/tempo/KeyAuthorization.js.map +1 -1
  218. package/dist/tempo/MultisigConfig.d.ts +37 -85
  219. package/dist/tempo/MultisigConfig.d.ts.map +1 -1
  220. package/dist/tempo/MultisigConfig.js +39 -83
  221. package/dist/tempo/MultisigConfig.js.map +1 -1
  222. package/dist/tempo/PoolId.d.ts +8 -7
  223. package/dist/tempo/PoolId.d.ts.map +1 -1
  224. package/dist/tempo/PoolId.js +10 -6
  225. package/dist/tempo/PoolId.js.map +1 -1
  226. package/dist/tempo/RpcSchemaTempo.d.ts +1 -1
  227. package/dist/tempo/RpcSchemaTempo.d.ts.map +1 -1
  228. package/dist/tempo/SignatureEnvelope.d.ts +35 -31
  229. package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
  230. package/dist/tempo/SignatureEnvelope.js +56 -51
  231. package/dist/tempo/SignatureEnvelope.js.map +1 -1
  232. package/dist/tempo/Transaction.d.ts +19 -6
  233. package/dist/tempo/Transaction.d.ts.map +1 -1
  234. package/dist/tempo/Transaction.js +41 -13
  235. package/dist/tempo/Transaction.js.map +1 -1
  236. package/dist/tempo/TransactionReceipt.d.ts +5 -3
  237. package/dist/tempo/TransactionReceipt.d.ts.map +1 -1
  238. package/dist/tempo/TransactionReceipt.js +8 -1
  239. package/dist/tempo/TransactionReceipt.js.map +1 -1
  240. package/dist/tempo/TransactionRequest.d.ts +18 -3
  241. package/dist/tempo/TransactionRequest.d.ts.map +1 -1
  242. package/dist/tempo/TransactionRequest.js +72 -35
  243. package/dist/tempo/TransactionRequest.js.map +1 -1
  244. package/dist/tempo/TxEnvelopeTempo.d.ts +2 -3
  245. package/dist/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  246. package/dist/tempo/TxEnvelopeTempo.js +5 -6
  247. package/dist/tempo/TxEnvelopeTempo.js.map +1 -1
  248. package/dist/tempo/index.d.ts +6 -26
  249. package/dist/tempo/index.d.ts.map +1 -1
  250. package/dist/tempo/index.js +6 -26
  251. package/dist/tempo/index.js.map +1 -1
  252. package/dist/zod/Abi.d.ts +214 -0
  253. package/dist/zod/Abi.d.ts.map +1 -0
  254. package/dist/zod/Abi.js +5 -0
  255. package/dist/zod/Abi.js.map +1 -0
  256. package/dist/zod/AbiConstructor.d.ts +58 -0
  257. package/dist/zod/AbiConstructor.d.ts.map +1 -0
  258. package/dist/zod/AbiConstructor.js +18 -0
  259. package/dist/zod/AbiConstructor.js.map +1 -0
  260. package/dist/zod/AbiError.d.ts +20 -0
  261. package/dist/zod/AbiError.d.ts.map +1 -0
  262. package/dist/zod/AbiError.js +9 -0
  263. package/dist/zod/AbiError.js.map +1 -0
  264. package/dist/zod/AbiEvent.d.ts +23 -0
  265. package/dist/zod/AbiEvent.d.ts.map +1 -0
  266. package/dist/zod/AbiEvent.js +11 -0
  267. package/dist/zod/AbiEvent.js.map +1 -0
  268. package/dist/zod/AbiFallback.d.ts +16 -0
  269. package/dist/zod/AbiFallback.d.ts.map +1 -0
  270. package/dist/zod/AbiFallback.js +16 -0
  271. package/dist/zod/AbiFallback.js.map +1 -0
  272. package/dist/zod/AbiFunction.d.ts +109 -0
  273. package/dist/zod/AbiFunction.d.ts.map +1 -0
  274. package/dist/zod/AbiFunction.js +26 -0
  275. package/dist/zod/AbiFunction.js.map +1 -0
  276. package/dist/zod/AbiItem.d.ts +216 -0
  277. package/dist/zod/AbiItem.d.ts.map +1 -0
  278. package/dist/zod/AbiItem.js +26 -0
  279. package/dist/zod/AbiItem.js.map +1 -0
  280. package/dist/zod/AbiParameter.d.ts +32 -0
  281. package/dist/zod/AbiParameter.d.ts.map +1 -0
  282. package/dist/zod/AbiParameter.js +28 -0
  283. package/dist/zod/AbiParameter.js.map +1 -0
  284. package/dist/zod/AbiParameters.d.ts +30 -0
  285. package/dist/zod/AbiParameters.d.ts.map +1 -0
  286. package/dist/zod/AbiParameters.js +6 -0
  287. package/dist/zod/AbiParameters.js.map +1 -0
  288. package/dist/zod/AbiReceive.d.ts +6 -0
  289. package/dist/zod/AbiReceive.d.ts.map +1 -0
  290. package/dist/zod/AbiReceive.js +7 -0
  291. package/dist/zod/AbiReceive.js.map +1 -0
  292. package/dist/zod/AccountProof.d.ts +20 -0
  293. package/dist/zod/AccountProof.d.ts.map +1 -1
  294. package/dist/zod/AccountProof.js +24 -14
  295. package/dist/zod/AccountProof.js.map +1 -1
  296. package/dist/zod/Authorization.d.ts +43 -0
  297. package/dist/zod/Authorization.d.ts.map +1 -1
  298. package/dist/zod/Authorization.js +36 -16
  299. package/dist/zod/Authorization.js.map +1 -1
  300. package/dist/zod/BigInt.d.ts +2 -0
  301. package/dist/zod/BigInt.d.ts.map +1 -1
  302. package/dist/zod/BigInt.js +6 -1
  303. package/dist/zod/BigInt.js.map +1 -1
  304. package/dist/zod/Block.d.ts +219 -0
  305. package/dist/zod/Block.d.ts.map +1 -1
  306. package/dist/zod/Block.js +24 -20
  307. package/dist/zod/Block.js.map +1 -1
  308. package/dist/zod/BlockOverrides.d.ts +16 -0
  309. package/dist/zod/BlockOverrides.d.ts.map +1 -1
  310. package/dist/zod/BlockOverrides.js +15 -10
  311. package/dist/zod/BlockOverrides.js.map +1 -1
  312. package/dist/zod/Filter.d.ts +14 -0
  313. package/dist/zod/Filter.d.ts.map +1 -1
  314. package/dist/zod/Filter.js +24 -19
  315. package/dist/zod/Filter.js.map +1 -1
  316. package/dist/zod/Log.d.ts +15 -2
  317. package/dist/zod/Log.d.ts.map +1 -1
  318. package/dist/zod/Log.js +18 -13
  319. package/dist/zod/Log.js.map +1 -1
  320. package/dist/zod/Number.d.ts +2 -0
  321. package/dist/zod/Number.d.ts.map +1 -1
  322. package/dist/zod/Number.js +6 -1
  323. package/dist/zod/Number.js.map +1 -1
  324. package/dist/zod/RpcSchema.d.ts +318 -112
  325. package/dist/zod/RpcSchema.d.ts.map +1 -1
  326. package/dist/zod/RpcSchema.js +30 -82
  327. package/dist/zod/RpcSchema.js.map +1 -1
  328. package/dist/zod/Signature.d.ts +6 -0
  329. package/dist/zod/Signature.d.ts.map +1 -1
  330. package/dist/zod/Signature.js +9 -1
  331. package/dist/zod/Signature.js.map +1 -1
  332. package/dist/zod/Solidity.d.ts +15 -0
  333. package/dist/zod/Solidity.d.ts.map +1 -0
  334. package/dist/zod/Solidity.js +41 -0
  335. package/dist/zod/Solidity.js.map +1 -0
  336. package/dist/zod/StateOverrides.d.ts +32 -0
  337. package/dist/zod/StateOverrides.d.ts.map +1 -1
  338. package/dist/zod/StateOverrides.js +25 -18
  339. package/dist/zod/StateOverrides.js.map +1 -1
  340. package/dist/zod/Transaction.d.ts +312 -0
  341. package/dist/zod/Transaction.d.ts.map +1 -1
  342. package/dist/zod/Transaction.js +138 -93
  343. package/dist/zod/Transaction.js.map +1 -1
  344. package/dist/zod/TransactionEnvelope.d.ts +222 -0
  345. package/dist/zod/TransactionEnvelope.d.ts.map +1 -1
  346. package/dist/zod/TransactionEnvelope.js +19 -3
  347. package/dist/zod/TransactionEnvelope.js.map +1 -1
  348. package/dist/zod/TransactionReceipt.d.ts +32 -1
  349. package/dist/zod/TransactionReceipt.d.ts.map +1 -1
  350. package/dist/zod/TransactionReceipt.js +24 -19
  351. package/dist/zod/TransactionReceipt.js.map +1 -1
  352. package/dist/zod/TransactionRequest.d.ts +34 -0
  353. package/dist/zod/TransactionRequest.d.ts.map +1 -1
  354. package/dist/zod/TransactionRequest.js +28 -23
  355. package/dist/zod/TransactionRequest.js.map +1 -1
  356. package/dist/zod/TxEnvelopeEip1559.d.ts +44 -0
  357. package/dist/zod/TxEnvelopeEip1559.d.ts.map +1 -1
  358. package/dist/zod/TxEnvelopeEip1559.js +23 -14
  359. package/dist/zod/TxEnvelopeEip1559.js.map +1 -1
  360. package/dist/zod/TxEnvelopeEip2930.d.ts +42 -0
  361. package/dist/zod/TxEnvelopeEip2930.d.ts.map +1 -1
  362. package/dist/zod/TxEnvelopeEip2930.js +21 -12
  363. package/dist/zod/TxEnvelopeEip2930.js.map +1 -1
  364. package/dist/zod/TxEnvelopeEip4844.d.ts +58 -0
  365. package/dist/zod/TxEnvelopeEip4844.d.ts.map +1 -1
  366. package/dist/zod/TxEnvelopeEip4844.js +29 -20
  367. package/dist/zod/TxEnvelopeEip4844.js.map +1 -1
  368. package/dist/zod/TxEnvelopeEip7702.d.ts +60 -0
  369. package/dist/zod/TxEnvelopeEip7702.d.ts.map +1 -1
  370. package/dist/zod/TxEnvelopeEip7702.js +25 -16
  371. package/dist/zod/TxEnvelopeEip7702.js.map +1 -1
  372. package/dist/zod/TxEnvelopeLegacy.d.ts +34 -0
  373. package/dist/zod/TxEnvelopeLegacy.d.ts.map +1 -1
  374. package/dist/zod/TxEnvelopeLegacy.js +19 -10
  375. package/dist/zod/TxEnvelopeLegacy.js.map +1 -1
  376. package/dist/zod/TypedData.d.ts +226 -0
  377. package/dist/zod/TypedData.d.ts.map +1 -0
  378. package/dist/zod/TypedData.js +84 -0
  379. package/dist/zod/TypedData.js.map +1 -0
  380. package/dist/zod/Uint.d.ts +4 -0
  381. package/dist/zod/Uint.d.ts.map +1 -1
  382. package/dist/zod/Uint.js +14 -1
  383. package/dist/zod/Uint.js.map +1 -1
  384. package/dist/zod/Withdrawal.d.ts +7 -0
  385. package/dist/zod/Withdrawal.d.ts.map +1 -1
  386. package/dist/zod/Withdrawal.js +11 -6
  387. package/dist/zod/Withdrawal.js.map +1 -1
  388. package/dist/zod/internal/Integer.d.ts +15 -0
  389. package/dist/zod/internal/Integer.d.ts.map +1 -1
  390. package/dist/zod/internal/Integer.js +39 -0
  391. package/dist/zod/internal/Integer.js.map +1 -1
  392. package/dist/zod/internal/TransactionEnvelope.d.ts +38 -28
  393. package/dist/zod/internal/TransactionEnvelope.d.ts.map +1 -1
  394. package/dist/zod/internal/TransactionEnvelope.js +22 -15
  395. package/dist/zod/internal/TransactionEnvelope.js.map +1 -1
  396. package/dist/zod/internal/rpcSchemas/Eth.d.ts +260 -123
  397. package/dist/zod/internal/rpcSchemas/Eth.d.ts.map +1 -1
  398. package/dist/zod/internal/rpcSchemas/Eth.js +17 -6
  399. package/dist/zod/internal/rpcSchemas/Eth.js.map +1 -1
  400. package/dist/zod/internal/rpcSchemas/Wallet.d.ts +1 -1
  401. package/dist/zod/tempo/AuthorizationTempo.d.ts +405 -12
  402. package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
  403. package/dist/zod/tempo/AuthorizationTempo.js +20 -0
  404. package/dist/zod/tempo/AuthorizationTempo.js.map +1 -1
  405. package/dist/zod/tempo/KeyAuthorization.d.ts +838 -69
  406. package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
  407. package/dist/zod/tempo/KeyAuthorization.js +49 -8
  408. package/dist/zod/tempo/KeyAuthorization.js.map +1 -1
  409. package/dist/zod/tempo/RpcSchemaTempo.d.ts +218 -36
  410. package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
  411. package/dist/zod/tempo/SignatureEnvelope.d.ts +0 -6
  412. package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
  413. package/dist/zod/tempo/SignatureEnvelope.js +0 -2
  414. package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
  415. package/dist/zod/tempo/Transaction.d.ts +2203 -192
  416. package/dist/zod/tempo/Transaction.d.ts.map +1 -1
  417. package/dist/zod/tempo/Transaction.js +113 -33
  418. package/dist/zod/tempo/Transaction.js.map +1 -1
  419. package/dist/zod/tempo/TransactionReceipt.d.ts +34 -1
  420. package/dist/zod/tempo/TransactionReceipt.d.ts.map +1 -1
  421. package/dist/zod/tempo/TransactionReceipt.js +26 -21
  422. package/dist/zod/tempo/TransactionReceipt.js.map +1 -1
  423. package/dist/zod/tempo/TransactionRequest.d.ts +1049 -57
  424. package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
  425. package/dist/zod/tempo/TransactionRequest.js +141 -26
  426. package/dist/zod/tempo/TransactionRequest.js.map +1 -1
  427. package/dist/zod/tempo/TxEnvelopeTempo.d.ts +225 -18
  428. package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  429. package/dist/zod/tempo/TxEnvelopeTempo.js +1 -1
  430. package/dist/zod/tempo/TxEnvelopeTempo.js.map +1 -1
  431. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +0 -3
  432. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts.map +1 -1
  433. package/dist/zod/tempo/z.d.ts +0 -1
  434. package/dist/zod/tempo/z.d.ts.map +1 -1
  435. package/dist/zod/tempo/z.js +0 -1
  436. package/dist/zod/tempo/z.js.map +1 -1
  437. package/dist/zod/z.d.ts +15 -3
  438. package/dist/zod/z.d.ts.map +1 -1
  439. package/dist/zod/z.js +15 -3
  440. package/dist/zod/z.js.map +1 -1
  441. package/package.json +66 -11
  442. package/src/CHANGELOG.md +18 -0
  443. package/src/core/Abi.bench.ts +30 -0
  444. package/src/core/Abi.ts +13 -4
  445. package/src/core/AbiConstructor.ts +3 -2
  446. package/src/core/AbiError.ts +6 -2
  447. package/src/core/AbiEvent.ts +6 -2
  448. package/src/core/AbiFunction.ts +6 -2
  449. package/src/core/AbiItem.bench.ts +19 -0
  450. package/src/core/AbiItem.ts +20 -10
  451. package/src/core/AbiParameter.bench.ts +35 -0
  452. package/src/core/AbiParameter.ts +126 -0
  453. package/src/core/AbiParameters.bench.ts +22 -0
  454. package/src/core/AbiParameters.ts +77 -8
  455. package/src/core/AccountProof.ts +7 -4
  456. package/src/core/Authorization.ts +11 -4
  457. package/src/core/Block.ts +24 -13
  458. package/src/core/BlockOverrides.ts +18 -13
  459. package/src/core/Filter.ts +8 -5
  460. package/src/core/Log.ts +10 -6
  461. package/src/core/Rlp.ts +66 -3
  462. package/src/core/RpcSchema.ts +2 -2
  463. package/src/core/Signature.ts +6 -2
  464. package/src/core/StateOverrides.ts +10 -5
  465. package/src/core/Transaction.ts +37 -26
  466. package/src/core/TransactionReceipt.ts +17 -8
  467. package/src/core/TransactionRequest.ts +21 -11
  468. package/src/core/TxEnvelope.ts +9 -2
  469. package/src/core/TxEnvelopeEip1559.ts +21 -12
  470. package/src/core/TxEnvelopeEip2930.ts +17 -10
  471. package/src/core/TxEnvelopeEip4844.ts +25 -14
  472. package/src/core/TxEnvelopeEip7702.ts +21 -12
  473. package/src/core/TxEnvelopeLegacy.ts +20 -9
  474. package/src/core/Withdrawal.ts +9 -5
  475. package/src/core/_test/Abi.test.ts +4 -0
  476. package/src/core/_test/AbiItem.test.ts +3 -0
  477. package/src/core/_test/AbiParameter.test-d.ts +41 -0
  478. package/src/core/_test/AbiParameter.test.ts +84 -0
  479. package/src/core/_test/AbiParameters.decode.test.ts +88 -12
  480. package/src/core/_test/AbiParameters.encode.test.ts +68 -0
  481. package/src/core/_test/AbiParameters.test.ts +7 -0
  482. package/src/core/_test/AccountProof.test.ts +56 -0
  483. package/src/core/_test/Authorization.test.ts +29 -0
  484. package/src/core/_test/Block.test.ts +98 -0
  485. package/src/core/_test/BlockOverrides.test.ts +50 -0
  486. package/src/core/_test/Filter.test.ts +32 -0
  487. package/src/core/_test/Log.test.ts +42 -0
  488. package/src/core/_test/Rlp.test.ts +101 -0
  489. package/src/core/_test/RpcSchema.test-d.ts +12 -0
  490. package/src/core/_test/Signature.test.ts +14 -0
  491. package/src/core/_test/StateOverrides.test.ts +51 -0
  492. package/src/core/_test/Transaction.test.ts +64 -0
  493. package/src/core/_test/TransactionEnvelopeEip1559.test.ts +41 -0
  494. package/src/core/_test/TransactionEnvelopeEip2930.test.ts +38 -0
  495. package/src/core/_test/TransactionEnvelopeEip4844.test.ts +47 -0
  496. package/src/core/_test/TransactionEnvelopeEip7702.test.ts +71 -0
  497. package/src/core/_test/TransactionEnvelopeLegacy.test.ts +38 -0
  498. package/src/core/_test/TransactionReceipt.test.ts +54 -0
  499. package/src/core/_test/Withdrawal.test.ts +33 -0
  500. package/src/core/_test/index.test.ts +1 -0
  501. package/src/core/internal/abiParameters.ts +21 -3
  502. package/src/core/internal/human-readable/_snap/formatAbi.test.ts.snap +74 -0
  503. package/src/core/internal/human-readable/_snap/parseAbi.test.ts.snap +2353 -0
  504. package/src/core/internal/human-readable/errors.test.ts +258 -0
  505. package/src/core/internal/human-readable/errors.ts +205 -0
  506. package/src/core/internal/human-readable/formatAbi.test-d.ts +144 -0
  507. package/src/core/internal/human-readable/formatAbi.test.ts +23 -0
  508. package/src/core/internal/human-readable/formatAbi.ts +37 -0
  509. package/src/core/internal/human-readable/formatAbiItem.test-d.ts +115 -0
  510. package/src/core/internal/human-readable/formatAbiItem.test.ts +102 -0
  511. package/src/core/internal/human-readable/formatAbiItem.ts +136 -0
  512. package/src/core/internal/human-readable/formatAbiParameter.test-d.ts +125 -0
  513. package/src/core/internal/human-readable/formatAbiParameter.test.ts +126 -0
  514. package/src/core/internal/human-readable/formatAbiParameter.ts +86 -0
  515. package/src/core/internal/human-readable/formatAbiParameters.test-d.ts +92 -0
  516. package/src/core/internal/human-readable/formatAbiParameters.test.ts +32 -0
  517. package/src/core/internal/human-readable/formatAbiParameters.ts +46 -0
  518. package/src/core/internal/human-readable/human-readable.bench-d.ts +58 -0
  519. package/src/core/internal/human-readable/integration.test.ts +68 -0
  520. package/src/core/internal/human-readable/parseAbi.test-d.ts +188 -0
  521. package/src/core/internal/human-readable/parseAbi.test.ts +82 -0
  522. package/src/core/internal/human-readable/parseAbi.ts +59 -0
  523. package/src/core/internal/human-readable/parseAbiItem.test-d.ts +183 -0
  524. package/src/core/internal/human-readable/parseAbiItem.test.ts +264 -0
  525. package/src/core/internal/human-readable/parseAbiItem.ts +91 -0
  526. package/src/core/internal/human-readable/parseAbiParameter.test-d.ts +68 -0
  527. package/src/core/internal/human-readable/parseAbiParameter.test.ts +207 -0
  528. package/src/core/internal/human-readable/parseAbiParameter.ts +95 -0
  529. package/src/core/internal/human-readable/parseAbiParameters.test-d.ts +160 -0
  530. package/src/core/internal/human-readable/parseAbiParameters.test.ts +80 -0
  531. package/src/core/internal/human-readable/parseAbiParameters.ts +123 -0
  532. package/src/core/internal/human-readable/regex.ts +15 -0
  533. package/src/core/internal/human-readable/runtime/cache.ts +96 -0
  534. package/src/core/internal/human-readable/runtime/signatures.test.ts +236 -0
  535. package/src/core/internal/human-readable/runtime/signatures.ts +106 -0
  536. package/src/core/internal/human-readable/runtime/structs.test.ts +210 -0
  537. package/src/core/internal/human-readable/runtime/structs.ts +97 -0
  538. package/src/core/internal/human-readable/runtime/utils.test.ts +717 -0
  539. package/src/core/internal/human-readable/runtime/utils.ts +344 -0
  540. package/src/core/internal/human-readable/types/signatures.test-d.ts +255 -0
  541. package/src/core/internal/human-readable/types/signatures.ts +369 -0
  542. package/src/core/internal/human-readable/types/structs.test-d.ts +221 -0
  543. package/src/core/internal/human-readable/types/structs.ts +88 -0
  544. package/src/core/internal/human-readable/types/utils.test-d.ts +1029 -0
  545. package/src/core/internal/human-readable/types/utils.ts +392 -0
  546. package/src/core/internal/human-readable/types.ts +69 -0
  547. package/src/core/internal/quantity.ts +29 -0
  548. package/src/core/internal/rpcSchemas/eth.ts +76 -10
  549. package/src/erc4337/UserOperation.ts +26 -11
  550. package/src/erc4337/UserOperationGas.ts +19 -8
  551. package/src/erc4337/UserOperationReceipt.ts +14 -4
  552. package/src/index.ts +38 -0
  553. package/src/tempo/AuthorizationTempo.ts +11 -4
  554. package/src/tempo/Channel.test.ts +2 -23
  555. package/src/tempo/Channel.ts +10 -22
  556. package/src/tempo/KeyAuthorization.test.ts +22 -0
  557. package/src/tempo/KeyAuthorization.ts +20 -14
  558. package/src/tempo/MultisigConfig.test.ts +54 -37
  559. package/src/tempo/MultisigConfig.ts +59 -134
  560. package/src/tempo/PoolId.test.ts +7 -41
  561. package/src/tempo/PoolId.ts +15 -10
  562. package/src/tempo/RpcSchemaTempo.ts +1 -1
  563. package/src/tempo/SignatureEnvelope.test.ts +118 -17
  564. package/src/tempo/SignatureEnvelope.ts +81 -73
  565. package/src/tempo/Transaction.test.ts +0 -15
  566. package/src/tempo/Transaction.ts +78 -19
  567. package/src/tempo/TransactionReceipt.test.ts +76 -0
  568. package/src/tempo/TransactionReceipt.ts +19 -5
  569. package/src/tempo/TransactionRequest.test.ts +174 -1
  570. package/src/tempo/TransactionRequest.ts +98 -39
  571. package/src/tempo/TxEnvelopeTempo.test.ts +2 -2
  572. package/src/tempo/TxEnvelopeTempo.ts +7 -7
  573. package/src/tempo/e2e.test.ts +228 -50
  574. package/src/tempo/index.ts +6 -26
  575. package/src/version.ts +1 -1
  576. package/src/zod/Abi.ts +5 -0
  577. package/src/zod/AbiConstructor.ts +24 -0
  578. package/src/zod/AbiError.ts +9 -0
  579. package/src/zod/AbiEvent.ts +11 -0
  580. package/src/zod/AbiFallback.ts +22 -0
  581. package/src/zod/AbiFunction.ts +32 -0
  582. package/src/zod/AbiItem.ts +28 -0
  583. package/src/zod/AbiParameter.ts +36 -0
  584. package/src/zod/AbiParameters.ts +7 -0
  585. package/src/zod/AbiReceive.ts +7 -0
  586. package/src/zod/AccountProof.ts +36 -14
  587. package/src/zod/Authorization.ts +65 -18
  588. package/src/zod/BigInt.ts +12 -1
  589. package/src/zod/Block.ts +68 -26
  590. package/src/zod/BlockOverrides.ts +24 -10
  591. package/src/zod/Filter.ts +26 -21
  592. package/src/zod/Log.ts +23 -13
  593. package/src/zod/Number.ts +12 -1
  594. package/src/zod/RpcSchema.ts +123 -29
  595. package/src/zod/Signature.ts +18 -3
  596. package/src/zod/Solidity.ts +83 -0
  597. package/src/zod/StateOverrides.ts +31 -19
  598. package/src/zod/Transaction.ts +254 -101
  599. package/src/zod/TransactionEnvelope.ts +27 -3
  600. package/src/zod/TransactionReceipt.ts +34 -19
  601. package/src/zod/TransactionRequest.ts +42 -23
  602. package/src/zod/TxEnvelopeEip1559.ts +34 -13
  603. package/src/zod/TxEnvelopeEip2930.ts +32 -11
  604. package/src/zod/TxEnvelopeEip4844.ts +40 -19
  605. package/src/zod/TxEnvelopeEip7702.ts +46 -15
  606. package/src/zod/TxEnvelopeLegacy.ts +30 -9
  607. package/src/zod/TypedData.ts +111 -0
  608. package/src/zod/Uint.ts +19 -0
  609. package/src/zod/Withdrawal.ts +18 -6
  610. package/src/zod/_test/Abi.test-d.ts +46 -0
  611. package/src/zod/_test/Abi.test.ts +163 -0
  612. package/src/zod/_test/AccountProof.test.ts +32 -0
  613. package/src/zod/_test/Authorization.test.ts +42 -0
  614. package/src/zod/_test/BigInt.test.ts +9 -1
  615. package/src/zod/_test/Block.test.ts +54 -0
  616. package/src/zod/_test/BlockOverrides.test.ts +35 -0
  617. package/src/zod/_test/Filter.test.ts +34 -0
  618. package/src/zod/_test/Log.test.ts +49 -0
  619. package/src/zod/_test/Number.test.ts +8 -1
  620. package/src/zod/_test/RpcSchema.test-d.ts +46 -0
  621. package/src/zod/_test/RpcSchema.test.ts +70 -0
  622. package/src/zod/_test/Signature.test.ts +10 -0
  623. package/src/zod/_test/StateOverrides.test.ts +26 -0
  624. package/src/zod/_test/Transaction.test.ts +30 -0
  625. package/src/zod/_test/TransactionEnvelope.test.ts +34 -0
  626. package/src/zod/_test/TransactionReceipt.test.ts +45 -1
  627. package/src/zod/_test/TransactionRequest.test.ts +31 -0
  628. package/src/zod/_test/TxEnvelope.test.ts +32 -0
  629. package/src/zod/_test/TypedData.test-d.ts +20 -0
  630. package/src/zod/_test/TypedData.test.ts +87 -0
  631. package/src/zod/_test/Uint.test.ts +15 -0
  632. package/src/zod/_test/Withdrawal.test.ts +35 -0
  633. package/src/zod/_test/z.test-d.ts +6 -0
  634. package/src/zod/_test/z.test.ts +17 -0
  635. package/src/zod/internal/Integer.ts +58 -0
  636. package/src/zod/internal/TransactionEnvelope.ts +33 -17
  637. package/src/zod/internal/rpcSchemas/Eth.ts +20 -6
  638. package/src/zod/tempo/AuthorizationTempo.ts +25 -0
  639. package/src/zod/tempo/KeyAuthorization.ts +58 -8
  640. package/src/zod/tempo/SignatureEnvelope.ts +0 -2
  641. package/src/zod/tempo/Transaction.ts +148 -33
  642. package/src/zod/tempo/TransactionReceipt.ts +36 -21
  643. package/src/zod/tempo/TransactionRequest.ts +154 -28
  644. package/src/zod/tempo/TxEnvelopeTempo.ts +1 -1
  645. package/src/zod/tempo/_test/AuthorizationTempo.test.ts +24 -0
  646. package/src/zod/tempo/_test/KeyAuthorization.test.ts +85 -0
  647. package/src/zod/tempo/_test/SignatureEnvelope.test.ts +0 -2
  648. package/src/zod/tempo/_test/Transaction.test.ts +178 -0
  649. package/src/zod/tempo/_test/TransactionReceipt.test.ts +26 -0
  650. package/src/zod/tempo/_test/TransactionRequest.test.ts +73 -0
  651. package/src/zod/tempo/z.ts +0 -1
  652. package/src/zod/z.ts +16 -2
  653. package/dist/tempo/TokenId.d.ts +0 -87
  654. package/dist/tempo/TokenId.d.ts.map +0 -1
  655. package/dist/tempo/TokenId.js +0 -123
  656. package/dist/tempo/TokenId.js.map +0 -1
  657. package/dist/zod/tempo/TokenId.d.ts +0 -6
  658. package/dist/zod/tempo/TokenId.d.ts.map +0 -1
  659. package/dist/zod/tempo/TokenId.js +0 -14
  660. package/dist/zod/tempo/TokenId.js.map +0 -1
  661. package/src/tempo/TokenId.bench.ts +0 -36
  662. package/src/tempo/TokenId.test.ts +0 -79
  663. package/src/tempo/TokenId.ts +0 -141
  664. package/src/zod/tempo/TokenId.ts +0 -15
  665. package/src/zod/tempo/_test/TokenId.test-d.ts +0 -17
  666. package/src/zod/tempo/_test/TokenId.test.ts +0 -21
@@ -0,0 +1,1029 @@
1
+ import { assertType, expectTypeOf, test } from 'vp/test'
2
+
3
+ import type {
4
+ ParseAbiParameter,
5
+ ParseAbiParameters,
6
+ ParseSignature,
7
+ SplitParameters,
8
+ _ParseFunctionParametersAndStateMutability,
9
+ _ParseTuple,
10
+ _SplitNameOrModifier,
11
+ _UnwrapNameOrModifier,
12
+ _ValidateAbiParameter,
13
+ } from './utils.js'
14
+
15
+ type OptionsWithModifier = { modifier: 'calldata'; structs: unknown }
16
+ type OptionsWithIndexed = { modifier: 'indexed'; structs: unknown }
17
+ type OptionsWithStructs = {
18
+ structs: {
19
+ Foo: [{ type: 'address'; name: 'bar' }]
20
+ }
21
+ }
22
+
23
+ test('ParseSignature', () => {
24
+ type Structs = {
25
+ Baz: [{ type: 'address'; name: 'baz' }]
26
+ }
27
+
28
+ // Error
29
+ assertType<ParseSignature<'error Foo()'>>({
30
+ type: 'error',
31
+ name: 'Foo',
32
+ inputs: [],
33
+ })
34
+ assertType<ParseSignature<'error Foo(string)'>>({
35
+ type: 'error',
36
+ name: 'Foo',
37
+ inputs: [{ type: 'string' }],
38
+ })
39
+ assertType<ParseSignature<'error Foo(string bar)'>>({
40
+ type: 'error',
41
+ name: 'Foo',
42
+ inputs: [{ type: 'string', name: 'bar' }],
43
+ })
44
+ assertType<ParseSignature<'error Foo(Baz bar)', Structs>>({
45
+ type: 'error',
46
+ name: 'Foo',
47
+ inputs: [
48
+ {
49
+ type: 'tuple',
50
+ name: 'bar',
51
+ components: [{ type: 'address', name: 'baz' }],
52
+ },
53
+ ],
54
+ })
55
+
56
+ // Events
57
+ assertType<ParseSignature<'event Foo()'>>({
58
+ type: 'event',
59
+ name: 'Foo',
60
+ inputs: [],
61
+ })
62
+ assertType<ParseSignature<'event Foo(string)'>>({
63
+ type: 'event',
64
+ name: 'Foo',
65
+ inputs: [{ type: 'string' }],
66
+ })
67
+ assertType<ParseSignature<'event Foo(string bar)'>>({
68
+ type: 'event',
69
+ name: 'Foo',
70
+ inputs: [{ type: 'string', name: 'bar' }],
71
+ })
72
+ assertType<ParseSignature<'event Foo(string indexed bar)'>>({
73
+ type: 'event',
74
+ name: 'Foo',
75
+ inputs: [{ type: 'string', indexed: true, name: 'bar' }],
76
+ })
77
+ assertType<ParseSignature<'event Foo(Baz bar)', Structs>>({
78
+ type: 'event',
79
+ name: 'Foo',
80
+ inputs: [
81
+ {
82
+ type: 'tuple',
83
+ name: 'bar',
84
+ components: [{ type: 'address', name: 'baz' }],
85
+ },
86
+ ],
87
+ })
88
+ assertType<ParseSignature<'event Foo((string) indexed bar)'>>({
89
+ type: 'event',
90
+ name: 'Foo',
91
+ inputs: [
92
+ {
93
+ type: 'tuple',
94
+ indexed: true,
95
+ name: 'bar',
96
+ components: [{ type: 'string' }],
97
+ },
98
+ ],
99
+ })
100
+
101
+ // Constructor
102
+ assertType<ParseSignature<'constructor()'>>({
103
+ type: 'constructor',
104
+ stateMutability: 'nonpayable',
105
+ inputs: [],
106
+ })
107
+ assertType<ParseSignature<'constructor() payable'>>({
108
+ type: 'constructor',
109
+ stateMutability: 'payable',
110
+ inputs: [],
111
+ })
112
+ assertType<ParseSignature<'constructor(string)'>>({
113
+ type: 'constructor',
114
+ stateMutability: 'nonpayable',
115
+ inputs: [{ type: 'string' }],
116
+ })
117
+ assertType<ParseSignature<'constructor(string) payable'>>({
118
+ type: 'constructor',
119
+ stateMutability: 'payable',
120
+ inputs: [{ type: 'string' }],
121
+ })
122
+ assertType<ParseSignature<'constructor(string foo)'>>({
123
+ type: 'constructor',
124
+ stateMutability: 'nonpayable',
125
+ inputs: [{ type: 'string', name: 'foo' }],
126
+ })
127
+ assertType<ParseSignature<'constructor(string foo)'>>({
128
+ type: 'constructor',
129
+ stateMutability: 'nonpayable',
130
+ inputs: [{ type: 'string', name: 'foo' }],
131
+ })
132
+ assertType<ParseSignature<'constructor((string) foo)'>>({
133
+ type: 'constructor',
134
+ stateMutability: 'nonpayable',
135
+ inputs: [{ type: 'tuple', name: 'foo', components: [{ type: 'string' }] }],
136
+ })
137
+
138
+ // Fallback
139
+ assertType<ParseSignature<'fallback() external'>>({
140
+ type: 'fallback',
141
+ stateMutability: 'nonpayable',
142
+ })
143
+ assertType<ParseSignature<'fallback() external payable'>>({
144
+ type: 'fallback',
145
+ stateMutability: 'payable',
146
+ })
147
+
148
+ // Receive
149
+ assertType<ParseSignature<'receive() external payable'>>({
150
+ type: 'receive',
151
+ stateMutability: 'payable',
152
+ })
153
+
154
+ // Functions
155
+ assertType<ParseSignature<'function foo()'>>({
156
+ type: 'function',
157
+ name: 'foo',
158
+ stateMutability: 'nonpayable',
159
+ inputs: [],
160
+ outputs: [],
161
+ })
162
+
163
+ // inputs
164
+ assertType<ParseSignature<'function foo(string)'>>({
165
+ type: 'function',
166
+ name: 'foo',
167
+ stateMutability: 'nonpayable',
168
+ inputs: [{ type: 'string' }],
169
+ outputs: [],
170
+ })
171
+ assertType<ParseSignature<'function foo(string bar)'>>({
172
+ type: 'function',
173
+ name: 'foo',
174
+ stateMutability: 'nonpayable',
175
+ inputs: [{ type: 'string', name: 'bar' }],
176
+ outputs: [],
177
+ })
178
+ assertType<ParseSignature<'function foo(Baz bar)', Structs>>({
179
+ type: 'function',
180
+ name: 'foo',
181
+ stateMutability: 'nonpayable',
182
+ inputs: [
183
+ {
184
+ type: 'tuple',
185
+ name: 'bar',
186
+ components: [{ type: 'address', name: 'baz' }],
187
+ },
188
+ ],
189
+ outputs: [],
190
+ })
191
+ assertType<ParseSignature<'function foo(string bar) view'>>({
192
+ type: 'function',
193
+ name: 'foo',
194
+ stateMutability: 'view',
195
+ inputs: [{ type: 'string', name: 'bar' }],
196
+ outputs: [],
197
+ })
198
+ assertType<ParseSignature<'function foo(string bar) public payable'>>({
199
+ type: 'function',
200
+ name: 'foo',
201
+ stateMutability: 'payable',
202
+ inputs: [{ type: 'string', name: 'bar' }],
203
+ outputs: [],
204
+ })
205
+ assertType<ParseSignature<'function foo(string calldata)'>>({
206
+ type: 'function',
207
+ name: 'foo',
208
+ stateMutability: 'nonpayable',
209
+ inputs: [{ type: 'string' }],
210
+ outputs: [],
211
+ })
212
+ assertType<ParseSignature<'function foo(address payable to) external'>>({
213
+ name: 'foo',
214
+ type: 'function',
215
+ stateMutability: 'nonpayable',
216
+ inputs: [{ type: 'address', name: 'to' }],
217
+ outputs: [],
218
+ })
219
+
220
+ assertType<ParseSignature<'function foo(string indexed)'>>({
221
+ name: 'foo',
222
+ type: 'function',
223
+ stateMutability: 'nonpayable',
224
+ inputs: [
225
+ {
226
+ type: 'string',
227
+ name: ['Error: "indexed" is a protected Solidity keyword.'],
228
+ },
229
+ ],
230
+ outputs: [],
231
+ })
232
+ assertType<ParseSignature<'function foo(string indexed bar)'>>({
233
+ name: 'foo',
234
+ type: 'function',
235
+ stateMutability: 'nonpayable',
236
+ inputs: [
237
+ {
238
+ type: 'string',
239
+ name: ['Error: Identifier "indexed bar" cannot contain whitespace.'],
240
+ },
241
+ ],
242
+ outputs: [],
243
+ })
244
+
245
+ // outputs
246
+ assertType<ParseSignature<'function foo() returns (string)'>>({
247
+ type: 'function',
248
+ name: 'foo',
249
+ stateMutability: 'nonpayable',
250
+ inputs: [],
251
+ outputs: [{ type: 'string' }],
252
+ })
253
+ assertType<ParseSignature<'function foo() returns (string bar)'>>({
254
+ type: 'function',
255
+ name: 'foo',
256
+ stateMutability: 'nonpayable',
257
+ inputs: [],
258
+ outputs: [{ type: 'string', name: 'bar' }],
259
+ })
260
+ assertType<ParseSignature<'function foo() returns (Baz bar)', Structs>>({
261
+ type: 'function',
262
+ name: 'foo',
263
+ stateMutability: 'nonpayable',
264
+ inputs: [],
265
+ outputs: [
266
+ {
267
+ type: 'tuple',
268
+ name: 'bar',
269
+ components: [{ type: 'address', name: 'baz' }],
270
+ },
271
+ ],
272
+ })
273
+ assertType<ParseSignature<'function foo() view returns (string bar)'>>({
274
+ type: 'function',
275
+ name: 'foo',
276
+ stateMutability: 'view',
277
+ inputs: [],
278
+ outputs: [{ type: 'string', name: 'bar' }],
279
+ })
280
+ assertType<
281
+ ParseSignature<'function foo() public payable returns (string bar)'>
282
+ >({
283
+ type: 'function',
284
+ name: 'foo',
285
+ stateMutability: 'payable',
286
+ inputs: [],
287
+ outputs: [{ type: 'string', name: 'bar' }],
288
+ })
289
+ assertType<
290
+ ParseSignature<'function foo() public payable returns(string bar)'>
291
+ >({
292
+ type: 'function',
293
+ name: 'foo',
294
+ stateMutability: 'payable',
295
+ inputs: [],
296
+ outputs: [{ type: 'string', name: 'bar' }],
297
+ })
298
+
299
+ // inputs and outputs
300
+ assertType<ParseSignature<'function foo(string) returns (string)'>>({
301
+ type: 'function',
302
+ name: 'foo',
303
+ stateMutability: 'nonpayable',
304
+ inputs: [{ type: 'string' }],
305
+ outputs: [{ type: 'string' }],
306
+ })
307
+ assertType<ParseSignature<'function foo(string bar) returns (string bar)'>>({
308
+ type: 'function',
309
+ name: 'foo',
310
+ stateMutability: 'nonpayable',
311
+ inputs: [{ type: 'string', name: 'bar' }],
312
+ outputs: [{ type: 'string', name: 'bar' }],
313
+ })
314
+ assertType<
315
+ ParseSignature<'function foo(string foo) public payable returns(string bar)'>
316
+ >({
317
+ type: 'function',
318
+ name: 'foo',
319
+ stateMutability: 'payable',
320
+ inputs: [{ type: 'string', name: 'foo' }],
321
+ outputs: [{ type: 'string', name: 'bar' }],
322
+ })
323
+ assertType<
324
+ ParseSignature<'function foo(Baz bar) returns (Baz bar)', Structs>
325
+ >({
326
+ type: 'function',
327
+ name: 'foo',
328
+ stateMutability: 'nonpayable',
329
+ inputs: [
330
+ {
331
+ type: 'tuple',
332
+ name: 'bar',
333
+ components: [{ type: 'address', name: 'baz' }],
334
+ },
335
+ ],
336
+ outputs: [
337
+ {
338
+ type: 'tuple',
339
+ name: 'bar',
340
+ components: [{ type: 'address', name: 'baz' }],
341
+ },
342
+ ],
343
+ })
344
+ assertType<
345
+ ParseSignature<'function foo(string bar) view returns (string bar)'>
346
+ >({
347
+ type: 'function',
348
+ name: 'foo',
349
+ stateMutability: 'view',
350
+ inputs: [{ type: 'string', name: 'bar' }],
351
+ outputs: [{ type: 'string', name: 'bar' }],
352
+ })
353
+ assertType<
354
+ ParseSignature<'function foo(string bar) public payable returns (string bar)'>
355
+ >({
356
+ type: 'function',
357
+ name: 'foo',
358
+ stateMutability: 'payable',
359
+ inputs: [{ type: 'string', name: 'bar' }],
360
+ outputs: [{ type: 'string', name: 'bar' }],
361
+ })
362
+
363
+ assertType<
364
+ ParseSignature<'function foo(((string)) calldata) returns (string, (string))'>
365
+ >({
366
+ type: 'function',
367
+ name: 'foo',
368
+ stateMutability: 'nonpayable',
369
+ inputs: [
370
+ {
371
+ type: 'tuple',
372
+ components: [{ type: 'tuple', components: [{ type: 'string' }] }],
373
+ },
374
+ ],
375
+ outputs: [
376
+ {
377
+ type: 'string',
378
+ },
379
+ {
380
+ type: 'tuple',
381
+ components: [{ type: 'string' }],
382
+ },
383
+ ],
384
+ })
385
+ })
386
+
387
+ test('ParseAbiParameters', () => {
388
+ expectTypeOf<ParseAbiParameters<[]>>().toEqualTypeOf<readonly []>()
389
+ expectTypeOf<ParseAbiParameters<['']>>().toEqualTypeOf<readonly []>()
390
+ expectTypeOf<ParseAbiParameters<['string']>>().toEqualTypeOf<
391
+ readonly [{ readonly type: 'string' }]
392
+ >()
393
+ expectTypeOf<
394
+ ParseAbiParameters<['string', 'string']> extends readonly [
395
+ { readonly type: 'string' },
396
+ { readonly type: 'string' },
397
+ ]
398
+ ? true
399
+ : false
400
+ >().toEqualTypeOf<true>()
401
+ })
402
+
403
+ test('ParseAbiParameter', () => {
404
+ // `${Type} ${Modifier} ${Name}` format
405
+ assertType<ParseAbiParameter<'string calldata foo', OptionsWithModifier>>({
406
+ type: 'string',
407
+ name: 'foo',
408
+ })
409
+ assertType<ParseAbiParameter<'string indexed foo', OptionsWithIndexed>>({
410
+ type: 'string',
411
+ indexed: true,
412
+ name: 'foo',
413
+ })
414
+ assertType<
415
+ ParseAbiParameter<
416
+ 'Foo calldata foo',
417
+ OptionsWithModifier & OptionsWithStructs
418
+ >
419
+ >({
420
+ type: 'tuple',
421
+ name: 'foo',
422
+ components: [{ type: 'address', name: 'bar' }],
423
+ })
424
+ assertType<
425
+ ParseAbiParameter<
426
+ 'Foo indexed foo',
427
+ OptionsWithIndexed & OptionsWithStructs
428
+ >
429
+ >({
430
+ type: 'tuple',
431
+ indexed: true,
432
+ name: 'foo',
433
+ components: [{ type: 'address', name: 'bar' }],
434
+ })
435
+ assertType<
436
+ ParseAbiParameter<
437
+ 'Foo[][1] indexed foo',
438
+ OptionsWithIndexed & OptionsWithStructs
439
+ >
440
+ >({
441
+ name: 'foo',
442
+ type: 'tuple[][1]',
443
+ indexed: true,
444
+ components: [{ type: 'address', name: 'bar' }],
445
+ })
446
+ assertType<
447
+ ParseAbiParameter<
448
+ 'Foo[][1] calldata foo',
449
+ OptionsWithModifier & OptionsWithStructs
450
+ >
451
+ >({
452
+ name: 'foo',
453
+ type: 'tuple[][1]',
454
+ components: [{ type: 'address', name: 'bar' }],
455
+ })
456
+
457
+ // `${Type} ${NameOrModifier}` format
458
+ assertType<ParseAbiParameter<'string foo'>>({
459
+ type: 'string',
460
+ name: 'foo',
461
+ })
462
+ assertType<ParseAbiParameter<'string indexed'>>({
463
+ type: 'string',
464
+ name: ['Error: "indexed" is a protected Solidity keyword.'],
465
+ })
466
+ assertType<ParseAbiParameter<'string calldata', OptionsWithModifier>>({
467
+ type: 'string',
468
+ })
469
+ assertType<ParseAbiParameter<'string indexed', OptionsWithIndexed>>({
470
+ type: 'string',
471
+ indexed: true,
472
+ })
473
+ assertType<
474
+ ParseAbiParameter<'Foo calldata', OptionsWithModifier & OptionsWithStructs>
475
+ >({
476
+ type: 'tuple',
477
+ components: [{ type: 'address', name: 'bar' }],
478
+ })
479
+ assertType<
480
+ ParseAbiParameter<'Foo indexed', OptionsWithIndexed & OptionsWithStructs>
481
+ >({
482
+ type: 'tuple',
483
+ indexed: true,
484
+ components: [{ type: 'address', name: 'bar' }],
485
+ })
486
+ assertType<ParseAbiParameter<'Foo[][1] foo', OptionsWithStructs>>({
487
+ name: 'foo',
488
+ type: 'tuple[][1]',
489
+ components: [{ type: 'address', name: 'bar' }],
490
+ })
491
+ assertType<ParseAbiParameter<'(address bar)[1] foo', OptionsWithStructs>>({
492
+ name: 'foo',
493
+ type: 'tuple[1]',
494
+ components: [{ type: 'address', name: 'bar' }],
495
+ })
496
+
497
+ // `${Type}` format
498
+ assertType<ParseAbiParameter<'string'>>({
499
+ type: 'string',
500
+ })
501
+ assertType<ParseAbiParameter<'Foo', OptionsWithStructs>>({
502
+ type: 'tuple',
503
+ components: [{ type: 'address', name: 'bar' }],
504
+ })
505
+ assertType<ParseAbiParameter<'Foo[][1]', OptionsWithStructs>>({
506
+ type: 'tuple[][1]',
507
+ components: [{ type: 'address', name: 'bar' }],
508
+ })
509
+
510
+ // tuple format
511
+ assertType<ParseAbiParameter<'(string)'>>({
512
+ type: 'tuple',
513
+ components: [{ type: 'string' }],
514
+ })
515
+ assertType<ParseAbiParameter<'(string, string)'>>({
516
+ type: 'tuple',
517
+ components: [{ type: 'string' }, { type: 'string' }],
518
+ })
519
+ assertType<ParseAbiParameter<'(string, (string))'>>({
520
+ type: 'tuple',
521
+ components: [
522
+ { type: 'string' },
523
+ { type: 'tuple', components: [{ type: 'string' }] },
524
+ ],
525
+ })
526
+
527
+ assertType<ParseAbiParameter<'((((string baz) bar)[1] foo) boo)'>>({
528
+ type: 'tuple',
529
+ components: [
530
+ {
531
+ type: 'tuple',
532
+ components: [
533
+ {
534
+ type: 'tuple[1]',
535
+ components: [
536
+ {
537
+ type: 'tuple',
538
+ components: [
539
+ {
540
+ type: 'string',
541
+ name: 'baz',
542
+ },
543
+ ],
544
+ name: 'bar',
545
+ },
546
+ ],
547
+ name: 'foo',
548
+ },
549
+ ],
550
+ name: 'boo',
551
+ },
552
+ ],
553
+ })
554
+
555
+ assertType<ParseAbiParameter<'address alias'>>({
556
+ type: 'address',
557
+ name: ['Error: "alias" is a protected Solidity keyword.'],
558
+ })
559
+ // assertType<ParseAbiParameter<'Foo foo'>>({
560
+ // type: ['Error: Type "Foo" is not a valid ABI type.'],
561
+ // name: 'foo',
562
+ // })
563
+
564
+ assertType<ParseAbiParameter<'int'>>({ type: 'int256' })
565
+ assertType<ParseAbiParameter<'uint'>>({ type: 'uint256' })
566
+ assertType<ParseAbiParameter<'uint[]'>>({ type: 'uint256[]' })
567
+ assertType<ParseAbiParameter<'uint[10][]'>>({ type: 'uint256[10][]' })
568
+ })
569
+
570
+ test('SplitParameters', () => {
571
+ expectTypeOf<SplitParameters<''>>().toEqualTypeOf<[]>()
572
+ expectTypeOf<SplitParameters<'string'>>().toEqualTypeOf<['string']>()
573
+ expectTypeOf<SplitParameters<'string, string'>>().toEqualTypeOf<
574
+ ['string', 'string']
575
+ >()
576
+ expectTypeOf<SplitParameters<'string indexed foo'>>().toEqualTypeOf<
577
+ ['string indexed foo']
578
+ >()
579
+ expectTypeOf<SplitParameters<'string foo, string bar'>>().toEqualTypeOf<
580
+ ['string foo', 'string bar']
581
+ >()
582
+ expectTypeOf<
583
+ SplitParameters<'address owner, (bool loading, (string[][] names) cats)[] dog, uint tokenId'>
584
+ >().toEqualTypeOf<
585
+ [
586
+ 'address owner',
587
+ '(bool loading, (string[][] names) cats)[] dog',
588
+ 'uint tokenId',
589
+ ]
590
+ >()
591
+
592
+ expectTypeOf<SplitParameters<'((string)'>>().toEqualTypeOf<
593
+ [
594
+ 'Error: Unbalanced parentheses. "((string)" has too many opening parentheses.',
595
+ ]
596
+ >()
597
+ expectTypeOf<SplitParameters<'((((string))'>>().toEqualTypeOf<
598
+ [
599
+ 'Error: Unbalanced parentheses. "((((string))" has too many opening parentheses.',
600
+ ]
601
+ >()
602
+ expectTypeOf<SplitParameters<'(string))'>>().toEqualTypeOf<
603
+ [
604
+ 'Error: Unbalanced parentheses. "(string)" has too many closing parentheses.',
605
+ ]
606
+ >()
607
+ expectTypeOf<SplitParameters<'(string))))'>>().toEqualTypeOf<
608
+ [
609
+ 'Error: Unbalanced parentheses. "(string)" has too many closing parentheses.',
610
+ ]
611
+ >()
612
+ })
613
+
614
+ test('_ValidateAbiParameter', () => {
615
+ expectTypeOf<_ValidateAbiParameter<{ type: 'string' }>>().toEqualTypeOf<{
616
+ type: 'string'
617
+ }>()
618
+ expectTypeOf<
619
+ _ValidateAbiParameter<{ type: 'string'; name: 'foo' }>
620
+ >().toEqualTypeOf<{
621
+ type: 'string'
622
+ name: 'foo'
623
+ }>()
624
+
625
+ expectTypeOf<_ValidateAbiParameter<{ type: 'int' }>>().toEqualTypeOf<{
626
+ readonly type: 'int256'
627
+ }>()
628
+ expectTypeOf<_ValidateAbiParameter<{ type: 'uint' }>>().toEqualTypeOf<{
629
+ readonly type: 'uint256'
630
+ }>()
631
+ expectTypeOf<_ValidateAbiParameter<{ type: 'uint[]' }>>().toEqualTypeOf<{
632
+ readonly type: 'uint256[]'
633
+ }>()
634
+ expectTypeOf<_ValidateAbiParameter<{ type: 'uint[10][]' }>>().toEqualTypeOf<{
635
+ readonly type: 'uint256[10][]'
636
+ }>()
637
+
638
+ // expectTypeOf<
639
+ // _ValidateAbiParameter<{ type: 'string'; name: 'f0!' }>
640
+ // >().toEqualTypeOf<{
641
+ // type: 'string'
642
+ // readonly name: ['Error: "f0!" contains invalid character.']
643
+ // }>()
644
+ // expectTypeOf<
645
+ // _ValidateAbiParameter<{ type: 'string'; name: 'alias' }>
646
+ // >().toEqualTypeOf<{
647
+ // type: 'string'
648
+ // readonly name: ['Error: "alias" is a protected Solidity keyword.']
649
+ // }>()
650
+ // expectTypeOf<
651
+ // _ValidateAbiParameter<{ type: 'Bar'; name: 'foo' }>
652
+ // >().toEqualTypeOf<{
653
+ // readonly type: ['Error: Type "Bar" is not a valid ABI type.']
654
+ // name: 'foo'
655
+ // }>()
656
+ })
657
+
658
+ test('_ParseFunctionParametersAndStateMutability', () => {
659
+ expectTypeOf<
660
+ _ParseFunctionParametersAndStateMutability<'function foo()'>
661
+ >().toEqualTypeOf<{
662
+ Inputs: ''
663
+ StateMutability: 'nonpayable'
664
+ }>()
665
+
666
+ expectTypeOf<
667
+ _ParseFunctionParametersAndStateMutability<'function foo(string bar)'>
668
+ >().toEqualTypeOf<{
669
+ Inputs: 'string bar'
670
+ StateMutability: 'nonpayable'
671
+ }>()
672
+
673
+ expectTypeOf<
674
+ _ParseFunctionParametersAndStateMutability<'function foo() view'>
675
+ >().toEqualTypeOf<{
676
+ Inputs: ''
677
+ StateMutability: 'view'
678
+ }>()
679
+
680
+ expectTypeOf<
681
+ _ParseFunctionParametersAndStateMutability<'function foo(string bar) view'>
682
+ >().toEqualTypeOf<{
683
+ Inputs: 'string bar'
684
+ StateMutability: 'view'
685
+ }>()
686
+
687
+ expectTypeOf<
688
+ _ParseFunctionParametersAndStateMutability<'function foo(string bar, uint256) external view'>
689
+ >().toEqualTypeOf<{
690
+ Inputs: 'string bar, uint256'
691
+ StateMutability: 'view'
692
+ }>()
693
+
694
+ expectTypeOf<
695
+ _ParseFunctionParametersAndStateMutability<'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))'>
696
+ >().toEqualTypeOf<{
697
+ Inputs: '(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'
698
+ StateMutability: 'pure'
699
+ }>()
700
+ })
701
+
702
+ test('_ParseTuple', () => {
703
+ // basic tuples
704
+ assertType<_ParseTuple<'(string)'>>({
705
+ type: 'tuple',
706
+ components: [{ type: 'string' }],
707
+ })
708
+ assertType<_ParseTuple<'(string, string)'>>({
709
+ type: 'tuple',
710
+ components: [{ type: 'string' }, { type: 'string' }],
711
+ })
712
+ assertType<_ParseTuple<'((string, string), string)'>>({
713
+ type: 'tuple',
714
+ components: [
715
+ { type: 'tuple', components: [{ type: 'string' }, { type: 'string' }] },
716
+ { type: 'string' },
717
+ ],
718
+ })
719
+ assertType<_ParseTuple<'((string))'>>({
720
+ type: 'tuple',
721
+ components: [{ type: 'tuple', components: [{ type: 'string' }] }],
722
+ })
723
+ assertType<_ParseTuple<'(((string)))'>>({
724
+ type: 'tuple',
725
+ components: [
726
+ {
727
+ type: 'tuple',
728
+ components: [{ type: 'tuple', components: [{ type: 'string' }] }],
729
+ },
730
+ ],
731
+ })
732
+ assertType<_ParseTuple<'(string calldata)'>>({
733
+ type: 'tuple',
734
+ components: [
735
+ {
736
+ type: 'string',
737
+ name: ['Error: "calldata" is a protected Solidity keyword.'],
738
+ },
739
+ ],
740
+ })
741
+ assertType<_ParseTuple<'(Foo)', OptionsWithStructs>>({
742
+ type: 'tuple',
743
+ components: [
744
+ { type: 'tuple', components: [{ type: 'address', name: 'bar' }] },
745
+ ],
746
+ })
747
+
748
+ // named tuple params
749
+ assertType<_ParseTuple<'(string foo)'>>({
750
+ type: 'tuple',
751
+ components: [{ type: 'string', name: 'foo' }],
752
+ })
753
+ assertType<_ParseTuple<'(string bar) foo'>>({
754
+ name: 'foo',
755
+ type: 'tuple',
756
+ components: [{ type: 'string', name: 'bar' }],
757
+ })
758
+ assertType<_ParseTuple<'((string bar) foo)'>>({
759
+ type: 'tuple',
760
+ components: [
761
+ {
762
+ type: 'tuple',
763
+ name: 'foo',
764
+ components: [{ type: 'string', name: 'bar' }],
765
+ },
766
+ ],
767
+ })
768
+ assertType<_ParseTuple<'(Foo) foo', OptionsWithStructs>>({
769
+ type: 'tuple',
770
+ name: 'foo',
771
+ components: [
772
+ { type: 'tuple', components: [{ type: 'address', name: 'bar' }] },
773
+ ],
774
+ })
775
+ assertType<_ParseTuple<'((string)) calldata', OptionsWithModifier>>({
776
+ type: 'tuple',
777
+ components: [{ type: 'tuple', components: [{ type: 'string' }] }],
778
+ })
779
+
780
+ // mixed basic and named tuple params
781
+ assertType<_ParseTuple<'(string, string foo)'>>({
782
+ type: 'tuple',
783
+ components: [{ type: 'string' }, { type: 'string', name: 'foo' }],
784
+ })
785
+ assertType<_ParseTuple<'(string, string bar) foo'>>({
786
+ name: 'foo',
787
+ type: 'tuple',
788
+ components: [{ type: 'string' }, { type: 'string', name: 'bar' }],
789
+ })
790
+ assertType<
791
+ _ParseTuple<'(string baz, string bar) indexed foo', OptionsWithIndexed>
792
+ >({
793
+ name: 'foo',
794
+ type: 'tuple',
795
+ components: [
796
+ { type: 'string', name: 'baz' },
797
+ { type: 'string', name: 'bar' },
798
+ ],
799
+ indexed: true,
800
+ })
801
+
802
+ // inline tuples of tuples
803
+ assertType<_ParseTuple<'(string)[]'>>({
804
+ type: 'tuple[]',
805
+ components: [{ type: 'string' }],
806
+ })
807
+ assertType<_ParseTuple<'(string, string)[]'>>({
808
+ type: 'tuple[]',
809
+ components: [{ type: 'string' }, { type: 'string' }],
810
+ })
811
+ assertType<_ParseTuple<'((string))[]'>>({
812
+ type: 'tuple[]',
813
+ components: [{ type: 'tuple', components: [{ type: 'string' }] }],
814
+ })
815
+ assertType<_ParseTuple<'((string)[])[]'>>({
816
+ type: 'tuple[]',
817
+ components: [
818
+ {
819
+ type: 'tuple[]',
820
+ components: [{ type: 'string' }],
821
+ },
822
+ ],
823
+ })
824
+
825
+ // inline tuples of tuples with name and/or modifier attached
826
+ assertType<_ParseTuple<'(string)[] foo'>>({
827
+ type: 'tuple[]',
828
+ name: 'foo',
829
+ components: [{ type: 'string' }],
830
+ })
831
+ assertType<_ParseTuple<'(string, string bar)[] foo'>>({
832
+ type: 'tuple[]',
833
+ name: 'foo',
834
+ components: [{ type: 'string' }, { type: 'string', name: 'bar' }],
835
+ })
836
+ assertType<_ParseTuple<'((string baz) bar)[] foo'>>({
837
+ type: 'tuple[]',
838
+ name: 'foo',
839
+ components: [
840
+ {
841
+ type: 'tuple',
842
+ name: 'bar',
843
+ components: [{ type: 'string', name: 'baz' }],
844
+ },
845
+ ],
846
+ })
847
+ assertType<
848
+ _ParseTuple<
849
+ '((string)[])[] indexed foo',
850
+ OptionsWithIndexed & OptionsWithStructs
851
+ >
852
+ >({
853
+ type: 'tuple[]',
854
+ name: 'foo',
855
+ indexed: true,
856
+ components: [
857
+ {
858
+ type: 'tuple[]',
859
+ components: [{ type: 'string' }],
860
+ },
861
+ ],
862
+ })
863
+ assertType<_ParseTuple<'((string) foo)[]'>>({
864
+ type: 'tuple[]',
865
+ components: [
866
+ { type: 'tuple', name: 'foo', components: [{ type: 'string' }] },
867
+ ],
868
+ })
869
+ assertType<_ParseTuple<'(string) indexed bar', OptionsWithIndexed>>({
870
+ type: 'tuple',
871
+ name: 'bar',
872
+ indexed: true,
873
+ components: [{ type: 'string' }],
874
+ })
875
+
876
+ assertType<_ParseTuple<'((((string))) bar)'>>({
877
+ type: 'tuple',
878
+ components: [
879
+ {
880
+ name: 'bar',
881
+ type: 'tuple',
882
+ components: [
883
+ {
884
+ type: 'tuple',
885
+ components: [
886
+ {
887
+ type: 'tuple',
888
+ components: [{ type: 'string' }],
889
+ },
890
+ ],
891
+ },
892
+ ],
893
+ },
894
+ ],
895
+ })
896
+ assertType<_ParseTuple<'(((string) baz) bar) foo'>>({
897
+ type: 'tuple',
898
+ name: 'foo',
899
+ components: [
900
+ {
901
+ name: 'bar',
902
+ type: 'tuple',
903
+ components: [
904
+ {
905
+ name: 'baz',
906
+ type: 'tuple',
907
+ components: [{ type: 'string' }],
908
+ },
909
+ ],
910
+ },
911
+ ],
912
+ })
913
+ assertType<_ParseTuple<'((((string) baz)) bar) foo'>>({
914
+ type: 'tuple',
915
+ name: 'foo',
916
+ components: [
917
+ {
918
+ name: 'bar',
919
+ type: 'tuple',
920
+ components: [
921
+ {
922
+ type: 'tuple',
923
+ components: [
924
+ {
925
+ name: 'baz',
926
+ type: 'tuple',
927
+ components: [{ type: 'string' }],
928
+ },
929
+ ],
930
+ },
931
+ ],
932
+ },
933
+ ],
934
+ })
935
+
936
+ // Modifiers not converted inside tuples
937
+ assertType<_ParseTuple<'(string indexed)[] foo', OptionsWithIndexed>>({
938
+ type: 'tuple[]',
939
+ name: 'foo',
940
+ components: [
941
+ {
942
+ type: 'string',
943
+ name: ['Error: "indexed" is a protected Solidity keyword.'],
944
+ },
945
+ ],
946
+ })
947
+
948
+ assertType<_ParseTuple<'((((string baz) bar)[1] foo) boo)'>>({
949
+ type: 'tuple',
950
+ components: [
951
+ {
952
+ type: 'tuple',
953
+ components: [
954
+ {
955
+ type: 'tuple[1]',
956
+ components: [
957
+ {
958
+ type: 'tuple',
959
+ components: [
960
+ {
961
+ type: 'string',
962
+ name: 'baz',
963
+ },
964
+ ],
965
+ name: 'bar',
966
+ },
967
+ ],
968
+ name: 'foo',
969
+ },
970
+ ],
971
+ name: 'boo',
972
+ },
973
+ ],
974
+ })
975
+ assertType<_ParseTuple<'(((string baz) bar)[1] foo) boo'>>({
976
+ type: 'tuple',
977
+ components: [
978
+ {
979
+ type: 'tuple[1]',
980
+ components: [
981
+ {
982
+ type: 'tuple',
983
+ components: [
984
+ {
985
+ type: 'string',
986
+ name: 'baz',
987
+ },
988
+ ],
989
+ name: 'bar',
990
+ },
991
+ ],
992
+ name: 'foo',
993
+ },
994
+ ],
995
+ name: 'boo',
996
+ })
997
+ })
998
+
999
+ test('_SplitNameOrModifier', () => {
1000
+ expectTypeOf<_SplitNameOrModifier<'foo'>>().toEqualTypeOf<{
1001
+ readonly name: 'foo'
1002
+ }>()
1003
+ expectTypeOf<
1004
+ _SplitNameOrModifier<'indexed foo', { modifier: 'indexed' }>
1005
+ >().toEqualTypeOf<{
1006
+ readonly name: 'foo'
1007
+ readonly indexed: true
1008
+ }>()
1009
+ expectTypeOf<
1010
+ _SplitNameOrModifier<'calldata foo', { modifier: 'calldata' }>
1011
+ >().toEqualTypeOf<{
1012
+ readonly name: 'foo'
1013
+ }>()
1014
+ })
1015
+
1016
+ test('_UnwrapNameOrModifier', () => {
1017
+ expectTypeOf<_UnwrapNameOrModifier<'bar) foo'>>().toEqualTypeOf<{
1018
+ End: 'bar'
1019
+ nameOrModifier: 'foo'
1020
+ }>()
1021
+ expectTypeOf<_UnwrapNameOrModifier<'baz) bar) foo'>>().toEqualTypeOf<{
1022
+ End: 'baz) bar'
1023
+ nameOrModifier: 'foo'
1024
+ }>()
1025
+ expectTypeOf<_UnwrapNameOrModifier<'string) calldata foo'>>().toEqualTypeOf<{
1026
+ End: 'string'
1027
+ nameOrModifier: 'calldata foo'
1028
+ }>()
1029
+ })