viem 0.0.0-w-20230829165118 → 0.0.0-w-20230904174840

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 (442) hide show
  1. package/README.md +6 -0
  2. package/dist/cjs/accounts/index.js +19 -19
  3. package/dist/cjs/accounts/index.js.map +1 -1
  4. package/dist/cjs/actions/getContract.js.map +1 -1
  5. package/dist/cjs/actions/public/call.js +1 -1
  6. package/dist/cjs/actions/public/call.js.map +1 -1
  7. package/dist/cjs/actions/public/getLogs.js.map +1 -1
  8. package/dist/cjs/actions/public/multicall.js +54 -31
  9. package/dist/cjs/actions/public/multicall.js.map +1 -1
  10. package/dist/cjs/actions/public/watchContractEvent.js +3 -2
  11. package/dist/cjs/actions/public/watchContractEvent.js.map +1 -1
  12. package/dist/cjs/actions/public/watchEvent.js +2 -5
  13. package/dist/cjs/actions/public/watchEvent.js.map +1 -1
  14. package/dist/cjs/actions/wallet/deployContract.js +3 -6
  15. package/dist/cjs/actions/wallet/deployContract.js.map +1 -1
  16. package/dist/cjs/actions/wallet/prepareTransactionRequest.js.map +1 -1
  17. package/dist/cjs/actions/wallet/signTypedData.js +1 -13
  18. package/dist/cjs/actions/wallet/signTypedData.js.map +1 -1
  19. package/dist/cjs/chains/definitions/base.js +1 -3
  20. package/dist/cjs/chains/definitions/base.js.map +1 -1
  21. package/dist/cjs/chains/definitions/baseGoerli.js +1 -3
  22. package/dist/cjs/chains/definitions/baseGoerli.js.map +1 -1
  23. package/dist/cjs/chains/definitions/meter.js +22 -0
  24. package/dist/cjs/chains/definitions/meter.js.map +1 -0
  25. package/dist/cjs/chains/definitions/meterTestnet.js +25 -0
  26. package/dist/cjs/chains/definitions/meterTestnet.js.map +1 -0
  27. package/dist/cjs/chains/definitions/opBNB.js +28 -0
  28. package/dist/cjs/chains/definitions/opBNB.js.map +1 -0
  29. package/dist/cjs/chains/definitions/opBNBTestnet.js +29 -0
  30. package/dist/cjs/chains/definitions/opBNBTestnet.js.map +1 -0
  31. package/dist/cjs/chains/definitions/optimism.js +0 -2
  32. package/dist/cjs/chains/definitions/optimism.js.map +1 -1
  33. package/dist/cjs/chains/definitions/optimismGoerli.js +0 -2
  34. package/dist/cjs/chains/definitions/optimismGoerli.js.map +1 -1
  35. package/dist/cjs/chains/definitions/plinga.js +31 -0
  36. package/dist/cjs/chains/definitions/plinga.js.map +1 -0
  37. package/dist/cjs/chains/definitions/scrollSepolia.js +6 -0
  38. package/dist/cjs/chains/definitions/scrollSepolia.js.map +1 -1
  39. package/dist/cjs/chains/definitions/sepolia.js +5 -0
  40. package/dist/cjs/chains/definitions/sepolia.js.map +1 -1
  41. package/dist/cjs/chains/definitions/vechain.js +29 -0
  42. package/dist/cjs/chains/definitions/vechain.js.map +1 -0
  43. package/dist/cjs/chains/definitions/zora.js +0 -2
  44. package/dist/cjs/chains/definitions/zora.js.map +1 -1
  45. package/dist/cjs/chains/definitions/zoraTestnet.js +0 -2
  46. package/dist/cjs/chains/definitions/zoraTestnet.js.map +1 -1
  47. package/dist/cjs/chains/index.js +14 -2
  48. package/dist/cjs/chains/index.js.map +1 -1
  49. package/dist/cjs/clients/decorators/public.js.map +1 -1
  50. package/dist/cjs/errors/node.js +1 -1
  51. package/dist/cjs/errors/node.js.map +1 -1
  52. package/dist/cjs/errors/utils.js +1 -1
  53. package/dist/cjs/errors/utils.js.map +1 -1
  54. package/dist/cjs/{version.js → errors/version.js} +1 -1
  55. package/dist/cjs/errors/version.js.map +1 -0
  56. package/dist/cjs/index.js +2 -3
  57. package/dist/cjs/index.js.map +1 -1
  58. package/dist/cjs/utils/abi/decodeDeployData.js +2 -1
  59. package/dist/cjs/utils/abi/decodeDeployData.js.map +1 -1
  60. package/dist/cjs/utils/abi/decodeErrorResult.js +4 -3
  61. package/dist/cjs/utils/abi/decodeErrorResult.js.map +1 -1
  62. package/dist/cjs/utils/abi/decodeEventLog.js +4 -7
  63. package/dist/cjs/utils/abi/decodeEventLog.js.map +1 -1
  64. package/dist/cjs/utils/abi/decodeFunctionData.js +2 -1
  65. package/dist/cjs/utils/abi/decodeFunctionData.js.map +1 -1
  66. package/dist/cjs/utils/abi/decodeFunctionResult.js +5 -7
  67. package/dist/cjs/utils/abi/decodeFunctionResult.js.map +1 -1
  68. package/dist/cjs/utils/abi/encodeDeployData.js +2 -1
  69. package/dist/cjs/utils/abi/encodeDeployData.js.map +1 -1
  70. package/dist/cjs/utils/abi/encodeErrorResult.js +5 -7
  71. package/dist/cjs/utils/abi/encodeErrorResult.js.map +1 -1
  72. package/dist/cjs/utils/abi/encodeEventTopics.js +8 -13
  73. package/dist/cjs/utils/abi/encodeEventTopics.js.map +1 -1
  74. package/dist/cjs/utils/abi/encodeFunctionData.js +9 -10
  75. package/dist/cjs/utils/abi/encodeFunctionData.js.map +1 -1
  76. package/dist/cjs/utils/abi/encodeFunctionResult.js +7 -12
  77. package/dist/cjs/utils/abi/encodeFunctionResult.js.map +1 -1
  78. package/dist/cjs/utils/abi/getAbiItem.js +2 -1
  79. package/dist/cjs/utils/abi/getAbiItem.js.map +1 -1
  80. package/dist/cjs/utils/buildRequest.js +2 -0
  81. package/dist/cjs/utils/buildRequest.js.map +1 -1
  82. package/dist/cjs/utils/ccip.js.map +1 -1
  83. package/dist/cjs/utils/errors/getCallError.js +4 -3
  84. package/dist/cjs/utils/errors/getCallError.js.map +1 -1
  85. package/dist/cjs/utils/errors/getContractError.js +2 -1
  86. package/dist/cjs/utils/errors/getContractError.js.map +1 -1
  87. package/dist/cjs/utils/errors/getEstimateGasError.js +4 -3
  88. package/dist/cjs/utils/errors/getEstimateGasError.js.map +1 -1
  89. package/dist/cjs/utils/errors/getNodeError.js +16 -10
  90. package/dist/cjs/utils/errors/getNodeError.js.map +1 -1
  91. package/dist/cjs/utils/errors/getTransactionError.js +4 -3
  92. package/dist/cjs/utils/errors/getTransactionError.js.map +1 -1
  93. package/dist/cjs/utils/formatters/transaction.js +5 -5
  94. package/dist/cjs/utils/formatters/transaction.js.map +1 -1
  95. package/dist/cjs/utils/hash/getFunctionSelector.js.map +1 -1
  96. package/dist/cjs/utils/hash/hashFunction.js.map +1 -1
  97. package/dist/cjs/utils/rpc.js +10 -16
  98. package/dist/cjs/utils/rpc.js.map +1 -1
  99. package/dist/cjs/utils/signature/hashTypedData.js +3 -14
  100. package/dist/cjs/utils/signature/hashTypedData.js.map +1 -1
  101. package/dist/cjs/utils/signature/hexToSignature.js +1 -1
  102. package/dist/cjs/utils/signature/hexToSignature.js.map +1 -1
  103. package/dist/cjs/utils/typedData.js +27 -1
  104. package/dist/cjs/utils/typedData.js.map +1 -1
  105. package/dist/esm/accounts/index.js +9 -9
  106. package/dist/esm/accounts/index.js.map +1 -1
  107. package/dist/esm/actions/getContract.js.map +1 -1
  108. package/dist/esm/actions/public/call.js +1 -1
  109. package/dist/esm/actions/public/call.js.map +1 -1
  110. package/dist/esm/actions/public/getLogs.js.map +1 -1
  111. package/dist/esm/actions/public/multicall.js +66 -31
  112. package/dist/esm/actions/public/multicall.js.map +1 -1
  113. package/dist/esm/actions/public/watchContractEvent.js +3 -2
  114. package/dist/esm/actions/public/watchContractEvent.js.map +1 -1
  115. package/dist/esm/actions/public/watchEvent.js +2 -5
  116. package/dist/esm/actions/public/watchEvent.js.map +1 -1
  117. package/dist/esm/actions/wallet/deployContract.js +3 -6
  118. package/dist/esm/actions/wallet/deployContract.js.map +1 -1
  119. package/dist/esm/actions/wallet/prepareTransactionRequest.js.map +1 -1
  120. package/dist/esm/actions/wallet/signTypedData.js +2 -14
  121. package/dist/esm/actions/wallet/signTypedData.js.map +1 -1
  122. package/dist/esm/chains/definitions/base.js +1 -3
  123. package/dist/esm/chains/definitions/base.js.map +1 -1
  124. package/dist/esm/chains/definitions/baseGoerli.js +1 -3
  125. package/dist/esm/chains/definitions/baseGoerli.js.map +1 -1
  126. package/dist/esm/chains/definitions/meter.js +19 -0
  127. package/dist/esm/chains/definitions/meter.js.map +1 -0
  128. package/dist/esm/chains/definitions/meterTestnet.js +22 -0
  129. package/dist/esm/chains/definitions/meterTestnet.js.map +1 -0
  130. package/dist/esm/chains/definitions/opBNB.js +25 -0
  131. package/dist/esm/chains/definitions/opBNB.js.map +1 -0
  132. package/dist/esm/chains/definitions/opBNBTestnet.js +26 -0
  133. package/dist/esm/chains/definitions/opBNBTestnet.js.map +1 -0
  134. package/dist/esm/chains/definitions/optimism.js +0 -2
  135. package/dist/esm/chains/definitions/optimism.js.map +1 -1
  136. package/dist/esm/chains/definitions/optimismGoerli.js +0 -2
  137. package/dist/esm/chains/definitions/optimismGoerli.js.map +1 -1
  138. package/dist/esm/chains/definitions/plinga.js +28 -0
  139. package/dist/esm/chains/definitions/plinga.js.map +1 -0
  140. package/dist/esm/chains/definitions/scrollSepolia.js +6 -0
  141. package/dist/esm/chains/definitions/scrollSepolia.js.map +1 -1
  142. package/dist/esm/chains/definitions/sepolia.js +5 -0
  143. package/dist/esm/chains/definitions/sepolia.js.map +1 -1
  144. package/dist/esm/chains/definitions/vechain.js +26 -0
  145. package/dist/esm/chains/definitions/vechain.js.map +1 -0
  146. package/dist/esm/chains/definitions/zora.js +0 -2
  147. package/dist/esm/chains/definitions/zora.js.map +1 -1
  148. package/dist/esm/chains/definitions/zoraTestnet.js +0 -2
  149. package/dist/esm/chains/definitions/zoraTestnet.js.map +1 -1
  150. package/dist/esm/chains/index.js +6 -0
  151. package/dist/esm/chains/index.js.map +1 -1
  152. package/dist/esm/clients/decorators/public.js.map +1 -1
  153. package/dist/esm/errors/node.js +1 -1
  154. package/dist/esm/errors/node.js.map +1 -1
  155. package/dist/esm/errors/utils.js +1 -1
  156. package/dist/esm/errors/utils.js.map +1 -1
  157. package/dist/esm/errors/version.js +2 -0
  158. package/dist/esm/errors/version.js.map +1 -0
  159. package/dist/esm/index.js +1 -2
  160. package/dist/esm/index.js.map +1 -1
  161. package/dist/esm/types/contract.js.map +1 -1
  162. package/dist/esm/utils/abi/decodeDeployData.js +2 -1
  163. package/dist/esm/utils/abi/decodeDeployData.js.map +1 -1
  164. package/dist/esm/utils/abi/decodeErrorResult.js +4 -3
  165. package/dist/esm/utils/abi/decodeErrorResult.js.map +1 -1
  166. package/dist/esm/utils/abi/decodeEventLog.js +4 -7
  167. package/dist/esm/utils/abi/decodeEventLog.js.map +1 -1
  168. package/dist/esm/utils/abi/decodeFunctionData.js +2 -1
  169. package/dist/esm/utils/abi/decodeFunctionData.js.map +1 -1
  170. package/dist/esm/utils/abi/decodeFunctionResult.js +5 -7
  171. package/dist/esm/utils/abi/decodeFunctionResult.js.map +1 -1
  172. package/dist/esm/utils/abi/encodeDeployData.js +2 -1
  173. package/dist/esm/utils/abi/encodeDeployData.js.map +1 -1
  174. package/dist/esm/utils/abi/encodeErrorResult.js +5 -7
  175. package/dist/esm/utils/abi/encodeErrorResult.js.map +1 -1
  176. package/dist/esm/utils/abi/encodeEventTopics.js +8 -13
  177. package/dist/esm/utils/abi/encodeEventTopics.js.map +1 -1
  178. package/dist/esm/utils/abi/encodeFunctionData.js +9 -10
  179. package/dist/esm/utils/abi/encodeFunctionData.js.map +1 -1
  180. package/dist/esm/utils/abi/encodeFunctionResult.js +7 -12
  181. package/dist/esm/utils/abi/encodeFunctionResult.js.map +1 -1
  182. package/dist/esm/utils/abi/getAbiItem.js +2 -1
  183. package/dist/esm/utils/abi/getAbiItem.js.map +1 -1
  184. package/dist/esm/utils/buildRequest.js +4 -0
  185. package/dist/esm/utils/buildRequest.js.map +1 -1
  186. package/dist/esm/utils/ccip.js.map +1 -1
  187. package/dist/esm/utils/errors/getCallError.js +5 -4
  188. package/dist/esm/utils/errors/getCallError.js.map +1 -1
  189. package/dist/esm/utils/errors/getContractError.js +2 -1
  190. package/dist/esm/utils/errors/getContractError.js.map +1 -1
  191. package/dist/esm/utils/errors/getEstimateGasError.js +5 -4
  192. package/dist/esm/utils/errors/getEstimateGasError.js.map +1 -1
  193. package/dist/esm/utils/errors/getNodeError.js +16 -10
  194. package/dist/esm/utils/errors/getNodeError.js.map +1 -1
  195. package/dist/esm/utils/errors/getTransactionError.js +5 -4
  196. package/dist/esm/utils/errors/getTransactionError.js.map +1 -1
  197. package/dist/esm/utils/formatters/transaction.js +5 -5
  198. package/dist/esm/utils/formatters/transaction.js.map +1 -1
  199. package/dist/esm/utils/hash/getFunctionSelector.js.map +1 -1
  200. package/dist/esm/utils/hash/hashFunction.js.map +1 -1
  201. package/dist/esm/utils/rpc.js +7 -16
  202. package/dist/esm/utils/rpc.js.map +1 -1
  203. package/dist/esm/utils/signature/hashTypedData.js +3 -15
  204. package/dist/esm/utils/signature/hashTypedData.js.map +1 -1
  205. package/dist/esm/utils/signature/hexToSignature.js +1 -1
  206. package/dist/esm/utils/signature/hexToSignature.js.map +1 -1
  207. package/dist/esm/utils/typedData.js +24 -0
  208. package/dist/esm/utils/typedData.js.map +1 -1
  209. package/dist/types/accounts/index.d.ts +9 -9
  210. package/dist/types/accounts/index.d.ts.map +1 -1
  211. package/dist/types/actions/getContract.d.ts +3 -3
  212. package/dist/types/actions/getContract.d.ts.map +1 -1
  213. package/dist/types/actions/public/getLogs.d.ts.map +1 -1
  214. package/dist/types/actions/public/multicall.d.ts.map +1 -1
  215. package/dist/types/actions/public/watchContractEvent.d.ts +29 -29
  216. package/dist/types/actions/public/watchContractEvent.d.ts.map +1 -1
  217. package/dist/types/actions/public/watchEvent.d.ts.map +1 -1
  218. package/dist/types/actions/wallet/deployContract.d.ts +10 -6
  219. package/dist/types/actions/wallet/deployContract.d.ts.map +1 -1
  220. package/dist/types/actions/wallet/prepareTransactionRequest.d.ts +1 -1
  221. package/dist/types/actions/wallet/prepareTransactionRequest.d.ts.map +1 -1
  222. package/dist/types/actions/wallet/signTypedData.d.ts.map +1 -1
  223. package/dist/types/chains/definitions/base.d.ts +1 -1
  224. package/dist/types/chains/definitions/base.d.ts.map +1 -1
  225. package/dist/types/chains/definitions/baseGoerli.d.ts +1 -1
  226. package/dist/types/chains/definitions/baseGoerli.d.ts.map +1 -1
  227. package/dist/types/chains/definitions/meter.d.ts +28 -0
  228. package/dist/types/chains/definitions/meter.d.ts.map +1 -0
  229. package/dist/types/chains/definitions/meterTestnet.d.ts +28 -0
  230. package/dist/types/chains/definitions/meterTestnet.d.ts.map +1 -0
  231. package/dist/types/chains/definitions/opBNB.d.ts +34 -0
  232. package/dist/types/chains/definitions/opBNB.d.ts.map +1 -0
  233. package/dist/types/chains/definitions/opBNBTestnet.d.ts +35 -0
  234. package/dist/types/chains/definitions/opBNBTestnet.d.ts.map +1 -0
  235. package/dist/types/chains/definitions/optimism.d.ts.map +1 -1
  236. package/dist/types/chains/definitions/optimismGoerli.d.ts.map +1 -1
  237. package/dist/types/chains/definitions/plinga.d.ts +34 -0
  238. package/dist/types/chains/definitions/plinga.d.ts.map +1 -0
  239. package/dist/types/chains/definitions/scrollSepolia.d.ts +6 -0
  240. package/dist/types/chains/definitions/scrollSepolia.d.ts.map +1 -1
  241. package/dist/types/chains/definitions/sepolia.d.ts +7 -0
  242. package/dist/types/chains/definitions/sepolia.d.ts.map +1 -1
  243. package/dist/types/chains/definitions/vechain.d.ts +32 -0
  244. package/dist/types/chains/definitions/vechain.d.ts.map +1 -0
  245. package/dist/types/chains/definitions/zora.d.ts.map +1 -1
  246. package/dist/types/chains/definitions/zoraTestnet.d.ts.map +1 -1
  247. package/dist/types/chains/index.d.ts +6 -0
  248. package/dist/types/chains/index.d.ts.map +1 -1
  249. package/dist/types/clients/decorators/public.d.ts +2 -2
  250. package/dist/types/clients/decorators/public.d.ts.map +1 -1
  251. package/dist/types/clients/decorators/wallet.d.ts +1 -1
  252. package/dist/types/clients/decorators/wallet.d.ts.map +1 -1
  253. package/dist/types/errors/version.d.ts +2 -0
  254. package/dist/types/errors/version.d.ts.map +1 -0
  255. package/dist/types/index.d.ts +6 -7
  256. package/dist/types/index.d.ts.map +1 -1
  257. package/dist/types/types/chain.d.ts +4 -0
  258. package/dist/types/types/chain.d.ts.map +1 -1
  259. package/dist/types/types/contract.d.ts +48 -82
  260. package/dist/types/types/contract.d.ts.map +1 -1
  261. package/dist/types/types/multicall.d.ts +4 -4
  262. package/dist/types/types/multicall.d.ts.map +1 -1
  263. package/dist/types/utils/abi/decodeDeployData.d.ts +7 -6
  264. package/dist/types/utils/abi/decodeDeployData.d.ts.map +1 -1
  265. package/dist/types/utils/abi/decodeErrorResult.d.ts +16 -11
  266. package/dist/types/utils/abi/decodeErrorResult.d.ts.map +1 -1
  267. package/dist/types/utils/abi/decodeEventLog.d.ts +24 -17
  268. package/dist/types/utils/abi/decodeEventLog.d.ts.map +1 -1
  269. package/dist/types/utils/abi/decodeFunctionData.d.ts +14 -10
  270. package/dist/types/utils/abi/decodeFunctionData.d.ts.map +1 -1
  271. package/dist/types/utils/abi/decodeFunctionResult.d.ts +18 -11
  272. package/dist/types/utils/abi/decodeFunctionResult.d.ts.map +1 -1
  273. package/dist/types/utils/abi/encodeDeployData.d.ts +13 -5
  274. package/dist/types/utils/abi/encodeDeployData.d.ts.map +1 -1
  275. package/dist/types/utils/abi/encodeErrorResult.d.ts +16 -10
  276. package/dist/types/utils/abi/encodeErrorResult.d.ts.map +1 -1
  277. package/dist/types/utils/abi/encodeEventTopics.d.ts +14 -12
  278. package/dist/types/utils/abi/encodeEventTopics.d.ts.map +1 -1
  279. package/dist/types/utils/abi/encodeFunctionData.d.ts +19 -10
  280. package/dist/types/utils/abi/encodeFunctionData.d.ts.map +1 -1
  281. package/dist/types/utils/abi/encodeFunctionResult.d.ts +16 -12
  282. package/dist/types/utils/abi/encodeFunctionResult.d.ts.map +1 -1
  283. package/dist/types/utils/abi/getAbiItem.d.ts +11 -8
  284. package/dist/types/utils/abi/getAbiItem.d.ts.map +1 -1
  285. package/dist/types/utils/buildRequest.d.ts.map +1 -1
  286. package/dist/types/utils/ccip.d.ts.map +1 -1
  287. package/dist/types/utils/errors/getCallError.d.ts.map +1 -1
  288. package/dist/types/utils/errors/getContractError.d.ts.map +1 -1
  289. package/dist/types/utils/errors/getEstimateGasError.d.ts.map +1 -1
  290. package/dist/types/utils/errors/getNodeError.d.ts +1 -1
  291. package/dist/types/utils/errors/getNodeError.d.ts.map +1 -1
  292. package/dist/types/utils/errors/getTransactionError.d.ts.map +1 -1
  293. package/dist/types/utils/hash/getEventSelector.d.ts +1 -1
  294. package/dist/types/utils/hash/getEventSelector.d.ts.map +1 -1
  295. package/dist/types/utils/hash/getFunctionSelector.d.ts.map +1 -1
  296. package/dist/types/utils/hash/hashFunction.d.ts.map +1 -1
  297. package/dist/types/utils/rpc.d.ts +3 -1
  298. package/dist/types/utils/rpc.d.ts.map +1 -1
  299. package/dist/types/utils/signature/hashTypedData.d.ts +10 -1
  300. package/dist/types/utils/signature/hashTypedData.d.ts.map +1 -1
  301. package/dist/types/utils/signature/verifyMessage.d.ts +2 -2
  302. package/dist/types/utils/signature/verifyMessage.d.ts.map +1 -1
  303. package/dist/types/utils/typedData.d.ts +8 -1
  304. package/dist/types/utils/typedData.d.ts.map +1 -1
  305. package/package.json +8 -8
  306. package/src/accounts/index.ts +10 -9
  307. package/src/actions/getContract.ts +5 -2
  308. package/src/actions/public/call.ts +1 -1
  309. package/src/actions/public/getLogs.ts +3 -3
  310. package/src/actions/public/multicall.ts +72 -29
  311. package/src/actions/public/watchContractEvent.ts +58 -52
  312. package/src/actions/public/watchEvent.ts +4 -7
  313. package/src/actions/wallet/deployContract.ts +29 -34
  314. package/src/actions/wallet/prepareTransactionRequest.ts +3 -6
  315. package/src/actions/wallet/signTypedData.ts +5 -14
  316. package/src/chains/definitions/base.ts +1 -3
  317. package/src/chains/definitions/baseGoerli.ts +1 -3
  318. package/src/chains/definitions/meter.ts +19 -0
  319. package/src/chains/definitions/meterTestnet.ts +22 -0
  320. package/src/chains/definitions/opBNB.ts +26 -0
  321. package/src/chains/definitions/opBNBTestnet.ts +26 -0
  322. package/src/chains/definitions/optimism.ts +0 -2
  323. package/src/chains/definitions/optimismGoerli.ts +0 -2
  324. package/src/chains/definitions/plinga.ts +28 -0
  325. package/src/chains/definitions/scrollSepolia.ts +6 -0
  326. package/src/chains/definitions/sepolia.ts +5 -0
  327. package/src/chains/definitions/vechain.ts +26 -0
  328. package/src/chains/definitions/zora.ts +0 -2
  329. package/src/chains/definitions/zoraTestnet.ts +0 -2
  330. package/src/chains/index.ts +6 -0
  331. package/src/clients/decorators/public.ts +2 -1
  332. package/src/clients/decorators/wallet.ts +3 -3
  333. package/src/errors/node.ts +1 -1
  334. package/src/errors/utils.ts +1 -1
  335. package/src/errors/version.ts +1 -0
  336. package/src/index.ts +10 -11
  337. package/src/types/chain.ts +2 -0
  338. package/src/types/contract.ts +183 -216
  339. package/src/types/multicall.ts +19 -13
  340. package/src/utils/abi/decodeDeployData.ts +16 -15
  341. package/src/utils/abi/decodeErrorResult.ts +41 -25
  342. package/src/utils/abi/decodeEventLog.ts +65 -67
  343. package/src/utils/abi/decodeFunctionData.ts +30 -22
  344. package/src/utils/abi/decodeFunctionResult.ts +124 -46
  345. package/src/utils/abi/encodeDeployData.ts +27 -16
  346. package/src/utils/abi/encodeErrorResult.ts +47 -26
  347. package/src/utils/abi/encodeEventTopics.ts +49 -30
  348. package/src/utils/abi/encodeFunctionData.ts +58 -32
  349. package/src/utils/abi/encodeFunctionResult.ts +53 -36
  350. package/src/utils/abi/getAbiItem.ts +68 -32
  351. package/src/utils/buildRequest.ts +4 -0
  352. package/src/utils/ccip.ts +1 -5
  353. package/src/utils/errors/getCallError.ts +4 -8
  354. package/src/utils/errors/getContractError.ts +2 -1
  355. package/src/utils/errors/getEstimateGasError.ts +4 -8
  356. package/src/utils/errors/getNodeError.ts +18 -13
  357. package/src/utils/errors/getTransactionError.ts +4 -8
  358. package/src/utils/formatters/transaction.ts +5 -5
  359. package/src/utils/hash/getEventSelector.ts +1 -1
  360. package/src/utils/hash/getFunctionSelector.ts +1 -1
  361. package/src/utils/hash/hashFunction.ts +1 -1
  362. package/src/utils/rpc.ts +9 -20
  363. package/src/utils/signature/hashTypedData.ts +4 -16
  364. package/src/utils/signature/hexToSignature.ts +1 -1
  365. package/src/utils/signature/verifyMessage.ts +2 -2
  366. package/src/utils/typedData.ts +29 -1
  367. package/dist/cjs/accounts/wordlists/czech.js +0 -6
  368. package/dist/cjs/accounts/wordlists/czech.js.map +0 -1
  369. package/dist/cjs/accounts/wordlists/english.js +0 -6
  370. package/dist/cjs/accounts/wordlists/english.js.map +0 -1
  371. package/dist/cjs/accounts/wordlists/french.js +0 -6
  372. package/dist/cjs/accounts/wordlists/french.js.map +0 -1
  373. package/dist/cjs/accounts/wordlists/italian.js +0 -6
  374. package/dist/cjs/accounts/wordlists/italian.js.map +0 -1
  375. package/dist/cjs/accounts/wordlists/japanese.js +0 -6
  376. package/dist/cjs/accounts/wordlists/japanese.js.map +0 -1
  377. package/dist/cjs/accounts/wordlists/korean.js +0 -6
  378. package/dist/cjs/accounts/wordlists/korean.js.map +0 -1
  379. package/dist/cjs/accounts/wordlists/simplifiedChinese.js +0 -6
  380. package/dist/cjs/accounts/wordlists/simplifiedChinese.js.map +0 -1
  381. package/dist/cjs/accounts/wordlists/spanish.js +0 -6
  382. package/dist/cjs/accounts/wordlists/spanish.js.map +0 -1
  383. package/dist/cjs/accounts/wordlists/traditionalChinese.js +0 -6
  384. package/dist/cjs/accounts/wordlists/traditionalChinese.js.map +0 -1
  385. package/dist/cjs/chains/optimism/fees.js +0 -7
  386. package/dist/cjs/chains/optimism/fees.js.map +0 -1
  387. package/dist/cjs/version.js.map +0 -1
  388. package/dist/esm/accounts/wordlists/czech.js +0 -2
  389. package/dist/esm/accounts/wordlists/czech.js.map +0 -1
  390. package/dist/esm/accounts/wordlists/english.js +0 -2
  391. package/dist/esm/accounts/wordlists/english.js.map +0 -1
  392. package/dist/esm/accounts/wordlists/french.js +0 -2
  393. package/dist/esm/accounts/wordlists/french.js.map +0 -1
  394. package/dist/esm/accounts/wordlists/italian.js +0 -2
  395. package/dist/esm/accounts/wordlists/italian.js.map +0 -1
  396. package/dist/esm/accounts/wordlists/japanese.js +0 -2
  397. package/dist/esm/accounts/wordlists/japanese.js.map +0 -1
  398. package/dist/esm/accounts/wordlists/korean.js +0 -2
  399. package/dist/esm/accounts/wordlists/korean.js.map +0 -1
  400. package/dist/esm/accounts/wordlists/simplifiedChinese.js +0 -2
  401. package/dist/esm/accounts/wordlists/simplifiedChinese.js.map +0 -1
  402. package/dist/esm/accounts/wordlists/spanish.js +0 -2
  403. package/dist/esm/accounts/wordlists/spanish.js.map +0 -1
  404. package/dist/esm/accounts/wordlists/traditionalChinese.js +0 -2
  405. package/dist/esm/accounts/wordlists/traditionalChinese.js.map +0 -1
  406. package/dist/esm/chains/optimism/fees.js +0 -4
  407. package/dist/esm/chains/optimism/fees.js.map +0 -1
  408. package/dist/esm/version.js +0 -2
  409. package/dist/esm/version.js.map +0 -1
  410. package/dist/types/accounts/wordlists/czech.d.ts +0 -2
  411. package/dist/types/accounts/wordlists/czech.d.ts.map +0 -1
  412. package/dist/types/accounts/wordlists/english.d.ts +0 -2
  413. package/dist/types/accounts/wordlists/english.d.ts.map +0 -1
  414. package/dist/types/accounts/wordlists/french.d.ts +0 -2
  415. package/dist/types/accounts/wordlists/french.d.ts.map +0 -1
  416. package/dist/types/accounts/wordlists/italian.d.ts +0 -2
  417. package/dist/types/accounts/wordlists/italian.d.ts.map +0 -1
  418. package/dist/types/accounts/wordlists/japanese.d.ts +0 -2
  419. package/dist/types/accounts/wordlists/japanese.d.ts.map +0 -1
  420. package/dist/types/accounts/wordlists/korean.d.ts +0 -2
  421. package/dist/types/accounts/wordlists/korean.d.ts.map +0 -1
  422. package/dist/types/accounts/wordlists/simplifiedChinese.d.ts +0 -2
  423. package/dist/types/accounts/wordlists/simplifiedChinese.d.ts.map +0 -1
  424. package/dist/types/accounts/wordlists/spanish.d.ts +0 -2
  425. package/dist/types/accounts/wordlists/spanish.d.ts.map +0 -1
  426. package/dist/types/accounts/wordlists/traditionalChinese.d.ts +0 -2
  427. package/dist/types/accounts/wordlists/traditionalChinese.d.ts.map +0 -1
  428. package/dist/types/chains/optimism/fees.d.ts +0 -4
  429. package/dist/types/chains/optimism/fees.d.ts.map +0 -1
  430. package/dist/types/version.d.ts +0 -2
  431. package/dist/types/version.d.ts.map +0 -1
  432. package/src/accounts/wordlists/czech.ts +0 -1
  433. package/src/accounts/wordlists/english.ts +0 -1
  434. package/src/accounts/wordlists/french.ts +0 -1
  435. package/src/accounts/wordlists/italian.ts +0 -1
  436. package/src/accounts/wordlists/japanese.ts +0 -1
  437. package/src/accounts/wordlists/korean.ts +0 -1
  438. package/src/accounts/wordlists/simplifiedChinese.ts +0 -1
  439. package/src/accounts/wordlists/spanish.ts +0 -1
  440. package/src/accounts/wordlists/traditionalChinese.ts +0 -1
  441. package/src/chains/optimism/fees.ts +0 -5
  442. package/src/version.ts +0 -1
@@ -1,45 +1,60 @@
1
- import type { Abi, ExtractAbiError, ExtractAbiErrorNames } from 'abitype'
1
+ import type { Abi, ExtractAbiError } from 'abitype'
2
2
 
3
3
  import { solidityError, solidityPanic } from '../../constants/solidity.js'
4
4
  import {
5
5
  AbiDecodingZeroDataError,
6
6
  AbiErrorSignatureNotFoundError,
7
7
  } from '../../errors/abi.js'
8
- import type { AbiItem, GetErrorArgs } from '../../types/contract.js'
8
+ import type {
9
+ AbiItem,
10
+ ContractErrorArgs,
11
+ ContractErrorName,
12
+ } from '../../types/contract.js'
9
13
  import type { Hex } from '../../types/misc.js'
10
14
  import { slice } from '../data/slice.js'
11
15
  import { getFunctionSelector } from '../hash/getFunctionSelector.js'
12
16
 
17
+ import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
13
18
  import { decodeAbiParameters } from './decodeAbiParameters.js'
14
19
  import { formatAbiItem } from './formatAbiItem.js'
15
20
 
16
21
  export type DecodeErrorResultParameters<
17
- TAbi extends Abi | readonly unknown[] = Abi,
18
- > = { abi?: TAbi; data: Hex }
22
+ abi extends Abi | readonly unknown[] = Abi,
23
+ > = { abi?: abi | undefined; data: Hex }
19
24
 
20
25
  export type DecodeErrorResultReturnType<
21
- TAbi extends Abi | readonly unknown[] = Abi,
22
- _ErrorNames extends string = TAbi extends Abi
23
- ? Abi extends TAbi
24
- ? string
25
- : ExtractAbiErrorNames<TAbi>
26
- : string,
27
- > = {
28
- [TName in _ErrorNames]: {
29
- abiItem: TAbi extends Abi ? ExtractAbiError<TAbi, TName> : AbiItem
30
- args: GetErrorArgs<TAbi, TName>['args']
31
- errorName: TName
32
- }
33
- }[_ErrorNames]
26
+ abi extends Abi | readonly unknown[] = Abi,
27
+ ///
28
+ allErrorNames extends ContractErrorName<abi> = ContractErrorName<abi>,
29
+ > = IsNarrowable<abi, Abi> extends true
30
+ ? UnionEvaluate<
31
+ {
32
+ [errorName in allErrorNames]: {
33
+ abiItem: abi extends Abi
34
+ ? Abi extends abi
35
+ ? AbiItem
36
+ : ExtractAbiError<abi, errorName>
37
+ : AbiItem
38
+ args: ContractErrorArgs<abi, errorName>
39
+ errorName: errorName
40
+ }
41
+ }[allErrorNames]
42
+ >
43
+ : {
44
+ abiItem: AbiItem
45
+ args: readonly unknown[] | undefined
46
+ errorName: string
47
+ }
48
+
49
+ export function decodeErrorResult<const TAbi extends Abi | readonly unknown[]>(
50
+ parameters: DecodeErrorResultParameters<TAbi>,
51
+ ): DecodeErrorResultReturnType<TAbi> {
52
+ const { abi, data } = parameters as DecodeErrorResultParameters
34
53
 
35
- export function decodeErrorResult<const TAbi extends Abi | readonly unknown[]>({
36
- abi,
37
- data,
38
- }: DecodeErrorResultParameters<TAbi>): DecodeErrorResultReturnType<TAbi> {
39
54
  const signature = slice(data, 0, 4)
40
55
  if (signature === '0x') throw new AbiDecodingZeroDataError()
41
56
 
42
- const abi_ = [...((abi as Abi) || []), solidityError, solidityPanic]
57
+ const abi_ = [...(abi || []), solidityError, solidityPanic]
43
58
  const abiItem = abi_.find(
44
59
  (x) =>
45
60
  x.type === 'error' && signature === getFunctionSelector(formatAbiItem(x)),
@@ -50,9 +65,10 @@ export function decodeErrorResult<const TAbi extends Abi | readonly unknown[]>({
50
65
  })
51
66
  return {
52
67
  abiItem,
53
- args: ('inputs' in abiItem && abiItem.inputs && abiItem.inputs.length > 0
54
- ? decodeAbiParameters(abiItem.inputs, slice(data, 4))
55
- : undefined) as readonly unknown[] | undefined,
68
+ args:
69
+ 'inputs' in abiItem && abiItem.inputs && abiItem.inputs.length > 0
70
+ ? decodeAbiParameters(abiItem.inputs, slice(data, 4))
71
+ : undefined,
56
72
  errorName: (abiItem as { name: string }).name,
57
73
  } as DecodeErrorResultReturnType<TAbi>
58
74
  }
@@ -1,4 +1,4 @@
1
- import type { Abi, AbiParameter, ExtractAbiEventNames } from 'abitype'
1
+ import type { Abi, AbiParameter } from 'abitype'
2
2
 
3
3
  import {
4
4
  AbiDecodingDataSizeTooSmallError,
@@ -8,91 +8,95 @@ import {
8
8
  DecodeLogTopicsMismatch,
9
9
  } from '../../errors/abi.js'
10
10
  import type {
11
+ ContractEventArgsFromTopics,
12
+ ContractEventName,
11
13
  EventDefinition,
12
- GetEventArgsFromTopics,
13
- InferEventName,
14
14
  } from '../../types/contract.js'
15
15
  import type { Hex } from '../../types/misc.js'
16
- import type { Prettify } from '../../types/utils.js'
16
+ import type {
17
+ IsNarrowable,
18
+ Prettify,
19
+ UnionEvaluate,
20
+ } from '../../types/utils.js'
17
21
  import { getEventSelector } from '../hash/getEventSelector.js'
18
22
 
19
23
  import { decodeAbiParameters } from './decodeAbiParameters.js'
20
24
  import { formatAbiItem } from './formatAbiItem.js'
21
25
 
22
26
  export type DecodeEventLogParameters<
23
- TAbi extends Abi | readonly unknown[] = Abi,
24
- TEventName extends string | undefined = string,
25
- TTopics extends Hex[] = Hex[],
26
- TData extends Hex | undefined = undefined,
27
- TStrict extends boolean = true,
27
+ abi extends Abi | readonly unknown[] = Abi,
28
+ eventName extends ContractEventName<abi> | undefined = ContractEventName<abi>,
29
+ topics extends Hex[] = Hex[],
30
+ data extends Hex | undefined = undefined,
31
+ strict extends boolean = true,
28
32
  > = {
29
- abi: TAbi
30
- data?: TData
31
- eventName?: InferEventName<TAbi, TEventName>
32
- strict?: TStrict
33
- topics: [signature: Hex, ...args: TTopics] | []
33
+ abi: abi
34
+ data?: data
35
+ eventName?: eventName | ContractEventName<abi>
36
+ strict?: strict
37
+ topics: [signature: Hex, ...args: topics] | []
34
38
  }
35
39
 
36
40
  export type DecodeEventLogReturnType<
37
- TAbi extends Abi | readonly unknown[] = Abi,
38
- TEventName extends string | undefined = string,
39
- TTopics extends Hex[] = Hex[],
40
- TData extends Hex | undefined = undefined,
41
- TStrict extends boolean = true,
42
- _EventNames extends string = TAbi extends Abi
43
- ? Abi extends TAbi
44
- ? string
45
- : ExtractAbiEventNames<TAbi>
46
- : string,
47
- > = TEventName extends _EventNames[number]
48
- ? Prettify<
49
- {
50
- eventName: TEventName
51
- } & GetEventArgsFromTopics<TAbi, TEventName, TTopics, TData, TStrict>
52
- >
53
- : {
54
- [TName in _EventNames]: Prettify<
41
+ abi extends Abi | readonly unknown[] = Abi,
42
+ eventName extends ContractEventName<abi> | undefined = ContractEventName<abi>,
43
+ topics extends Hex[] = Hex[],
44
+ data extends Hex | undefined = undefined,
45
+ strict extends boolean = true,
46
+ ///
47
+ allEventNames extends ContractEventName<abi> = eventName extends ContractEventName<abi>
48
+ ? eventName
49
+ : ContractEventName<abi>,
50
+ > = IsNarrowable<abi, Abi> extends true
51
+ ? {
52
+ [name in allEventNames]: Prettify<
55
53
  {
56
- eventName: TName
57
- } & GetEventArgsFromTopics<TAbi, TName, TTopics, TData, TStrict>
54
+ eventName: name
55
+ } & UnionEvaluate<
56
+ ContractEventArgsFromTopics<abi, name, strict> extends infer allArgs
57
+ ? topics extends readonly []
58
+ ? data extends undefined
59
+ ? { args?: undefined }
60
+ : { args?: allArgs | undefined }
61
+ : { args: allArgs }
62
+ : never
63
+ >
58
64
  >
59
- }[_EventNames]
65
+ }[allEventNames]
66
+ : {
67
+ eventName: eventName
68
+ args: readonly unknown[] | undefined
69
+ }
60
70
 
61
71
  const docsPath = '/docs/contract/decodeEventLog'
62
72
 
63
73
  export function decodeEventLog<
64
- const TAbi extends Abi | readonly unknown[],
65
- TEventName extends string | undefined = undefined,
66
- TTopics extends Hex[] = Hex[],
67
- TData extends Hex | undefined = undefined,
68
- TStrict extends boolean = true,
69
- >({
70
- abi,
71
- data,
72
- strict: strict_,
73
- topics,
74
- }: DecodeEventLogParameters<
75
- TAbi,
76
- TEventName,
77
- TTopics,
78
- TData,
79
- TStrict
80
- >): DecodeEventLogReturnType<TAbi, TEventName, TTopics, TData, TStrict> {
74
+ const abi extends Abi | readonly unknown[],
75
+ eventName extends ContractEventName<abi> | undefined = undefined,
76
+ topics extends Hex[] = Hex[],
77
+ data extends Hex | undefined = undefined,
78
+ strict extends boolean = true,
79
+ >(
80
+ parameters: DecodeEventLogParameters<abi, eventName, topics, data, strict>,
81
+ ): DecodeEventLogReturnType<abi, eventName, topics, data, strict> {
82
+ const {
83
+ abi,
84
+ data,
85
+ strict: strict_,
86
+ topics,
87
+ } = parameters as DecodeEventLogParameters
88
+
81
89
  const strict = strict_ ?? true
82
90
  const [signature, ...argTopics] = topics
83
- if (!signature)
84
- throw new AbiEventSignatureEmptyTopicsError({
85
- docsPath,
86
- })
87
- const abiItem = (abi as Abi).find(
91
+ if (!signature) throw new AbiEventSignatureEmptyTopicsError({ docsPath })
92
+
93
+ const abiItem = abi.find(
88
94
  (x) =>
89
95
  x.type === 'event' &&
90
96
  signature === getEventSelector(formatAbiItem(x) as EventDefinition),
91
97
  )
92
98
  if (!(abiItem && 'name' in abiItem) || abiItem.type !== 'event')
93
- throw new AbiEventSignatureNotFoundError(signature, {
94
- docsPath,
95
- })
99
+ throw new AbiEventSignatureNotFoundError(signature, { docsPath })
96
100
 
97
101
  const { name, inputs } = abiItem
98
102
  const isUnnamed = inputs?.some((x) => !('name' in x && x.name))
@@ -153,13 +157,7 @@ export function decodeEventLog<
153
157
  return {
154
158
  eventName: name,
155
159
  args: Object.values(args).length > 0 ? args : undefined,
156
- } as unknown as DecodeEventLogReturnType<
157
- TAbi,
158
- TEventName,
159
- TTopics,
160
- TData,
161
- TStrict
162
- >
160
+ } as unknown as DecodeEventLogReturnType<abi, eventName, topics, data, strict>
163
161
  }
164
162
 
165
163
  function decodeTopic({ param, value }: { param: AbiParameter; value: Hex }) {
@@ -1,41 +1,49 @@
1
- import type { Abi, ExtractAbiFunctionNames } from 'abitype'
1
+ import type { Abi, AbiStateMutability } from 'abitype'
2
2
 
3
3
  import { AbiFunctionSignatureNotFoundError } from '../../errors/abi.js'
4
- import type { GetFunctionArgs } from '../../types/contract.js'
4
+ import type {
5
+ ContractFunctionArgs,
6
+ ContractFunctionName,
7
+ } from '../../types/contract.js'
5
8
  import type { Hex } from '../../types/misc.js'
6
9
  import { slice } from '../data/slice.js'
7
10
  import { getFunctionSelector } from '../hash/getFunctionSelector.js'
8
11
 
12
+ import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
9
13
  import { decodeAbiParameters } from './decodeAbiParameters.js'
10
14
  import { formatAbiItem } from './formatAbiItem.js'
11
15
 
12
16
  export type DecodeFunctionDataParameters<
13
- TAbi extends Abi | readonly unknown[] = Abi,
17
+ abi extends Abi | readonly unknown[] = Abi,
14
18
  > = {
15
- abi: TAbi
19
+ abi: abi
16
20
  data: Hex
17
21
  }
18
22
 
19
23
  export type DecodeFunctionDataReturnType<
20
- TAbi extends Abi | readonly unknown[] = Abi,
21
- _FunctionNames extends string = TAbi extends Abi
22
- ? Abi extends TAbi
23
- ? string
24
- : ExtractAbiFunctionNames<TAbi>
25
- : string,
26
- > = {
27
- [TName in _FunctionNames]: {
28
- args: GetFunctionArgs<TAbi, TName>['args']
29
- functionName: TName
30
- }
31
- }[_FunctionNames]
24
+ abi extends Abi | readonly unknown[] = Abi,
25
+ ///
26
+ allFunctionNames extends ContractFunctionName<abi> = ContractFunctionName<abi>,
27
+ > = IsNarrowable<abi, Abi> extends true
28
+ ? UnionEvaluate<
29
+ {
30
+ [functionName in allFunctionNames]: {
31
+ args: ContractFunctionArgs<abi, AbiStateMutability, functionName>
32
+ functionName: functionName
33
+ }
34
+ }[allFunctionNames]
35
+ >
36
+ : {
37
+ args: readonly unknown[] | undefined
38
+ functionName: string
39
+ }
32
40
 
33
- export function decodeFunctionData<TAbi extends Abi | readonly unknown[]>({
34
- abi,
35
- data,
36
- }: DecodeFunctionDataParameters<TAbi>) {
41
+ export function decodeFunctionData<const abi extends Abi | readonly unknown[]>(
42
+ parameters: DecodeFunctionDataParameters<abi>,
43
+ ) {
44
+ const { abi, data } = parameters as DecodeFunctionDataParameters
37
45
  const signature = slice(data, 0, 4)
38
- const description = (abi as Abi).find(
46
+ const description = abi.find(
39
47
  (x) =>
40
48
  x.type === 'function' &&
41
49
  signature === getFunctionSelector(formatAbiItem(x)),
@@ -51,5 +59,5 @@ export function decodeFunctionData<TAbi extends Abi | readonly unknown[]>({
51
59
  description.inputs.length > 0
52
60
  ? decodeAbiParameters(description.inputs, slice(data, 4))
53
61
  : undefined) as readonly unknown[] | undefined,
54
- } as DecodeFunctionDataReturnType<TAbi>
62
+ } as DecodeFunctionDataReturnType<abi>
55
63
  }
@@ -1,67 +1,143 @@
1
- import type { Abi, ExtractAbiFunctionNames } from 'abitype'
1
+ import type { Abi, AbiStateMutability, ExtractAbiFunctions } from 'abitype'
2
2
 
3
3
  import {
4
4
  AbiFunctionNotFoundError,
5
5
  AbiFunctionOutputsNotFoundError,
6
6
  } from '../../errors/abi.js'
7
7
  import type {
8
- AbiItem,
9
- ContractFunctionResult,
10
- GetFunctionArgs,
11
- InferFunctionName,
8
+ ContractFunctionArgs,
9
+ ContractFunctionName,
10
+ ContractFunctionReturnType,
11
+ Widen,
12
12
  } from '../../types/contract.js'
13
13
  import type { Hex } from '../../types/misc.js'
14
14
 
15
+ import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
15
16
  import { decodeAbiParameters } from './decodeAbiParameters.js'
16
- import { type GetAbiItemParameters, getAbiItem } from './getAbiItem.js'
17
+ import { getAbiItem } from './getAbiItem.js'
17
18
 
18
19
  const docsPath = '/docs/contract/decodeFunctionResult'
19
20
 
20
21
  export type DecodeFunctionResultParameters<
21
- TAbi extends Abi | readonly unknown[] = Abi,
22
- TFunctionName extends string | undefined = string,
23
- _FunctionName = InferFunctionName<TAbi, TFunctionName>,
22
+ abi extends Abi | readonly unknown[] = Abi,
23
+ functionName extends
24
+ | ContractFunctionName<abi>
25
+ | undefined = ContractFunctionName<abi>,
26
+ args extends ContractFunctionArgs<
27
+ abi,
28
+ AbiStateMutability,
29
+ functionName extends ContractFunctionName<abi>
30
+ ? functionName
31
+ : ContractFunctionName<abi>
32
+ > = ContractFunctionArgs<
33
+ abi,
34
+ AbiStateMutability,
35
+ functionName extends ContractFunctionName<abi>
36
+ ? functionName
37
+ : ContractFunctionName<abi>
38
+ >,
39
+ ///
40
+ hasFunctions = abi extends Abi
41
+ ? Abi extends abi
42
+ ? true
43
+ : [ExtractAbiFunctions<abi>] extends [never]
44
+ ? false
45
+ : true
46
+ : true,
47
+ allArgs = ContractFunctionArgs<
48
+ abi,
49
+ AbiStateMutability,
50
+ functionName extends ContractFunctionName<abi>
51
+ ? functionName
52
+ : ContractFunctionName<abi>
53
+ >,
54
+ allFunctionNames = ContractFunctionName<abi>,
24
55
  > = {
25
- functionName?: _FunctionName
56
+ abi: abi
26
57
  data: Hex
27
- } & (TFunctionName extends string
28
- ? { abi: TAbi } & Partial<GetFunctionArgs<TAbi, TFunctionName>>
29
- : _FunctionName extends string
30
- ? { abi: [TAbi[number]] } & Partial<GetFunctionArgs<TAbi, _FunctionName>>
31
- : never)
58
+ } & UnionEvaluate<
59
+ IsNarrowable<abi, Abi> extends true
60
+ ? abi['length'] extends 1
61
+ ? { functionName?: functionName | allFunctionNames }
62
+ : { functionName: functionName | allFunctionNames }
63
+ : { functionName?: functionName | allFunctionNames }
64
+ > &
65
+ UnionEvaluate<
66
+ readonly [] extends allArgs
67
+ ? {
68
+ args?:
69
+ | allArgs // show all options
70
+ // infer value, widen inferred value of `args` conditionally to match `allArgs`
71
+ | (abi extends Abi
72
+ ? args extends allArgs
73
+ ? Widen<args>
74
+ : never
75
+ : never)
76
+ | undefined
77
+ }
78
+ : {
79
+ args?:
80
+ | allArgs // show all options
81
+ | (Widen<args> & (args extends allArgs ? unknown : never)) // infer value, widen inferred value of `args` match `allArgs` (e.g. avoid union `args: readonly [123n] | readonly [bigint]`)
82
+ | undefined
83
+ }
84
+ > &
85
+ (hasFunctions extends true ? unknown : never)
32
86
 
33
87
  export type DecodeFunctionResultReturnType<
34
- TAbi extends Abi | readonly unknown[] = Abi,
35
- TFunctionName extends string | undefined = string,
36
- _FunctionName extends string = TAbi extends Abi
37
- ? Abi extends TAbi
38
- ? string
39
- : ExtractAbiFunctionNames<TAbi>[number]
40
- : string,
41
- > = TFunctionName extends string
42
- ? ContractFunctionResult<TAbi, TFunctionName>
43
- : ContractFunctionResult<TAbi, _FunctionName>
88
+ abi extends Abi | readonly unknown[] = Abi,
89
+ functionName extends
90
+ | ContractFunctionName<abi>
91
+ | undefined = ContractFunctionName<abi>,
92
+ args extends ContractFunctionArgs<
93
+ abi,
94
+ AbiStateMutability,
95
+ functionName extends ContractFunctionName<abi>
96
+ ? functionName
97
+ : ContractFunctionName<abi>
98
+ > = ContractFunctionArgs<
99
+ abi,
100
+ AbiStateMutability,
101
+ functionName extends ContractFunctionName<abi>
102
+ ? functionName
103
+ : ContractFunctionName<abi>
104
+ >,
105
+ > = ContractFunctionReturnType<
106
+ abi,
107
+ AbiStateMutability,
108
+ functionName extends ContractFunctionName<abi>
109
+ ? functionName
110
+ : ContractFunctionName<abi>,
111
+ args
112
+ >
44
113
 
45
114
  export function decodeFunctionResult<
46
- const TAbi extends Abi | readonly unknown[],
47
- TFunctionName extends string | undefined = undefined,
48
- >({
49
- abi,
50
- args,
51
- functionName,
52
- data,
53
- }: DecodeFunctionResultParameters<
54
- TAbi,
55
- TFunctionName
56
- >): DecodeFunctionResultReturnType<TAbi, TFunctionName> {
57
- let abiItem = abi[0] as AbiItem
115
+ const abi extends Abi | readonly unknown[],
116
+ functionName extends ContractFunctionName<abi> | undefined = undefined,
117
+ args extends ContractFunctionArgs<
118
+ abi,
119
+ AbiStateMutability,
120
+ functionName extends ContractFunctionName<abi>
121
+ ? functionName
122
+ : ContractFunctionName<abi>
123
+ > = ContractFunctionArgs<
124
+ abi,
125
+ AbiStateMutability,
126
+ functionName extends ContractFunctionName<abi>
127
+ ? functionName
128
+ : ContractFunctionName<abi>
129
+ >,
130
+ >(
131
+ parameters: DecodeFunctionResultParameters<abi, functionName, args>,
132
+ ): DecodeFunctionResultReturnType<abi, functionName, args> {
133
+ const { abi, args, functionName, data } =
134
+ parameters as DecodeFunctionResultParameters
135
+
136
+ let abiItem = abi[0]
58
137
  if (functionName) {
59
- abiItem = getAbiItem({
60
- abi,
61
- args,
62
- name: functionName,
63
- } as GetAbiItemParameters)
64
- if (!abiItem) throw new AbiFunctionNotFoundError(functionName, { docsPath })
138
+ const item = getAbiItem({ abi, args, name: functionName })
139
+ if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })
140
+ abiItem = item
65
141
  }
66
142
 
67
143
  if (abiItem.type !== 'function')
@@ -70,7 +146,9 @@ export function decodeFunctionResult<
70
146
  throw new AbiFunctionOutputsNotFoundError(abiItem.name, { docsPath })
71
147
 
72
148
  const values = decodeAbiParameters(abiItem.outputs, data)
73
- if (values && values.length > 1) return values as any
74
- if (values && values.length === 1) return values[0] as any
75
- return undefined as any
149
+ if (values && values.length > 1)
150
+ return values as DecodeFunctionResultReturnType<abi, functionName, args>
151
+ if (values && values.length === 1)
152
+ return values[0] as DecodeFunctionResultReturnType<abi, functionName, args>
153
+ return undefined as DecodeFunctionResultReturnType<abi, functionName, args>
76
154
  }
@@ -4,40 +4,51 @@ import {
4
4
  AbiConstructorNotFoundError,
5
5
  AbiConstructorParamsNotFoundError,
6
6
  } from '../../errors/abi.js'
7
- import type { GetConstructorArgs } from '../../types/contract.js'
7
+ import type { ContractConstructorArgs } from '../../types/contract.js'
8
8
  import type { Hex } from '../../types/misc.js'
9
9
  import { concatHex } from '../data/concat.js'
10
10
 
11
+ import type { UnionEvaluate } from '../../types/utils.js'
11
12
  import { encodeAbiParameters } from './encodeAbiParameters.js'
12
13
 
13
14
  const docsPath = '/docs/contract/encodeDeployData'
14
15
 
15
16
  export type EncodeDeployDataParameters<
16
- TAbi extends Abi | readonly unknown[] = Abi,
17
+ abi extends Abi | readonly unknown[] = Abi,
18
+ ///
19
+ hasConstructor = abi extends Abi
20
+ ? Abi extends abi
21
+ ? true
22
+ : [Extract<abi[number], { type: 'constructor' }>] extends [never]
23
+ ? false
24
+ : true
25
+ : true,
26
+ allArgs = ContractConstructorArgs<abi>,
17
27
  > = {
18
- abi: TAbi
28
+ abi: abi
19
29
  bytecode: Hex
20
- } & GetConstructorArgs<TAbi>
30
+ } & UnionEvaluate<
31
+ readonly [] extends allArgs
32
+ ? { args?: allArgs | undefined }
33
+ : { args: allArgs }
34
+ > &
35
+ (hasConstructor extends true ? unknown : never)
21
36
 
22
- export function encodeDeployData<const TAbi extends Abi | readonly unknown[]>({
23
- abi,
24
- args,
25
- bytecode,
26
- }: EncodeDeployDataParameters<TAbi>) {
37
+ export type EncodeDeployDataReturnType = Hex
38
+
39
+ export function encodeDeployData<const abi extends Abi | readonly unknown[]>(
40
+ parameters: EncodeDeployDataParameters<abi>,
41
+ ): EncodeDeployDataReturnType {
42
+ const { abi, args, bytecode } = parameters as EncodeDeployDataParameters
27
43
  if (!args || args.length === 0) return bytecode
28
44
 
29
- const description = (abi as Abi).find(
30
- (x) => 'type' in x && x.type === 'constructor',
31
- )
45
+ const description = abi.find((x) => 'type' in x && x.type === 'constructor')
32
46
  if (!description) throw new AbiConstructorNotFoundError({ docsPath })
33
47
  if (!('inputs' in description))
34
48
  throw new AbiConstructorParamsNotFoundError({ docsPath })
35
49
  if (!description.inputs || description.inputs.length === 0)
36
50
  throw new AbiConstructorParamsNotFoundError({ docsPath })
37
51
 
38
- const data = encodeAbiParameters(
39
- description.inputs,
40
- args as readonly unknown[],
41
- )
52
+ const data = encodeAbiParameters(description.inputs, args)
42
53
  return concatHex([bytecode, data!])
43
54
  }