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,47 @@
1
+ import type { Address, Hex } from './misc'
2
+
3
+ export type EstimateGasParameters<TQuantity = bigint> = {
4
+ /** Contract code or a hashed method call with encoded args */
5
+ data?: Hex
6
+ /** Gas provided for transaction execution */
7
+ gas?: TQuantity
8
+ /** Transaction sender */
9
+ from?: Address
10
+ /** Transaction recipient */
11
+ to?: Address
12
+ /** Value in wei sent with this transaction */
13
+ value?: TQuantity
14
+ } & Partial<FeeValues<TQuantity>>
15
+
16
+ export type FeeHistory<TQuantity = bigint> = {
17
+ /**
18
+ * An array of block base fees per gas (in wei). This includes the next block after
19
+ * the newest of the returned range, because this value can be derived from the newest block.
20
+ * Zeroes are returned for pre-EIP-1559 blocks. */
21
+ baseFeePerGas: TQuantity[]
22
+ /** An array of block gas used ratios. These are calculated as the ratio of gasUsed and gasLimit. */
23
+ gasUsedRatio: number[]
24
+ /** Lowest number block of the returned range. */
25
+ oldestBlock: TQuantity
26
+ /** An array of effective priority fees (in wei) per gas data points from a single block. All zeroes are returned if the block is empty. */
27
+ reward?: TQuantity[][]
28
+ }
29
+
30
+ export type FeeValuesLegacy<TQuantity = bigint> = {
31
+ /** Base fee per gas. */
32
+ gasPrice: TQuantity
33
+ maxFeePerGas?: never
34
+ maxPriorityFeePerGas?: never
35
+ }
36
+
37
+ export type FeeValuesEIP1559<TQuantity = bigint> = {
38
+ gasPrice?: never
39
+ /** Total fee per gas in wei (gasPrice/baseFeePerGas + maxPriorityFeePerGas). */
40
+ maxFeePerGas: TQuantity
41
+ /** Max priority fee per gas (in wei). */
42
+ maxPriorityFeePerGas: TQuantity
43
+ }
44
+
45
+ export type FeeValues<TQuantity = bigint> =
46
+ | FeeValuesLegacy<TQuantity>
47
+ | FeeValuesEIP1559<TQuantity>
@@ -0,0 +1,8 @@
1
+ import type { Hex } from './misc'
2
+
3
+ export type FilterType = 'transaction' | 'block' | 'event'
4
+
5
+ export type Filter<TFilterType extends FilterType = 'event'> = {
6
+ id: Hex
7
+ type: TFilterType
8
+ }
@@ -0,0 +1,23 @@
1
+ import { Block } from './block'
2
+ import {
3
+ RpcBlock,
4
+ RpcTransaction,
5
+ RpcTransactionReceipt,
6
+ RpcTransactionRequest,
7
+ } from './rpc'
8
+ import {
9
+ Transaction,
10
+ TransactionReceipt,
11
+ TransactionRequest,
12
+ } from './transaction'
13
+
14
+ export type Formatter<TSource = any, TTarget = any> = (
15
+ value: TSource & { [key: string]: unknown },
16
+ ) => TTarget
17
+
18
+ export type Formatters = {
19
+ block?: Formatter<RpcBlock, Block>
20
+ transaction?: Formatter<RpcTransaction, Transaction>
21
+ transactionReceipt?: Formatter<RpcTransactionReceipt, TransactionReceipt>
22
+ transactionRequest?: Formatter<TransactionRequest, RpcTransactionRequest>
23
+ }
@@ -0,0 +1,84 @@
1
+ export type {
2
+ Block,
3
+ BlockIdentifier,
4
+ BlockNumber,
5
+ BlockTag,
6
+ Uncle,
7
+ } from './block'
8
+
9
+ export type { Chain } from './chain'
10
+
11
+ export type {
12
+ AbiItem,
13
+ AbiEventParametersToPrimitiveTypes,
14
+ ContractConfig,
15
+ EventDefinition,
16
+ ExtractArgsFromAbi,
17
+ ExtractArgsFromEventDefinition,
18
+ ExtractConstructorArgsFromAbi,
19
+ ExtractErrorArgsFromAbi,
20
+ ExtractErrorNameFromAbi,
21
+ ExtractEventArgsFromAbi,
22
+ ExtractEventArgsFromTopics,
23
+ ExtractEventNameFromAbi,
24
+ ExtractFunctionNameFromAbi,
25
+ ExtractNameFromAbi,
26
+ ExtractResultFromAbi,
27
+ GetValue,
28
+ } from './contract'
29
+
30
+ export type {
31
+ EstimateGasParameters,
32
+ FeeHistory,
33
+ FeeValues,
34
+ FeeValuesEIP1559,
35
+ FeeValuesLegacy,
36
+ } from './fee'
37
+
38
+ export type { Filter, FilterType } from './filter'
39
+
40
+ export type { Formatter, Formatters } from './formatter'
41
+
42
+ export type { Log } from './log'
43
+
44
+ export type { Address, ByteArray, Hex, Hash, LogTopic } from './misc'
45
+
46
+ export type { MulticallContracts } from './multicall'
47
+
48
+ export type {
49
+ Index,
50
+ Quantity,
51
+ RpcBlock,
52
+ RpcBlockIdentifier,
53
+ RpcBlockNumber,
54
+ RpcEstimateGasParameters,
55
+ RpcFeeHistory,
56
+ RpcFeeValues,
57
+ RpcLog,
58
+ RpcTransactionReceipt,
59
+ RpcTransactionRequest,
60
+ RpcTransaction,
61
+ RpcUncle,
62
+ } from './rpc'
63
+
64
+ export type {
65
+ AccessList,
66
+ TransactionReceipt,
67
+ TransactionRequest,
68
+ TransactionRequestBase,
69
+ TransactionRequestEIP1559,
70
+ TransactionRequestEIP2930,
71
+ TransactionRequestLegacy,
72
+ Transaction,
73
+ TransactionBase,
74
+ TransactionEIP1559,
75
+ TransactionEIP2930,
76
+ TransactionLegacy,
77
+ } from './transaction'
78
+
79
+ export type {
80
+ PartialBy,
81
+ Prettify,
82
+ MergeIntersectionProperties,
83
+ OptionalNullable,
84
+ } from './utils'
@@ -0,0 +1,22 @@
1
+ import type { Address, Hash, Hex } from './misc'
2
+
3
+ export type Log<TQuantity = bigint, TIndex = number> = {
4
+ /** The address from which this log originated */
5
+ address: Address
6
+ /** Hash of block containing this log or `null` if pending */
7
+ blockHash: Hash | null
8
+ /** Number of block containing this log or `null` if pending */
9
+ blockNumber: TQuantity | null
10
+ /** Contains the non-indexed arguments of the log */
11
+ data: Hex
12
+ /** Index of this log within its block or `null` if pending */
13
+ logIndex: TIndex | null
14
+ /** Hash of the transaction that created this log or `null` if pending */
15
+ transactionHash: Hash | null
16
+ /** Index of the transaction that created this log or `null` if pending */
17
+ transactionIndex: TIndex | null
18
+ /** List of order-dependent topics */
19
+ topics: Hex[]
20
+ /** `true` if this filter has been destroyed and is invalid */
21
+ removed: boolean
22
+ }
@@ -0,0 +1,5 @@
1
+ export type Address = `0x${string}`
2
+ export type ByteArray = Uint8Array
3
+ export type Hex = `0x${string}`
4
+ export type Hash = `0x${string}`
5
+ export type LogTopic = Hex | Hex[] | null
@@ -0,0 +1,82 @@
1
+ import { Abi } from 'abitype';
2
+ import { ContractConfig, ExtractResultFromAbi } from './contract';
3
+
4
+ type MAXIMUM_DEPTH = 20
5
+
6
+ export type Contract<
7
+ TAbi extends Abi | readonly unknown[] = Abi | readonly unknown[],
8
+ TFunctionName extends string = string,
9
+ > = { abi: TAbi; functionName: TFunctionName }
10
+
11
+ export type MulticallContracts<
12
+ TContracts extends Contract[],
13
+ TProperties extends Record<string, any> = object,
14
+ Result extends any[] = [],
15
+ Depth extends ReadonlyArray<number> = [],
16
+ > = Depth['length'] extends MAXIMUM_DEPTH
17
+ ? (ContractConfig & TProperties)[]
18
+ : TContracts extends []
19
+ ? []
20
+ : TContracts extends [infer Head extends Contract]
21
+ ? [
22
+ ...Result,
23
+ ContractConfig<Head['abi'], Head['functionName']> &
24
+ TProperties,
25
+ ]
26
+ : TContracts extends [
27
+ infer Head extends Contract,
28
+ ...infer Tail extends Contract[],
29
+ ]
30
+ ? MulticallContracts<
31
+ [...Tail],
32
+ TProperties,
33
+ [
34
+ ...Result,
35
+ ContractConfig<Head['abi'], Head['functionName']> &
36
+ TProperties,
37
+ ],
38
+ [...Depth, 1]
39
+ >
40
+ : unknown[] extends TContracts
41
+ ? TContracts
42
+ : // If `TContracts` is *some* array but we couldn't assign `unknown[]` to it, then it must hold some known/homogenous type!
43
+ // use this to infer the param types in the case of Array.map() argument
44
+ TContracts extends ContractConfig<infer TAbi, infer TFunctionName>[]
45
+ ? (ContractConfig<TAbi, TFunctionName> & TProperties)[]
46
+ : (ContractConfig & TProperties)[]
47
+
48
+
49
+ export type MulticallResult<Result, TAllowFailure extends boolean = true> = TAllowFailure extends true ? ({
50
+ error?: undefined
51
+ result: Result
52
+ status: 'success'
53
+ } | {
54
+ error: Error
55
+ result?: undefined
56
+ status: 'error'
57
+ }) : Result
58
+
59
+ export type MulticallResults<
60
+ TContracts extends Contract[],
61
+ TAllowFailure extends boolean = true,
62
+ Result extends any[] = [],
63
+ Depth extends ReadonlyArray<number> = [],
64
+ > = Depth['length'] extends MAXIMUM_DEPTH
65
+ ? MulticallResult<ExtractResultFromAbi, TAllowFailure>[]
66
+ : TContracts extends []
67
+ ? []
68
+ : TContracts extends [infer Head extends Contract]
69
+ ? [...Result, MulticallResult<ExtractResultFromAbi<Head['abi'], Head['functionName']>, TAllowFailure>]
70
+ : TContracts extends [
71
+ infer Head extends Contract,
72
+ ...infer Tail extends Contract[],
73
+ ]
74
+ ? MulticallResults<
75
+ [...Tail],
76
+ TAllowFailure,
77
+ [...Result, MulticallResult<ExtractResultFromAbi<Head['abi'], Head['functionName']>, TAllowFailure>],
78
+ [...Depth, 1]
79
+ >
80
+ : TContracts extends ContractConfig<infer TAbi, infer TFunctionName>[]
81
+ ? MulticallResult<ExtractResultFromAbi<TAbi, TFunctionName>, TAllowFailure>[]
82
+ : MulticallResult<ExtractResultFromAbi, TAllowFailure>[]
@@ -0,0 +1,35 @@
1
+ import type { Block, BlockIdentifier, BlockNumber, Uncle } from './block'
2
+ import type { EstimateGasParameters, FeeHistory, FeeValues } from './fee'
3
+ import type { Log } from './log'
4
+ import type {
5
+ TransactionEIP1559,
6
+ TransactionEIP2930,
7
+ TransactionLegacy,
8
+ TransactionReceipt,
9
+ TransactionRequest,
10
+ } from './transaction'
11
+
12
+ export type Index = `0x${string}`
13
+ export type Quantity = `0x${string}`
14
+ export type Status = '0x0' | '0x1'
15
+ export type TransactionType = '0x0' | '0x1' | '0x2'
16
+
17
+ export type RpcBlock = Block<Quantity, RpcTransaction>
18
+ export type RpcBlockNumber = BlockNumber<Quantity>
19
+ export type RpcBlockIdentifier = BlockIdentifier<Quantity>
20
+ export type RpcEstimateGasParameters = EstimateGasParameters<Quantity>
21
+ export type RpcUncle = Uncle<Quantity>
22
+ export type RpcFeeHistory = FeeHistory<Quantity>
23
+ export type RpcFeeValues = FeeValues<Quantity>
24
+ export type RpcLog = Log<Quantity, Index>
25
+ export type RpcTransactionReceipt = TransactionReceipt<
26
+ Quantity,
27
+ Index,
28
+ Status,
29
+ TransactionType
30
+ >
31
+ export type RpcTransactionRequest = TransactionRequest<Quantity, Index>
32
+ export type RpcTransaction =
33
+ | TransactionLegacy<Quantity, Index, '0x0'>
34
+ | TransactionEIP2930<Quantity, Index, '0x1'>
35
+ | TransactionEIP1559<Quantity, Index, '0x2'>
@@ -0,0 +1,145 @@
1
+ import { transactionType } from '../utils'
2
+ import type { FeeValuesEIP1559, FeeValuesLegacy } from './fee'
3
+ import type { Log } from './log'
4
+ import type { Address, Hash, Hex } from './misc'
5
+ import type { ValueOf } from './utils'
6
+
7
+ export type AccessList = Array<{ address: Address; storageKeys: Array<Hex> }>
8
+
9
+ export type TransactionType = ValueOf<typeof transactionType>
10
+
11
+ export type TransactionReceipt<
12
+ TQuantity = bigint,
13
+ TIndex = number,
14
+ TStatus = 'success' | 'reverted',
15
+ TType = TransactionType,
16
+ > = {
17
+ /** Hash of block containing this transaction */
18
+ blockHash: Hash
19
+ /** Number of block containing this transaction */
20
+ blockNumber: TQuantity
21
+ /** Address of new contract or `null` if no contract was created */
22
+ contractAddress: Address | null
23
+ /** Gas used by this and all preceding transactions in this block */
24
+ cumulativeGasUsed: TQuantity
25
+ /** Pre-London, it is equal to the transaction's gasPrice. Post-London, it is equal to the actual gas price paid for inclusion. */
26
+ effectiveGasPrice: TQuantity
27
+ /** Transaction sender */
28
+ from: Address
29
+ /** Gas used by this transaction */
30
+ gasUsed: TQuantity
31
+ /** List of log objects generated by this transaction */
32
+ logs: Log<TQuantity, TIndex>[]
33
+ /** Logs bloom filter */
34
+ logsBloom: Hex
35
+ /** `1` if this transaction was successful or `0` if it failed */
36
+ status: TStatus
37
+ /** Transaction recipient or `null` if deploying a contract */
38
+ to: Address | null
39
+ /** Hash of this transaction */
40
+ transactionHash: Hash
41
+ /** Index of this transaction in the block */
42
+ transactionIndex: TIndex
43
+ /** Transaction type */
44
+ type: TType
45
+ }
46
+
47
+ export type TransactionBase<TQuantity = bigint, TIndex = number> = {
48
+ /** Hash of block containing this transaction or `null` if pending */
49
+ blockHash: Hash | null
50
+ /** Number of block containing this transaction or `null` if pending */
51
+ blockNumber: TQuantity | null
52
+ /** Transaction sender */
53
+ from: Address
54
+ /** Gas provided for transaction execution */
55
+ gas: TQuantity
56
+ /** Hash of this transaction */
57
+ hash: Hash
58
+ /** Contract code or a hashed method call */
59
+ input: Hex
60
+ /** Unique number identifying this transaction */
61
+ nonce: TIndex
62
+ /** ECDSA signature r */
63
+ r: Hex
64
+ /** ECDSA signature s */
65
+ s: Hex
66
+ /** Transaction recipient or `null` if deploying a contract */
67
+ to: Address | null
68
+ /** Index of this transaction in the block or `null` if pending */
69
+ transactionIndex: TIndex | null
70
+ /** ECDSA recovery ID */
71
+ v: TQuantity
72
+ /** Value in wei sent with this transaction */
73
+ value: TQuantity
74
+ }
75
+ export type TransactionLegacy<
76
+ TQuantity = bigint,
77
+ TIndex = number,
78
+ TType = 'legacy',
79
+ > = TransactionBase<TQuantity, TIndex> &
80
+ FeeValuesLegacy<TQuantity> & {
81
+ accessList?: never
82
+ type: TType
83
+ }
84
+ export type TransactionEIP2930<
85
+ TQuantity = bigint,
86
+ TIndex = number,
87
+ TType = 'eip2930',
88
+ > = TransactionBase<TQuantity, TIndex> &
89
+ FeeValuesLegacy<TQuantity> & {
90
+ accessList: AccessList
91
+ type: TType
92
+ }
93
+ export type TransactionEIP1559<
94
+ TQuantity = bigint,
95
+ TIndex = number,
96
+ TType = 'eip1559',
97
+ > = TransactionBase<TQuantity, TIndex> &
98
+ FeeValuesEIP1559<TQuantity> & {
99
+ accessList: AccessList
100
+ type: TType
101
+ }
102
+ export type Transaction<TQuantity = bigint, TIndex = number> =
103
+ | TransactionLegacy<TQuantity, TIndex>
104
+ | TransactionEIP2930<TQuantity, TIndex>
105
+ | TransactionEIP1559<TQuantity, TIndex>
106
+
107
+ export type TransactionRequestBase<TQuantity = bigint, TIndex = number> = {
108
+ /** Contract code or a hashed method call with encoded args */
109
+ data?: Hex
110
+ /** Transaction sender */
111
+ from: Address
112
+ /** Gas provided for transaction execution */
113
+ gas?: TQuantity
114
+ /** Unique number identifying this transaction */
115
+ nonce?: TIndex
116
+ /** Transaction recipient */
117
+ to?: Address
118
+ /** Value in wei sent with this transaction */
119
+ value?: TQuantity
120
+ }
121
+ export type TransactionRequestLegacy<
122
+ TQuantity = bigint,
123
+ TIndex = number,
124
+ > = TransactionRequestBase<TQuantity, TIndex> &
125
+ Partial<FeeValuesLegacy<TQuantity>> & {
126
+ accessList?: never
127
+ }
128
+ export type TransactionRequestEIP2930<
129
+ TQuantity = bigint,
130
+ TIndex = number,
131
+ > = TransactionRequestBase<TQuantity, TIndex> &
132
+ Partial<FeeValuesLegacy<TQuantity>> & {
133
+ accessList?: AccessList
134
+ }
135
+ export type TransactionRequestEIP1559<
136
+ TQuantity = bigint,
137
+ TIndex = number,
138
+ > = TransactionRequestBase<TQuantity, TIndex> &
139
+ Partial<FeeValuesEIP1559<TQuantity>> & {
140
+ accessList?: AccessList
141
+ }
142
+ export type TransactionRequest<TQuantity = bigint, TIndex = number> =
143
+ | TransactionRequestLegacy<TQuantity, TIndex>
144
+ | TransactionRequestEIP2930<TQuantity, TIndex>
145
+ | TransactionRequestEIP1559<TQuantity, TIndex>
@@ -0,0 +1,88 @@
1
+ export type MaybePromise<T> = T | Promise<T>
2
+
3
+ /**
4
+ * @description Merges the intersection properties of T and U.
5
+ *
6
+ * @example
7
+ * MergeIntersectionProperties<{ a: string, b: number }, { a: number, c: boolean }>
8
+ * => { a: number, b: number }
9
+ */
10
+ export type MergeIntersectionProperties<T, U> = {
11
+ [K in
12
+ keyof T as K extends keyof U
13
+ ? U[K] extends void
14
+ ? never
15
+ : K
16
+ : K]: K extends keyof U ? U[K] : T[K]
17
+ }
18
+
19
+ /**
20
+ * @description Makes nullable properties from T optional.
21
+ *
22
+ * @example
23
+ * OptionalNullable<{ a: string | undefined, c: number }>
24
+ * => { a?: string | undefined, c: number }
25
+ */
26
+ export type OptionalNullable<T> = {
27
+ [K in keyof T as T[K] extends NonNullable<unknown> ? K : never]: T[K]
28
+ } & {
29
+ [K in keyof T as T[K] extends NonNullable<unknown> ? never : K]?: T[K]
30
+ }
31
+
32
+ /**
33
+ * @description Constructs a type by excluding `undefined` from `T`.
34
+ *
35
+ * @example
36
+ * NoUndefined<string | undefined>
37
+ * => string
38
+ */
39
+ export type NoUndefined<T> = T extends undefined ? never : T
40
+
41
+ /**
42
+ * @description Creates a type that is a partial of T, but with the required keys K.
43
+ *
44
+ * @example
45
+ * PartialBy<{ a: string, b: number }, 'a'>
46
+ * => { a?: string, b: number }
47
+ */
48
+ export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
49
+
50
+ /**
51
+ * @description Combines members of an intersection into a readable type.
52
+ *
53
+ * @link https://twitter.com/mattpocockuk/status/1622730173446557697?s=20&t=NdpAcmEFXY01xkqU3KO0Mg
54
+ * @example
55
+ * Prettify<{ a: string } | { b: string } | { c: number, d: bigint }>
56
+ * => { a: string, b: string, c: number, d: bigint }
57
+ */
58
+ export type Prettify<T> = {
59
+ [K in keyof T]: T[K]
60
+ } & {}
61
+
62
+ type TrimLeft<T, Chars extends string = ' '> = T extends `${Chars}${infer R}`
63
+ ? TrimLeft<R>
64
+ : T
65
+ type TrimRight<T, Chars extends string = ' '> = T extends `${infer R}${Chars}`
66
+ ? TrimRight<R>
67
+ : T
68
+
69
+ /**
70
+ * @description Trims empty space from type T.
71
+ *
72
+ * @example
73
+ * Trim<' lol '>
74
+ * => 'lol'
75
+ */
76
+ export type Trim<T, Chars extends string = ' '> = TrimLeft<
77
+ TrimRight<T, Chars>,
78
+ Chars
79
+ >
80
+
81
+ /**
82
+ * @description Creates a type that extracts the values of T.
83
+ *
84
+ * @example
85
+ * ValueOf<{ a: string, b: number }>
86
+ * => string | number
87
+ */
88
+ export type ValueOf<T> = T[keyof T]
@@ -0,0 +1,9 @@
1
+ import type { Events, Requests } from './eip1193'
2
+
3
+ type WindowProvider = Requests & Events
4
+
5
+ declare global {
6
+ interface Window {
7
+ ethereum?: WindowProvider
8
+ }
9
+ }
@@ -0,0 +1,135 @@
1
+ import { AbiCoder } from 'ethers/lib/utils'
2
+ import { bench, describe } from 'vitest'
3
+
4
+ import { decodeAbi } from './decodeAbi'
5
+
6
+ describe('ABI Decode (static struct)', () => {
7
+ bench('viem: `decodeAbi`', () => {
8
+ decodeAbi({
9
+ data: '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac00000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c961145a54c96e3ae9baa048c4f4d6b04c13916b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002',
10
+ params: [
11
+ {
12
+ components: [
13
+ {
14
+ components: [
15
+ {
16
+ internalType: 'uint256',
17
+ name: 'x',
18
+ type: 'uint256',
19
+ },
20
+ {
21
+ internalType: 'bool',
22
+ name: 'y',
23
+ type: 'bool',
24
+ },
25
+ {
26
+ internalType: 'address',
27
+ name: 'z',
28
+ type: 'address',
29
+ },
30
+ ],
31
+ internalType: 'struct ABIExample.Foo',
32
+ name: 'foo',
33
+ type: 'tuple',
34
+ },
35
+ {
36
+ components: [
37
+ {
38
+ internalType: 'uint256',
39
+ name: 'x',
40
+ type: 'uint256',
41
+ },
42
+ {
43
+ internalType: 'bool',
44
+ name: 'y',
45
+ type: 'bool',
46
+ },
47
+ {
48
+ internalType: 'address',
49
+ name: 'z',
50
+ type: 'address',
51
+ },
52
+ ],
53
+ internalType: 'struct ABIExample.Foo',
54
+ name: 'baz',
55
+ type: 'tuple',
56
+ },
57
+ {
58
+ internalType: 'uint8[2]',
59
+ name: 'x',
60
+ type: 'uint8[2]',
61
+ },
62
+ ],
63
+ internalType: 'struct ABIExample.Bar',
64
+ name: 'barOut',
65
+ type: 'tuple',
66
+ },
67
+ ],
68
+ })
69
+ })
70
+
71
+ bench('ethers: `AbiCoder.decode`', () => {
72
+ const coder = new AbiCoder()
73
+ coder.decode(
74
+ [
75
+ {
76
+ components: [
77
+ {
78
+ components: [
79
+ {
80
+ internalType: 'uint256',
81
+ name: 'x',
82
+ type: 'uint256',
83
+ },
84
+ {
85
+ internalType: 'bool',
86
+ name: 'y',
87
+ type: 'bool',
88
+ },
89
+ {
90
+ internalType: 'address',
91
+ name: 'z',
92
+ type: 'address',
93
+ },
94
+ ],
95
+ internalType: 'struct ABIExample.Foo',
96
+ name: 'foo',
97
+ type: 'tuple',
98
+ },
99
+ {
100
+ components: [
101
+ {
102
+ internalType: 'uint256',
103
+ name: 'x',
104
+ type: 'uint256',
105
+ },
106
+ {
107
+ internalType: 'bool',
108
+ name: 'y',
109
+ type: 'bool',
110
+ },
111
+ {
112
+ internalType: 'address',
113
+ name: 'z',
114
+ type: 'address',
115
+ },
116
+ ],
117
+ internalType: 'struct ABIExample.Foo',
118
+ name: 'baz',
119
+ type: 'tuple',
120
+ },
121
+ {
122
+ internalType: 'uint8[2]',
123
+ name: 'x',
124
+ type: 'uint8[2]',
125
+ },
126
+ ],
127
+ internalType: 'struct ABIExample.Bar',
128
+ name: 'barOut',
129
+ type: 'tuple',
130
+ },
131
+ ],
132
+ '0x00000000000000000000000000000000000000000000000000000000000001a40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac00000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c961145a54c96e3ae9baa048c4f4d6b04c13916b00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002',
133
+ )
134
+ })
135
+ })