viem 0.0.1-alpha.24 → 0.0.1-alpha.26

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 (510) hide show
  1. package/contract/package.json +4 -0
  2. package/dist/call-3476b8ee.d.ts +22 -0
  3. package/dist/{chain-afa13f5a.d.ts → chain-42de87e5.d.ts} +20 -14
  4. package/dist/{chain-e33d019b.d.ts → chain-b0cfb141.d.ts} +1 -1
  5. package/dist/chains.d.ts +20 -8
  6. package/dist/chains.js +46 -46
  7. package/dist/chains.mjs +1 -1
  8. package/dist/{chunk-3ARWEJ3G.mjs → chunk-BSAB6UH4.mjs} +18 -2
  9. package/dist/chunk-BSAB6UH4.mjs.map +1 -0
  10. package/dist/{chunk-4D5XG6XB.js → chunk-DSQO3E4F.js} +367 -429
  11. package/dist/chunk-DSQO3E4F.js.map +1 -0
  12. package/dist/{chunk-A2HXAZXC.js → chunk-LINNE4N4.js} +199 -161
  13. package/dist/chunk-LINNE4N4.js.map +1 -0
  14. package/dist/{chunk-LQVMDX5I.mjs → chunk-PRG3BBPZ.mjs} +397 -459
  15. package/dist/chunk-PRG3BBPZ.mjs.map +1 -0
  16. package/dist/{chunk-YQUC52RL.mjs → chunk-QSIX64VZ.mjs} +136 -98
  17. package/dist/chunk-QSIX64VZ.mjs.map +1 -0
  18. package/dist/{chunk-ZYSXBTBB.js → chunk-YTG4YXMB.js} +30 -14
  19. package/dist/chunk-YTG4YXMB.js.map +1 -0
  20. package/dist/{contract-70f4ddbe.d.ts → contract-9dd2f98b.d.ts} +44 -31
  21. package/dist/contract.d.ts +129 -0
  22. package/dist/contract.js +55 -0
  23. package/dist/{clients/index.js.map → contract.js.map} +0 -0
  24. package/dist/contract.mjs +55 -0
  25. package/dist/{clients/index.mjs.map → contract.mjs.map} +0 -0
  26. package/dist/{createClient-60e3ab98.d.ts → createClient-6689596e.d.ts} +11 -5
  27. package/dist/{createPublicClient-d3d12dc3.d.ts → createPublicClient-fd558574.d.ts} +3 -3
  28. package/dist/{createTestClient-5f4532c4.d.ts → createTestClient-bc1d9028.d.ts} +3 -3
  29. package/dist/{createWalletClient-9ec3df4f.d.ts → createWalletClient-4df88244.d.ts} +3 -3
  30. package/dist/decodeErrorResult-ac835649.d.ts +16 -0
  31. package/dist/{eip1193-9317a312.d.ts → eip1193-617a05ae.d.ts} +2 -2
  32. package/dist/ens.d.ts +82 -1
  33. package/dist/ens.js +208 -3
  34. package/dist/ens.js.map +1 -1
  35. package/dist/ens.mjs +209 -4
  36. package/dist/ens.mjs.map +1 -1
  37. package/dist/getAbiItem-d2e8bd76.d.ts +97 -0
  38. package/dist/index.d.ts +113 -180
  39. package/dist/index.js +259 -279
  40. package/dist/index.js.map +1 -1
  41. package/dist/index.mjs +267 -287
  42. package/dist/index.mjs.map +1 -1
  43. package/dist/public.d.ts +353 -10
  44. package/dist/public.js +3 -4
  45. package/dist/public.mjs +6 -7
  46. package/dist/readContract-c460f23a.d.ts +10 -0
  47. package/dist/rpc-8c10fc98.d.ts +119 -0
  48. package/dist/{sendTransaction-54a0d509.d.ts → sendTransaction-7ce442c0.d.ts} +3 -3
  49. package/dist/test.d.ts +160 -5
  50. package/dist/test.js +222 -18
  51. package/dist/test.js.map +1 -1
  52. package/dist/test.mjs +233 -29
  53. package/dist/test.mjs.map +1 -1
  54. package/dist/transactionReceipt-44dbf122.d.ts +26 -0
  55. package/dist/{transactionRequest-bdf57f7d.d.ts → transactionRequest-f437b4ba.d.ts} +1 -1
  56. package/dist/utils/index.d.ts +228 -21
  57. package/dist/utils/index.js +2 -6
  58. package/dist/utils/index.mjs +3 -7
  59. package/dist/wallet.d.ts +41 -7
  60. package/dist/wallet.js +3 -3
  61. package/dist/wallet.mjs +2 -2
  62. package/dist/watchEvent-569c9976.d.ts +41 -0
  63. package/dist/window.d.ts +2 -2
  64. package/ens/package.json +4 -0
  65. package/package.json +16 -12
  66. package/public/package.json +4 -0
  67. package/test/package.json +4 -0
  68. package/wallet/package.json +4 -0
  69. package/clients/package.json +0 -4
  70. package/dist/chunk-3ARWEJ3G.mjs.map +0 -1
  71. package/dist/chunk-4D5XG6XB.js.map +0 -1
  72. package/dist/chunk-6QTEW2BE.mjs +0 -260
  73. package/dist/chunk-6QTEW2BE.mjs.map +0 -1
  74. package/dist/chunk-A2HXAZXC.js.map +0 -1
  75. package/dist/chunk-KRPS5CIB.mjs +0 -256
  76. package/dist/chunk-KRPS5CIB.mjs.map +0 -1
  77. package/dist/chunk-LQVMDX5I.mjs.map +0 -1
  78. package/dist/chunk-N3IOPT3R.js +0 -256
  79. package/dist/chunk-N3IOPT3R.js.map +0 -1
  80. package/dist/chunk-YQUC52RL.mjs.map +0 -1
  81. package/dist/chunk-ZSTVHQ6J.js +0 -260
  82. package/dist/chunk-ZSTVHQ6J.js.map +0 -1
  83. package/dist/chunk-ZYSXBTBB.js.map +0 -1
  84. package/dist/clients/index.d.ts +0 -9
  85. package/dist/clients/index.js +0 -24
  86. package/dist/clients/index.mjs +0 -24
  87. package/dist/normalize-ef9240c0.d.ts +0 -33
  88. package/dist/parseGwei-492ab7dd.d.ts +0 -355
  89. package/dist/rpc-26932bae.d.ts +0 -61
  90. package/dist/stopImpersonatingAccount-c1a4b7e5.d.ts +0 -156
  91. package/dist/watchAsset-d59d6e35.d.ts +0 -38
  92. package/dist/watchPendingTransactions-ea21b31d.d.ts +0 -373
  93. package/dist/webSocket-775b4037.d.ts +0 -83
  94. package/src/_test/abis.ts +0 -1420
  95. package/src/_test/bench.ts +0 -15
  96. package/src/_test/constants.ts +0 -61
  97. package/src/_test/globalSetup.ts +0 -11
  98. package/src/_test/index.ts +0 -25
  99. package/src/_test/setup.ts +0 -8
  100. package/src/_test/utils.ts +0 -150
  101. package/src/actions/index.test.ts +0 -81
  102. package/src/actions/index.ts +0 -182
  103. package/src/actions/public/call.bench.ts +0 -48
  104. package/src/actions/public/call.test.ts +0 -99
  105. package/src/actions/public/call.ts +0 -97
  106. package/src/actions/public/createBlockFilter.bench.ts +0 -11
  107. package/src/actions/public/createBlockFilter.test.ts +0 -9
  108. package/src/actions/public/createBlockFilter.ts +0 -14
  109. package/src/actions/public/createContractEventFilter.test.ts +0 -119
  110. package/src/actions/public/createContractEventFilter.ts +0 -69
  111. package/src/actions/public/createEventFilter.test.ts +0 -245
  112. package/src/actions/public/createEventFilter.ts +0 -76
  113. package/src/actions/public/createPendingTransactionFilter.bench.ts +0 -11
  114. package/src/actions/public/createPendingTransactionFilter.test.ts +0 -9
  115. package/src/actions/public/createPendingTransactionFilter.ts +0 -14
  116. package/src/actions/public/deployContract.test.ts +0 -56
  117. package/src/actions/public/deployContract.ts +0 -38
  118. package/src/actions/public/estimateGas.bench.ts +0 -46
  119. package/src/actions/public/estimateGas.test.ts +0 -92
  120. package/src/actions/public/estimateGas.ts +0 -61
  121. package/src/actions/public/getBalance.test.ts +0 -83
  122. package/src/actions/public/getBalance.ts +0 -37
  123. package/src/actions/public/getBlock.bench.ts +0 -28
  124. package/src/actions/public/getBlock.test.ts +0 -575
  125. package/src/actions/public/getBlock.ts +0 -65
  126. package/src/actions/public/getBlockNumber.bench.ts +0 -28
  127. package/src/actions/public/getBlockNumber.test.ts +0 -27
  128. package/src/actions/public/getBlockNumber.ts +0 -32
  129. package/src/actions/public/getBlockTransactionCount.bench.ts +0 -15
  130. package/src/actions/public/getBlockTransactionCount.test.ts +0 -57
  131. package/src/actions/public/getBlockTransactionCount.ts +0 -52
  132. package/src/actions/public/getBytecode.test.ts +0 -27
  133. package/src/actions/public/getBytecode.ts +0 -32
  134. package/src/actions/public/getChainId.bench.ts +0 -15
  135. package/src/actions/public/getChainId.test.ts +0 -8
  136. package/src/actions/public/getChainId.ts +0 -7
  137. package/src/actions/public/getFeeHistory.bench.ts +0 -18
  138. package/src/actions/public/getFeeHistory.test.ts +0 -137
  139. package/src/actions/public/getFeeHistory.ts +0 -44
  140. package/src/actions/public/getFilterChanges.bench.ts +0 -13
  141. package/src/actions/public/getFilterChanges.test.ts +0 -189
  142. package/src/actions/public/getFilterChanges.ts +0 -23
  143. package/src/actions/public/getFilterLogs.test.ts +0 -104
  144. package/src/actions/public/getFilterLogs.ts +0 -20
  145. package/src/actions/public/getGasPrice.bench.ts +0 -19
  146. package/src/actions/public/getGasPrice.test.ts +0 -8
  147. package/src/actions/public/getGasPrice.ts +0 -15
  148. package/src/actions/public/getLogs.test.ts +0 -107
  149. package/src/actions/public/getLogs.ts +0 -84
  150. package/src/actions/public/getStorageAt.test.ts +0 -34
  151. package/src/actions/public/getStorageAt.ts +0 -32
  152. package/src/actions/public/getTransaction.bench.ts +0 -33
  153. package/src/actions/public/getTransaction.test.ts +0 -311
  154. package/src/actions/public/getTransaction.ts +0 -95
  155. package/src/actions/public/getTransactionConfirmations.test.ts +0 -69
  156. package/src/actions/public/getTransactionConfirmations.ts +0 -38
  157. package/src/actions/public/getTransactionCount.test.ts +0 -56
  158. package/src/actions/public/getTransactionCount.ts +0 -34
  159. package/src/actions/public/getTransactionReceipt.bench.ts +0 -33
  160. package/src/actions/public/getTransactionReceipt.test.ts +0 -179
  161. package/src/actions/public/getTransactionReceipt.ts +0 -34
  162. package/src/actions/public/index.test.ts +0 -44
  163. package/src/actions/public/index.ts +0 -152
  164. package/src/actions/public/multicall.test.ts +0 -452
  165. package/src/actions/public/multicall.ts +0 -103
  166. package/src/actions/public/readContract.test.ts +0 -328
  167. package/src/actions/public/readContract.ts +0 -73
  168. package/src/actions/public/simulateContract.bench.ts +0 -41
  169. package/src/actions/public/simulateContract.test.ts +0 -410
  170. package/src/actions/public/simulateContract.ts +0 -94
  171. package/src/actions/public/uninstallFilter.bench.ts +0 -13
  172. package/src/actions/public/uninstallFilter.test.ts +0 -65
  173. package/src/actions/public/uninstallFilter.ts +0 -17
  174. package/src/actions/public/waitForTransactionReceipt.test.ts +0 -322
  175. package/src/actions/public/waitForTransactionReceipt.ts +0 -170
  176. package/src/actions/public/watchBlockNumber.test.ts +0 -166
  177. package/src/actions/public/watchBlockNumber.ts +0 -79
  178. package/src/actions/public/watchBlocks.test.ts +0 -210
  179. package/src/actions/public/watchBlocks.ts +0 -114
  180. package/src/actions/public/watchContractEvent.test.ts +0 -305
  181. package/src/actions/public/watchContractEvent.ts +0 -108
  182. package/src/actions/public/watchEvent.test.ts +0 -195
  183. package/src/actions/public/watchEvent.ts +0 -95
  184. package/src/actions/public/watchPendingTransactions.test.ts +0 -116
  185. package/src/actions/public/watchPendingTransactions.ts +0 -74
  186. package/src/actions/test/dropTransaction.test.ts +0 -34
  187. package/src/actions/test/dropTransaction.ts +0 -17
  188. package/src/actions/test/getAutomine.test.ts +0 -14
  189. package/src/actions/test/getAutomine.ts +0 -11
  190. package/src/actions/test/getTxpoolContent.test.ts +0 -45
  191. package/src/actions/test/getTxpoolContent.ts +0 -7
  192. package/src/actions/test/getTxpoolStatus.test.ts +0 -41
  193. package/src/actions/test/getTxpoolStatus.ts +0 -12
  194. package/src/actions/test/impersonateAccount.test.ts +0 -26
  195. package/src/actions/test/impersonateAccount.ts +0 -17
  196. package/src/actions/test/increaseTime.test.ts +0 -18
  197. package/src/actions/test/increaseTime.ts +0 -17
  198. package/src/actions/test/index.test.ts +0 -38
  199. package/src/actions/test/index.ts +0 -77
  200. package/src/actions/test/inspectTxpool.test.ts +0 -50
  201. package/src/actions/test/inspectTxpool.ts +0 -7
  202. package/src/actions/test/mine.test.ts +0 -20
  203. package/src/actions/test/mine.ts +0 -16
  204. package/src/actions/test/removeBlockTimestampInterval.test.ts +0 -23
  205. package/src/actions/test/removeBlockTimestampInterval.ts +0 -7
  206. package/src/actions/test/reset.test.ts +0 -19
  207. package/src/actions/test/reset.ts +0 -18
  208. package/src/actions/test/revert.test.ts +0 -39
  209. package/src/actions/test/revert.ts +0 -14
  210. package/src/actions/test/sendUnsignedTransaction.test.ts +0 -52
  211. package/src/actions/test/sendUnsignedTransaction.ts +0 -19
  212. package/src/actions/test/setAutomine.test.ts +0 -14
  213. package/src/actions/test/setAutomine.ts +0 -8
  214. package/src/actions/test/setBalance.test.ts +0 -29
  215. package/src/actions/test/setBalance.ts +0 -20
  216. package/src/actions/test/setBlockGasLimit.test.ts +0 -21
  217. package/src/actions/test/setBlockGasLimit.ts +0 -17
  218. package/src/actions/test/setBlockTimestampInterval.test.ts +0 -23
  219. package/src/actions/test/setBlockTimestampInterval.ts +0 -16
  220. package/src/actions/test/setCode.test.ts +0 -26
  221. package/src/actions/test/setCode.ts +0 -19
  222. package/src/actions/test/setCoinbase.test.ts +0 -11
  223. package/src/actions/test/setCoinbase.ts +0 -17
  224. package/src/actions/test/setIntervalMining.test.ts +0 -30
  225. package/src/actions/test/setIntervalMining.ts +0 -16
  226. package/src/actions/test/setLoggingEnabled.test.ts +0 -10
  227. package/src/actions/test/setLoggingEnabled.ts +0 -8
  228. package/src/actions/test/setMinGasPrice.test.ts +0 -22
  229. package/src/actions/test/setMinGasPrice.ts +0 -17
  230. package/src/actions/test/setNextBlockBaseFeePerGas.test.ts +0 -23
  231. package/src/actions/test/setNextBlockBaseFeePerGas.ts +0 -17
  232. package/src/actions/test/setNextBlockTimestamp.test.ts +0 -19
  233. package/src/actions/test/setNextBlockTimestamp.ts +0 -17
  234. package/src/actions/test/setNonce.test.ts +0 -28
  235. package/src/actions/test/setNonce.ts +0 -20
  236. package/src/actions/test/setRpcUrl.test.ts +0 -9
  237. package/src/actions/test/setRpcUrl.ts +0 -8
  238. package/src/actions/test/setStorageAt.test.ts +0 -36
  239. package/src/actions/test/setStorageAt.ts +0 -26
  240. package/src/actions/test/snapshot.test.ts +0 -18
  241. package/src/actions/test/snapshot.ts +0 -7
  242. package/src/actions/test/stopImpersonatingAccount.test.ts +0 -29
  243. package/src/actions/test/stopImpersonatingAccount.ts +0 -17
  244. package/src/actions/wallet/addChain.test.ts +0 -14
  245. package/src/actions/wallet/addChain.ts +0 -21
  246. package/src/actions/wallet/getAccounts.test.ts +0 -22
  247. package/src/actions/wallet/getAccounts.ts +0 -7
  248. package/src/actions/wallet/getPermissions.test.ts +0 -24
  249. package/src/actions/wallet/getPermissions.ts +0 -9
  250. package/src/actions/wallet/index.test.ts +0 -20
  251. package/src/actions/wallet/index.ts +0 -30
  252. package/src/actions/wallet/requestAccounts.test.ts +0 -13
  253. package/src/actions/wallet/requestAccounts.ts +0 -7
  254. package/src/actions/wallet/requestPermissions.test.ts +0 -26
  255. package/src/actions/wallet/requestPermissions.ts +0 -19
  256. package/src/actions/wallet/sendTransaction.bench.ts +0 -57
  257. package/src/actions/wallet/sendTransaction.test.ts +0 -440
  258. package/src/actions/wallet/sendTransaction.ts +0 -77
  259. package/src/actions/wallet/signMessage.test.ts +0 -61
  260. package/src/actions/wallet/signMessage.ts +0 -35
  261. package/src/actions/wallet/switchChain.test.ts +0 -21
  262. package/src/actions/wallet/switchChain.ts +0 -19
  263. package/src/actions/wallet/watchAsset.test.ts +0 -40
  264. package/src/actions/wallet/watchAsset.ts +0 -16
  265. package/src/actions/wallet/writeContract.test.ts +0 -84
  266. package/src/actions/wallet/writeContract.ts +0 -47
  267. package/src/chains.test.ts +0 -1912
  268. package/src/chains.ts +0 -99
  269. package/src/clients/createClient.test.ts +0 -295
  270. package/src/clients/createClient.ts +0 -81
  271. package/src/clients/createPublicClient.test.ts +0 -165
  272. package/src/clients/createPublicClient.ts +0 -49
  273. package/src/clients/createTestClient.test.ts +0 -145
  274. package/src/clients/createTestClient.ts +0 -72
  275. package/src/clients/createWalletClient.test.ts +0 -121
  276. package/src/clients/createWalletClient.ts +0 -54
  277. package/src/clients/index.test.ts +0 -19
  278. package/src/clients/index.ts +0 -31
  279. package/src/clients/transports/createTransport.test.ts +0 -58
  280. package/src/clients/transports/createTransport.ts +0 -48
  281. package/src/clients/transports/custom.test.ts +0 -98
  282. package/src/clients/transports/custom.ts +0 -34
  283. package/src/clients/transports/fallback.test.ts +0 -257
  284. package/src/clients/transports/fallback.ts +0 -50
  285. package/src/clients/transports/http.test.ts +0 -109
  286. package/src/clients/transports/http.ts +0 -51
  287. package/src/clients/transports/index.test.ts +0 -15
  288. package/src/clients/transports/index.ts +0 -17
  289. package/src/clients/transports/webSocket.test.ts +0 -163
  290. package/src/clients/transports/webSocket.ts +0 -117
  291. package/src/constants/abis.test.ts +0 -53
  292. package/src/constants/abis.ts +0 -44
  293. package/src/constants/index.test.ts +0 -14
  294. package/src/constants/index.ts +0 -3
  295. package/src/constants/solidity.test.ts +0 -41
  296. package/src/constants/solidity.ts +0 -35
  297. package/src/ens.ts +0 -5
  298. package/src/errors/abi.test.ts +0 -81
  299. package/src/errors/abi.ts +0 -238
  300. package/src/errors/address.test.ts +0 -14
  301. package/src/errors/address.ts +0 -9
  302. package/src/errors/base.test.ts +0 -114
  303. package/src/errors/base.ts +0 -57
  304. package/src/errors/block.test.ts +0 -24
  305. package/src/errors/block.ts +0 -18
  306. package/src/errors/contract.test.ts +0 -233
  307. package/src/errors/contract.ts +0 -178
  308. package/src/errors/data.ts +0 -20
  309. package/src/errors/encoding.ts +0 -60
  310. package/src/errors/index.ts +0 -79
  311. package/src/errors/log.ts +0 -8
  312. package/src/errors/request.test.ts +0 -330
  313. package/src/errors/request.ts +0 -163
  314. package/src/errors/rpc.test.ts +0 -87
  315. package/src/errors/rpc.ts +0 -113
  316. package/src/errors/transaction.test.ts +0 -83
  317. package/src/errors/transaction.ts +0 -54
  318. package/src/errors/transport.test.ts +0 -11
  319. package/src/errors/transport.ts +0 -12
  320. package/src/index.test.ts +0 -263
  321. package/src/index.ts +0 -389
  322. package/src/public.ts +0 -80
  323. package/src/test.ts +0 -51
  324. package/src/types/block.ts +0 -71
  325. package/src/types/chain.ts +0 -6
  326. package/src/types/contract.ts +0 -393
  327. package/src/types/eip1193.ts +0 -1041
  328. package/src/types/fee.ts +0 -47
  329. package/src/types/filter.ts +0 -8
  330. package/src/types/formatter.ts +0 -23
  331. package/src/types/index.ts +0 -83
  332. package/src/types/log.ts +0 -22
  333. package/src/types/misc.ts +0 -5
  334. package/src/types/multicall.ts +0 -82
  335. package/src/types/rpc.ts +0 -35
  336. package/src/types/transaction.ts +0 -145
  337. package/src/types/utils.ts +0 -67
  338. package/src/types/window.ts +0 -9
  339. package/src/utils/abi/decodeAbi.bench.ts +0 -135
  340. package/src/utils/abi/decodeAbi.test.ts +0 -1614
  341. package/src/utils/abi/decodeAbi.ts +0 -300
  342. package/src/utils/abi/decodeDeployData.test.ts +0 -151
  343. package/src/utils/abi/decodeDeployData.ts +0 -44
  344. package/src/utils/abi/decodeErrorResult.test.ts +0 -230
  345. package/src/utils/abi/decodeErrorResult.ts +0 -45
  346. package/src/utils/abi/decodeFunctionData.test.ts +0 -139
  347. package/src/utils/abi/decodeFunctionData.ts +0 -29
  348. package/src/utils/abi/decodeFunctionResult.test.ts +0 -333
  349. package/src/utils/abi/decodeFunctionResult.ts +0 -57
  350. package/src/utils/abi/encodeAbi.bench.ts +0 -163
  351. package/src/utils/abi/encodeAbi.test.ts +0 -1447
  352. package/src/utils/abi/encodeAbi.ts +0 -273
  353. package/src/utils/abi/encodeDeployData.test.ts +0 -124
  354. package/src/utils/abi/encodeDeployData.ts +0 -40
  355. package/src/utils/abi/encodeErrorResult.test.ts +0 -192
  356. package/src/utils/abi/encodeErrorResult.ts +0 -47
  357. package/src/utils/abi/encodeEventTopics.test.ts +0 -345
  358. package/src/utils/abi/encodeEventTopics.ts +0 -75
  359. package/src/utils/abi/encodeFunctionData.test.ts +0 -138
  360. package/src/utils/abi/encodeFunctionData.ts +0 -45
  361. package/src/utils/abi/encodeFunctionResult.test.ts +0 -279
  362. package/src/utils/abi/encodeFunctionResult.ts +0 -41
  363. package/src/utils/abi/formatAbiItem.test.ts +0 -335
  364. package/src/utils/abi/formatAbiItem.ts +0 -41
  365. package/src/utils/abi/formatAbiItemWithArgs.test.ts +0 -291
  366. package/src/utils/abi/formatAbiItemWithArgs.ts +0 -27
  367. package/src/utils/abi/getAbiItem.test.ts +0 -547
  368. package/src/utils/abi/getAbiItem.ts +0 -95
  369. package/src/utils/abi/index.test.ts +0 -23
  370. package/src/utils/abi/index.ts +0 -42
  371. package/src/utils/address/getAddress.bench.ts +0 -22
  372. package/src/utils/address/getAddress.test.ts +0 -46
  373. package/src/utils/address/getAddress.ts +0 -28
  374. package/src/utils/address/getContractAddress.bench.ts +0 -20
  375. package/src/utils/address/getContractAddress.test.ts +0 -78
  376. package/src/utils/address/getContractAddress.ts +0 -59
  377. package/src/utils/address/index.test.ts +0 -17
  378. package/src/utils/address/index.ts +0 -16
  379. package/src/utils/address/isAddress.test.ts +0 -10
  380. package/src/utils/address/isAddress.ts +0 -10
  381. package/src/utils/address/isAddressEqual.test.ts +0 -55
  382. package/src/utils/address/isAddressEqual.ts +0 -6
  383. package/src/utils/buildRequest.test.ts +0 -365
  384. package/src/utils/buildRequest.ts +0 -45
  385. package/src/utils/chain.test.ts +0 -43
  386. package/src/utils/chain.ts +0 -8
  387. package/src/utils/contract/extractFunctionParts.test.ts +0 -109
  388. package/src/utils/contract/extractFunctionParts.ts +0 -27
  389. package/src/utils/contract/getContractError.test.ts +0 -282
  390. package/src/utils/contract/getContractError.ts +0 -58
  391. package/src/utils/contract/index.test.ts +0 -15
  392. package/src/utils/contract/index.ts +0 -8
  393. package/src/utils/data/concat.test.ts +0 -35
  394. package/src/utils/data/concat.ts +0 -34
  395. package/src/utils/data/index.test.ts +0 -23
  396. package/src/utils/data/index.ts +0 -13
  397. package/src/utils/data/isBytes.test.ts +0 -9
  398. package/src/utils/data/isBytes.ts +0 -7
  399. package/src/utils/data/isHex.test.ts +0 -13
  400. package/src/utils/data/isHex.ts +0 -5
  401. package/src/utils/data/pad.bench.ts +0 -30
  402. package/src/utils/data/pad.test.ts +0 -367
  403. package/src/utils/data/pad.ts +0 -53
  404. package/src/utils/data/size.test.ts +0 -18
  405. package/src/utils/data/size.ts +0 -13
  406. package/src/utils/data/slice.test.ts +0 -203
  407. package/src/utils/data/slice.ts +0 -60
  408. package/src/utils/data/trim.bench.ts +0 -34
  409. package/src/utils/data/trim.test.ts +0 -175
  410. package/src/utils/data/trim.ts +0 -33
  411. package/src/utils/encoding/decodeBytes.bench.ts +0 -40
  412. package/src/utils/encoding/decodeBytes.test.ts +0 -144
  413. package/src/utils/encoding/decodeBytes.ts +0 -63
  414. package/src/utils/encoding/decodeHex.bench.ts +0 -24
  415. package/src/utils/encoding/decodeHex.test.ts +0 -167
  416. package/src/utils/encoding/decodeHex.ts +0 -76
  417. package/src/utils/encoding/decodeRlp.bench.ts +0 -34
  418. package/src/utils/encoding/decodeRlp.test.ts +0 -350
  419. package/src/utils/encoding/decodeRlp.ts +0 -121
  420. package/src/utils/encoding/encodeBytes.bench.ts +0 -29
  421. package/src/utils/encoding/encodeBytes.test.ts +0 -676
  422. package/src/utils/encoding/encodeBytes.ts +0 -59
  423. package/src/utils/encoding/encodeHex.bench.ts +0 -49
  424. package/src/utils/encoding/encodeHex.test.ts +0 -232
  425. package/src/utils/encoding/encodeHex.ts +0 -104
  426. package/src/utils/encoding/encodeRlp.bench.ts +0 -54
  427. package/src/utils/encoding/encodeRlp.test.ts +0 -254
  428. package/src/utils/encoding/encodeRlp.ts +0 -48
  429. package/src/utils/encoding/index.test.ts +0 -32
  430. package/src/utils/encoding/index.ts +0 -36
  431. package/src/utils/ens/index.test.ts +0 -13
  432. package/src/utils/ens/index.ts +0 -5
  433. package/src/utils/ens/labelhash.test.ts +0 -55
  434. package/src/utils/ens/labelhash.ts +0 -16
  435. package/src/utils/ens/namehash.test.ts +0 -65
  436. package/src/utils/ens/namehash.ts +0 -28
  437. package/src/utils/ens/normalize.bench.ts +0 -14
  438. package/src/utils/ens/normalize.test.ts +0 -35
  439. package/src/utils/ens/normalize.ts +0 -14
  440. package/src/utils/formatters/block.bench.ts +0 -51
  441. package/src/utils/formatters/block.test.ts +0 -115
  442. package/src/utils/formatters/block.ts +0 -37
  443. package/src/utils/formatters/extract.test.ts +0 -14
  444. package/src/utils/formatters/extract.ts +0 -18
  445. package/src/utils/formatters/feeHistory.test.ts +0 -66
  446. package/src/utils/formatters/feeHistory.ts +0 -12
  447. package/src/utils/formatters/format.test.ts +0 -93
  448. package/src/utils/formatters/format.ts +0 -90
  449. package/src/utils/formatters/index.test.ts +0 -27
  450. package/src/utils/formatters/index.ts +0 -34
  451. package/src/utils/formatters/log.test.ts +0 -79
  452. package/src/utils/formatters/log.ts +0 -12
  453. package/src/utils/formatters/transaction.test.ts +0 -271
  454. package/src/utils/formatters/transaction.ts +0 -63
  455. package/src/utils/formatters/transactionReceipt.bench.ts +0 -73
  456. package/src/utils/formatters/transactionReceipt.test.ts +0 -151
  457. package/src/utils/formatters/transactionReceipt.ts +0 -63
  458. package/src/utils/formatters/transactionRequest.bench.ts +0 -29
  459. package/src/utils/formatters/transactionRequest.test.ts +0 -237
  460. package/src/utils/formatters/transactionRequest.ts +0 -56
  461. package/src/utils/hash/getEventSignature.test.ts +0 -61
  462. package/src/utils/hash/getEventSignature.ts +0 -4
  463. package/src/utils/hash/getFunctionSignature.test.ts +0 -22
  464. package/src/utils/hash/getFunctionSignature.ts +0 -5
  465. package/src/utils/hash/hashFunction.test.ts +0 -65
  466. package/src/utils/hash/hashFunction.ts +0 -12
  467. package/src/utils/hash/index.test.ts +0 -13
  468. package/src/utils/hash/index.ts +0 -5
  469. package/src/utils/hash/keccak256.test.ts +0 -59
  470. package/src/utils/hash/keccak256.ts +0 -21
  471. package/src/utils/index.test.ts +0 -113
  472. package/src/utils/index.ts +0 -141
  473. package/src/utils/observe.test.ts +0 -176
  474. package/src/utils/observe.ts +0 -66
  475. package/src/utils/poll.test.ts +0 -127
  476. package/src/utils/poll.ts +0 -42
  477. package/src/utils/promise/index.test.ts +0 -14
  478. package/src/utils/promise/index.ts +0 -3
  479. package/src/utils/promise/withCache.test.ts +0 -97
  480. package/src/utils/promise/withCache.ts +0 -73
  481. package/src/utils/promise/withRetry.test.ts +0 -231
  482. package/src/utils/promise/withRetry.ts +0 -61
  483. package/src/utils/promise/withTimeout.test.ts +0 -37
  484. package/src/utils/promise/withTimeout.ts +0 -39
  485. package/src/utils/rpc.test.ts +0 -989
  486. package/src/utils/rpc.ts +0 -292
  487. package/src/utils/stringify.test.ts +0 -13
  488. package/src/utils/stringify.ts +0 -5
  489. package/src/utils/uid.ts +0 -14
  490. package/src/utils/unit/constants.test.ts +0 -22
  491. package/src/utils/unit/constants.ts +0 -12
  492. package/src/utils/unit/formatEther.test.ts +0 -75
  493. package/src/utils/unit/formatEther.ts +0 -6
  494. package/src/utils/unit/formatGwei.test.ts +0 -32
  495. package/src/utils/unit/formatGwei.ts +0 -6
  496. package/src/utils/unit/formatUnit.bench.ts +0 -21
  497. package/src/utils/unit/formatUnit.test.ts +0 -40
  498. package/src/utils/unit/formatUnit.ts +0 -16
  499. package/src/utils/unit/index.test.ts +0 -28
  500. package/src/utils/unit/index.ts +0 -7
  501. package/src/utils/unit/parseEther.test.ts +0 -126
  502. package/src/utils/unit/parseEther.ts +0 -6
  503. package/src/utils/unit/parseGwei.test.ts +0 -50
  504. package/src/utils/unit/parseGwei.ts +0 -6
  505. package/src/utils/unit/parseUnit.bench.ts +0 -21
  506. package/src/utils/unit/parseUnit.test.ts +0 -54
  507. package/src/utils/unit/parseUnit.ts +0 -27
  508. package/src/utils/wait.ts +0 -3
  509. package/src/wallet.ts +0 -23
  510. package/src/window.ts +0 -1
@@ -1,1614 +0,0 @@
1
- import { describe, expect, test } from 'vitest'
2
-
3
- import { decodeAbi } from './decodeAbi'
4
-
5
- describe('static', () => {
6
- test('blank', () => {
7
- expect(
8
- decodeAbi({
9
- data: '0x',
10
- params: [],
11
- }),
12
- ).toBe(undefined)
13
- })
14
-
15
- test('uint', () => {
16
- expect(
17
- decodeAbi({
18
- data: '0x0000000000000000000000000000000000000000000000000000000000010f2c',
19
- params: [
20
- {
21
- internalType: 'uint256',
22
- name: 'xIn',
23
- type: 'uint256',
24
- },
25
- ],
26
- }),
27
- ).toEqual([69420n])
28
- })
29
-
30
- test('uint8', () => {
31
- expect(
32
- decodeAbi({
33
- data: '0x0000000000000000000000000000000000000000000000000000000000000020',
34
- params: [
35
- {
36
- internalType: 'uint8',
37
- name: 'foo',
38
- type: 'uint8',
39
- },
40
- ],
41
- }),
42
- ).toEqual([32])
43
- })
44
-
45
- test('uint32', () => {
46
- expect(
47
- decodeAbi({
48
- data: '0x0000000000000000000000000000000000000000000000000000000000010f2c',
49
- params: [
50
- {
51
- internalType: 'uint32',
52
- name: 'foo',
53
- type: 'uint32',
54
- },
55
- ],
56
- }),
57
- ).toEqual([69420])
58
- })
59
-
60
- describe('int', () => {
61
- test('default', () => {
62
- expect(
63
- decodeAbi({
64
- data: '0x0000000000000000000000000000000000000000000000000000000000010f2c',
65
- params: [
66
- {
67
- internalType: 'int',
68
- name: 'foo',
69
- type: 'int',
70
- },
71
- ],
72
- }),
73
- ).toEqual([69420n])
74
- })
75
-
76
- test('negative (twos compliment)', () => {
77
- expect(
78
- decodeAbi({
79
- data: '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffef0d4',
80
- params: [
81
- {
82
- internalType: 'int',
83
- name: 'foo',
84
- type: 'int',
85
- },
86
- ],
87
- }),
88
- ).toEqual([-69420n])
89
- })
90
- })
91
-
92
- describe('int8', () => {
93
- test('default', () => {
94
- expect(
95
- decodeAbi({
96
- data: '0x000000000000000000000000000000000000000000000000000000000000007f',
97
- params: [
98
- {
99
- internalType: 'int8',
100
- name: 'foo',
101
- type: 'int8',
102
- },
103
- ],
104
- }),
105
- ).toEqual([127])
106
- })
107
-
108
- test('negative (twos compliment)', () => {
109
- expect(
110
- decodeAbi({
111
- data: '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80',
112
- params: [
113
- {
114
- internalType: 'int8',
115
- name: 'foo',
116
- type: 'int8',
117
- },
118
- ],
119
- }),
120
- ).toEqual([-128])
121
- })
122
- })
123
-
124
- describe('int32', () => {
125
- test('default', () => {
126
- expect(
127
- decodeAbi({
128
- data: '0x000000000000000000000000000000000000000000000000000000007fffffff',
129
- params: [
130
- {
131
- internalType: 'int32',
132
- name: 'foo',
133
- type: 'int32',
134
- },
135
- ],
136
- }),
137
- ).toEqual([2147483647])
138
- })
139
-
140
- test('negative (twos compliment)', () => {
141
- expect(
142
- decodeAbi({
143
- data: '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000',
144
- params: [
145
- {
146
- internalType: 'int32',
147
- name: 'foo',
148
- type: 'int32',
149
- },
150
- ],
151
- }),
152
- ).toEqual([-2147483648])
153
- })
154
- })
155
-
156
- describe('address', () => {
157
- test('default', () => {
158
- expect(
159
- decodeAbi({
160
- data: '0x00000000000000000000000014dc79964da2c08b23698b3d3cc7ca32193d9955',
161
- params: [
162
- {
163
- internalType: 'address',
164
- name: 'foo',
165
- type: 'address',
166
- },
167
- ],
168
- }),
169
- ).toEqual(['0x14dC79964da2C08b23698B3D3cc7Ca32193d9955'])
170
- })
171
- })
172
-
173
- describe('bytes8', () => {
174
- test('default', () => {
175
- expect(
176
- decodeAbi({
177
- data: '0x0123456789abcdef000000000000000000000000000000000000000000000000',
178
- params: [
179
- {
180
- internalType: 'bytes8',
181
- name: 'xIn',
182
- type: 'bytes8',
183
- },
184
- ],
185
- }),
186
- ).toEqual(['0x0123456789abcdef'])
187
- })
188
- })
189
-
190
- describe('bytes16', () => {
191
- test('default', () => {
192
- expect(
193
- decodeAbi({
194
- data: '0x0123456789abcdef0123456789abcdef00000000000000000000000000000000',
195
- params: [
196
- {
197
- internalType: 'bytes16',
198
- name: 'xIn',
199
- type: 'bytes16',
200
- },
201
- ],
202
- }),
203
- ).toEqual(['0x0123456789abcdef0123456789abcdef'])
204
- })
205
- })
206
-
207
- describe('uint[3]', () => {
208
- test('default', () => {
209
- expect(
210
- decodeAbi({
211
- data: '0x0000000000000000000000000000000000000000000000000000000000010f2c000000000000000000000000000000000000000000000000000000000000a45500000000000000000000000000000000000000000000000000000000190f1b44',
212
- params: [
213
- {
214
- internalType: 'uint256[3]',
215
- name: 'xIn',
216
- type: 'uint256[3]',
217
- },
218
- ],
219
- }),
220
- ).toEqual([[69420n, 42069n, 420420420n]])
221
- })
222
- })
223
-
224
- describe('int[3]', () => {
225
- test('default', () => {
226
- expect(
227
- decodeAbi({
228
- data: '0x0000000000000000000000000000000000000000000000000000000000010f2cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5bab00000000000000000000000000000000000000000000000000000000190f1b44',
229
- params: [
230
- {
231
- internalType: 'int256[3]',
232
- name: 'xIn',
233
- type: 'int256[3]',
234
- },
235
- ],
236
- }),
237
- ).toEqual([[69420n, -42069n, 420420420n]])
238
- })
239
- })
240
-
241
- describe('address[2]', () => {
242
- test('default', () => {
243
- expect(
244
- decodeAbi({
245
- data: '0x000000000000000000000000c961145a54c96e3ae9baa048c4f4d6b04c13916b000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
246
- params: [
247
- {
248
- internalType: 'address[2]',
249
- name: 'xIn',
250
- type: 'address[2]',
251
- },
252
- ],
253
- }),
254
- ).toEqual([
255
- [
256
- '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b',
257
- '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC',
258
- ],
259
- ])
260
- })
261
- })
262
-
263
- describe('bool[2]', () => {
264
- test('default', () => {
265
- expect(
266
- decodeAbi({
267
- data: '0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000',
268
- params: [
269
- {
270
- internalType: 'bool[2]',
271
- name: 'xIn',
272
- type: 'bool[2]',
273
- },
274
- ],
275
- }),
276
- ).toEqual([[true, false]])
277
- })
278
- })
279
-
280
- describe('uint[3][2]', () => {
281
- test('default', () => {
282
- expect(
283
- decodeAbi({
284
- data: '0x0000000000000000000000000000000000000000000000000000000000010f2c000000000000000000000000000000000000000000000000000000000000a45500000000000000000000000000000000000000000000000000000000190f1b4400000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000001a6',
285
- params: [
286
- {
287
- internalType: 'uint256[3][2]',
288
- name: 'xIn',
289
- type: 'uint256[3][2]',
290
- },
291
- ],
292
- }),
293
- ).toEqual([
294
- [
295
- [69420n, 42069n, 420420420n],
296
- [420n, 44n, 422n],
297
- ],
298
- ])
299
- })
300
- })
301
-
302
- describe('uint[3][2][4]', () => {
303
- test('default', () => {
304
- expect(
305
- decodeAbi({
306
- data: '0x000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001300000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000015000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000018',
307
- params: [
308
- {
309
- internalType: 'uint256[3][2][4]',
310
- name: 'xIn',
311
- type: 'uint256[3][2][4]',
312
- },
313
- ],
314
- }),
315
- ).toEqual([
316
- [
317
- [
318
- [1n, 2n, 3n],
319
- [4n, 5n, 6n],
320
- ],
321
- [
322
- [7n, 8n, 9n],
323
- [10n, 11n, 12n],
324
- ],
325
- [
326
- [13n, 14n, 15n],
327
- [16n, 17n, 18n],
328
- ],
329
- [
330
- [19n, 20n, 21n],
331
- [22n, 23n, 24n],
332
- ],
333
- ],
334
- ])
335
- })
336
- })
337
-
338
- describe('struct: (uint256,bool,address)', () => {
339
- test('default', () => {
340
- expect(
341
- decodeAbi({
342
- data: '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
343
- params: [
344
- {
345
- components: [
346
- {
347
- internalType: 'uint256',
348
- name: 'x',
349
- type: 'uint256',
350
- },
351
- {
352
- internalType: 'bool',
353
- name: 'y',
354
- type: 'bool',
355
- },
356
- {
357
- internalType: 'address',
358
- name: 'z',
359
- type: 'address',
360
- },
361
- ],
362
- internalType: 'struct ABIExample.Foo',
363
- name: 'fooOut',
364
- type: 'tuple',
365
- },
366
- ],
367
- }),
368
- ).toEqual([
369
- { x: 420n, y: true, z: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC' },
370
- ])
371
- })
372
- })
373
-
374
- describe('struct: (uint256,bool,address)', () => {
375
- test('default', () => {
376
- expect(
377
- decodeAbi({
378
- data: '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
379
- params: [
380
- {
381
- components: [
382
- {
383
- internalType: 'uint256',
384
- type: 'uint256',
385
- },
386
- {
387
- internalType: 'bool',
388
- type: 'bool',
389
- },
390
- {
391
- internalType: 'address',
392
- type: 'address',
393
- },
394
- ],
395
- internalType: 'struct ABIExample.Foo',
396
- name: 'fooOut',
397
- type: 'tuple',
398
- },
399
- ],
400
- }),
401
- ).toEqual([[420n, true, '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC']])
402
- })
403
- })
404
-
405
- describe('struct: (uint256,bool,address)', () => {
406
- test('default', () => {
407
- expect(
408
- decodeAbi({
409
- data: '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
410
- params: [
411
- {
412
- components: [
413
- {
414
- internalType: 'uint256',
415
- name: 'x',
416
- type: 'uint256',
417
- },
418
- {
419
- internalType: 'bool',
420
- type: 'bool',
421
- },
422
- {
423
- internalType: 'address',
424
- name: 'z',
425
- type: 'address',
426
- },
427
- ],
428
- internalType: 'struct ABIExample.Foo',
429
- name: 'fooOut',
430
- type: 'tuple',
431
- },
432
- ],
433
- }),
434
- ).toEqual([[420n, true, '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC']])
435
- })
436
- })
437
-
438
- describe('struct: ()', () => {
439
- test('default', () => {
440
- expect(
441
- decodeAbi({
442
- data: '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
443
- params: [
444
- {
445
- components: [],
446
- internalType: 'struct ABIExample.Foo',
447
- name: 'fooOut',
448
- type: 'tuple',
449
- },
450
- ],
451
- }),
452
- ).toEqual([[]])
453
- })
454
- })
455
-
456
- describe('struct: ((uint256,bool,address),(uint256,bool,address),uint8[2])', () => {
457
- test('default', () => {
458
- expect(
459
- decodeAbi({
460
- data: '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac00000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c961145a54c96e3ae9baa048c4f4d6b04c13916b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002',
461
- params: [
462
- {
463
- components: [
464
- {
465
- components: [
466
- {
467
- internalType: 'uint256',
468
- name: 'x',
469
- type: 'uint256',
470
- },
471
- {
472
- internalType: 'bool',
473
- name: 'y',
474
- type: 'bool',
475
- },
476
- {
477
- internalType: 'address',
478
- name: 'z',
479
- type: 'address',
480
- },
481
- ],
482
- internalType: 'struct ABIExample.Foo',
483
- name: 'foo',
484
- type: 'tuple',
485
- },
486
- {
487
- components: [
488
- {
489
- internalType: 'uint256',
490
- name: 'x',
491
- type: 'uint256',
492
- },
493
- {
494
- internalType: 'bool',
495
- name: 'y',
496
- type: 'bool',
497
- },
498
- {
499
- internalType: 'address',
500
- name: 'z',
501
- type: 'address',
502
- },
503
- ],
504
- internalType: 'struct ABIExample.Foo',
505
- name: 'baz',
506
- type: 'tuple',
507
- },
508
- {
509
- internalType: 'uint8[2]',
510
- name: 'x',
511
- type: 'uint8[2]',
512
- },
513
- ],
514
- internalType: 'struct ABIExample.Bar',
515
- name: 'barIn',
516
- type: 'tuple',
517
- },
518
- ],
519
- }),
520
- ).toEqual([
521
- {
522
- foo: {
523
- x: 420n,
524
- y: true,
525
- z: '0xa5cc3c03994DB5b0d9A5eEdD10CabaB0813678AC',
526
- },
527
- baz: {
528
- x: 69n,
529
- y: false,
530
- z: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b',
531
- },
532
- x: [1, 2],
533
- },
534
- ])
535
- })
536
- })
537
-
538
- describe('(uint256[2],bool,string[])', () => {
539
- test('default', () => {
540
- expect(
541
- decodeAbi({
542
- data: '0x00000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000057761676d6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047669656d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036c6f6c0000000000000000000000000000000000000000000000000000000000',
543
- params: [
544
- {
545
- internalType: 'uint256[2]',
546
- name: 'xOut',
547
- type: 'uint256[2]',
548
- },
549
- {
550
- internalType: 'bool',
551
- name: 'yOut',
552
- type: 'bool',
553
- },
554
- {
555
- internalType: 'string[3]',
556
- name: 'zOut',
557
- type: 'string[3]',
558
- },
559
- ],
560
- }),
561
- ).toEqual([[420n, 69n], true, ['wagmi', 'viem', 'lol']])
562
- })
563
- })
564
-
565
- describe('(uint256[2],bool,string[])', () => {
566
- test('default', () => {
567
- expect(
568
- decodeAbi({
569
- data: '0x00000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000057761676d6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047669656d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036c6f6c0000000000000000000000000000000000000000000000000000000000',
570
- params: [
571
- {
572
- internalType: 'uint256[2]',
573
- name: 'xOut',
574
- type: 'uint256[2]',
575
- },
576
- {
577
- internalType: 'bool',
578
- name: 'yOut',
579
- type: 'bool',
580
- },
581
- {
582
- internalType: 'string[3]',
583
- name: 'zOut',
584
- type: 'string[3]',
585
- },
586
- ],
587
- }),
588
- ).toEqual([[420n, 69n], true, ['wagmi', 'viem', 'lol']])
589
- })
590
- })
591
-
592
- describe('multiple params: (uint,bool,address)', () => {
593
- test('default', () => {
594
- expect(
595
- decodeAbi({
596
- data: '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c961145a54c96e3ae9baa048c4f4d6b04c13916b',
597
- params: [
598
- {
599
- internalType: 'uint256',
600
- name: 'xIn',
601
- type: 'uint256',
602
- },
603
- {
604
- internalType: 'bool',
605
- name: 'yIn',
606
- type: 'bool',
607
- },
608
- {
609
- internalType: 'address',
610
- name: 'zIn',
611
- type: 'address',
612
- },
613
- ],
614
- }),
615
- ).toEqual([420n, true, '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b'])
616
- })
617
- })
618
-
619
- describe('multiple params unnamed: (uint,bool,address)', () => {
620
- test('default', () => {
621
- expect(
622
- decodeAbi({
623
- data: '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c961145a54c96e3ae9baa048c4f4d6b04c13916b',
624
- params: [
625
- {
626
- internalType: 'uint256',
627
- name: '',
628
- type: 'uint256',
629
- },
630
- {
631
- internalType: 'bool',
632
- name: '',
633
- type: 'bool',
634
- },
635
- {
636
- internalType: 'address',
637
- name: '',
638
- type: 'address',
639
- },
640
- ],
641
- }),
642
- ).toEqual([420n, true, '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b'])
643
- })
644
- })
645
- })
646
-
647
- describe('dynamic', () => {
648
- describe('(string)', () => {
649
- test('default', () => {
650
- expect(
651
- decodeAbi({
652
- data: '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000',
653
- params: [
654
- {
655
- internalType: 'string',
656
- name: 'xOut',
657
- type: 'string',
658
- },
659
- ],
660
- }),
661
- ).toEqual(['wagmi'])
662
- })
663
- })
664
-
665
- describe('(string,uint,bool)', () => {
666
- test('default', () => {
667
- expect(
668
- decodeAbi({
669
- data: '0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000',
670
- params: [
671
- {
672
- internalType: 'string',
673
- name: 'xIn',
674
- type: 'string',
675
- },
676
- {
677
- internalType: 'uint256',
678
- name: 'yIn',
679
- type: 'uint256',
680
- },
681
- {
682
- internalType: 'bool',
683
- name: 'zIn',
684
- type: 'bool',
685
- },
686
- ],
687
- }),
688
- ).toEqual(['wagmi', 420n, true])
689
- })
690
- })
691
-
692
- describe('(uint[2],bool,string)', () => {
693
- test('default', () => {
694
- expect(
695
- decodeAbi({
696
- data: '0x00000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000',
697
- params: [
698
- {
699
- internalType: 'uint256[2]',
700
- name: 'xIn',
701
- type: 'uint256[2]',
702
- },
703
- {
704
- internalType: 'bool',
705
- name: 'yIn',
706
- type: 'bool',
707
- },
708
- {
709
- internalType: 'string',
710
- name: 'zIn',
711
- type: 'string',
712
- },
713
- ],
714
- }),
715
- ).toEqual([[420n, 69n], true, 'wagmi'])
716
- })
717
- })
718
-
719
- describe('(bytes)', () => {
720
- test('default', () => {
721
- expect(
722
- decodeAbi({
723
- data: '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000030420690000000000000000000000000000000000000000000000000000000000',
724
- params: [
725
- {
726
- internalType: 'bytes',
727
- name: 'xIn',
728
- type: 'bytes',
729
- },
730
- ],
731
- }),
732
- ).toEqual(['0x042069'])
733
- })
734
- })
735
-
736
- describe('(uint256[][2])', () => {
737
- test('default', () => {
738
- expect(
739
- decodeAbi({
740
- params: [
741
- {
742
- internalType: 'uint256[][2]',
743
- name: 'test',
744
- type: 'uint256[][2]',
745
- },
746
- ],
747
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001',
748
- }),
749
- ).toEqual([
750
- [
751
- [1n, 2n, 3n, 4n],
752
- [3n, 2n, 1n],
753
- ],
754
- ])
755
- })
756
- })
757
-
758
- describe('(uint256[2][][2])', () => {
759
- test('default', () => {
760
- expect(
761
- decodeAbi({
762
- params: [
763
- {
764
- internalType: 'uint256[2][][2]',
765
- name: 'test',
766
- type: 'uint256[2][][2]',
767
- },
768
- ],
769
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b',
770
- }),
771
- ).toEqual([
772
- [
773
- [
774
- [1n, 2n],
775
- [4n, 5n],
776
- ],
777
- [
778
- [8n, 9n],
779
- [10n, 11n],
780
- ],
781
- ],
782
- ])
783
- })
784
- })
785
-
786
- describe('(uint256[][][2])', () => {
787
- test('default', () => {
788
- expect(
789
- decodeAbi({
790
- params: [
791
- {
792
- internalType: 'uint256[][][2]',
793
- name: 'test',
794
- type: 'uint256[][][2]',
795
- },
796
- ],
797
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a',
798
- }),
799
- ).toEqual([
800
- [
801
- [
802
- [1n, 2n, 3n],
803
- [4n, 5n, 6n, 7n],
804
- ],
805
- [[8n], [9n, 10n]],
806
- ],
807
- ])
808
- })
809
- })
810
-
811
- describe('(uint256[][1][1])', () => {
812
- test('default', () => {
813
- expect(
814
- decodeAbi({
815
- params: [
816
- {
817
- internalType: 'uint256[][1][1]',
818
- name: 'test',
819
- type: 'uint256[][1][1]',
820
- },
821
- ],
822
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003',
823
- }),
824
- ).toEqual([[[[1n, 2n, 3n]]]])
825
- })
826
- })
827
-
828
- describe('(uint256[][2][2])', () => {
829
- test('default', () => {
830
- expect(
831
- decodeAbi({
832
- params: [
833
- {
834
- internalType: 'uint256[][2][2]',
835
- name: 'test',
836
- type: 'uint256[][2][2]',
837
- },
838
- ],
839
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a',
840
- }),
841
- ).toEqual([
842
- [
843
- [
844
- [1n, 2n, 3n],
845
- [4n, 5n, 6n, 7n],
846
- ],
847
- [[8n], [9n, 10n]],
848
- ],
849
- ])
850
- })
851
- })
852
-
853
- describe('(uint256[][3][2])', () => {
854
- test('default', () => {
855
- expect(
856
- decodeAbi({
857
- params: [
858
- {
859
- internalType: 'uint256[][3][2]',
860
- name: 'test',
861
- type: 'uint256[][3][2]',
862
- },
863
- ],
864
- data: '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000011',
865
- }),
866
- ).toEqual([
867
- [
868
- [
869
- [1n, 2n, 3n],
870
- [4n, 5n, 6n, 7n],
871
- [8n, 9n, 10n],
872
- ],
873
- [[11n], [12n, 13n], [14n, 15n, 16n, 17n]],
874
- ],
875
- ])
876
- })
877
- })
878
-
879
- describe('(uint256[][2][3])', () => {
880
- test('default', () => {
881
- expect(
882
- decodeAbi({
883
- params: [
884
- {
885
- internalType: 'uint256[][2][3]',
886
- name: 'test',
887
- type: 'uint256[][2][3]',
888
- },
889
- ],
890
- data: '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000011',
891
- }),
892
- ).toEqual([
893
- [
894
- [
895
- [1n, 2n],
896
- [3n, 4n, 5n],
897
- ],
898
- [
899
- [6n, 7n, 8n],
900
- [9n, 10n],
901
- ],
902
- [
903
- [11n, 12n, 13n],
904
- [14n, 15n, 16n, 17n],
905
- ],
906
- ],
907
- ])
908
- })
909
- })
910
-
911
- describe('(uint256[][2][3][4])', () => {
912
- test('default', () => {
913
- expect(
914
- decodeAbi({
915
- params: [
916
- {
917
- internalType: 'uint256[][2][3][4]',
918
- name: 'test',
919
- type: 'uint256[][2][3][4]',
920
- },
921
- ],
922
- data: '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000007c00000000000000000000000000000000000000000000000000000000000000b80000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006',
923
- }),
924
- ).toMatchInlineSnapshot(`
925
- [
926
- [
927
- [
928
- [
929
- [
930
- 1n,
931
- 2n,
932
- 3n,
933
- ],
934
- [
935
- 4n,
936
- 5n,
937
- 6n,
938
- 7n,
939
- ],
940
- ],
941
- [
942
- [
943
- 8n,
944
- ],
945
- [
946
- 9n,
947
- 10n,
948
- ],
949
- ],
950
- [
951
- [
952
- 11n,
953
- 12n,
954
- ],
955
- [
956
- 13n,
957
- ],
958
- ],
959
- ],
960
- [
961
- [
962
- [
963
- 14n,
964
- 15n,
965
- ],
966
- [
967
- 16n,
968
- 17n,
969
- 18n,
970
- ],
971
- ],
972
- [
973
- [
974
- 0n,
975
- 1n,
976
- ],
977
- [
978
- 2n,
979
- 3n,
980
- 4n,
981
- ],
982
- ],
983
- [
984
- [
985
- 5n,
986
- 6n,
987
- ],
988
- [
989
- 1n,
990
- 2n,
991
- 1n,
992
- ],
993
- ],
994
- ],
995
- [
996
- [
997
- [
998
- 1n,
999
- 2n,
1000
- 1n,
1001
- 2n,
1002
- ],
1003
- [
1004
- 1n,
1005
- 5n,
1006
- 6n,
1007
- ],
1008
- ],
1009
- [
1010
- [
1011
- 1n,
1012
- ],
1013
- [
1014
- 2n,
1015
- ],
1016
- ],
1017
- [
1018
- [
1019
- 1n,
1020
- 2n,
1021
- 3n,
1022
- ],
1023
- [
1024
- 5n,
1025
- 6n,
1026
- 7n,
1027
- ],
1028
- ],
1029
- ],
1030
- [
1031
- [
1032
- [
1033
- 9n,
1034
- 8n,
1035
- 7n,
1036
- ],
1037
- [
1038
- 5n,
1039
- 5n,
1040
- 5n,
1041
- ],
1042
- ],
1043
- [
1044
- [
1045
- 1n,
1046
- 2n,
1047
- 3n,
1048
- ],
1049
- [
1050
- 4n,
1051
- 4n,
1052
- 4n,
1053
- ],
1054
- ],
1055
- [
1056
- [
1057
- 5n,
1058
- 5n,
1059
- 5n,
1060
- ],
1061
- [
1062
- 6n,
1063
- 6n,
1064
- 6n,
1065
- ],
1066
- ],
1067
- ],
1068
- ],
1069
- ]
1070
- `)
1071
- })
1072
- })
1073
-
1074
- describe('(uint256[2][][2])', () => {
1075
- test('default', () => {
1076
- expect(
1077
- decodeAbi({
1078
- params: [
1079
- {
1080
- internalType: 'uint256[2][][2]',
1081
- name: 'test',
1082
- type: 'uint256[2][][2]',
1083
- },
1084
- ],
1085
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000a',
1086
- }),
1087
- ).toEqual([
1088
- [
1089
- [
1090
- [1n, 2n],
1091
- [4n, 5n],
1092
- ],
1093
- [
1094
- [8n, 9n],
1095
- [10n, 11n],
1096
- [9n, 10n],
1097
- ],
1098
- ],
1099
- ])
1100
- })
1101
- })
1102
-
1103
- describe('(uint[])', () => {
1104
- test('default', () => {
1105
- expect(
1106
- decodeAbi({
1107
- params: [
1108
- {
1109
- internalType: 'uint256[]',
1110
- name: 'xIn',
1111
- type: 'uint256[]',
1112
- },
1113
- ],
1114
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000037',
1115
- }),
1116
- ).toEqual([[420n, 69n, 22n, 55n]])
1117
- })
1118
-
1119
- test('empty', () => {
1120
- expect(
1121
- decodeAbi({
1122
- data: '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000',
1123
- params: [
1124
- {
1125
- internalType: 'uint256[]',
1126
- name: 'xIn',
1127
- type: 'uint256[]',
1128
- },
1129
- ],
1130
- }),
1131
- ).toEqual([[]])
1132
- })
1133
- })
1134
-
1135
- describe('(uint[][])', () => {
1136
- test('default', () => {
1137
- expect(
1138
- decodeAbi({
1139
- params: [
1140
- {
1141
- internalType: 'uint256[][]',
1142
- name: 'xIn',
1143
- type: 'uint256[][]',
1144
- },
1145
- ],
1146
- data: '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000045',
1147
- }),
1148
- ).toEqual([[[420n, 69n]]])
1149
- })
1150
-
1151
- test('empty', () => {
1152
- expect(
1153
- decodeAbi({
1154
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000',
1155
- params: [
1156
- {
1157
- internalType: 'uint256[][]',
1158
- name: 'xIn',
1159
- type: 'uint256[][]',
1160
- },
1161
- ],
1162
- }),
1163
- ).toEqual([[[]]])
1164
- })
1165
-
1166
- test('complex', () => {
1167
- expect(
1168
- // cast abi-encode "a(uint[][])" "[[420,69],[22,55,22],[51,52,66,11]]"
1169
- decodeAbi({
1170
- params: [
1171
- {
1172
- internalType: 'uint256[][]',
1173
- name: 'xIn',
1174
- type: 'uint256[][]',
1175
- },
1176
- ],
1177
- data: '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000003700000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003300000000000000000000000000000000000000000000000000000000000000340000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000000b',
1178
- }),
1179
- ).toEqual([
1180
- [
1181
- [420n, 69n],
1182
- [22n, 55n, 22n],
1183
- [51n, 52n, 66n, 11n],
1184
- ],
1185
- ])
1186
- })
1187
- })
1188
-
1189
- describe('(string[2])', () => {
1190
- test('default', () => {
1191
- expect(
1192
- decodeAbi({
1193
- data: '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000057761676d6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047669656d00000000000000000000000000000000000000000000000000000000',
1194
- params: [
1195
- {
1196
- internalType: 'string[2]',
1197
- name: 'xIn',
1198
- type: 'string[2]',
1199
- },
1200
- ],
1201
- }),
1202
- ).toEqual([['wagmi', 'viem']])
1203
- })
1204
- })
1205
-
1206
- describe('(string[2][3])', () => {
1207
- test('default', () => {
1208
- expect(
1209
- decodeAbi({
1210
- data: '0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000057761676d6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047669656d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000046a616b65000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003746f6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000036c6f6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046861686100000000000000000000000000000000000000000000000000000000',
1211
- params: [
1212
- {
1213
- internalType: 'string[2][3]',
1214
- name: 'xIn',
1215
- type: 'string[2][3]',
1216
- },
1217
- ],
1218
- }),
1219
- ).toEqual([
1220
- [
1221
- ['wagmi', 'viem'],
1222
- ['jake', 'tom'],
1223
- ['lol', 'haha'],
1224
- ],
1225
- ])
1226
- })
1227
- })
1228
-
1229
- describe('(bytes[2])', () => {
1230
- test('default', () => {
1231
- expect(
1232
- decodeAbi({
1233
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000002123400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044141414100000000000000000000000000000000000000000000000000000000',
1234
- params: [
1235
- {
1236
- internalType: 'bytes[2]',
1237
- name: 'xOut',
1238
- type: 'bytes[2]',
1239
- },
1240
- ],
1241
- }),
1242
- ).toEqual([['0x1234', '0x41414141']])
1243
- })
1244
- })
1245
-
1246
- describe('((uint256[],bool,string[]))', () => {
1247
- test('default', () => {
1248
- expect(
1249
- // cast abi-encode "a((uint256[],bool,string[]))" "([1,2,3,4],true,[hello,world])"
1250
- decodeAbi({
1251
- data: '0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000568656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005776f726c64000000000000000000000000000000000000000000000000000000',
1252
- params: [
1253
- {
1254
- components: [
1255
- {
1256
- internalType: 'uint256[]',
1257
- name: 'x',
1258
- type: 'uint256[]',
1259
- },
1260
- {
1261
- internalType: 'bool',
1262
- name: 'y',
1263
- type: 'bool',
1264
- },
1265
- {
1266
- internalType: 'string[]',
1267
- name: 'z',
1268
- type: 'string[]',
1269
- },
1270
- ],
1271
- internalType: 'struct ABIExample.Baz',
1272
- name: 'bazIn',
1273
- type: 'tuple',
1274
- },
1275
- ],
1276
- }),
1277
- ).toEqual([
1278
- {
1279
- x: [1n, 2n, 3n, 4n],
1280
- y: true,
1281
- z: ['hello', 'world'],
1282
- },
1283
- ])
1284
- })
1285
- })
1286
-
1287
- describe('(((uint256[],bool,string[])),uint256,string[])', () => {
1288
- test('default', () => {
1289
- expect(
1290
- decodeAbi({
1291
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000568656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005776f726c6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000057761676d6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047669656d00000000000000000000000000000000000000000000000000000000',
1292
- params: [
1293
- {
1294
- components: [
1295
- {
1296
- components: [
1297
- {
1298
- internalType: 'uint256[]',
1299
- name: 'x',
1300
- type: 'uint256[]',
1301
- },
1302
- {
1303
- internalType: 'bool',
1304
- name: 'y',
1305
- type: 'bool',
1306
- },
1307
- {
1308
- internalType: 'string[]',
1309
- name: 'z',
1310
- type: 'string[]',
1311
- },
1312
- ],
1313
- internalType: 'struct ABIExample.Baz',
1314
- name: 'foo',
1315
- type: 'tuple',
1316
- },
1317
- {
1318
- internalType: 'uint256',
1319
- name: 'a',
1320
- type: 'uint256',
1321
- },
1322
- {
1323
- internalType: 'string[]',
1324
- name: 'b',
1325
- type: 'string[]',
1326
- },
1327
- ],
1328
- internalType: 'struct ABIExample.Wagmi',
1329
- name: 'wagmiIn',
1330
- type: 'tuple',
1331
- },
1332
- ],
1333
- }),
1334
- ).toEqual([
1335
- {
1336
- foo: {
1337
- x: [1n, 2n, 3n, 4n],
1338
- y: true,
1339
- z: ['hello', 'world'],
1340
- },
1341
- a: 420n,
1342
- b: ['wagmi', 'viem'],
1343
- },
1344
- ])
1345
- })
1346
- })
1347
-
1348
- describe('(((uint256[],bool,bytes[])),uint256,string[])', () => {
1349
- test('default', () => {
1350
- expect(
1351
- decodeAbi({
1352
- data: '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000568656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005776f726c6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000057761676d6900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047669656d00000000000000000000000000000000000000000000000000000000',
1353
- params: [
1354
- {
1355
- components: [
1356
- {
1357
- components: [
1358
- {
1359
- internalType: 'uint256[]',
1360
- type: 'uint256[]',
1361
- },
1362
- {
1363
- internalType: 'bool',
1364
- type: 'bool',
1365
- },
1366
- {
1367
- internalType: 'string[]',
1368
- type: 'string[]',
1369
- },
1370
- ],
1371
- internalType: 'struct ABIExample.Baz',
1372
- name: 'foo',
1373
- type: 'tuple',
1374
- },
1375
- {
1376
- internalType: 'uint256',
1377
- type: 'uint256',
1378
- },
1379
- {
1380
- internalType: 'string[]',
1381
- type: 'string[]',
1382
- },
1383
- ],
1384
- internalType: 'struct ABIExample.Wagmi',
1385
- name: 'wagmiIn',
1386
- type: 'tuple',
1387
- },
1388
- ],
1389
- }),
1390
- ).toEqual([
1391
- [[[1n, 2n, 3n, 4n], true, ['hello', 'world']], 420n, ['wagmi', 'viem']],
1392
- ])
1393
- })
1394
- })
1395
-
1396
- describe('(((uint256[],bool,string[])),uint256,string[])', () => {
1397
- test('default', () => {
1398
- expect(
1399
- decodeAbi({
1400
- data: '0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000568656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005776f726c640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000004026aa0000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000046e696365000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004686168610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000057761676d690000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006616c6c646179000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000010f2c00000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000004746869730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026973000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005706172616d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000568656c6c6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005746865726500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000036c6f6c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046861686100000000000000000000000000000000000000000000000000000000',
1401
- params: [
1402
- {
1403
- components: [
1404
- {
1405
- internalType: 'uint256[]',
1406
- name: 'x',
1407
- type: 'uint256[]',
1408
- },
1409
- {
1410
- internalType: 'bool',
1411
- name: 'y',
1412
- type: 'bool',
1413
- },
1414
- {
1415
- internalType: 'string[]',
1416
- name: 'z',
1417
- type: 'string[]',
1418
- },
1419
- ],
1420
- internalType: 'struct ABIExample.Baz',
1421
- name: 'bazIn',
1422
- type: 'tuple',
1423
- },
1424
- {
1425
- components: [
1426
- {
1427
- components: [
1428
- {
1429
- components: [
1430
- {
1431
- internalType: 'uint256[]',
1432
- name: 'x',
1433
- type: 'uint256[]',
1434
- },
1435
- {
1436
- internalType: 'bool',
1437
- name: 'y',
1438
- type: 'bool',
1439
- },
1440
- {
1441
- internalType: 'string[]',
1442
- name: 'z',
1443
- type: 'string[]',
1444
- },
1445
- ],
1446
- internalType: 'struct ABIExample.Baz',
1447
- name: 'foo',
1448
- type: 'tuple',
1449
- },
1450
- {
1451
- internalType: 'uint256',
1452
- name: 'a',
1453
- type: 'uint256',
1454
- },
1455
- {
1456
- internalType: 'string[]',
1457
- name: 'b',
1458
- type: 'string[]',
1459
- },
1460
- ],
1461
- internalType: 'struct ABIExample.Wagmi',
1462
- name: 'foo',
1463
- type: 'tuple',
1464
- },
1465
- {
1466
- components: [
1467
- {
1468
- components: [
1469
- {
1470
- internalType: 'uint256[]',
1471
- name: 'x',
1472
- type: 'uint256[]',
1473
- },
1474
- {
1475
- internalType: 'bool',
1476
- name: 'y',
1477
- type: 'bool',
1478
- },
1479
- {
1480
- internalType: 'string[]',
1481
- name: 'z',
1482
- type: 'string[]',
1483
- },
1484
- ],
1485
- internalType: 'struct ABIExample.Baz',
1486
- name: 'foo',
1487
- type: 'tuple',
1488
- },
1489
- {
1490
- internalType: 'uint256',
1491
- name: 'a',
1492
- type: 'uint256',
1493
- },
1494
- {
1495
- internalType: 'string[]',
1496
- name: 'b',
1497
- type: 'string[]',
1498
- },
1499
- ],
1500
- internalType: 'struct ABIExample.Wagmi',
1501
- name: 'bar',
1502
- type: 'tuple',
1503
- },
1504
- {
1505
- internalType: 'uint256',
1506
- name: 'c',
1507
- type: 'uint256',
1508
- },
1509
- {
1510
- internalType: 'string[]',
1511
- name: 'd',
1512
- type: 'string[]',
1513
- },
1514
- ],
1515
- internalType: 'struct ABIExample.Gmi',
1516
- name: 'gmiIn',
1517
- type: 'tuple',
1518
- },
1519
- ],
1520
- }),
1521
- ).toEqual([
1522
- {
1523
- x: [1n, 2n, 3n, 4n],
1524
- y: true,
1525
- z: ['hello', 'world'],
1526
- },
1527
- {
1528
- foo: {
1529
- a: 420n,
1530
- b: ['wagmi', 'allday'],
1531
- foo: {
1532
- x: [420n, 69n],
1533
- y: true,
1534
- z: ['nice', 'haha'],
1535
- },
1536
- },
1537
- bar: {
1538
- a: 69420n,
1539
- b: ['hello', 'there'],
1540
- foo: {
1541
- x: [420n, 420n],
1542
- y: true,
1543
- z: ['this', 'is', 'a', 'param'],
1544
- },
1545
- },
1546
- c: 4204202n,
1547
- d: ['lol', 'haha'],
1548
- },
1549
- ])
1550
- })
1551
- })
1552
- })
1553
-
1554
- test('invalid size', () => {
1555
- expect(() =>
1556
- decodeAbi({
1557
- data: '0x0000000000000000000000000000000000000000000000000000000000010fabababab',
1558
- params: [
1559
- {
1560
- internalType: 'uint256',
1561
- name: 'xIn',
1562
- type: 'uint256',
1563
- },
1564
- ],
1565
- }),
1566
- ).toThrowErrorMatchingInlineSnapshot(`
1567
- "Data size of 35 bytes is invalid.
1568
- Size must be in increments of 32 bytes (size % 32 === 0).
1569
-
1570
- Version: viem@1.0.2"
1571
- `)
1572
- })
1573
-
1574
- test('invalid type', () => {
1575
- expect(() =>
1576
- decodeAbi({
1577
- data: '0x0000000000000000000000000000000000000000000000000000000000000000',
1578
- params: [{ name: 'x', type: 'lol' }],
1579
- }),
1580
- ).toThrowErrorMatchingInlineSnapshot(`
1581
- "Type \\"lol\\" is not a valid decoding type.
1582
- Please provide a valid ABI type.
1583
-
1584
- Docs: https://viem.sh/docs/contract/decodeAbi
1585
- Version: viem@1.0.2"
1586
- `)
1587
- })
1588
-
1589
- test('error: zero data', () => {
1590
- expect(() =>
1591
- decodeAbi({
1592
- params: [
1593
- {
1594
- inputs: [],
1595
- name: 'foo',
1596
- outputs: [
1597
- {
1598
- internalType: 'uint256',
1599
- name: 'x',
1600
- type: 'uint256',
1601
- },
1602
- ],
1603
- stateMutability: 'pure',
1604
- type: 'function',
1605
- },
1606
- ],
1607
- data: '0x',
1608
- }),
1609
- ).toThrowErrorMatchingInlineSnapshot(`
1610
- "Cannot decode zero data (\\"0x\\") with ABI parameters.
1611
-
1612
- Version: viem@1.0.2"
1613
- `)
1614
- })