viem 0.0.0-w-20230725184008 → 0.0.0-w-20230810155401

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 (438) hide show
  1. package/README.md +6 -0
  2. package/chains/utils/package.json +5 -0
  3. package/dist/cjs/accounts/index.js +6 -2
  4. package/dist/cjs/accounts/index.js.map +1 -1
  5. package/dist/cjs/accounts/utils/privateKeyToAddress.js +12 -0
  6. package/dist/cjs/accounts/utils/privateKeyToAddress.js.map +1 -0
  7. package/dist/cjs/accounts/utils/signMessage.js +1 -1
  8. package/dist/cjs/accounts/utils/signMessage.js.map +1 -1
  9. package/dist/cjs/accounts/utils/signTransaction.js.map +1 -1
  10. package/dist/cjs/accounts/utils/signTypedData.js +1 -1
  11. package/dist/cjs/accounts/utils/signTypedData.js.map +1 -1
  12. package/dist/cjs/actions/ens/getEnsAddress.js +18 -13
  13. package/dist/cjs/actions/ens/getEnsAddress.js.map +1 -1
  14. package/dist/cjs/actions/index.js.map +1 -1
  15. package/dist/cjs/actions/public/createContractEventFilter.js.map +1 -1
  16. package/dist/cjs/actions/public/createEventFilter.js +16 -8
  17. package/dist/cjs/actions/public/createEventFilter.js.map +1 -1
  18. package/dist/cjs/actions/public/estimateContractGas.js +1 -1
  19. package/dist/cjs/actions/public/estimateContractGas.js.map +1 -1
  20. package/dist/cjs/actions/public/estimateGas.js +3 -1
  21. package/dist/cjs/actions/public/estimateGas.js.map +1 -1
  22. package/dist/cjs/actions/public/getBlock.js +3 -1
  23. package/dist/cjs/actions/public/getBlock.js.map +1 -1
  24. package/dist/cjs/actions/public/getBlockNumber.js +2 -2
  25. package/dist/cjs/actions/public/getBlockNumber.js.map +1 -1
  26. package/dist/cjs/actions/public/getFilterChanges.js.map +1 -1
  27. package/dist/cjs/actions/public/getFilterLogs.js +1 -1
  28. package/dist/cjs/actions/public/getFilterLogs.js.map +1 -1
  29. package/dist/cjs/actions/public/getLogs.js +16 -10
  30. package/dist/cjs/actions/public/getLogs.js.map +1 -1
  31. package/dist/cjs/actions/public/getTransaction.js +2 -1
  32. package/dist/cjs/actions/public/getTransaction.js.map +1 -1
  33. package/dist/cjs/actions/public/watchBlockNumber.js +1 -1
  34. package/dist/cjs/actions/public/watchBlockNumber.js.map +1 -1
  35. package/dist/cjs/actions/public/watchBlocks.js +2 -1
  36. package/dist/cjs/actions/public/watchBlocks.js.map +1 -1
  37. package/dist/cjs/actions/public/watchContractEvent.js +135 -65
  38. package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
  39. package/dist/cjs/actions/public/watchEvent.js +138 -59
  40. package/dist/cjs/actions/public/watchEvent.js.map +1 -1
  41. package/dist/cjs/actions/wallet/sendTransaction.js.map +1 -1
  42. package/dist/cjs/actions/wallet/writeContract.js.map +1 -1
  43. package/dist/cjs/chains/{formatters/celo.js → celo/formatters.js} +1 -1
  44. package/dist/cjs/chains/celo/formatters.js.map +1 -0
  45. package/dist/cjs/chains/{serializers/celo.js → celo/serializers.js} +1 -1
  46. package/dist/cjs/chains/celo/serializers.js.map +1 -0
  47. package/dist/cjs/{types/formatter.js → chains/celo/types.js} +1 -1
  48. package/dist/cjs/chains/celo/types.js.map +1 -0
  49. package/dist/cjs/chains/index.js +30 -15
  50. package/dist/cjs/chains/index.js.map +1 -1
  51. package/dist/cjs/chains/optimism/fees.js +7 -0
  52. package/dist/cjs/chains/optimism/fees.js.map +1 -0
  53. package/dist/cjs/chains/{formatters/optimism.js → optimism/formatters.js} +13 -1
  54. package/dist/cjs/chains/optimism/formatters.js.map +1 -0
  55. package/dist/cjs/{types/serializer.js → chains/optimism/types.js} +1 -1
  56. package/dist/cjs/chains/optimism/types.js.map +1 -0
  57. package/dist/cjs/chains/utils.js +11 -0
  58. package/dist/cjs/chains/utils.js.map +1 -0
  59. package/dist/cjs/clients/createClient.js +2 -1
  60. package/dist/cjs/clients/createClient.js.map +1 -1
  61. package/dist/cjs/clients/createPublicClient.js.map +1 -1
  62. package/dist/cjs/clients/createTestClient.js.map +1 -1
  63. package/dist/cjs/clients/createWalletClient.js.map +1 -1
  64. package/dist/cjs/clients/decorators/public.js.map +1 -1
  65. package/dist/cjs/constants/abis.js +12 -2
  66. package/dist/cjs/constants/abis.js.map +1 -1
  67. package/dist/cjs/constants/number.js +101 -0
  68. package/dist/cjs/constants/number.js.map +1 -0
  69. package/dist/cjs/contract.js.map +1 -1
  70. package/dist/cjs/errors/abi.js +8 -1
  71. package/dist/cjs/errors/abi.js.map +1 -1
  72. package/dist/cjs/errors/contract.js +56 -32
  73. package/dist/cjs/errors/contract.js.map +1 -1
  74. package/dist/cjs/errors/node.js +1 -1
  75. package/dist/cjs/errors/node.js.map +1 -1
  76. package/dist/cjs/errors/version.js +1 -1
  77. package/dist/cjs/errors/version.js.map +1 -1
  78. package/dist/cjs/index.js +110 -7
  79. package/dist/cjs/index.js.map +1 -1
  80. package/dist/cjs/public.js.map +1 -1
  81. package/dist/cjs/utils/abi/encodeAbiParameters.js +11 -14
  82. package/dist/cjs/utils/abi/encodeAbiParameters.js.map +1 -1
  83. package/dist/cjs/utils/abi/encodePacked.js +2 -0
  84. package/dist/cjs/utils/abi/encodePacked.js.map +1 -1
  85. package/dist/cjs/utils/chain.js +5 -3
  86. package/dist/cjs/utils/chain.js.map +1 -1
  87. package/dist/cjs/utils/formatters/block.js.map +1 -1
  88. package/dist/cjs/utils/formatters/extract.js.map +1 -1
  89. package/dist/cjs/utils/formatters/formatter.js +1 -0
  90. package/dist/cjs/utils/formatters/formatter.js.map +1 -1
  91. package/dist/cjs/utils/formatters/transaction.js.map +1 -1
  92. package/dist/cjs/utils/formatters/transactionReceipt.js.map +1 -1
  93. package/dist/cjs/utils/formatters/transactionRequest.js.map +1 -1
  94. package/dist/cjs/utils/hash/hashFunction.js +3 -2
  95. package/dist/cjs/utils/hash/hashFunction.js.map +1 -1
  96. package/dist/cjs/utils/promise/withCache.js +3 -3
  97. package/dist/cjs/utils/promise/withCache.js.map +1 -1
  98. package/dist/cjs/utils/signature/hexToSignature.js +12 -0
  99. package/dist/cjs/utils/signature/hexToSignature.js.map +1 -0
  100. package/dist/cjs/utils/signature/signatureToHex.js.map +1 -0
  101. package/dist/cjs/utils/transaction/prepareRequest.js +19 -12
  102. package/dist/cjs/utils/transaction/prepareRequest.js.map +1 -1
  103. package/dist/cjs/utils/unit/parseUnits.js +2 -1
  104. package/dist/cjs/utils/unit/parseUnits.js.map +1 -1
  105. package/dist/esm/accounts/index.js +3 -1
  106. package/dist/esm/accounts/index.js.map +1 -1
  107. package/dist/esm/accounts/utils/privateKeyToAddress.js +15 -0
  108. package/dist/esm/accounts/utils/privateKeyToAddress.js.map +1 -0
  109. package/dist/esm/accounts/utils/signMessage.js +1 -1
  110. package/dist/esm/accounts/utils/signMessage.js.map +1 -1
  111. package/dist/esm/accounts/utils/signTransaction.js.map +1 -1
  112. package/dist/esm/accounts/utils/signTypedData.js +1 -1
  113. package/dist/esm/accounts/utils/signTypedData.js.map +1 -1
  114. package/dist/esm/actions/ens/getEnsAddress.js +19 -14
  115. package/dist/esm/actions/ens/getEnsAddress.js.map +1 -1
  116. package/dist/esm/actions/index.js.map +1 -1
  117. package/dist/esm/actions/public/createContractEventFilter.js.map +1 -1
  118. package/dist/esm/actions/public/createEventFilter.js +16 -8
  119. package/dist/esm/actions/public/createEventFilter.js.map +1 -1
  120. package/dist/esm/actions/public/estimateContractGas.js +1 -1
  121. package/dist/esm/actions/public/estimateContractGas.js.map +1 -1
  122. package/dist/esm/actions/public/estimateGas.js +4 -2
  123. package/dist/esm/actions/public/estimateGas.js.map +1 -1
  124. package/dist/esm/actions/public/getBlock.js +3 -1
  125. package/dist/esm/actions/public/getBlock.js.map +1 -1
  126. package/dist/esm/actions/public/getBlockNumber.js +2 -2
  127. package/dist/esm/actions/public/getBlockNumber.js.map +1 -1
  128. package/dist/esm/actions/public/getFilterChanges.js.map +1 -1
  129. package/dist/esm/actions/public/getFilterLogs.js +1 -1
  130. package/dist/esm/actions/public/getFilterLogs.js.map +1 -1
  131. package/dist/esm/actions/public/getLogs.js +16 -10
  132. package/dist/esm/actions/public/getLogs.js.map +1 -1
  133. package/dist/esm/actions/public/getTransaction.js +2 -1
  134. package/dist/esm/actions/public/getTransaction.js.map +1 -1
  135. package/dist/esm/actions/public/watchBlockNumber.js +1 -1
  136. package/dist/esm/actions/public/watchBlockNumber.js.map +1 -1
  137. package/dist/esm/actions/public/watchBlocks.js +2 -1
  138. package/dist/esm/actions/public/watchBlocks.js.map +1 -1
  139. package/dist/esm/actions/public/watchContractEvent.js +145 -71
  140. package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
  141. package/dist/esm/actions/public/watchEvent.js +148 -65
  142. package/dist/esm/actions/public/watchEvent.js.map +1 -1
  143. package/dist/esm/actions/wallet/sendTransaction.js +1 -1
  144. package/dist/esm/actions/wallet/sendTransaction.js.map +1 -1
  145. package/dist/esm/actions/wallet/writeContract.js.map +1 -1
  146. package/dist/esm/chains/{formatters/celo.js → celo/formatters.js} +2 -2
  147. package/dist/esm/chains/celo/formatters.js.map +1 -0
  148. package/dist/esm/chains/{serializers/celo.js → celo/serializers.js} +1 -1
  149. package/dist/esm/chains/celo/serializers.js.map +1 -0
  150. package/dist/esm/chains/celo/types.js +2 -0
  151. package/dist/esm/chains/celo/types.js.map +1 -0
  152. package/dist/esm/chains/index.js +22 -7
  153. package/dist/esm/chains/index.js.map +1 -1
  154. package/dist/esm/chains/optimism/fees.js +4 -0
  155. package/dist/esm/chains/optimism/fees.js.map +1 -0
  156. package/dist/esm/chains/{formatters/optimism.js → optimism/formatters.js} +15 -2
  157. package/dist/esm/chains/optimism/formatters.js.map +1 -0
  158. package/dist/esm/chains/optimism/types.js +2 -0
  159. package/dist/esm/chains/optimism/types.js.map +1 -0
  160. package/dist/esm/chains/utils.js +4 -0
  161. package/dist/esm/chains/utils.js.map +1 -0
  162. package/dist/esm/clients/createClient.js +2 -1
  163. package/dist/esm/clients/createClient.js.map +1 -1
  164. package/dist/esm/clients/createPublicClient.js.map +1 -1
  165. package/dist/esm/clients/createTestClient.js.map +1 -1
  166. package/dist/esm/clients/createWalletClient.js.map +1 -1
  167. package/dist/esm/clients/decorators/public.js.map +1 -1
  168. package/dist/esm/constants/abis.js +11 -1
  169. package/dist/esm/constants/abis.js.map +1 -1
  170. package/dist/esm/constants/number.js +97 -0
  171. package/dist/esm/constants/number.js.map +1 -0
  172. package/dist/esm/contract.js.map +1 -1
  173. package/dist/esm/errors/abi.js +8 -1
  174. package/dist/esm/errors/abi.js.map +1 -1
  175. package/dist/esm/errors/contract.js +56 -32
  176. package/dist/esm/errors/contract.js.map +1 -1
  177. package/dist/esm/errors/node.js +1 -1
  178. package/dist/esm/errors/node.js.map +1 -1
  179. package/dist/esm/errors/version.js +1 -1
  180. package/dist/esm/errors/version.js.map +1 -1
  181. package/dist/esm/index.js +4 -1
  182. package/dist/esm/index.js.map +1 -1
  183. package/dist/esm/public.js.map +1 -1
  184. package/dist/esm/utils/abi/encodeAbiParameters.js +13 -14
  185. package/dist/esm/utils/abi/encodeAbiParameters.js.map +1 -1
  186. package/dist/esm/utils/abi/encodePacked.js +2 -0
  187. package/dist/esm/utils/abi/encodePacked.js.map +1 -1
  188. package/dist/esm/utils/chain.js +5 -3
  189. package/dist/esm/utils/chain.js.map +1 -1
  190. package/dist/esm/utils/formatters/block.js.map +1 -1
  191. package/dist/esm/utils/formatters/extract.js.map +1 -1
  192. package/dist/esm/utils/formatters/formatter.js +1 -0
  193. package/dist/esm/utils/formatters/formatter.js.map +1 -1
  194. package/dist/esm/utils/formatters/transaction.js.map +1 -1
  195. package/dist/esm/utils/formatters/transactionReceipt.js.map +1 -1
  196. package/dist/esm/utils/formatters/transactionRequest.js.map +1 -1
  197. package/dist/esm/utils/hash/hashFunction.js +3 -2
  198. package/dist/esm/utils/hash/hashFunction.js.map +1 -1
  199. package/dist/esm/utils/promise/withCache.js +3 -3
  200. package/dist/esm/utils/promise/withCache.js.map +1 -1
  201. package/dist/esm/utils/signature/hexToSignature.js +18 -0
  202. package/dist/esm/utils/signature/hexToSignature.js.map +1 -0
  203. package/dist/esm/utils/signature/signatureToHex.js +21 -0
  204. package/dist/esm/utils/signature/signatureToHex.js.map +1 -0
  205. package/dist/esm/utils/transaction/prepareRequest.js +20 -13
  206. package/dist/esm/utils/transaction/prepareRequest.js.map +1 -1
  207. package/dist/esm/utils/unit/parseUnits.js +2 -1
  208. package/dist/esm/utils/unit/parseUnits.js.map +1 -1
  209. package/dist/types/accounts/index.d.ts +3 -1
  210. package/dist/types/accounts/index.d.ts.map +1 -1
  211. package/dist/types/accounts/utils/privateKeyToAddress.d.ts +11 -0
  212. package/dist/types/accounts/utils/privateKeyToAddress.d.ts.map +1 -0
  213. package/dist/types/accounts/utils/signTransaction.d.ts +2 -2
  214. package/dist/types/accounts/utils/signTransaction.d.ts.map +1 -1
  215. package/dist/types/actions/ens/getEnsAddress.d.ts +3 -1
  216. package/dist/types/actions/ens/getEnsAddress.d.ts.map +1 -1
  217. package/dist/types/actions/index.d.ts +5 -1
  218. package/dist/types/actions/index.d.ts.map +1 -1
  219. package/dist/types/actions/public/createContractEventFilter.d.ts +5 -5
  220. package/dist/types/actions/public/createContractEventFilter.d.ts.map +1 -1
  221. package/dist/types/actions/public/createEventFilter.d.ts +20 -7
  222. package/dist/types/actions/public/createEventFilter.d.ts.map +1 -1
  223. package/dist/types/actions/public/estimateGas.d.ts.map +1 -1
  224. package/dist/types/actions/public/getBlock.d.ts +5 -5
  225. package/dist/types/actions/public/getBlock.d.ts.map +1 -1
  226. package/dist/types/actions/public/getBlockNumber.d.ts +4 -2
  227. package/dist/types/actions/public/getBlockNumber.d.ts.map +1 -1
  228. package/dist/types/actions/public/getFilterChanges.d.ts +5 -8
  229. package/dist/types/actions/public/getFilterChanges.d.ts.map +1 -1
  230. package/dist/types/actions/public/getFilterLogs.d.ts +5 -4
  231. package/dist/types/actions/public/getFilterLogs.d.ts.map +1 -1
  232. package/dist/types/actions/public/getLogs.d.ts +17 -6
  233. package/dist/types/actions/public/getLogs.d.ts.map +1 -1
  234. package/dist/types/actions/public/getTransaction.d.ts +4 -4
  235. package/dist/types/actions/public/getTransaction.d.ts.map +1 -1
  236. package/dist/types/actions/public/getTransactionReceipt.d.ts +1 -1
  237. package/dist/types/actions/public/getTransactionReceipt.d.ts.map +1 -1
  238. package/dist/types/actions/public/simulateContract.d.ts +2 -2
  239. package/dist/types/actions/public/simulateContract.d.ts.map +1 -1
  240. package/dist/types/actions/public/watchBlocks.d.ts +10 -10
  241. package/dist/types/actions/public/watchBlocks.d.ts.map +1 -1
  242. package/dist/types/actions/public/watchContractEvent.d.ts +35 -9
  243. package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
  244. package/dist/types/actions/public/watchEvent.d.ts +48 -14
  245. package/dist/types/actions/public/watchEvent.d.ts.map +1 -1
  246. package/dist/types/actions/wallet/deployContract.d.ts +1 -1
  247. package/dist/types/actions/wallet/deployContract.d.ts.map +1 -1
  248. package/dist/types/actions/wallet/sendTransaction.d.ts +2 -2
  249. package/dist/types/actions/wallet/sendTransaction.d.ts.map +1 -1
  250. package/dist/types/actions/wallet/writeContract.d.ts +4 -2
  251. package/dist/types/actions/wallet/writeContract.d.ts.map +1 -1
  252. package/dist/types/chains/{formatters/celo.d.ts → celo/formatters.d.ts} +30 -85
  253. package/dist/types/chains/celo/formatters.d.ts.map +1 -0
  254. package/dist/types/chains/{serializers/celo.d.ts → celo/serializers.d.ts} +4 -4
  255. package/dist/types/chains/celo/serializers.d.ts.map +1 -0
  256. package/dist/types/chains/celo/types.d.ts +60 -0
  257. package/dist/types/chains/celo/types.d.ts.map +1 -0
  258. package/dist/types/chains/index.d.ts +2527 -2722
  259. package/dist/types/chains/index.d.ts.map +1 -1
  260. package/dist/types/chains/optimism/fees.d.ts +4 -0
  261. package/dist/types/chains/optimism/fees.d.ts.map +1 -0
  262. package/dist/types/chains/{formatters/optimism.d.ts → optimism/formatters.d.ts} +79 -54
  263. package/dist/types/chains/optimism/formatters.d.ts.map +1 -0
  264. package/dist/types/chains/optimism/types.d.ts +53 -0
  265. package/dist/types/chains/optimism/types.d.ts.map +1 -0
  266. package/dist/types/chains/utils.d.ts +6 -0
  267. package/dist/types/chains/utils.d.ts.map +1 -0
  268. package/dist/types/clients/createClient.d.ts +7 -0
  269. package/dist/types/clients/createClient.d.ts.map +1 -1
  270. package/dist/types/clients/createPublicClient.d.ts +1 -1
  271. package/dist/types/clients/createPublicClient.d.ts.map +1 -1
  272. package/dist/types/clients/createTestClient.d.ts +1 -1
  273. package/dist/types/clients/createTestClient.d.ts.map +1 -1
  274. package/dist/types/clients/createWalletClient.d.ts +1 -1
  275. package/dist/types/clients/createWalletClient.d.ts.map +1 -1
  276. package/dist/types/clients/decorators/public.d.ts +11 -10
  277. package/dist/types/clients/decorators/public.d.ts.map +1 -1
  278. package/dist/types/constants/abis.d.ts +16 -1
  279. package/dist/types/constants/abis.d.ts.map +1 -1
  280. package/dist/types/constants/number.d.ts +97 -0
  281. package/dist/types/constants/number.d.ts.map +1 -0
  282. package/dist/types/contract.d.ts +5 -1
  283. package/dist/types/contract.d.ts.map +1 -1
  284. package/dist/types/errors/abi.d.ts +1 -0
  285. package/dist/types/errors/abi.d.ts.map +1 -1
  286. package/dist/types/errors/contract.d.ts +1 -0
  287. package/dist/types/errors/contract.d.ts.map +1 -1
  288. package/dist/types/errors/node.d.ts.map +1 -1
  289. package/dist/types/errors/version.d.ts +1 -1
  290. package/dist/types/errors/version.d.ts.map +1 -1
  291. package/dist/types/index.d.ts +24 -6
  292. package/dist/types/index.d.ts.map +1 -1
  293. package/dist/types/public.d.ts +5 -1
  294. package/dist/types/public.d.ts.map +1 -1
  295. package/dist/types/types/block.d.ts +7 -7
  296. package/dist/types/types/block.d.ts.map +1 -1
  297. package/dist/types/types/chain.d.ts +52 -8
  298. package/dist/types/types/chain.d.ts.map +1 -1
  299. package/dist/types/types/contract.d.ts +1 -1
  300. package/dist/types/types/contract.d.ts.map +1 -1
  301. package/dist/types/types/filter.d.ts +7 -3
  302. package/dist/types/types/filter.d.ts.map +1 -1
  303. package/dist/types/types/log.d.ts +8 -8
  304. package/dist/types/types/log.d.ts.map +1 -1
  305. package/dist/types/types/misc.d.ts.map +1 -1
  306. package/dist/types/types/rpc.d.ts +3 -3
  307. package/dist/types/types/rpc.d.ts.map +1 -1
  308. package/dist/types/types/transaction.d.ts +8 -8
  309. package/dist/types/types/transaction.d.ts.map +1 -1
  310. package/dist/types/types/utils.d.ts +10 -0
  311. package/dist/types/types/utils.d.ts.map +1 -1
  312. package/dist/types/utils/abi/encodeAbiParameters.d.ts.map +1 -1
  313. package/dist/types/utils/chain.d.ts +3 -6
  314. package/dist/types/utils/chain.d.ts.map +1 -1
  315. package/dist/types/utils/formatters/block.d.ts +18 -4
  316. package/dist/types/utils/formatters/block.d.ts.map +1 -1
  317. package/dist/types/utils/formatters/extract.d.ts +2 -2
  318. package/dist/types/utils/formatters/extract.d.ts.map +1 -1
  319. package/dist/types/utils/formatters/formatter.d.ts +2 -1
  320. package/dist/types/utils/formatters/formatter.d.ts.map +1 -1
  321. package/dist/types/utils/formatters/transaction.d.ts +15 -4
  322. package/dist/types/utils/formatters/transaction.d.ts.map +1 -1
  323. package/dist/types/utils/formatters/transactionReceipt.d.ts +4 -4
  324. package/dist/types/utils/formatters/transactionReceipt.d.ts.map +1 -1
  325. package/dist/types/utils/formatters/transactionRequest.d.ts +5 -5
  326. package/dist/types/utils/formatters/transactionRequest.d.ts.map +1 -1
  327. package/dist/types/utils/hash/hashFunction.d.ts +1 -1
  328. package/dist/types/utils/hash/hashFunction.d.ts.map +1 -1
  329. package/dist/types/utils/promise/withCache.d.ts +3 -3
  330. package/dist/types/utils/promise/withCache.d.ts.map +1 -1
  331. package/dist/types/utils/signature/hexToSignature.d.ts +13 -0
  332. package/dist/types/utils/signature/hexToSignature.d.ts.map +1 -0
  333. package/dist/types/utils/signature/signatureToHex.d.ts +17 -0
  334. package/dist/types/utils/signature/signatureToHex.d.ts.map +1 -0
  335. package/dist/types/utils/transaction/prepareRequest.d.ts +6 -11
  336. package/dist/types/utils/transaction/prepareRequest.d.ts.map +1 -1
  337. package/dist/types/utils/unit/parseUnits.d.ts.map +1 -1
  338. package/package.json +9 -2
  339. package/src/accounts/index.ts +7 -1
  340. package/src/accounts/utils/privateKeyToAddress.ts +20 -0
  341. package/src/accounts/utils/signMessage.ts +1 -1
  342. package/src/accounts/utils/signTransaction.ts +2 -2
  343. package/src/accounts/utils/signTypedData.ts +1 -1
  344. package/src/actions/ens/getEnsAddress.ts +24 -15
  345. package/src/actions/index.ts +6 -2
  346. package/src/actions/public/createContractEventFilter.ts +30 -7
  347. package/src/actions/public/createEventFilter.ts +78 -24
  348. package/src/actions/public/estimateContractGas.ts +1 -1
  349. package/src/actions/public/estimateGas.ts +11 -2
  350. package/src/actions/public/getBlock.ts +18 -8
  351. package/src/actions/public/getBlockNumber.ts +5 -3
  352. package/src/actions/public/getFilterChanges.ts +46 -10
  353. package/src/actions/public/getFilterLogs.ts +26 -10
  354. package/src/actions/public/getLogs.ts +73 -18
  355. package/src/actions/public/getTransaction.ts +15 -8
  356. package/src/actions/public/simulateContract.ts +2 -2
  357. package/src/actions/public/watchBlockNumber.ts +1 -1
  358. package/src/actions/public/watchBlocks.ts +37 -18
  359. package/src/actions/public/watchContractEvent.ts +208 -90
  360. package/src/actions/public/watchEvent.ts +262 -104
  361. package/src/actions/wallet/deployContract.ts +1 -1
  362. package/src/actions/wallet/sendTransaction.ts +9 -6
  363. package/src/actions/wallet/writeContract.ts +11 -7
  364. package/src/chains/{formatters/celo.ts → celo/formatters.ts} +29 -48
  365. package/src/chains/{serializers/celo.ts → celo/serializers.ts} +5 -5
  366. package/src/chains/celo/types.ts +111 -0
  367. package/src/chains/index.ts +22 -7
  368. package/src/chains/optimism/fees.ts +5 -0
  369. package/src/chains/optimism/formatters.ts +74 -0
  370. package/src/chains/optimism/types.ts +102 -0
  371. package/src/chains/utils.ts +41 -0
  372. package/src/clients/createClient.ts +9 -0
  373. package/src/clients/createPublicClient.ts +7 -1
  374. package/src/clients/createTestClient.ts +7 -1
  375. package/src/clients/createWalletClient.ts +7 -1
  376. package/src/clients/decorators/public.ts +117 -28
  377. package/src/constants/abis.ts +11 -1
  378. package/src/constants/number.ts +98 -0
  379. package/src/contract.ts +6 -2
  380. package/src/errors/abi.ts +5 -1
  381. package/src/errors/contract.ts +52 -31
  382. package/src/errors/node.ts +2 -1
  383. package/src/errors/version.ts +1 -1
  384. package/src/index.ts +133 -11
  385. package/src/public.ts +6 -2
  386. package/src/types/block.ts +25 -10
  387. package/src/types/chain.ts +91 -14
  388. package/src/types/contract.ts +7 -3
  389. package/src/types/filter.ts +32 -26
  390. package/src/types/log.ts +13 -8
  391. package/src/types/misc.ts +3 -0
  392. package/src/types/rpc.ts +16 -6
  393. package/src/types/transaction.ts +22 -11
  394. package/src/types/utils.ts +11 -0
  395. package/src/utils/abi/encodeAbiParameters.ts +14 -17
  396. package/src/utils/abi/encodePacked.ts +1 -0
  397. package/src/utils/chain.ts +21 -10
  398. package/src/utils/formatters/block.ts +34 -5
  399. package/src/utils/formatters/extract.ts +2 -2
  400. package/src/utils/formatters/formatter.ts +3 -2
  401. package/src/utils/formatters/transaction.ts +28 -3
  402. package/src/utils/formatters/transactionReceipt.ts +9 -3
  403. package/src/utils/formatters/transactionRequest.ts +9 -3
  404. package/src/utils/hash/hashFunction.ts +3 -2
  405. package/src/utils/promise/withCache.ts +5 -5
  406. package/src/utils/signature/hexToSignature.ts +20 -0
  407. package/src/utils/signature/signatureToHex.ts +26 -0
  408. package/src/utils/transaction/prepareRequest.ts +55 -30
  409. package/src/utils/unit/parseUnits.ts +2 -1
  410. package/dist/cjs/accounts/utils/signatureToHex.js.map +0 -1
  411. package/dist/cjs/chains/formatters/celo.js.map +0 -1
  412. package/dist/cjs/chains/formatters/optimism.js.map +0 -1
  413. package/dist/cjs/chains/serializers/celo.js.map +0 -1
  414. package/dist/cjs/types/formatter.js.map +0 -1
  415. package/dist/cjs/types/serializer.js.map +0 -1
  416. package/dist/esm/accounts/utils/signatureToHex.js +0 -7
  417. package/dist/esm/accounts/utils/signatureToHex.js.map +0 -1
  418. package/dist/esm/chains/formatters/celo.js.map +0 -1
  419. package/dist/esm/chains/formatters/optimism.js.map +0 -1
  420. package/dist/esm/chains/serializers/celo.js.map +0 -1
  421. package/dist/esm/types/formatter.js +0 -2
  422. package/dist/esm/types/formatter.js.map +0 -1
  423. package/dist/esm/types/serializer.js +0 -2
  424. package/dist/esm/types/serializer.js.map +0 -1
  425. package/dist/types/accounts/utils/signatureToHex.d.ts +0 -3
  426. package/dist/types/accounts/utils/signatureToHex.d.ts.map +0 -1
  427. package/dist/types/chains/formatters/celo.d.ts.map +0 -1
  428. package/dist/types/chains/formatters/optimism.d.ts.map +0 -1
  429. package/dist/types/chains/serializers/celo.d.ts.map +0 -1
  430. package/dist/types/types/formatter.d.ts +0 -14
  431. package/dist/types/types/formatter.d.ts.map +0 -1
  432. package/dist/types/types/serializer.d.ts +0 -7
  433. package/dist/types/types/serializer.d.ts.map +0 -1
  434. package/src/accounts/utils/signatureToHex.ts +0 -12
  435. package/src/chains/formatters/optimism.ts +0 -91
  436. package/src/types/formatter.ts +0 -33
  437. package/src/types/serializer.ts +0 -19
  438. /package/dist/cjs/{accounts/utils → utils/signature}/signatureToHex.js +0 -0
@@ -1,4 +1,4 @@
1
- import type { AbiEvent, Address } from 'abitype'
1
+ import type { Abi, AbiEvent, Address, Narrow } from 'abitype'
2
2
 
3
3
  import type { Client } from '../../clients/createClient.js'
4
4
  import type { Transport } from '../../clients/transports/createTransport.js'
@@ -9,64 +9,130 @@ import type {
9
9
  } from '../../types/contract.js'
10
10
  import type { Filter } from '../../types/filter.js'
11
11
  import type { Log } from '../../types/log.js'
12
+ import type { LogTopic } from '../../types/misc.js'
13
+ import type { GetTransportConfig } from '../../types/transport.js'
14
+ import type { EncodeEventTopicsParameters } from '../../utils/index.js'
12
15
  import { observe } from '../../utils/observe.js'
13
16
  import { poll } from '../../utils/poll.js'
14
17
  import { stringify } from '../../utils/stringify.js'
15
18
 
19
+ import {
20
+ DecodeLogDataMismatch,
21
+ DecodeLogTopicsMismatch,
22
+ } from '../../errors/abi.js'
23
+ import { InvalidInputRpcError } from '../../errors/rpc.js'
24
+ import {
25
+ decodeEventLog,
26
+ encodeEventTopics,
27
+ formatLog,
28
+ } from '../../utils/index.js'
16
29
  import {
17
30
  type CreateEventFilterParameters,
18
31
  createEventFilter,
19
32
  } from './createEventFilter.js'
20
33
  import { getBlockNumber } from './getBlockNumber.js'
21
34
  import { getFilterChanges } from './getFilterChanges.js'
22
- import { getLogs } from './getLogs.js'
35
+ import { type GetLogsParameters, getLogs } from './getLogs.js'
23
36
  import { uninstallFilter } from './uninstallFilter.js'
24
37
 
25
- export type OnLogsParameter<
38
+ type PollOptions = {
39
+ /**
40
+ * Whether or not the transaction hashes should be batched on each invocation.
41
+ * @default true
42
+ */
43
+ batch?: boolean
44
+ /**
45
+ * Polling frequency (in ms). Defaults to Client's pollingInterval config.
46
+ * @default client.pollingInterval
47
+ */
48
+ pollingInterval?: number
49
+ }
50
+
51
+ export type WatchEventOnLogsParameter<
26
52
  TAbiEvent extends AbiEvent | undefined = undefined,
53
+ TAbiEvents extends
54
+ | readonly AbiEvent[]
55
+ | readonly unknown[]
56
+ | undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
27
57
  TStrict extends boolean | undefined = undefined,
28
58
  TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
29
- > = Log<bigint, number, TAbiEvent, TStrict, [TAbiEvent], TEventName>[]
30
- export type OnLogsFn<
59
+ > = Log<bigint, number, false, TAbiEvent, TStrict, TAbiEvents, TEventName>[]
60
+ export type WatchEventOnLogsFn<
31
61
  TAbiEvent extends AbiEvent | undefined = undefined,
62
+ TAbiEvents extends
63
+ | readonly AbiEvent[]
64
+ | readonly unknown[]
65
+ | undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
32
66
  TStrict extends boolean | undefined = undefined,
33
- TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
34
- > = (logs: OnLogsParameter<TAbiEvent, TStrict, TEventName>) => void
67
+ _EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
68
+ > = (
69
+ logs: WatchEventOnLogsParameter<TAbiEvent, TAbiEvents, TStrict, _EventName>,
70
+ ) => void
35
71
 
36
72
  export type WatchEventParameters<
37
73
  TAbiEvent extends AbiEvent | undefined = undefined,
74
+ TAbiEvents extends
75
+ | readonly AbiEvent[]
76
+ | readonly unknown[]
77
+ | undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
38
78
  TStrict extends boolean | undefined = undefined,
39
- TEventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
79
+ _EventName extends string | undefined = MaybeAbiEventName<TAbiEvent>,
40
80
  > = {
41
81
  /** The address of the contract. */
42
82
  address?: Address | Address[]
43
- /**
44
- * Whether or not the event logs should be batched on each invocation.
45
- * @default true
46
- */
47
- batch?: boolean
48
83
  /** The callback to call when an error occurred when trying to get for a new block. */
49
84
  onError?: (error: Error) => void
50
85
  /** The callback to call when new event logs are received. */
51
- onLogs: OnLogsFn<TAbiEvent, TStrict, TEventName>
52
- /** Polling frequency (in ms). Defaults to Client's pollingInterval config. */
53
- pollingInterval?: number
54
- } & (
55
- | {
56
- event: TAbiEvent
57
- args?: MaybeExtractEventArgsFromAbi<[TAbiEvent], TEventName>
58
- /**
59
- * Whether or not the logs must match the indexed/non-indexed arguments on `event`.
60
- * @default false
61
- */
62
- strict?: TStrict
63
- }
64
- | {
65
- event?: never
66
- args?: never
67
- strict?: never
68
- }
69
- )
86
+ onLogs: WatchEventOnLogsFn<TAbiEvent, TAbiEvents, TStrict, _EventName>
87
+ } & (GetTransportConfig<Transport>['type'] extends 'webSocket'
88
+ ?
89
+ | {
90
+ batch?: never
91
+ /**
92
+ * Whether or not the WebSocket Transport should poll the JSON-RPC, rather than using `eth_subscribe`.
93
+ * @default false
94
+ */
95
+ poll?: false
96
+ pollingInterval?: never
97
+ }
98
+ | (PollOptions & {
99
+ /**
100
+ * Whether or not the WebSocket Transport should poll the JSON-RPC, rather than using `eth_subscribe`.
101
+ * @default true
102
+ */
103
+ poll?: true
104
+ })
105
+ : PollOptions & {
106
+ poll?: true
107
+ }) &
108
+ (
109
+ | {
110
+ event: Narrow<TAbiEvent>
111
+ events?: never
112
+ args?: MaybeExtractEventArgsFromAbi<TAbiEvents, _EventName>
113
+ /**
114
+ * Whether or not the logs must match the indexed/non-indexed arguments on `event`.
115
+ * @default false
116
+ */
117
+ strict?: TStrict
118
+ }
119
+ | {
120
+ event?: never
121
+ events?: Narrow<TAbiEvents>
122
+ args?: never
123
+ /**
124
+ * Whether or not the logs must match the indexed/non-indexed arguments on `event`.
125
+ * @default false
126
+ */
127
+ strict?: TStrict
128
+ }
129
+ | {
130
+ event?: never
131
+ events?: never
132
+ args?: never
133
+ strict?: never
134
+ }
135
+ )
70
136
 
71
137
  export type WatchEventReturnType = () => void
72
138
 
@@ -104,9 +170,13 @@ export type WatchEventReturnType = () => void
104
170
  */
105
171
  export function watchEvent<
106
172
  TChain extends Chain | undefined,
107
- TAbiEvent extends AbiEvent | undefined,
108
- TEventName extends string | undefined,
173
+ TAbiEvent extends AbiEvent | undefined = undefined,
174
+ TAbiEvents extends
175
+ | readonly AbiEvent[]
176
+ | readonly unknown[]
177
+ | undefined = TAbiEvent extends AbiEvent ? [TAbiEvent] : undefined,
109
178
  TStrict extends boolean | undefined = undefined,
179
+ _EventName extends string | undefined = undefined,
110
180
  >(
111
181
  client: Client<Transport, TChain>,
112
182
  {
@@ -114,91 +184,179 @@ export function watchEvent<
114
184
  args,
115
185
  batch = true,
116
186
  event,
187
+ events,
117
188
  onError,
118
189
  onLogs,
190
+ poll: poll_,
119
191
  pollingInterval = client.pollingInterval,
120
192
  strict: strict_,
121
- }: WatchEventParameters<TAbiEvent, TStrict>,
193
+ }: WatchEventParameters<TAbiEvent, TAbiEvents, TStrict>,
122
194
  ): WatchEventReturnType {
123
- const observerId = stringify([
124
- 'watchEvent',
125
- address,
126
- args,
127
- batch,
128
- client.uid,
129
- event,
130
- pollingInterval,
131
- ])
195
+ const enablePolling =
196
+ typeof poll_ !== 'undefined' ? poll_ : client.transport.type !== 'webSocket'
132
197
  const strict = strict_ ?? false
133
198
 
134
- return observe(observerId, { onLogs, onError }, (emit) => {
135
- let previousBlockNumber: bigint
136
- let filter: Filter<'event', [TAbiEvent], TEventName, any>
137
- let initialized = false
199
+ const pollEvent = () => {
200
+ const observerId = stringify([
201
+ 'watchEvent',
202
+ address,
203
+ args,
204
+ batch,
205
+ client.uid,
206
+ event,
207
+ pollingInterval,
208
+ ])
138
209
 
139
- const unwatch = poll(
140
- async () => {
141
- if (!initialized) {
142
- try {
143
- filter = (await createEventFilter(client, {
144
- address,
145
- args,
146
- event: event!,
147
- strict,
148
- } as unknown as CreateEventFilterParameters)) as unknown as Filter<
149
- 'event',
150
- [TAbiEvent],
151
- TEventName
152
- >
153
- } catch {}
154
- initialized = true
155
- return
156
- }
210
+ return observe(observerId, { onLogs, onError }, (emit) => {
211
+ let previousBlockNumber: bigint
212
+ let filter: Filter<'event', TAbiEvents, _EventName, any>
213
+ let initialized = false
157
214
 
158
- try {
159
- let logs: Log[]
160
- if (filter) {
161
- logs = await getFilterChanges(client, { filter })
162
- } else {
163
- // If the filter doesn't exist, we will fall back to use `getLogs`.
164
- // The fall back exists because some RPC Providers do not support filters.
165
-
166
- // Fetch the block number to use for `getLogs`.
167
- const blockNumber = await getBlockNumber(client)
168
-
169
- // If the block number has changed, we will need to fetch the logs.
170
- // If the block number doesn't exist, we are yet to reach the first poll interval,
171
- // so do not emit any logs.
172
- if (previousBlockNumber && previousBlockNumber !== blockNumber) {
173
- logs = await getLogs(client, {
215
+ const unwatch = poll(
216
+ async () => {
217
+ if (!initialized) {
218
+ try {
219
+ filter = (await createEventFilter(client, {
174
220
  address,
175
221
  args,
176
- fromBlock: previousBlockNumber + 1n,
177
- toBlock: blockNumber,
178
222
  event: event!,
179
- })
223
+ events,
224
+ strict,
225
+ } as unknown as CreateEventFilterParameters)) as unknown as Filter<
226
+ 'event',
227
+ TAbiEvents,
228
+ _EventName
229
+ >
230
+ } catch {}
231
+ initialized = true
232
+ return
233
+ }
234
+
235
+ try {
236
+ let logs: Log[]
237
+ if (filter) {
238
+ logs = await getFilterChanges(client, { filter })
180
239
  } else {
181
- logs = []
240
+ // If the filter doesn't exist, we will fall back to use `getLogs`.
241
+ // The fall back exists because some RPC Providers do not support filters.
242
+
243
+ // Fetch the block number to use for `getLogs`.
244
+ const blockNumber = await getBlockNumber(client)
245
+
246
+ // If the block number has changed, we will need to fetch the logs.
247
+ // If the block number doesn't exist, we are yet to reach the first poll interval,
248
+ // so do not emit any logs.
249
+ if (previousBlockNumber && previousBlockNumber !== blockNumber) {
250
+ logs = await getLogs(client, {
251
+ address,
252
+ args,
253
+ event: event!,
254
+ events,
255
+ fromBlock: previousBlockNumber + 1n,
256
+ toBlock: blockNumber,
257
+ } as unknown as GetLogsParameters)
258
+ } else {
259
+ logs = []
260
+ }
261
+ previousBlockNumber = blockNumber
182
262
  }
183
- previousBlockNumber = blockNumber
263
+
264
+ if (logs.length === 0) return
265
+ if (batch) emit.onLogs(logs as any)
266
+ else logs.forEach((log) => emit.onLogs([log] as any))
267
+ } catch (err) {
268
+ // If a filter has been set and gets uninstalled, providers will throw an InvalidInput error.
269
+ // Reinitalize the filter when this occurs
270
+ if (filter && err instanceof InvalidInputRpcError)
271
+ initialized = false
272
+ emit.onError?.(err as Error)
184
273
  }
274
+ },
275
+ {
276
+ emitOnBegin: true,
277
+ interval: pollingInterval,
278
+ },
279
+ )
185
280
 
186
- if (logs.length === 0) return
187
- if (batch) emit.onLogs(logs as any)
188
- else logs.forEach((log) => emit.onLogs([log] as any))
189
- } catch (err) {
190
- emit.onError?.(err as Error)
281
+ return async () => {
282
+ if (filter) await uninstallFilter(client, { filter })
283
+ unwatch()
284
+ }
285
+ })
286
+ }
287
+
288
+ const subscribeEvent = () => {
289
+ let active = true
290
+ let unsubscribe = () => (active = false)
291
+ ;(async () => {
292
+ try {
293
+ const events_ = events ?? (event ? [event] : undefined)
294
+ let topics: LogTopic[] = []
295
+ if (events_) {
296
+ topics = [
297
+ (events_ as AbiEvent[]).flatMap((event) =>
298
+ encodeEventTopics({
299
+ abi: [event],
300
+ eventName: (event as AbiEvent).name,
301
+ args,
302
+ } as EncodeEventTopicsParameters),
303
+ ),
304
+ ]
305
+ if (event) topics = topics[0] as LogTopic[]
191
306
  }
192
- },
193
- {
194
- emitOnBegin: true,
195
- interval: pollingInterval,
196
- },
197
- )
198
-
199
- return async () => {
200
- if (filter) await uninstallFilter(client, { filter })
201
- unwatch()
202
- }
203
- })
307
+
308
+ const { unsubscribe: unsubscribe_ } = await client.transport.subscribe({
309
+ params: ['logs', { address, topics }],
310
+ onData(data: any) {
311
+ if (!active) return
312
+ const log = data.result
313
+ try {
314
+ const { eventName, args } = decodeEventLog({
315
+ abi: events_ as Abi,
316
+ data: log.data,
317
+ topics: log.topics as any,
318
+ strict,
319
+ })
320
+ const formatted = formatLog(log, {
321
+ args,
322
+ eventName: eventName as string,
323
+ })
324
+ onLogs([formatted] as any)
325
+ } catch (err) {
326
+ let eventName
327
+ let isUnnamed
328
+ if (
329
+ err instanceof DecodeLogDataMismatch ||
330
+ err instanceof DecodeLogTopicsMismatch
331
+ ) {
332
+ // If strict mode is on, and log data/topics do not match event definition, skip.
333
+ if (strict_) return
334
+ eventName = err.abiItem.name
335
+ isUnnamed = err.abiItem.inputs?.some(
336
+ (x) => !('name' in x && x.name),
337
+ )
338
+ }
339
+
340
+ // Set args to empty if there is an error decoding (e.g. indexed/non-indexed params mismatch).
341
+ const formatted = formatLog(log, {
342
+ args: isUnnamed ? [] : {},
343
+ eventName,
344
+ })
345
+ onLogs([formatted] as any)
346
+ }
347
+ },
348
+ onError(error: Error) {
349
+ onError?.(error)
350
+ },
351
+ })
352
+ unsubscribe = unsubscribe_
353
+ if (!active) unsubscribe()
354
+ } catch (err) {
355
+ onError?.(err as Error)
356
+ }
357
+ })()
358
+ return unsubscribe
359
+ }
360
+
361
+ return enablePolling ? pollEvent() : subscribeEvent()
204
362
  }
@@ -19,7 +19,7 @@ export type DeployContractParameters<
19
19
  TAbi extends Abi | readonly unknown[] = Abi,
20
20
  TChain extends Chain | undefined = Chain | undefined,
21
21
  TAccount extends Account | undefined = Account | undefined,
22
- TChainOverride extends Chain | undefined = undefined,
22
+ TChainOverride extends Chain | undefined = Chain | undefined,
23
23
  > = UnionOmit<
24
24
  SendTransactionParameters<TChain, TAccount, TChainOverride>,
25
25
  'accessList' | 'chain' | 'to' | 'data'
@@ -11,7 +11,7 @@ import type {
11
11
  TransactionRequest,
12
12
  TransactionSerializable,
13
13
  } from '../../types/transaction.js'
14
- import type { IsUndefined, UnionOmit } from '../../types/utils.js'
14
+ import type { UnionOmit } from '../../types/utils.js'
15
15
  import { assertCurrentChain } from '../../utils/chain.js'
16
16
  import { getTransactionError } from '../../utils/errors/getTransactionError.js'
17
17
  import { extract } from '../../utils/formatters/extract.js'
@@ -19,17 +19,20 @@ import {
19
19
  type FormattedTransactionRequest,
20
20
  formatTransactionRequest,
21
21
  } from '../../utils/formatters/transactionRequest.js'
22
- import { assertRequest } from '../../utils/transaction/assertRequest.js'
22
+ import {
23
+ type AssertRequestParameters,
24
+ assertRequest,
25
+ } from '../../utils/transaction/assertRequest.js'
23
26
  import { prepareRequest } from '../../utils/transaction/prepareRequest.js'
24
27
  import { getChainId } from '../public/getChainId.js'
25
28
 
26
29
  export type SendTransactionParameters<
27
30
  TChain extends Chain | undefined = Chain | undefined,
28
31
  TAccount extends Account | undefined = Account | undefined,
29
- TChainOverride extends Chain | undefined = Chain,
32
+ TChainOverride extends Chain | undefined = Chain | undefined,
30
33
  > = UnionOmit<
31
34
  FormattedTransactionRequest<
32
- IsUndefined<TChain> extends true ? TChainOverride : TChain
35
+ TChainOverride extends Chain ? TChainOverride : TChain
33
36
  >,
34
37
  'from'
35
38
  > &
@@ -113,7 +116,7 @@ export async function sendTransaction<
113
116
  const account = parseAccount(account_)
114
117
 
115
118
  try {
116
- assertRequest(args)
119
+ assertRequest(args as AssertRequestParameters)
117
120
 
118
121
  let chainId
119
122
  if (chain !== null) {
@@ -139,7 +142,7 @@ export async function sendTransaction<
139
142
  to,
140
143
  value,
141
144
  ...rest,
142
- })
145
+ } as any)
143
146
 
144
147
  if (!chainId) chainId = await getChainId(client)
145
148
 
@@ -3,6 +3,7 @@ import type { Abi } from 'abitype'
3
3
  import type { Account } from '../../accounts/types.js'
4
4
  import type { Client } from '../../clients/createClient.js'
5
5
  import type { Transport } from '../../clients/transports/createTransport.js'
6
+ import type { GetAccountParameter } from '../../types/account.js'
6
7
  import type { Chain, GetChain } from '../../types/chain.js'
7
8
  import type { ContractFunctionConfig, GetValue } from '../../types/contract.js'
8
9
  import type { Hex } from '../../types/misc.js'
@@ -11,7 +12,7 @@ import {
11
12
  type EncodeFunctionDataParameters,
12
13
  encodeFunctionData,
13
14
  } from '../../utils/abi/encodeFunctionData.js'
14
-
15
+ import type { FormattedTransactionRequest } from '../../utils/formatters/transactionRequest.js'
15
16
  import {
16
17
  type SendTransactionParameters,
17
18
  type SendTransactionReturnType,
@@ -22,14 +23,17 @@ export type WriteContractParameters<
22
23
  TAbi extends Abi | readonly unknown[] = Abi,
23
24
  TFunctionName extends string = string,
24
25
  TChain extends Chain | undefined = Chain,
25
- TAccount extends Account | undefined = undefined,
26
- TChainOverride extends Chain | undefined = undefined,
26
+ TAccount extends Account | undefined = Account | undefined,
27
+ TChainOverride extends Chain | undefined = Chain | undefined,
27
28
  > = ContractFunctionConfig<TAbi, TFunctionName, 'payable' | 'nonpayable'> &
29
+ GetAccountParameter<TAccount> &
30
+ GetChain<TChain, TChainOverride> &
28
31
  UnionOmit<
29
- SendTransactionParameters<TChain, TAccount, TChainOverride>,
30
- 'chain' | 'to' | 'data' | 'value'
32
+ FormattedTransactionRequest<
33
+ TChainOverride extends Chain ? TChainOverride : TChain
34
+ >,
35
+ 'from' | 'to' | 'data' | 'value'
31
36
  > &
32
- GetChain<TChain, TChainOverride> &
33
37
  GetValue<
34
38
  TAbi,
35
39
  TFunctionName,
@@ -102,7 +106,7 @@ export async function writeContract<
102
106
  TAccount extends Account | undefined,
103
107
  TAbi extends Abi | readonly unknown[],
104
108
  TFunctionName extends string,
105
- TChainOverride extends Chain | undefined = undefined,
109
+ TChainOverride extends Chain | undefined,
106
110
  >(
107
111
  client: Client<Transport, TChain, TAccount>,
108
112
  {
@@ -1,9 +1,5 @@
1
- import type { Address } from 'abitype'
2
-
3
- import { type Formatters } from '../../types/formatter.js'
4
- import type { Hash, Hex } from '../../types/misc.js'
5
- import type { RpcTransaction } from '../../types/rpc.js'
6
- import type { Transaction } from '../../types/transaction.js'
1
+ import { type ChainFormatters } from '../../types/chain.js'
2
+ import type { Hash } from '../../types/misc.js'
7
3
  import { hexToBigInt } from '../../utils/encoding/fromHex.js'
8
4
  import { numberToHex } from '../../utils/encoding/toHex.js'
9
5
  import { defineBlock } from '../../utils/formatters/block.js'
@@ -13,47 +9,28 @@ import {
13
9
  } from '../../utils/formatters/transaction.js'
14
10
  import { defineTransactionReceipt } from '../../utils/formatters/transactionReceipt.js'
15
11
  import { defineTransactionRequest } from '../../utils/formatters/transactionRequest.js'
16
-
17
- export type CeloFormatOverrides = {
18
- RpcBlock: {
19
- randomness: {
20
- committed: Hex
21
- revealed: Hex
22
- }
23
- transactions:
24
- | Hash[]
25
- | (RpcTransaction & {
26
- feeCurrency: Address | null
27
- gatewayFee: Hex | null
28
- gatewayFeeRecipient: Address | null
29
- })[]
30
- }
31
- RpcTransaction: {
32
- feeCurrency: Address | null
33
- gatewayFee: Hex | null
34
- gatewayFeeRecipient: Address | null
35
- }
36
- RpcTransactionReceipt: {
37
- feeCurrency: Address | null
38
- gatewayFee: Hex | null
39
- gatewayFeeRecipient: Address | null
40
- }
41
- TransactionRequest: {
42
- feeCurrency?: Address
43
- gatewayFee?: bigint
44
- gatewayFeeRecipient?: Address
45
- }
46
- Transaction: {
47
- feeCurrency: Address | null
48
- gatewayFee: bigint | null
49
- gatewayFeeRecipient: Address | null
50
- }
51
- }
12
+ import type {
13
+ CeloBlockOverrides,
14
+ CeloRpcTransaction,
15
+ CeloRpcTransactionOverrides,
16
+ CeloRpcTransactionReceiptOverrides,
17
+ CeloRpcTransactionRequestOverrides,
18
+ CeloTransaction,
19
+ CeloTransactionOverrides,
20
+ CeloTransactionReceiptOverrides,
21
+ CeloTransactionRequestOverrides,
22
+ } from './types.js'
52
23
 
53
24
  export const formattersCelo = {
54
25
  block: /*#__PURE__*/ defineBlock({
55
26
  exclude: ['difficulty', 'gasLimit', 'mixHash', 'nonce', 'uncles'],
56
- format(args: CeloFormatOverrides['RpcBlock']) {
27
+ format(
28
+ args: CeloBlockOverrides & {
29
+ transactions: Hash[] | CeloRpcTransaction[]
30
+ },
31
+ ): CeloBlockOverrides & {
32
+ transactions: Hash[] | CeloTransaction[]
33
+ } {
57
34
  const transactions = args.transactions?.map((transaction) => {
58
35
  if (typeof transaction === 'string') return transaction
59
36
  return {
@@ -64,7 +41,7 @@ export const formattersCelo = {
64
41
  : null,
65
42
  gatewayFeeRecipient: transaction.gatewayFeeRecipient,
66
43
  }
67
- }) as Hash[] | (Transaction & CeloFormatOverrides['Transaction'])[]
44
+ }) as Hash[] | CeloTransaction[]
68
45
  return {
69
46
  randomness: args.randomness,
70
47
  transactions,
@@ -72,7 +49,7 @@ export const formattersCelo = {
72
49
  },
73
50
  }),
74
51
  transaction: /*#__PURE__*/ defineTransaction({
75
- format(args: CeloFormatOverrides['RpcTransaction']) {
52
+ format(args: CeloRpcTransactionOverrides): CeloTransactionOverrides {
76
53
  return {
77
54
  feeCurrency: args.feeCurrency,
78
55
  gatewayFee: args.gatewayFee ? hexToBigInt(args.gatewayFee) : null,
@@ -81,7 +58,9 @@ export const formattersCelo = {
81
58
  },
82
59
  }),
83
60
  transactionReceipt: /*#__PURE__*/ defineTransactionReceipt({
84
- format(args: CeloFormatOverrides['RpcTransactionReceipt']) {
61
+ format(
62
+ args: CeloRpcTransactionReceiptOverrides,
63
+ ): CeloTransactionReceiptOverrides {
85
64
  return {
86
65
  feeCurrency: args.feeCurrency,
87
66
  gatewayFee: args.gatewayFee ? hexToBigInt(args.gatewayFee) : null,
@@ -90,7 +69,9 @@ export const formattersCelo = {
90
69
  },
91
70
  }),
92
71
  transactionRequest: /*#__PURE__*/ defineTransactionRequest({
93
- format(args: CeloFormatOverrides['TransactionRequest']) {
72
+ format(
73
+ args: CeloTransactionRequestOverrides,
74
+ ): CeloRpcTransactionRequestOverrides {
94
75
  return {
95
76
  feeCurrency: args.feeCurrency,
96
77
  gatewayFee:
@@ -101,4 +82,4 @@ export const formattersCelo = {
101
82
  }
102
83
  },
103
84
  }),
104
- } as const satisfies Formatters
85
+ } as const satisfies ChainFormatters