viem 0.0.1-cjs.10 → 0.0.1-sushi.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 (532) hide show
  1. package/contract/package.json +4 -0
  2. package/dist/call-ac509982.d.ts +23 -0
  3. package/dist/chain-c4ccb458.d.ts +5 -0
  4. package/dist/{rpc-b77c5aee.d.ts → chain-f16512e8.d.ts} +97 -17
  5. package/dist/chains.d.ts +1303 -74
  6. package/dist/chains.js +81 -85
  7. package/dist/chains.js.map +1 -0
  8. package/dist/chains.mjs +121 -125
  9. package/dist/chains.mjs.map +1 -0
  10. package/dist/chunk-2PFNLP3F.js +192 -0
  11. package/dist/chunk-2PFNLP3F.js.map +1 -0
  12. package/dist/chunk-5ND4P6QL.mjs +192 -0
  13. package/dist/chunk-5ND4P6QL.mjs.map +1 -0
  14. package/dist/{chunk-5ZBNF5WM.js → chunk-NXCI5KQC.js} +769 -359
  15. package/dist/chunk-NXCI5KQC.js.map +1 -0
  16. package/dist/{chunk-HLVCJ7RV.mjs → chunk-O7T5NQLB.mjs} +484 -477
  17. package/dist/chunk-O7T5NQLB.mjs.map +1 -0
  18. package/dist/{chunk-2FDH6XP5.mjs → chunk-SD5X7F4U.mjs} +777 -367
  19. package/dist/chunk-SD5X7F4U.mjs.map +1 -0
  20. package/dist/{chunk-46ZFLVHC.js → chunk-UTL6F7UN.js} +519 -512
  21. package/dist/chunk-UTL6F7UN.js.map +1 -0
  22. package/dist/contract-9e76e561.d.ts +166 -0
  23. package/dist/contract.d.ts +123 -0
  24. package/dist/contract.js +53 -0
  25. package/dist/contract.js.map +1 -0
  26. package/dist/contract.mjs +53 -0
  27. package/dist/contract.mjs.map +1 -0
  28. package/dist/createClient-68ee4bb4.d.ts +62 -0
  29. package/dist/createPublicClient-b732194e.d.ts +19 -0
  30. package/dist/createTestClient-dedf321e.d.ts +34 -0
  31. package/dist/createWalletClient-75813d83.d.ts +30 -0
  32. package/dist/decodeErrorResult-0b934d23.d.ts +16 -0
  33. package/dist/{eip1193-020a6f13.d.ts → eip1193-6f9ba163.d.ts} +12 -9
  34. package/dist/ens.d.ts +82 -0
  35. package/dist/ens.js +216 -0
  36. package/dist/ens.js.map +1 -0
  37. package/dist/ens.mjs +216 -0
  38. package/dist/ens.mjs.map +1 -0
  39. package/dist/getAbiItem-c8e6e7d4.d.ts +97 -0
  40. package/dist/index.d.ts +128 -33
  41. package/dist/index.js +240 -244
  42. package/dist/index.js.map +1 -0
  43. package/dist/index.mjs +257 -261
  44. package/dist/index.mjs.map +1 -0
  45. package/dist/public.d.ts +353 -0
  46. package/dist/public.js +58 -0
  47. package/dist/public.js.map +1 -0
  48. package/dist/public.mjs +58 -0
  49. package/dist/public.mjs.map +1 -0
  50. package/dist/readContract-4f6e2692.d.ts +10 -0
  51. package/dist/rpc-a5a7f376.d.ts +121 -0
  52. package/dist/sendTransaction-e713f90c.d.ts +12 -0
  53. package/dist/test.d.ts +161 -0
  54. package/dist/test.js +264 -0
  55. package/dist/test.js.map +1 -0
  56. package/dist/test.mjs +264 -0
  57. package/dist/test.mjs.map +1 -0
  58. package/dist/transactionReceipt-2a86c7c7.d.ts +26 -0
  59. package/dist/transactionRequest-c7794f5e.d.ts +15 -0
  60. package/dist/utils/index.d.ts +238 -24
  61. package/dist/utils/index.js +27 -2
  62. package/dist/utils/index.js.map +1 -0
  63. package/dist/utils/index.mjs +30 -5
  64. package/dist/utils/index.mjs.map +1 -0
  65. package/dist/wallet.d.ts +42 -0
  66. package/dist/wallet.js +24 -0
  67. package/dist/wallet.js.map +1 -0
  68. package/dist/wallet.mjs +24 -0
  69. package/dist/wallet.mjs.map +1 -0
  70. package/dist/watchEvent-c346c12d.d.ts +41 -0
  71. package/dist/window.d.ts +3 -2
  72. package/dist/window.js +1 -1
  73. package/dist/window.js.map +1 -0
  74. package/dist/window.mjs +1 -0
  75. package/dist/window.mjs.map +1 -0
  76. package/ens/package.json +4 -0
  77. package/package.json +40 -72
  78. package/src/_test/abis.ts +1420 -0
  79. package/src/_test/bench.ts +15 -0
  80. package/src/_test/constants.ts +63 -0
  81. package/src/_test/generated.ts +128 -0
  82. package/src/_test/globalSetup.ts +11 -0
  83. package/src/_test/index.ts +25 -0
  84. package/src/_test/setup.ts +8 -0
  85. package/src/_test/utils.ts +155 -0
  86. package/src/actions/ens/getEnsAddress.bench.ts +26 -0
  87. package/src/actions/ens/getEnsAddress.test.ts +97 -0
  88. package/src/actions/ens/getEnsAddress.ts +122 -0
  89. package/src/actions/ens/getEnsName.bench.ts +30 -0
  90. package/src/actions/ens/getEnsName.test.ts +101 -0
  91. package/src/actions/ens/getEnsName.ts +106 -0
  92. package/src/actions/ens/index.test.ts +12 -0
  93. package/src/actions/ens/index.ts +3 -0
  94. package/src/actions/index.test.ts +81 -0
  95. package/src/actions/index.ts +182 -0
  96. package/src/actions/public/call.bench.ts +48 -0
  97. package/src/actions/public/call.test.ts +99 -0
  98. package/src/actions/public/call.ts +97 -0
  99. package/src/actions/public/createBlockFilter.bench.ts +11 -0
  100. package/src/actions/public/createBlockFilter.test.ts +9 -0
  101. package/src/actions/public/createBlockFilter.ts +14 -0
  102. package/src/actions/public/createContractEventFilter.test.ts +119 -0
  103. package/src/actions/public/createContractEventFilter.ts +69 -0
  104. package/src/actions/public/createEventFilter.test.ts +277 -0
  105. package/src/actions/public/createEventFilter.ts +93 -0
  106. package/src/actions/public/createPendingTransactionFilter.bench.ts +11 -0
  107. package/src/actions/public/createPendingTransactionFilter.test.ts +9 -0
  108. package/src/actions/public/createPendingTransactionFilter.ts +14 -0
  109. package/src/actions/public/estimateGas.bench.ts +46 -0
  110. package/src/actions/public/estimateGas.test.ts +92 -0
  111. package/src/actions/public/estimateGas.ts +61 -0
  112. package/src/actions/public/getBalance.test.ts +83 -0
  113. package/src/actions/public/getBalance.ts +37 -0
  114. package/src/actions/public/getBlock.bench.ts +28 -0
  115. package/src/actions/public/getBlock.test.ts +575 -0
  116. package/src/actions/public/getBlock.ts +65 -0
  117. package/src/actions/public/getBlockNumber.bench.ts +28 -0
  118. package/src/actions/public/getBlockNumber.test.ts +27 -0
  119. package/src/actions/public/getBlockNumber.ts +32 -0
  120. package/src/actions/public/getBlockTransactionCount.bench.ts +15 -0
  121. package/src/actions/public/getBlockTransactionCount.test.ts +57 -0
  122. package/src/actions/public/getBlockTransactionCount.ts +52 -0
  123. package/src/actions/public/getBytecode.test.ts +27 -0
  124. package/src/actions/public/getBytecode.ts +32 -0
  125. package/src/actions/public/getChainId.bench.ts +15 -0
  126. package/src/actions/public/getChainId.test.ts +8 -0
  127. package/src/actions/public/getChainId.ts +7 -0
  128. package/src/actions/public/getFeeHistory.bench.ts +18 -0
  129. package/src/actions/public/getFeeHistory.test.ts +137 -0
  130. package/src/actions/public/getFeeHistory.ts +44 -0
  131. package/src/actions/public/getFilterChanges.bench.ts +13 -0
  132. package/src/actions/public/getFilterChanges.test.ts +383 -0
  133. package/src/actions/public/getFilterChanges.ts +23 -0
  134. package/src/actions/public/getFilterLogs.test.ts +297 -0
  135. package/src/actions/public/getFilterLogs.ts +20 -0
  136. package/src/actions/public/getGasPrice.bench.ts +19 -0
  137. package/src/actions/public/getGasPrice.test.ts +8 -0
  138. package/src/actions/public/getGasPrice.ts +15 -0
  139. package/src/actions/public/getLogs.test.ts +306 -0
  140. package/src/actions/public/getLogs.ts +84 -0
  141. package/src/actions/public/getStorageAt.test.ts +34 -0
  142. package/src/actions/public/getStorageAt.ts +32 -0
  143. package/src/actions/public/getTransaction.bench.ts +33 -0
  144. package/src/actions/public/getTransaction.test.ts +311 -0
  145. package/src/actions/public/getTransaction.ts +95 -0
  146. package/src/actions/public/getTransactionConfirmations.test.ts +69 -0
  147. package/src/actions/public/getTransactionConfirmations.ts +38 -0
  148. package/src/actions/public/getTransactionCount.test.ts +56 -0
  149. package/src/actions/public/getTransactionCount.ts +34 -0
  150. package/src/actions/public/getTransactionReceipt.bench.ts +33 -0
  151. package/src/actions/public/getTransactionReceipt.test.ts +179 -0
  152. package/src/actions/public/getTransactionReceipt.ts +34 -0
  153. package/src/actions/public/index.test.ts +43 -0
  154. package/src/actions/public/index.ts +146 -0
  155. package/src/actions/public/multicall.test.ts +452 -0
  156. package/src/actions/public/multicall.ts +108 -0
  157. package/src/actions/public/readContract.test.ts +328 -0
  158. package/src/actions/public/readContract.ts +73 -0
  159. package/src/actions/public/simulateContract.bench.ts +41 -0
  160. package/src/actions/public/simulateContract.test.ts +410 -0
  161. package/src/actions/public/simulateContract.ts +91 -0
  162. package/src/actions/public/uninstallFilter.bench.ts +13 -0
  163. package/src/actions/public/uninstallFilter.test.ts +65 -0
  164. package/src/actions/public/uninstallFilter.ts +17 -0
  165. package/src/actions/public/waitForTransactionReceipt.test.ts +322 -0
  166. package/src/actions/public/waitForTransactionReceipt.ts +170 -0
  167. package/src/actions/public/watchBlockNumber.test.ts +166 -0
  168. package/src/actions/public/watchBlockNumber.ts +79 -0
  169. package/src/actions/public/watchBlocks.test.ts +210 -0
  170. package/src/actions/public/watchBlocks.ts +114 -0
  171. package/src/actions/public/watchContractEvent.test.ts +305 -0
  172. package/src/actions/public/watchContractEvent.ts +108 -0
  173. package/src/actions/public/watchEvent.test.ts +195 -0
  174. package/src/actions/public/watchEvent.ts +95 -0
  175. package/src/actions/public/watchPendingTransactions.test.ts +116 -0
  176. package/src/actions/public/watchPendingTransactions.ts +74 -0
  177. package/src/actions/test/dropTransaction.test.ts +34 -0
  178. package/src/actions/test/dropTransaction.ts +17 -0
  179. package/src/actions/test/getAutomine.test.ts +14 -0
  180. package/src/actions/test/getAutomine.ts +11 -0
  181. package/src/actions/test/getTxpoolContent.test.ts +45 -0
  182. package/src/actions/test/getTxpoolContent.ts +7 -0
  183. package/src/actions/test/getTxpoolStatus.test.ts +41 -0
  184. package/src/actions/test/getTxpoolStatus.ts +12 -0
  185. package/src/actions/test/impersonateAccount.test.ts +26 -0
  186. package/src/actions/test/impersonateAccount.ts +17 -0
  187. package/src/actions/test/increaseTime.test.ts +18 -0
  188. package/src/actions/test/increaseTime.ts +17 -0
  189. package/src/actions/test/index.test.ts +38 -0
  190. package/src/actions/test/index.ts +77 -0
  191. package/src/actions/test/inspectTxpool.test.ts +50 -0
  192. package/src/actions/test/inspectTxpool.ts +7 -0
  193. package/src/actions/test/mine.test.ts +20 -0
  194. package/src/actions/test/mine.ts +16 -0
  195. package/src/actions/test/removeBlockTimestampInterval.test.ts +23 -0
  196. package/src/actions/test/removeBlockTimestampInterval.ts +7 -0
  197. package/src/actions/test/reset.test.ts +19 -0
  198. package/src/actions/test/reset.ts +18 -0
  199. package/src/actions/test/revert.test.ts +39 -0
  200. package/src/actions/test/revert.ts +14 -0
  201. package/src/actions/test/sendUnsignedTransaction.test.ts +52 -0
  202. package/src/actions/test/sendUnsignedTransaction.ts +19 -0
  203. package/src/actions/test/setAutomine.test.ts +14 -0
  204. package/src/actions/test/setAutomine.ts +8 -0
  205. package/src/actions/test/setBalance.test.ts +29 -0
  206. package/src/actions/test/setBalance.ts +20 -0
  207. package/src/actions/test/setBlockGasLimit.test.ts +21 -0
  208. package/src/actions/test/setBlockGasLimit.ts +17 -0
  209. package/src/actions/test/setBlockTimestampInterval.test.ts +23 -0
  210. package/src/actions/test/setBlockTimestampInterval.ts +16 -0
  211. package/src/actions/test/setCode.test.ts +26 -0
  212. package/src/actions/test/setCode.ts +19 -0
  213. package/src/actions/test/setCoinbase.test.ts +11 -0
  214. package/src/actions/test/setCoinbase.ts +17 -0
  215. package/src/actions/test/setIntervalMining.test.ts +30 -0
  216. package/src/actions/test/setIntervalMining.ts +16 -0
  217. package/src/actions/test/setLoggingEnabled.test.ts +10 -0
  218. package/src/actions/test/setLoggingEnabled.ts +8 -0
  219. package/src/actions/test/setMinGasPrice.test.ts +22 -0
  220. package/src/actions/test/setMinGasPrice.ts +17 -0
  221. package/src/actions/test/setNextBlockBaseFeePerGas.test.ts +23 -0
  222. package/src/actions/test/setNextBlockBaseFeePerGas.ts +17 -0
  223. package/src/actions/test/setNextBlockTimestamp.test.ts +19 -0
  224. package/src/actions/test/setNextBlockTimestamp.ts +17 -0
  225. package/src/actions/test/setNonce.test.ts +28 -0
  226. package/src/actions/test/setNonce.ts +20 -0
  227. package/src/actions/test/setRpcUrl.test.ts +9 -0
  228. package/src/actions/test/setRpcUrl.ts +8 -0
  229. package/src/actions/test/setStorageAt.test.ts +36 -0
  230. package/src/actions/test/setStorageAt.ts +26 -0
  231. package/src/actions/test/snapshot.test.ts +18 -0
  232. package/src/actions/test/snapshot.ts +7 -0
  233. package/src/actions/test/stopImpersonatingAccount.test.ts +29 -0
  234. package/src/actions/test/stopImpersonatingAccount.ts +17 -0
  235. package/src/actions/wallet/addChain.test.ts +14 -0
  236. package/src/actions/wallet/addChain.ts +21 -0
  237. package/src/actions/wallet/deployContract.test.ts +55 -0
  238. package/src/actions/wallet/deployContract.ts +38 -0
  239. package/src/actions/wallet/getAccounts.test.ts +22 -0
  240. package/src/actions/wallet/getAccounts.ts +7 -0
  241. package/src/actions/wallet/getPermissions.test.ts +24 -0
  242. package/src/actions/wallet/getPermissions.ts +9 -0
  243. package/src/actions/wallet/index.test.ts +21 -0
  244. package/src/actions/wallet/index.ts +36 -0
  245. package/src/actions/wallet/requestAccounts.test.ts +13 -0
  246. package/src/actions/wallet/requestAccounts.ts +7 -0
  247. package/src/actions/wallet/requestPermissions.test.ts +26 -0
  248. package/src/actions/wallet/requestPermissions.ts +19 -0
  249. package/src/actions/wallet/sendTransaction.bench.ts +57 -0
  250. package/src/actions/wallet/sendTransaction.test.ts +440 -0
  251. package/src/actions/wallet/sendTransaction.ts +77 -0
  252. package/src/actions/wallet/signMessage.test.ts +61 -0
  253. package/src/actions/wallet/signMessage.ts +35 -0
  254. package/src/actions/wallet/switchChain.test.ts +21 -0
  255. package/src/actions/wallet/switchChain.ts +19 -0
  256. package/src/actions/wallet/watchAsset.test.ts +40 -0
  257. package/src/actions/wallet/watchAsset.ts +16 -0
  258. package/src/actions/wallet/writeContract.test.ts +84 -0
  259. package/src/actions/wallet/writeContract.ts +47 -0
  260. package/src/chains.test.ts +439 -0
  261. package/src/chains.ts +99 -0
  262. package/src/clients/createClient.test.ts +295 -0
  263. package/src/clients/createClient.ts +81 -0
  264. package/src/clients/createPublicClient.test.ts +165 -0
  265. package/src/clients/createPublicClient.ts +49 -0
  266. package/src/clients/createTestClient.test.ts +145 -0
  267. package/src/clients/createTestClient.ts +72 -0
  268. package/src/clients/createWalletClient.test.ts +121 -0
  269. package/src/clients/createWalletClient.ts +54 -0
  270. package/src/clients/index.test.ts +19 -0
  271. package/src/clients/index.ts +31 -0
  272. package/src/clients/transports/createTransport.test.ts +58 -0
  273. package/src/clients/transports/createTransport.ts +48 -0
  274. package/src/clients/transports/custom.test.ts +98 -0
  275. package/src/clients/transports/custom.ts +34 -0
  276. package/src/clients/transports/fallback.test.ts +393 -0
  277. package/src/clients/transports/fallback.ts +58 -0
  278. package/src/clients/transports/http.test.ts +109 -0
  279. package/src/clients/transports/http.ts +51 -0
  280. package/src/clients/transports/index.test.ts +15 -0
  281. package/src/clients/transports/index.ts +17 -0
  282. package/src/clients/transports/webSocket.test.ts +164 -0
  283. package/src/clients/transports/webSocket.ts +118 -0
  284. package/src/constants/abis.test.ts +53 -0
  285. package/src/constants/abis.ts +44 -0
  286. package/src/constants/index.test.ts +14 -0
  287. package/src/constants/index.ts +3 -0
  288. package/src/constants/solidity.test.ts +41 -0
  289. package/src/constants/solidity.ts +35 -0
  290. package/src/contract.test.ts +32 -0
  291. package/src/contract.ts +68 -0
  292. package/src/ens.test.ts +15 -0
  293. package/src/ens.ts +8 -0
  294. package/src/errors/abi.test.ts +81 -0
  295. package/src/errors/abi.ts +254 -0
  296. package/src/errors/address.test.ts +14 -0
  297. package/src/errors/address.ts +9 -0
  298. package/src/errors/base.test.ts +114 -0
  299. package/src/errors/base.ts +57 -0
  300. package/src/errors/block.test.ts +24 -0
  301. package/src/errors/block.ts +18 -0
  302. package/src/errors/chain.test.ts +46 -0
  303. package/src/errors/chain.ts +33 -0
  304. package/src/errors/contract.test.ts +233 -0
  305. package/src/errors/contract.ts +178 -0
  306. package/src/errors/data.ts +20 -0
  307. package/src/errors/encoding.ts +60 -0
  308. package/src/errors/index.ts +82 -0
  309. package/src/errors/log.ts +8 -0
  310. package/src/errors/request.test.ts +330 -0
  311. package/src/errors/request.ts +163 -0
  312. package/src/errors/rpc.test.ts +87 -0
  313. package/src/errors/rpc.ts +113 -0
  314. package/src/errors/transaction.test.ts +83 -0
  315. package/src/errors/transaction.ts +54 -0
  316. package/src/errors/transport.test.ts +11 -0
  317. package/src/errors/transport.ts +12 -0
  318. package/src/index.test.ts +116 -0
  319. package/src/index.ts +132 -0
  320. package/src/public.test.ts +36 -0
  321. package/src/public.ts +76 -0
  322. package/src/test.test.ts +38 -0
  323. package/src/test.ts +52 -0
  324. package/src/types/block.ts +71 -0
  325. package/src/types/chain.ts +6 -0
  326. package/src/types/contract.ts +497 -0
  327. package/src/types/eip1193.ts +1041 -0
  328. package/src/types/fee.ts +47 -0
  329. package/src/types/filter.ts +8 -0
  330. package/src/types/formatter.ts +23 -0
  331. package/src/types/index.ts +84 -0
  332. package/src/types/log.ts +22 -0
  333. package/src/types/misc.ts +5 -0
  334. package/src/types/multicall.ts +82 -0
  335. package/src/types/rpc.ts +35 -0
  336. package/src/types/transaction.ts +145 -0
  337. package/src/types/utils.ts +88 -0
  338. package/src/types/window.ts +9 -0
  339. package/src/utils/abi/decodeAbi.bench.ts +135 -0
  340. package/src/utils/abi/decodeAbi.test.ts +1614 -0
  341. package/src/utils/abi/decodeAbi.ts +300 -0
  342. package/src/utils/abi/decodeDeployData.test.ts +151 -0
  343. package/src/utils/abi/decodeDeployData.ts +44 -0
  344. package/src/utils/abi/decodeErrorResult.test.ts +230 -0
  345. package/src/utils/abi/decodeErrorResult.ts +45 -0
  346. package/src/utils/abi/decodeEventLog.test.ts +542 -0
  347. package/src/utils/abi/decodeEventLog.ts +107 -0
  348. package/src/utils/abi/decodeFunctionData.test.ts +138 -0
  349. package/src/utils/abi/decodeFunctionData.ts +32 -0
  350. package/src/utils/abi/decodeFunctionResult.test.ts +333 -0
  351. package/src/utils/abi/decodeFunctionResult.ts +57 -0
  352. package/src/utils/abi/encodeAbi.bench.ts +163 -0
  353. package/src/utils/abi/encodeAbi.test.ts +1447 -0
  354. package/src/utils/abi/encodeAbi.ts +273 -0
  355. package/src/utils/abi/encodeDeployData.test.ts +124 -0
  356. package/src/utils/abi/encodeDeployData.ts +40 -0
  357. package/src/utils/abi/encodeErrorResult.test.ts +192 -0
  358. package/src/utils/abi/encodeErrorResult.ts +47 -0
  359. package/src/utils/abi/encodeEventTopics.test.ts +345 -0
  360. package/src/utils/abi/encodeEventTopics.ts +75 -0
  361. package/src/utils/abi/encodeFunctionData.test.ts +138 -0
  362. package/src/utils/abi/encodeFunctionData.ts +42 -0
  363. package/src/utils/abi/encodeFunctionResult.test.ts +279 -0
  364. package/src/utils/abi/encodeFunctionResult.ts +41 -0
  365. package/src/utils/abi/formatAbiItem.test.ts +335 -0
  366. package/src/utils/abi/formatAbiItem.ts +41 -0
  367. package/src/utils/abi/formatAbiItemWithArgs.test.ts +291 -0
  368. package/src/utils/abi/formatAbiItemWithArgs.ts +27 -0
  369. package/src/utils/abi/getAbiItem.test.ts +547 -0
  370. package/src/utils/abi/getAbiItem.ts +95 -0
  371. package/src/utils/abi/index.test.ts +24 -0
  372. package/src/utils/abi/index.ts +48 -0
  373. package/src/utils/address/getAddress.bench.ts +22 -0
  374. package/src/utils/address/getAddress.test.ts +46 -0
  375. package/src/utils/address/getAddress.ts +28 -0
  376. package/src/utils/address/getContractAddress.bench.ts +20 -0
  377. package/src/utils/address/getContractAddress.test.ts +78 -0
  378. package/src/utils/address/getContractAddress.ts +59 -0
  379. package/src/utils/address/index.test.ts +17 -0
  380. package/src/utils/address/index.ts +16 -0
  381. package/src/utils/address/isAddress.test.ts +10 -0
  382. package/src/utils/address/isAddress.ts +10 -0
  383. package/src/utils/address/isAddressEqual.test.ts +55 -0
  384. package/src/utils/address/isAddressEqual.ts +6 -0
  385. package/src/utils/buildRequest.test.ts +428 -0
  386. package/src/utils/buildRequest.ts +72 -0
  387. package/src/utils/chain.test.ts +43 -0
  388. package/src/utils/chain.ts +8 -0
  389. package/src/utils/contract/extractFunctionParts.test.ts +109 -0
  390. package/src/utils/contract/extractFunctionParts.ts +27 -0
  391. package/src/utils/contract/getContractError.test.ts +282 -0
  392. package/src/utils/contract/getContractError.ts +58 -0
  393. package/src/utils/contract/index.test.ts +15 -0
  394. package/src/utils/contract/index.ts +8 -0
  395. package/src/utils/data/concat.test.ts +35 -0
  396. package/src/utils/data/concat.ts +34 -0
  397. package/src/utils/data/index.test.ts +23 -0
  398. package/src/utils/data/index.ts +13 -0
  399. package/src/utils/data/isBytes.test.ts +9 -0
  400. package/src/utils/data/isBytes.ts +7 -0
  401. package/src/utils/data/isHex.test.ts +13 -0
  402. package/src/utils/data/isHex.ts +5 -0
  403. package/src/utils/data/pad.bench.ts +30 -0
  404. package/src/utils/data/pad.test.ts +367 -0
  405. package/src/utils/data/pad.ts +53 -0
  406. package/src/utils/data/size.test.ts +18 -0
  407. package/src/utils/data/size.ts +13 -0
  408. package/src/utils/data/slice.test.ts +203 -0
  409. package/src/utils/data/slice.ts +60 -0
  410. package/src/utils/data/trim.bench.ts +34 -0
  411. package/src/utils/data/trim.test.ts +175 -0
  412. package/src/utils/data/trim.ts +33 -0
  413. package/src/utils/encoding/decodeBytes.bench.ts +40 -0
  414. package/src/utils/encoding/decodeBytes.test.ts +144 -0
  415. package/src/utils/encoding/decodeBytes.ts +63 -0
  416. package/src/utils/encoding/decodeHex.bench.ts +24 -0
  417. package/src/utils/encoding/decodeHex.test.ts +167 -0
  418. package/src/utils/encoding/decodeHex.ts +76 -0
  419. package/src/utils/encoding/decodeRlp.bench.ts +34 -0
  420. package/src/utils/encoding/decodeRlp.test.ts +350 -0
  421. package/src/utils/encoding/decodeRlp.ts +121 -0
  422. package/src/utils/encoding/encodeBytes.bench.ts +29 -0
  423. package/src/utils/encoding/encodeBytes.test.ts +676 -0
  424. package/src/utils/encoding/encodeBytes.ts +59 -0
  425. package/src/utils/encoding/encodeHex.bench.ts +49 -0
  426. package/src/utils/encoding/encodeHex.test.ts +232 -0
  427. package/src/utils/encoding/encodeHex.ts +104 -0
  428. package/src/utils/encoding/encodeRlp.bench.ts +54 -0
  429. package/src/utils/encoding/encodeRlp.test.ts +254 -0
  430. package/src/utils/encoding/encodeRlp.ts +48 -0
  431. package/src/utils/encoding/index.test.ts +32 -0
  432. package/src/utils/encoding/index.ts +36 -0
  433. package/src/utils/ens/index.test.ts +14 -0
  434. package/src/utils/ens/index.ts +7 -0
  435. package/src/utils/ens/labelhash.test.ts +55 -0
  436. package/src/utils/ens/labelhash.ts +16 -0
  437. package/src/utils/ens/namehash.test.ts +65 -0
  438. package/src/utils/ens/namehash.ts +28 -0
  439. package/src/utils/ens/normalize.bench.ts +14 -0
  440. package/src/utils/ens/normalize.test.ts +35 -0
  441. package/src/utils/ens/normalize.ts +14 -0
  442. package/src/utils/ens/packetToBytes.test.ts +11 -0
  443. package/src/utils/ens/packetToBytes.ts +29 -0
  444. package/src/utils/formatters/block.bench.ts +51 -0
  445. package/src/utils/formatters/block.test.ts +115 -0
  446. package/src/utils/formatters/block.ts +37 -0
  447. package/src/utils/formatters/extract.test.ts +14 -0
  448. package/src/utils/formatters/extract.ts +18 -0
  449. package/src/utils/formatters/feeHistory.test.ts +66 -0
  450. package/src/utils/formatters/feeHistory.ts +12 -0
  451. package/src/utils/formatters/format.test.ts +93 -0
  452. package/src/utils/formatters/format.ts +90 -0
  453. package/src/utils/formatters/index.test.ts +27 -0
  454. package/src/utils/formatters/index.ts +34 -0
  455. package/src/utils/formatters/log.test.ts +79 -0
  456. package/src/utils/formatters/log.ts +12 -0
  457. package/src/utils/formatters/transaction.test.ts +271 -0
  458. package/src/utils/formatters/transaction.ts +63 -0
  459. package/src/utils/formatters/transactionReceipt.bench.ts +73 -0
  460. package/src/utils/formatters/transactionReceipt.test.ts +151 -0
  461. package/src/utils/formatters/transactionReceipt.ts +63 -0
  462. package/src/utils/formatters/transactionRequest.bench.ts +29 -0
  463. package/src/utils/formatters/transactionRequest.test.ts +237 -0
  464. package/src/utils/formatters/transactionRequest.ts +56 -0
  465. package/src/utils/hash/getEventSignature.test.ts +61 -0
  466. package/src/utils/hash/getEventSignature.ts +4 -0
  467. package/src/utils/hash/getFunctionSignature.test.ts +22 -0
  468. package/src/utils/hash/getFunctionSignature.ts +5 -0
  469. package/src/utils/hash/hashFunction.test.ts +65 -0
  470. package/src/utils/hash/hashFunction.ts +12 -0
  471. package/src/utils/hash/index.test.ts +13 -0
  472. package/src/utils/hash/index.ts +5 -0
  473. package/src/utils/hash/keccak256.test.ts +59 -0
  474. package/src/utils/hash/keccak256.ts +21 -0
  475. package/src/utils/index.test.ts +111 -0
  476. package/src/utils/index.ts +142 -0
  477. package/src/utils/observe.test.ts +176 -0
  478. package/src/utils/observe.ts +66 -0
  479. package/src/utils/poll.test.ts +127 -0
  480. package/src/utils/poll.ts +42 -0
  481. package/src/utils/promise/index.test.ts +14 -0
  482. package/src/utils/promise/index.ts +3 -0
  483. package/src/utils/promise/withCache.test.ts +97 -0
  484. package/src/utils/promise/withCache.ts +73 -0
  485. package/src/utils/promise/withRetry.test.ts +231 -0
  486. package/src/utils/promise/withRetry.ts +61 -0
  487. package/src/utils/promise/withTimeout.test.ts +37 -0
  488. package/src/utils/promise/withTimeout.ts +39 -0
  489. package/src/utils/rpc.test.ts +990 -0
  490. package/src/utils/rpc.ts +294 -0
  491. package/src/utils/stringify.test.ts +13 -0
  492. package/src/utils/stringify.ts +5 -0
  493. package/src/utils/uid.ts +14 -0
  494. package/src/utils/unit/constants.test.ts +22 -0
  495. package/src/utils/unit/constants.ts +12 -0
  496. package/src/utils/unit/formatEther.test.ts +75 -0
  497. package/src/utils/unit/formatEther.ts +6 -0
  498. package/src/utils/unit/formatGwei.test.ts +32 -0
  499. package/src/utils/unit/formatGwei.ts +6 -0
  500. package/src/utils/unit/formatUnit.bench.ts +21 -0
  501. package/src/utils/unit/formatUnit.test.ts +40 -0
  502. package/src/utils/unit/formatUnit.ts +16 -0
  503. package/src/utils/unit/index.test.ts +28 -0
  504. package/src/utils/unit/index.ts +7 -0
  505. package/src/utils/unit/parseEther.test.ts +126 -0
  506. package/src/utils/unit/parseEther.ts +6 -0
  507. package/src/utils/unit/parseGwei.test.ts +50 -0
  508. package/src/utils/unit/parseGwei.ts +6 -0
  509. package/src/utils/unit/parseUnit.bench.ts +21 -0
  510. package/src/utils/unit/parseUnit.test.ts +54 -0
  511. package/src/utils/unit/parseUnit.ts +27 -0
  512. package/src/utils/wait.ts +3 -0
  513. package/src/wallet.test.ts +19 -0
  514. package/src/wallet.ts +23 -0
  515. package/src/window.ts +1 -0
  516. package/wallet/package.json +4 -0
  517. package/actions/package.json +0 -4
  518. package/clients/package.json +0 -4
  519. package/dist/actions/index.d.ts +0 -8
  520. package/dist/actions/index.js +0 -125
  521. package/dist/actions/index.mjs +0 -125
  522. package/dist/chunk-CWCWWGBC.mjs +0 -258
  523. package/dist/chunk-SGTIBKHG.js +0 -258
  524. package/dist/clients/index.d.ts +0 -7
  525. package/dist/clients/index.js +0 -23
  526. package/dist/clients/index.mjs +0 -23
  527. package/dist/createWalletClient-d612fe08.d.ts +0 -130
  528. package/dist/parseGwei-7c87ff41.d.ts +0 -278
  529. package/dist/rpc-26932bae.d.ts +0 -61
  530. package/dist/transactionRequest-08d30731.d.ts +0 -132
  531. package/dist/watchAsset-bc6373f4.d.ts +0 -534
  532. package/dist/webSocket-7f88e9e0.d.ts +0 -83
@@ -0,0 +1,254 @@
1
+ import { Hex } from '../types'
2
+ import { BaseError } from './base'
3
+
4
+ export class AbiConstructorNotFoundError extends BaseError {
5
+ name = 'AbiConstructorNotFoundError'
6
+ constructor({ docsPath }: { docsPath: string }) {
7
+ super(
8
+ [
9
+ 'A constructor was not found on the ABI.',
10
+ 'Make sure you are using the correct ABI and that the constructor exists on it.',
11
+ ].join('\n'),
12
+ {
13
+ docsPath,
14
+ },
15
+ )
16
+ }
17
+ }
18
+
19
+ export class AbiConstructorParamsNotFoundError extends BaseError {
20
+ name = 'AbiConstructorParamsNotFoundError'
21
+ constructor({ docsPath }: { docsPath: string }) {
22
+ super(
23
+ [
24
+ 'Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.',
25
+ 'Make sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.',
26
+ ].join('\n'),
27
+ {
28
+ docsPath,
29
+ },
30
+ )
31
+ }
32
+ }
33
+
34
+ export class AbiDecodingDataSizeInvalidError extends BaseError {
35
+ name = 'AbiDecodingDataSizeInvalidError'
36
+ constructor(size: number) {
37
+ super(
38
+ [
39
+ `Data size of ${size} bytes is invalid.`,
40
+ 'Size must be in increments of 32 bytes (size % 32 === 0).',
41
+ ].join('\n'),
42
+ )
43
+ }
44
+ }
45
+
46
+ export class AbiDecodingZeroDataError extends BaseError {
47
+ name = 'AbiDecodingZeroDataError'
48
+ constructor() {
49
+ super('Cannot decode zero data ("0x") with ABI parameters.')
50
+ }
51
+ }
52
+
53
+ export class AbiEncodingArrayLengthMismatchError extends BaseError {
54
+ name = 'AbiEncodingArrayLengthMismatchError'
55
+ constructor({
56
+ expectedLength,
57
+ givenLength,
58
+ type,
59
+ }: { expectedLength: number; givenLength: number; type: string }) {
60
+ super(
61
+ [
62
+ `ABI encoding array length mismatch for type ${type}.`,
63
+ `Expected length: ${expectedLength}`,
64
+ `Given length: ${givenLength}`,
65
+ ].join('\n'),
66
+ )
67
+ }
68
+ }
69
+
70
+ export class AbiEncodingLengthMismatchError extends BaseError {
71
+ name = 'AbiEncodingLengthMismatchError'
72
+ constructor({
73
+ expectedLength,
74
+ givenLength,
75
+ }: { expectedLength: number; givenLength: number }) {
76
+ super(
77
+ [
78
+ 'ABI encoding params/values length mismatch.',
79
+ `Expected length (params): ${expectedLength}`,
80
+ `Given length (values): ${givenLength}`,
81
+ ].join('\n'),
82
+ )
83
+ }
84
+ }
85
+
86
+ export class AbiErrorInputsNotFoundError extends BaseError {
87
+ name = 'AbiErrorInputsNotFoundError'
88
+ constructor(errorName: string, { docsPath }: { docsPath: string }) {
89
+ super(
90
+ [
91
+ `Arguments (\`args\`) were provided to "${errorName}", but "${errorName}" on the ABI does not contain any parameters (\`inputs\`).`,
92
+ 'Cannot encode error result without knowing what the parameter types are.',
93
+ 'Make sure you are using the correct ABI and that the inputs exist on it.',
94
+ ].join('\n'),
95
+ {
96
+ docsPath,
97
+ },
98
+ )
99
+ }
100
+ }
101
+
102
+ export class AbiErrorNotFoundError extends BaseError {
103
+ name = 'AbiErrorNotFoundError'
104
+ constructor(errorName: string, { docsPath }: { docsPath: string }) {
105
+ super(
106
+ [
107
+ `Error "${errorName}" not found on ABI.`,
108
+ 'Make sure you are using the correct ABI and that the error exists on it.',
109
+ ].join('\n'),
110
+ {
111
+ docsPath,
112
+ },
113
+ )
114
+ }
115
+ }
116
+
117
+ export class AbiErrorSignatureNotFoundError extends BaseError {
118
+ name = 'AbiErrorSignatureNotFoundError'
119
+ constructor(signature: Hex, { docsPath }: { docsPath: string }) {
120
+ super(
121
+ [
122
+ `Encoded error signature "${signature}" not found on ABI.`,
123
+ 'Make sure you are using the correct ABI and that the error exists on it.',
124
+ `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,
125
+ ].join('\n'),
126
+ {
127
+ docsPath,
128
+ },
129
+ )
130
+ }
131
+ }
132
+
133
+ export class AbiEventSignatureNotFoundError extends BaseError {
134
+ name = 'AbiEventSignatureNotFoundError'
135
+ constructor(signature: Hex, { docsPath }: { docsPath: string }) {
136
+ super(
137
+ [
138
+ `Encoded event signature "${signature}" not found on ABI.`,
139
+ 'Make sure you are using the correct ABI and that the event exists on it.',
140
+ `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,
141
+ ].join('\n'),
142
+ {
143
+ docsPath,
144
+ },
145
+ )
146
+ }
147
+ }
148
+
149
+ export class AbiEventNotFoundError extends BaseError {
150
+ name = 'AbiEventNotFoundError'
151
+ constructor(eventName: string, { docsPath }: { docsPath: string }) {
152
+ super(
153
+ [
154
+ `Event "${eventName}" not found on ABI.`,
155
+ 'Make sure you are using the correct ABI and that the event exists on it.',
156
+ ].join('\n'),
157
+ {
158
+ docsPath,
159
+ },
160
+ )
161
+ }
162
+ }
163
+
164
+ export class AbiFunctionNotFoundError extends BaseError {
165
+ name = 'AbiFunctionNotFoundError'
166
+ constructor(functionName: string, { docsPath }: { docsPath: string }) {
167
+ super(
168
+ [
169
+ `Function "${functionName}" not found on ABI.`,
170
+ 'Make sure you are using the correct ABI and that the function exists on it.',
171
+ ].join('\n'),
172
+ {
173
+ docsPath,
174
+ },
175
+ )
176
+ }
177
+ }
178
+
179
+ export class AbiFunctionOutputsNotFoundError extends BaseError {
180
+ name = 'AbiFunctionOutputsNotFoundError'
181
+ constructor(functionName: string, { docsPath }: { docsPath: string }) {
182
+ super(
183
+ [
184
+ `Function "${functionName}" does not contain any \`outputs\` on ABI.`,
185
+ 'Cannot decode function result without knowing what the parameter types are.',
186
+ 'Make sure you are using the correct ABI and that the function exists on it.',
187
+ ].join('\n'),
188
+ {
189
+ docsPath,
190
+ },
191
+ )
192
+ }
193
+ }
194
+
195
+ export class AbiFunctionSignatureNotFoundError extends BaseError {
196
+ name = 'AbiFunctionSignatureNotFoundError'
197
+ constructor(signature: Hex, { docsPath }: { docsPath: string }) {
198
+ super(
199
+ [
200
+ `Encoded function signature "${signature}" not found on ABI.`,
201
+ 'Make sure you are using the correct ABI and that the function exists on it.',
202
+ `You can look up the signature here: https://openchain.xyz/signatures?query=${signature}.`,
203
+ ].join('\n'),
204
+ {
205
+ docsPath,
206
+ },
207
+ )
208
+ }
209
+ }
210
+
211
+ export class InvalidAbiEncodingTypeError extends BaseError {
212
+ name = 'InvalidAbiEncodingType'
213
+ constructor(type: string, { docsPath }: { docsPath: string }) {
214
+ super(
215
+ [
216
+ `Type "${type}" is not a valid encoding type.`,
217
+ 'Please provide a valid ABI type.',
218
+ ].join('\n'),
219
+ { docsPath },
220
+ )
221
+ }
222
+ }
223
+
224
+ export class InvalidAbiDecodingTypeError extends BaseError {
225
+ name = 'InvalidAbiDecodingType'
226
+ constructor(type: string, { docsPath }: { docsPath: string }) {
227
+ super(
228
+ [
229
+ `Type "${type}" is not a valid decoding type.`,
230
+ 'Please provide a valid ABI type.',
231
+ ].join('\n'),
232
+ { docsPath },
233
+ )
234
+ }
235
+ }
236
+
237
+ export class InvalidArrayError extends BaseError {
238
+ name = 'InvalidArrayError'
239
+ constructor(value: unknown) {
240
+ super([`Value "${value}" is not a valid array.`].join('\n'))
241
+ }
242
+ }
243
+
244
+ export class InvalidDefinitionTypeError extends BaseError {
245
+ name = 'InvalidDefinitionTypeError'
246
+ constructor(type: string) {
247
+ super(
248
+ [
249
+ `"${type}" is not a valid definition type.`,
250
+ 'Valid types: "function", "event", "error"',
251
+ ].join('\n'),
252
+ )
253
+ }
254
+ }
@@ -0,0 +1,14 @@
1
+ import { expect, test } from 'vitest'
2
+ import { InvalidAddressError } from './address'
3
+
4
+ test('InvalidAddressError', () => {
5
+ expect(
6
+ new InvalidAddressError({
7
+ address: '0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678az',
8
+ }),
9
+ ).toMatchInlineSnapshot(`
10
+ [InvalidAddressError: Address "0xa5cc3c03994db5b0d9a5eEdD10Cabab0813678az" is invalid.
11
+
12
+ Version: viem@1.0.2]
13
+ `)
14
+ })
@@ -0,0 +1,9 @@
1
+ import { Address } from '../types'
2
+ import { BaseError } from './base'
3
+
4
+ export class InvalidAddressError extends BaseError {
5
+ name = 'InvalidAddressError'
6
+ constructor({ address }: { address: Address }) {
7
+ super(`Address "${address}" is invalid.`)
8
+ }
9
+ }
@@ -0,0 +1,114 @@
1
+ import { expect, test } from 'vitest'
2
+
3
+ import { BaseError } from './base'
4
+
5
+ test('BaseError', () => {
6
+ expect(new BaseError('An error occurred.')).toMatchInlineSnapshot(`
7
+ [ViemError: An error occurred.
8
+
9
+ Version: viem@1.0.2]
10
+ `)
11
+
12
+ expect(
13
+ new BaseError('An error occurred.', { details: 'details' }),
14
+ ).toMatchInlineSnapshot(`
15
+ [ViemError: An error occurred.
16
+
17
+ Details: details
18
+ Version: viem@1.0.2]
19
+ `)
20
+
21
+ expect(new BaseError('', { details: 'details' })).toMatchInlineSnapshot(`
22
+ [ViemError: An error occurred.
23
+
24
+ Details: details
25
+ Version: viem@1.0.2]
26
+ `)
27
+ })
28
+
29
+ test('BaseError (w/ docsPath)', () => {
30
+ expect(
31
+ new BaseError('An error occurred.', {
32
+ details: 'details',
33
+ docsPath: '/lol',
34
+ }),
35
+ ).toMatchInlineSnapshot(`
36
+ [ViemError: An error occurred.
37
+
38
+ Docs: https://viem.sh/lol
39
+ Details: details
40
+ Version: viem@1.0.2]
41
+ `)
42
+ expect(
43
+ new BaseError('An error occurred.', {
44
+ cause: new BaseError('error', { docsPath: '/docs' }),
45
+ }),
46
+ ).toMatchInlineSnapshot(`
47
+ [ViemError: An error occurred.
48
+
49
+ Docs: https://viem.sh/docs
50
+ Version: viem@1.0.2]
51
+ `)
52
+ expect(
53
+ new BaseError('An error occurred.', {
54
+ cause: new BaseError('error'),
55
+ docsPath: '/lol',
56
+ }),
57
+ ).toMatchInlineSnapshot(`
58
+ [ViemError: An error occurred.
59
+
60
+ Docs: https://viem.sh/lol
61
+ Version: viem@1.0.2]
62
+ `)
63
+ })
64
+
65
+ test('BaseError (w/ metaMessages)', () => {
66
+ expect(
67
+ new BaseError('An error occurred.', {
68
+ details: 'details',
69
+ metaMessages: ['Reason: idk', 'Cause: lol'],
70
+ }),
71
+ ).toMatchInlineSnapshot(`
72
+ [ViemError: An error occurred.
73
+
74
+ Reason: idk
75
+ Cause: lol
76
+
77
+ Details: details
78
+ Version: viem@1.0.2]
79
+ `)
80
+ })
81
+
82
+ test('inherited BaseError', () => {
83
+ const err = new BaseError('An error occurred.', {
84
+ details: 'details',
85
+ docsPath: '/lol',
86
+ })
87
+ expect(
88
+ new BaseError('An internal error occurred.', {
89
+ cause: err,
90
+ }),
91
+ ).toMatchInlineSnapshot(`
92
+ [ViemError: An internal error occurred.
93
+
94
+ Docs: https://viem.sh/lol
95
+ Details: details
96
+ Version: viem@1.0.2]
97
+ `)
98
+ })
99
+
100
+ test('inherited Error', () => {
101
+ const err = new Error('details')
102
+ expect(
103
+ new BaseError('An internal error occurred.', {
104
+ cause: err,
105
+ docsPath: '/lol',
106
+ }),
107
+ ).toMatchInlineSnapshot(`
108
+ [ViemError: An internal error occurred.
109
+
110
+ Docs: https://viem.sh/lol
111
+ Details: details
112
+ Version: viem@1.0.2]
113
+ `)
114
+ })
@@ -0,0 +1,57 @@
1
+ // @ts-ignore
2
+ import pkg from '../../package.json'
3
+
4
+ /* c8 ignore next */
5
+ const version = process.env.TEST ? '1.0.2' : pkg.version
6
+
7
+ type BaseErrorArgs = {
8
+ docsPath?: string
9
+ metaMessages?: string[]
10
+ } & (
11
+ | {
12
+ cause?: never
13
+ details?: string
14
+ }
15
+ | {
16
+ cause: BaseError | Error
17
+ details?: never
18
+ }
19
+ )
20
+
21
+ export class BaseError extends Error {
22
+ details: string
23
+ docsPath?: string
24
+ metaMessages?: string[]
25
+ shortMessage: string
26
+
27
+ name = 'ViemError'
28
+
29
+ constructor(shortMessage: string, args: BaseErrorArgs = {}) {
30
+ const details =
31
+ args.cause instanceof BaseError
32
+ ? args.cause.details
33
+ : args.cause?.message
34
+ ? args.cause.message
35
+ : args.details!
36
+ const docsPath =
37
+ args.cause instanceof BaseError
38
+ ? args.cause.docsPath || args.docsPath
39
+ : args.docsPath
40
+ const message = [
41
+ shortMessage || 'An error occurred.',
42
+ '',
43
+ ...(args.metaMessages ? [...args.metaMessages, ''] : []),
44
+ ...(docsPath ? [`Docs: https://viem.sh${docsPath}`] : []),
45
+ ...(details ? [`Details: ${details}`] : []),
46
+ `Version: viem@${version}`,
47
+ ].join('\n')
48
+
49
+ super(message)
50
+
51
+ if (args.cause) this.cause = args.cause
52
+ this.details = details
53
+ this.docsPath = docsPath
54
+ this.metaMessages = args.metaMessages
55
+ this.shortMessage = shortMessage
56
+ }
57
+ }
@@ -0,0 +1,24 @@
1
+ import { expect, test } from 'vitest'
2
+ import { BlockNotFoundError } from './block'
3
+
4
+ test('BlockNotFoundError', () => {
5
+ expect(
6
+ new BlockNotFoundError({ blockNumber: 69420n }),
7
+ ).toMatchInlineSnapshot(`
8
+ [BlockNotFoundError: Block at number "69420" could not be found.
9
+
10
+ Version: viem@1.0.2]
11
+ `)
12
+ expect(
13
+ new BlockNotFoundError({ blockHash: '0x69420' }),
14
+ ).toMatchInlineSnapshot(`
15
+ [BlockNotFoundError: Block at hash "0x69420" could not be found.
16
+
17
+ Version: viem@1.0.2]
18
+ `)
19
+ expect(new BlockNotFoundError({})).toMatchInlineSnapshot(`
20
+ [BlockNotFoundError: Block could not be found.
21
+
22
+ Version: viem@1.0.2]
23
+ `)
24
+ })
@@ -0,0 +1,18 @@
1
+ import { Hash } from '../types'
2
+ import { BaseError } from './base'
3
+
4
+ export class BlockNotFoundError extends BaseError {
5
+ name = 'BlockNotFoundError'
6
+ constructor({
7
+ blockHash,
8
+ blockNumber,
9
+ }: {
10
+ blockHash?: Hash
11
+ blockNumber?: bigint
12
+ }) {
13
+ let identifier = 'Block'
14
+ if (blockHash) identifier = `Block at hash "${blockHash}"`
15
+ if (blockNumber) identifier = `Block at number "${blockNumber}"`
16
+ super(`${identifier} could not be found.`)
17
+ }
18
+ }
@@ -0,0 +1,46 @@
1
+ import { expect, test } from 'vitest'
2
+ import { mainnet } from '../chains'
3
+ import { ChainDoesNotSupportContract } from './chain'
4
+
5
+ test('ChainDoesNotSupportContract', () => {
6
+ expect(
7
+ new ChainDoesNotSupportContract({
8
+ chain: mainnet,
9
+ contract: { name: 'ensUniversalResolver' },
10
+ }),
11
+ ).toMatchInlineSnapshot(`
12
+ [ChainDoesNotSupportContract: Chain "Ethereum" does not support contract "ensUniversalResolver".
13
+
14
+ This could be due to any of the following:
15
+ - The chain does not have the contract "ensUniversalResolver" configured.
16
+
17
+ Version: viem@1.0.2]
18
+ `)
19
+ expect(
20
+ new ChainDoesNotSupportContract({
21
+ chain: mainnet,
22
+ contract: { name: 'ensUniversalResolver', blockCreated: 16172161 },
23
+ }),
24
+ ).toMatchInlineSnapshot(`
25
+ [ChainDoesNotSupportContract: Chain "Ethereum" does not support contract "ensUniversalResolver".
26
+
27
+ This could be due to any of the following:
28
+ - The chain does not have the contract "ensUniversalResolver" configured.
29
+
30
+ Version: viem@1.0.2]
31
+ `)
32
+ expect(
33
+ new ChainDoesNotSupportContract({
34
+ blockNumber: 16172160n,
35
+ chain: mainnet,
36
+ contract: { name: 'ensUniversalResolver', blockCreated: 16172161 },
37
+ }),
38
+ ).toMatchInlineSnapshot(`
39
+ [ChainDoesNotSupportContract: Chain "Ethereum" does not support contract "ensUniversalResolver".
40
+
41
+ This could be due to any of the following:
42
+ - The contract "ensUniversalResolver" was not deployed until block 16172161 (current block 16172160).
43
+
44
+ Version: viem@1.0.2]
45
+ `)
46
+ })
@@ -0,0 +1,33 @@
1
+ import { Chain } from '../types'
2
+ import { BaseError } from './base'
3
+
4
+ export class ChainDoesNotSupportContract extends BaseError {
5
+ name = 'ChainDoesNotSupportContract'
6
+ constructor({
7
+ blockNumber,
8
+ chain,
9
+ contract,
10
+ }: {
11
+ blockNumber?: bigint
12
+ chain: Chain
13
+ contract: { name: string; blockCreated?: number }
14
+ }) {
15
+ super(
16
+ `Chain "${chain.name}" does not support contract "${contract.name}".`,
17
+ {
18
+ metaMessages: [
19
+ 'This could be due to any of the following:',
20
+ ...(blockNumber &&
21
+ contract.blockCreated &&
22
+ contract.blockCreated > blockNumber
23
+ ? [
24
+ `- The contract "${contract.name}" was not deployed until block ${contract.blockCreated} (current block ${blockNumber}).`,
25
+ ]
26
+ : [
27
+ `- The chain does not have the contract "${contract.name}" configured.`,
28
+ ]),
29
+ ],
30
+ },
31
+ )
32
+ }
33
+ }