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,48 +1,69 @@
1
- import type { Abi } from 'abitype'
1
+ import type { Abi, ExtractAbiErrors } from 'abitype'
2
2
 
3
3
  import {
4
4
  AbiErrorInputsNotFoundError,
5
5
  AbiErrorNotFoundError,
6
6
  } from '../../errors/abi.js'
7
7
  import type {
8
- AbiItem,
9
- GetErrorArgs,
10
- InferErrorName,
8
+ ContractErrorArgs,
9
+ ContractErrorName,
11
10
  } from '../../types/contract.js'
12
11
  import type { Hex } from '../../types/misc.js'
13
12
  import { concatHex } from '../data/concat.js'
14
13
  import { getFunctionSelector } from '../hash/getFunctionSelector.js'
15
14
 
15
+ import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
16
16
  import { encodeAbiParameters } from './encodeAbiParameters.js'
17
17
  import { formatAbiItem } from './formatAbiItem.js'
18
- import { type GetAbiItemParameters, getAbiItem } from './getAbiItem.js'
18
+ import { getAbiItem } from './getAbiItem.js'
19
19
 
20
20
  const docsPath = '/docs/contract/encodeErrorResult'
21
21
 
22
22
  export type EncodeErrorResultParameters<
23
- TAbi extends Abi | readonly unknown[] = Abi,
24
- TErrorName extends string | undefined = string,
25
- _ErrorName = InferErrorName<TAbi, TErrorName>,
23
+ abi extends Abi | readonly unknown[] = Abi,
24
+ errorName extends ContractErrorName<abi> | undefined = ContractErrorName<abi>,
25
+ ///
26
+ hasErrors = abi extends Abi
27
+ ? Abi extends abi
28
+ ? true
29
+ : [ExtractAbiErrors<abi>] extends [never]
30
+ ? false
31
+ : true
32
+ : true,
33
+ allArgs = ContractErrorArgs<
34
+ abi,
35
+ errorName extends ContractErrorName<abi>
36
+ ? errorName
37
+ : ContractErrorName<abi>
38
+ >,
39
+ allErrorNames = ContractErrorName<abi>,
26
40
  > = {
27
- errorName?: _ErrorName
28
- } & (TErrorName extends string
29
- ? { abi: TAbi } & GetErrorArgs<TAbi, TErrorName>
30
- : _ErrorName extends string
31
- ? { abi: [TAbi[number]] } & GetErrorArgs<TAbi, _ErrorName>
32
- : never)
41
+ abi: abi
42
+ args?: allArgs | undefined
43
+ } & UnionEvaluate<
44
+ IsNarrowable<abi, Abi> extends true
45
+ ? abi['length'] extends 1
46
+ ? { errorName?: errorName | allErrorNames }
47
+ : { errorName: errorName | allErrorNames }
48
+ : { errorName?: errorName | allErrorNames }
49
+ > &
50
+ (hasErrors extends true ? unknown : never)
51
+
52
+ export type EncodeErrorResultReturnType = Hex
33
53
 
34
54
  export function encodeErrorResult<
35
- const TAbi extends Abi | readonly unknown[],
36
- TErrorName extends string | undefined = undefined,
37
- >({ abi, errorName, args }: EncodeErrorResultParameters<TAbi, TErrorName>) {
38
- let abiItem = abi[0] as AbiItem
55
+ const abi extends Abi | readonly unknown[],
56
+ errorName extends ContractErrorName<abi> | undefined = undefined,
57
+ >(
58
+ parameters: EncodeErrorResultParameters<abi, errorName>,
59
+ ): EncodeErrorResultReturnType {
60
+ const { abi, errorName, args } = parameters as EncodeErrorResultParameters
61
+
62
+ let abiItem = abi[0]
39
63
  if (errorName) {
40
- abiItem = getAbiItem({
41
- abi,
42
- args,
43
- name: errorName,
44
- } as GetAbiItemParameters)
45
- if (!abiItem) throw new AbiErrorNotFoundError(errorName, { docsPath })
64
+ const item = getAbiItem({ abi, args, name: errorName })
65
+ if (!item) throw new AbiErrorNotFoundError(errorName, { docsPath })
66
+ abiItem = item
46
67
  }
47
68
 
48
69
  if (abiItem.type !== 'error')
@@ -52,10 +73,10 @@ export function encodeErrorResult<
52
73
  const signature = getFunctionSelector(definition)
53
74
 
54
75
  let data: Hex = '0x'
55
- if (args && (args as readonly unknown[]).length > 0) {
76
+ if (args && args.length > 0) {
56
77
  if (!abiItem.inputs)
57
78
  throw new AbiErrorInputsNotFoundError(abiItem.name, { docsPath })
58
- data = encodeAbiParameters(abiItem.inputs, args as readonly unknown[])
79
+ data = encodeAbiParameters(abiItem.inputs, args)
59
80
  }
60
81
  return concatHex([signature, data])
61
82
  }
@@ -1,55 +1,74 @@
1
- import type { Abi, AbiParameter, AbiParameterToPrimitiveType } from 'abitype'
1
+ import type {
2
+ Abi,
3
+ AbiParameter,
4
+ AbiParameterToPrimitiveType,
5
+ ExtractAbiEvents,
6
+ } from 'abitype'
2
7
 
3
8
  import { AbiEventNotFoundError } from '../../errors/abi.js'
4
9
  import { FilterTypeNotSupportedError } from '../../errors/log.js'
5
10
  import type {
6
- AbiItem,
11
+ ContractEventArgs,
12
+ ContractEventName,
7
13
  EventDefinition,
8
- GetEventArgs,
9
- InferEventName,
10
14
  } from '../../types/contract.js'
11
15
  import type { Hex } from '../../types/misc.js'
12
16
  import { toBytes } from '../encoding/toBytes.js'
13
17
  import { getEventSelector } from '../hash/getEventSelector.js'
14
18
  import { keccak256 } from '../hash/keccak256.js'
15
19
 
20
+ import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
16
21
  import { encodeAbiParameters } from './encodeAbiParameters.js'
17
22
  import { formatAbiItem } from './formatAbiItem.js'
18
- import { type GetAbiItemParameters, getAbiItem } from './getAbiItem.js'
23
+ import { getAbiItem } from './getAbiItem.js'
24
+
25
+ const docsPath = '/docs/contract/encodeEventTopics'
19
26
 
20
27
  export type EncodeEventTopicsParameters<
21
- TAbi extends Abi | readonly unknown[] = Abi,
22
- TEventName extends string | undefined = string,
23
- _EventName = InferEventName<TAbi, TEventName>,
28
+ abi extends Abi | readonly unknown[] = Abi,
29
+ eventName extends ContractEventName<abi> | undefined = ContractEventName<abi>,
30
+ ///
31
+ hasEvents = abi extends Abi
32
+ ? Abi extends abi
33
+ ? true
34
+ : [ExtractAbiEvents<abi>] extends [never]
35
+ ? false
36
+ : true
37
+ : true,
38
+ allArgs = ContractEventArgs<
39
+ abi,
40
+ eventName extends ContractEventName<abi>
41
+ ? eventName
42
+ : ContractEventName<abi>
43
+ >,
44
+ allErrorNames = ContractEventName<abi>,
24
45
  > = {
25
- eventName?: _EventName
26
- } & (TEventName extends string
27
- ? { abi: TAbi; args?: GetEventArgs<TAbi, TEventName> }
28
- : _EventName extends string
29
- ? { abi: [TAbi[number]]; args?: GetEventArgs<TAbi, _EventName> }
30
- : never)
46
+ abi: abi
47
+ args?: allArgs | undefined
48
+ } & UnionEvaluate<
49
+ IsNarrowable<abi, Abi> extends true
50
+ ? abi['length'] extends 1
51
+ ? { eventName?: eventName | allErrorNames }
52
+ : { eventName: eventName | allErrorNames }
53
+ : { eventName?: eventName | allErrorNames }
54
+ > &
55
+ (hasEvents extends true ? unknown : never)
31
56
 
32
57
  export function encodeEventTopics<
33
- const TAbi extends Abi | readonly unknown[],
34
- TEventName extends string | undefined = undefined,
35
- >({ abi, eventName, args }: EncodeEventTopicsParameters<TAbi, TEventName>) {
36
- let abiItem = abi[0] as AbiItem
58
+ const abi extends Abi | readonly unknown[],
59
+ eventName extends ContractEventName<abi> | undefined = undefined,
60
+ >(parameters: EncodeEventTopicsParameters<abi, eventName>) {
61
+ const { abi, eventName, args } = parameters as EncodeEventTopicsParameters
62
+
63
+ let abiItem = abi[0]
37
64
  if (eventName) {
38
- abiItem = getAbiItem({
39
- abi,
40
- args,
41
- name: eventName,
42
- } as GetAbiItemParameters)
43
- if (!abiItem)
44
- throw new AbiEventNotFoundError(eventName, {
45
- docsPath: '/docs/contract/encodeEventTopics',
46
- })
65
+ const item = getAbiItem({ abi, name: eventName })
66
+ if (!item) throw new AbiEventNotFoundError(eventName, { docsPath })
67
+ abiItem = item
47
68
  }
48
69
 
49
70
  if (abiItem.type !== 'event')
50
- throw new AbiEventNotFoundError(undefined, {
51
- docsPath: '/docs/contract/encodeEventTopics',
52
- })
71
+ throw new AbiEventNotFoundError(undefined, { docsPath })
53
72
 
54
73
  const definition = formatAbiItem(abiItem)
55
74
  const signature = getEventSelector(definition as EventDefinition)
@@ -1,61 +1,87 @@
1
- import type { Abi } from 'abitype'
1
+ import type { Abi, AbiStateMutability, ExtractAbiFunctions } from 'abitype'
2
2
 
3
3
  import { AbiFunctionNotFoundError } from '../../errors/abi.js'
4
4
  import type {
5
- AbiItem,
6
- GetFunctionArgs,
7
- InferFunctionName,
5
+ ContractFunctionArgs,
6
+ ContractFunctionName,
8
7
  } from '../../types/contract.js'
9
8
  import { concatHex } from '../data/concat.js'
10
9
  import { getFunctionSelector } from '../hash/getFunctionSelector.js'
11
10
 
11
+ import type { Hex } from '../../types/misc.js'
12
+ import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
12
13
  import { encodeAbiParameters } from './encodeAbiParameters.js'
13
14
  import { formatAbiItem } from './formatAbiItem.js'
14
- import { type GetAbiItemParameters, getAbiItem } from './getAbiItem.js'
15
+ import { getAbiItem } from './getAbiItem.js'
16
+
17
+ const docsPath = '/docs/contract/encodeFunctionData'
15
18
 
16
19
  export type EncodeFunctionDataParameters<
17
- TAbi extends Abi | readonly unknown[] = Abi,
18
- TFunctionName extends string | undefined = string,
19
- _FunctionName = InferFunctionName<TAbi, TFunctionName>,
20
+ abi extends Abi | readonly unknown[] = Abi,
21
+ functionName extends
22
+ | ContractFunctionName<abi>
23
+ | undefined = ContractFunctionName<abi>,
24
+ ///
25
+ hasFunctions = abi extends Abi
26
+ ? Abi extends abi
27
+ ? true
28
+ : [ExtractAbiFunctions<abi>] extends [never]
29
+ ? false
30
+ : true
31
+ : true,
32
+ allArgs = ContractFunctionArgs<
33
+ abi,
34
+ AbiStateMutability,
35
+ functionName extends ContractFunctionName<abi>
36
+ ? functionName
37
+ : ContractFunctionName<abi>
38
+ >,
39
+ allFunctionNames = ContractFunctionName<abi>,
20
40
  > = {
21
- functionName?: _FunctionName
22
- } & (TFunctionName extends string
23
- ? { abi: TAbi } & GetFunctionArgs<TAbi, TFunctionName>
24
- : _FunctionName extends string
25
- ? { abi: [TAbi[number]] } & GetFunctionArgs<TAbi, _FunctionName>
26
- : never)
41
+ abi: abi
42
+ } & UnionEvaluate<
43
+ IsNarrowable<abi, Abi> extends true
44
+ ? abi['length'] extends 1
45
+ ? { functionName?: functionName | allFunctionNames }
46
+ : { functionName: functionName | allFunctionNames }
47
+ : { functionName?: functionName | allFunctionNames }
48
+ > &
49
+ UnionEvaluate<
50
+ readonly [] extends allArgs
51
+ ? { args?: allArgs | undefined }
52
+ : { args: allArgs }
53
+ > &
54
+ (hasFunctions extends true ? unknown : never)
55
+
56
+ export type EncodeFunctionDataReturnType = Hex
27
57
 
28
58
  export function encodeFunctionData<
29
- const TAbi extends Abi | readonly unknown[],
30
- TFunctionName extends string | undefined = undefined,
31
- >({
32
- abi,
33
- args,
34
- functionName,
35
- }: EncodeFunctionDataParameters<TAbi, TFunctionName>) {
36
- let abiItem = abi[0] as AbiItem
59
+ const abi extends Abi | readonly unknown[],
60
+ functionName extends ContractFunctionName<abi> | undefined = undefined,
61
+ >(
62
+ parameters: EncodeFunctionDataParameters<abi, functionName>,
63
+ ): EncodeFunctionDataReturnType {
64
+ const { abi, args, functionName } = parameters as EncodeFunctionDataParameters
65
+
66
+ let abiItem = abi[0]
37
67
  if (functionName) {
38
- abiItem = getAbiItem({
68
+ const item = getAbiItem({
39
69
  abi,
40
70
  args,
41
71
  name: functionName,
42
- } as GetAbiItemParameters)
43
- if (!abiItem)
44
- throw new AbiFunctionNotFoundError(functionName, {
45
- docsPath: '/docs/contract/encodeFunctionData',
46
- })
72
+ })
73
+ if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })
74
+ abiItem = item
47
75
  }
48
76
 
49
77
  if (abiItem.type !== 'function')
50
- throw new AbiFunctionNotFoundError(undefined, {
51
- docsPath: '/docs/contract/encodeFunctionData',
52
- })
78
+ throw new AbiFunctionNotFoundError(undefined, { docsPath })
53
79
 
54
80
  const definition = formatAbiItem(abiItem)
55
81
  const signature = getFunctionSelector(definition)
56
82
  const data =
57
83
  'inputs' in abiItem && abiItem.inputs
58
- ? encodeAbiParameters(abiItem.inputs, (args ?? []) as readonly unknown[])
84
+ ? encodeAbiParameters(abiItem.inputs, args ?? [])
59
85
  : undefined
60
86
  return concatHex([signature, data ?? '0x'])
61
87
  }
@@ -1,59 +1,76 @@
1
- import type { Abi } 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
- InferFunctionName,
8
+ ContractFunctionName,
9
+ ContractFunctionReturnType,
11
10
  } from '../../types/contract.js'
12
11
 
12
+ import type { Hex } from '../../types/misc.js'
13
+ import type { IsNarrowable, UnionEvaluate } from '../../types/utils.js'
13
14
  import { encodeAbiParameters } from './encodeAbiParameters.js'
14
- import { type GetAbiItemParameters, getAbiItem } from './getAbiItem.js'
15
+ import { getAbiItem } from './getAbiItem.js'
15
16
 
16
17
  const docsPath = '/docs/contract/encodeFunctionResult'
17
18
 
18
19
  export type EncodeFunctionResultParameters<
19
- TAbi extends Abi | readonly unknown[] = Abi,
20
- TFunctionName extends string | undefined = string,
21
- _FunctionName = InferFunctionName<TAbi, TFunctionName>,
20
+ abi extends Abi | readonly unknown[] = Abi,
21
+ functionName extends
22
+ | ContractFunctionName<abi>
23
+ | undefined = ContractFunctionName<abi>,
24
+ ///
25
+ hasFunctions = abi extends Abi
26
+ ? Abi extends abi
27
+ ? true
28
+ : [ExtractAbiFunctions<abi>] extends [never]
29
+ ? false
30
+ : true
31
+ : true,
32
+ allFunctionNames = ContractFunctionName<abi>,
22
33
  > = {
23
- functionName?: _FunctionName
24
- } & (TFunctionName extends string
25
- ? { abi: TAbi; result?: ContractFunctionResult<TAbi, TFunctionName> }
26
- : _FunctionName extends string
27
- ? {
28
- abi: [TAbi[number]]
29
- result?: ContractFunctionResult<TAbi, _FunctionName>
30
- }
31
- : never)
34
+ abi: abi
35
+ result?:
36
+ | ContractFunctionReturnType<
37
+ abi,
38
+ AbiStateMutability,
39
+ functionName extends ContractFunctionName<abi>
40
+ ? functionName
41
+ : ContractFunctionName<abi>,
42
+ never // allow all args. required for overloads to work.
43
+ >
44
+ | undefined
45
+ } & UnionEvaluate<
46
+ IsNarrowable<abi, Abi> extends true
47
+ ? abi['length'] extends 1
48
+ ? { functionName?: functionName | allFunctionNames }
49
+ : { functionName: functionName | allFunctionNames }
50
+ : { functionName?: functionName | allFunctionNames }
51
+ > &
52
+ (hasFunctions extends true ? unknown : never)
53
+
54
+ export type EncodeFunctionResultReturnType = Hex
32
55
 
33
56
  export function encodeFunctionResult<
34
- const TAbi extends Abi | readonly unknown[],
35
- TFunctionName extends string | undefined = undefined,
36
- >({
37
- abi,
38
- functionName,
39
- result,
40
- }: EncodeFunctionResultParameters<TAbi, TFunctionName>) {
41
- let abiItem = abi[0] as AbiItem
57
+ const abi extends Abi | readonly unknown[],
58
+ functionName extends ContractFunctionName<abi> | undefined = undefined,
59
+ >(
60
+ parameters: EncodeFunctionResultParameters<abi, functionName>,
61
+ ): EncodeFunctionResultReturnType {
62
+ const { abi, functionName, result } =
63
+ parameters as EncodeFunctionResultParameters
64
+
65
+ let abiItem = abi[0]
42
66
  if (functionName) {
43
- abiItem = getAbiItem({
44
- abi,
45
- name: functionName,
46
- } as GetAbiItemParameters)
47
- if (!abiItem)
48
- throw new AbiFunctionNotFoundError(functionName, {
49
- docsPath: '/docs/contract/encodeFunctionResult',
50
- })
67
+ const item = getAbiItem({ abi, name: functionName })
68
+ if (!item) throw new AbiFunctionNotFoundError(functionName, { docsPath })
69
+ abiItem = item
51
70
  }
52
71
 
53
72
  if (abiItem.type !== 'function')
54
- throw new AbiFunctionNotFoundError(undefined, {
55
- docsPath: '/docs/contract/encodeFunctionResult',
56
- })
73
+ throw new AbiFunctionNotFoundError(undefined, { docsPath })
57
74
 
58
75
  if (!abiItem.outputs)
59
76
  throw new AbiFunctionOutputsNotFoundError(abiItem.name, { docsPath })
@@ -1,59 +1,95 @@
1
1
  import type { Abi, AbiParameter, Address } from 'abitype'
2
2
 
3
- import type { GetFunctionArgs, InferItemName } from '../../types/contract.js'
3
+ import type {
4
+ AbiItem,
5
+ AbiItemArgs,
6
+ AbiItemName,
7
+ ExtractAbiItemForArgs,
8
+ Widen,
9
+ } from '../../types/contract.js'
10
+ import type { UnionEvaluate } from '../../types/utils.js'
4
11
  import { isAddress } from '../address/isAddress.js'
5
12
 
6
13
  export type GetAbiItemParameters<
7
- TAbi extends Abi | readonly unknown[] = Abi,
8
- TItemName extends string = string,
14
+ abi extends Abi | readonly unknown[] = Abi,
15
+ name extends AbiItemName<abi> = AbiItemName<abi>,
16
+ args extends AbiItemArgs<abi, name> | undefined = AbiItemArgs<abi, name>,
17
+ ///
18
+ allArgs = AbiItemArgs<abi, name>,
19
+ allNames = AbiItemName<abi>,
9
20
  > = {
10
- abi: TAbi
11
- name: InferItemName<TAbi, TItemName>
12
- } & Partial<GetFunctionArgs<TAbi, TItemName>>
21
+ abi: abi
22
+ name:
23
+ | allNames // show all options
24
+ | (name extends allNames ? name : never) // infer value
25
+ } & UnionEvaluate<
26
+ readonly [] extends allArgs
27
+ ? {
28
+ args?:
29
+ | allArgs // show all options
30
+ // infer value, widen inferred value of `args` conditionally to match `allArgs`
31
+ | (abi extends Abi
32
+ ? args extends allArgs
33
+ ? Widen<args>
34
+ : never
35
+ : never)
36
+ | undefined
37
+ }
38
+ : {
39
+ args?:
40
+ | allArgs // show all options
41
+ | (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]`)
42
+ | undefined
43
+ }
44
+ >
13
45
 
14
46
  export type GetAbiItemReturnType<
15
- TAbi extends Abi | readonly unknown[] = Abi,
16
- TItemName extends string = string,
17
- > = Extract<
18
- TAbi[number],
19
- {
20
- name: TItemName
21
- }
22
- >
47
+ abi extends Abi | readonly unknown[] = Abi,
48
+ name extends AbiItemName<abi> = AbiItemName<abi>,
49
+ args extends AbiItemArgs<abi, name> | undefined = AbiItemArgs<abi, name>,
50
+ > = abi extends Abi
51
+ ? Abi extends abi
52
+ ? AbiItem | undefined
53
+ : ExtractAbiItemForArgs<
54
+ abi,
55
+ name,
56
+ args extends AbiItemArgs<abi, name> ? args : AbiItemArgs<abi, name>
57
+ >
58
+ : AbiItem | undefined
23
59
 
24
60
  export function getAbiItem<
25
- const TAbi extends Abi | readonly unknown[],
26
- TItemName extends string,
27
- >({
28
- abi,
29
- args = [],
30
- name,
31
- }: GetAbiItemParameters<TAbi, TItemName>): GetAbiItemReturnType<
32
- TAbi,
33
- TItemName
34
- > {
35
- const abiItems = (abi as Abi).filter((x) => 'name' in x && x.name === name)
61
+ const abi extends Abi | readonly unknown[],
62
+ name extends AbiItemName<abi>,
63
+ args extends AbiItemArgs<abi, name> | undefined = undefined,
64
+ >(
65
+ parameters: GetAbiItemParameters<abi, name, args>,
66
+ ): GetAbiItemReturnType<abi, name, args> {
67
+ const { abi, args = [], name } = parameters as unknown as GetAbiItemParameters
68
+ const abiItems = abi.filter((x) => 'name' in x && x.name === name)
36
69
 
37
- if (abiItems.length === 0) return undefined as any
38
- if (abiItems.length === 1) return abiItems[0] as any
70
+ if (abiItems.length === 0)
71
+ return undefined as GetAbiItemReturnType<abi, name, args>
72
+ if (abiItems.length === 1)
73
+ return abiItems[0] as GetAbiItemReturnType<abi, name, args>
39
74
 
40
75
  for (const abiItem of abiItems) {
41
76
  if (!('inputs' in abiItem)) continue
42
77
  if (!args || args.length === 0) {
43
- if (!abiItem.inputs || abiItem.inputs.length === 0) return abiItem as any
78
+ if (!abiItem.inputs || abiItem.inputs.length === 0)
79
+ return abiItem as GetAbiItemReturnType<abi, name, args>
44
80
  continue
45
81
  }
46
82
  if (!abiItem.inputs) continue
47
83
  if (abiItem.inputs.length === 0) continue
48
84
  if (abiItem.inputs.length !== args.length) continue
49
- const matched = (args as readonly unknown[]).every((arg, index) => {
85
+ const matched = args.every((arg, index) => {
50
86
  const abiParameter = 'inputs' in abiItem && abiItem.inputs![index]
51
87
  if (!abiParameter) return false
52
- return isArgOfType(arg, abiParameter as AbiParameter)
88
+ return isArgOfType(arg, abiParameter)
53
89
  })
54
- if (matched) return abiItem as any
90
+ if (matched) return abiItem as GetAbiItemReturnType<abi, name, args>
55
91
  }
56
- return abiItems[0] as any
92
+ return abiItems[0] as GetAbiItemReturnType<abi, name, args>
57
93
  }
58
94
 
59
95
  export function isArgOfType(arg: unknown, abiParameter: AbiParameter): boolean {
@@ -126,6 +126,10 @@ export function buildRequest<TRequest extends (args: any) => Promise<any>>(
126
126
  // 4902
127
127
  case SwitchChainError.code:
128
128
  throw new SwitchChainError(err)
129
+ // CAIP-25: User Rejected Error
130
+ // https://docs.walletconnect.com/2.0/specs/clients/sign/error-codes#rejected-caip-25
131
+ case 5000:
132
+ throw new UserRejectedRequestError(err)
129
133
  default:
130
134
  if (err_ instanceof BaseError) throw err_
131
135
  throw new UnknownRpcError(err as Error)
package/src/utils/ccip.ts CHANGED
@@ -10,7 +10,6 @@ import {
10
10
  } from '../errors/ccip.js'
11
11
  import { HttpRequestError } from '../errors/request.js'
12
12
  import type { Chain } from '../types/chain.js'
13
- import type { GetErrorArgs } from '../types/contract.js'
14
13
  import type { Hex } from '../types/misc.js'
15
14
 
16
15
  import type { Client } from '../clients/createClient.js'
@@ -64,10 +63,7 @@ export async function offchainLookup<TChain extends Chain | undefined,>(
64
63
  const { args } = decodeErrorResult({
65
64
  data,
66
65
  abi: [offchainLookupAbiItem],
67
- }) as unknown as GetErrorArgs<
68
- [typeof offchainLookupAbiItem],
69
- 'OffchainLookup'
70
- >
66
+ })
71
67
  const [sender, urls, callData, callbackSelector, extraData] = args
72
68
 
73
69
  try {
@@ -1,13 +1,10 @@
1
1
  import type { CallParameters } from '../../actions/public/call.js'
2
2
  import type { BaseError } from '../../errors/base.js'
3
3
  import { CallExecutionError } from '../../errors/contract.js'
4
+ import { UnknownNodeError } from '../../errors/node.js'
4
5
  import type { Chain } from '../../types/chain.js'
5
6
 
6
- import {
7
- type GetNodeErrorParameters,
8
- containsNodeError,
9
- getNodeError,
10
- } from './getNodeError.js'
7
+ import { type GetNodeErrorParameters, getNodeError } from './getNodeError.js'
11
8
 
12
9
  export function getCallError(
13
10
  err: BaseError,
@@ -19,9 +16,8 @@ export function getCallError(
19
16
  docsPath?: string
20
17
  },
21
18
  ) {
22
- let cause = err
23
- if (containsNodeError(err))
24
- cause = getNodeError(err, args as GetNodeErrorParameters)
19
+ let cause = getNodeError(err, args as GetNodeErrorParameters)
20
+ if (cause instanceof UnknownNodeError) cause = err
25
21
  return new CallExecutionError(cause, {
26
22
  docsPath,
27
23
  ...args,
@@ -8,6 +8,7 @@ import {
8
8
  ContractFunctionZeroDataError,
9
9
  RawContractError,
10
10
  } from '../../errors/contract.js'
11
+ import { InternalRpcError } from '../../errors/rpc.js'
11
12
 
12
13
  const EXECUTION_REVERTED_ERROR_CODE = 3
13
14
 
@@ -41,7 +42,7 @@ export function getContractError(
41
42
  if (err instanceof AbiDecodingZeroDataError) {
42
43
  cause = new ContractFunctionZeroDataError({ functionName })
43
44
  } else if (
44
- code === EXECUTION_REVERTED_ERROR_CODE &&
45
+ [EXECUTION_REVERTED_ERROR_CODE, InternalRpcError.code].includes(code) &&
45
46
  (data || message || shortMessage)
46
47
  ) {
47
48
  cause = new ContractFunctionRevertedError({