@wagmi/core 1.4.1 → 2.0.0-alpha.1

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 (540) hide show
  1. package/README.md +4 -21
  2. package/actions/package.json +5 -0
  3. package/chains/package.json +3 -2
  4. package/dist/esm/actions/connect.js +53 -0
  5. package/dist/esm/actions/connect.js.map +1 -0
  6. package/dist/esm/actions/disconnect.js +49 -0
  7. package/dist/esm/actions/disconnect.js.map +1 -0
  8. package/dist/esm/actions/estimateFeesPerGas.js +24 -0
  9. package/dist/esm/actions/estimateFeesPerGas.js.map +1 -0
  10. package/dist/esm/actions/estimateGas.js +25 -0
  11. package/dist/esm/actions/estimateGas.js.map +1 -0
  12. package/dist/esm/actions/getAccount.js +61 -0
  13. package/dist/esm/actions/getAccount.js.map +1 -0
  14. package/dist/esm/actions/getBalance.js +83 -0
  15. package/dist/esm/actions/getBalance.js.map +1 -0
  16. package/dist/esm/actions/getBlock.js +9 -0
  17. package/dist/esm/actions/getBlock.js.map +1 -0
  18. package/dist/esm/actions/getBlockNumber.js +9 -0
  19. package/dist/esm/actions/getBlockNumber.js.map +1 -0
  20. package/dist/esm/actions/getChainId.js +5 -0
  21. package/dist/esm/actions/getChainId.js.map +1 -0
  22. package/dist/esm/actions/getClient.js +5 -0
  23. package/dist/esm/actions/getClient.js.map +1 -0
  24. package/dist/esm/actions/getConnections.js +13 -0
  25. package/dist/esm/actions/getConnections.js.map +1 -0
  26. package/dist/esm/actions/getConnectorClient.js +42 -0
  27. package/dist/esm/actions/getConnectorClient.js.map +1 -0
  28. package/dist/esm/actions/getEnsAddress.js +9 -0
  29. package/dist/esm/actions/getEnsAddress.js.map +1 -0
  30. package/dist/esm/actions/getEnsAvatar.js +9 -0
  31. package/dist/esm/actions/getEnsAvatar.js.map +1 -0
  32. package/dist/esm/actions/getEnsName.js +9 -0
  33. package/dist/esm/actions/getEnsName.js.map +1 -0
  34. package/dist/esm/actions/getEnsResolver.js +9 -0
  35. package/dist/esm/actions/getEnsResolver.js.map +1 -0
  36. package/dist/esm/actions/getPublicClient.js +6 -0
  37. package/dist/esm/actions/getPublicClient.js.map +1 -0
  38. package/dist/esm/actions/getToken.js +101 -0
  39. package/dist/esm/actions/getToken.js.map +1 -0
  40. package/dist/esm/actions/getTransaction.js +10 -0
  41. package/dist/esm/actions/getTransaction.js.map +1 -0
  42. package/dist/esm/actions/getWalletClient.js +7 -0
  43. package/dist/esm/actions/getWalletClient.js.map +1 -0
  44. package/dist/esm/actions/multicall.js +11 -0
  45. package/dist/esm/actions/multicall.js.map +1 -0
  46. package/dist/esm/actions/readContract.js +10 -0
  47. package/dist/esm/actions/readContract.js.map +1 -0
  48. package/dist/esm/actions/readContracts.js +46 -0
  49. package/dist/esm/actions/readContracts.js.map +1 -0
  50. package/dist/esm/actions/reconnect.js +78 -0
  51. package/dist/esm/actions/reconnect.js.map +1 -0
  52. package/dist/esm/actions/sendTransaction.js +22 -0
  53. package/dist/esm/actions/sendTransaction.js.map +1 -0
  54. package/dist/esm/actions/signMessage.js +10 -0
  55. package/dist/esm/actions/signMessage.js.map +1 -0
  56. package/dist/esm/actions/signTypedData.js +10 -0
  57. package/dist/esm/actions/signTypedData.js.map +1 -0
  58. package/dist/esm/actions/simulateContract.js +33 -0
  59. package/dist/esm/actions/simulateContract.js.map +1 -0
  60. package/dist/esm/actions/switchAccount.js +19 -0
  61. package/dist/esm/actions/switchAccount.js.map +1 -0
  62. package/dist/esm/actions/switchChain.js +23 -0
  63. package/dist/esm/actions/switchChain.js.map +1 -0
  64. package/dist/esm/actions/waitForTransactionReceipt.js +23 -0
  65. package/dist/esm/actions/waitForTransactionReceipt.js.map +1 -0
  66. package/dist/esm/actions/watchAccount.js +18 -0
  67. package/dist/esm/actions/watchAccount.js.map +1 -0
  68. package/dist/esm/actions/watchBlockNumber.js +28 -0
  69. package/dist/esm/actions/watchBlockNumber.js.map +1 -0
  70. package/dist/esm/actions/watchBlocks.js +28 -0
  71. package/dist/esm/actions/watchBlocks.js.map +1 -0
  72. package/dist/esm/actions/watchChainId.js +6 -0
  73. package/dist/esm/actions/watchChainId.js.map +1 -0
  74. package/dist/esm/actions/watchClient.js +11 -0
  75. package/dist/esm/actions/watchClient.js.map +1 -0
  76. package/dist/esm/actions/watchConnections.js +10 -0
  77. package/dist/esm/actions/watchConnections.js.map +1 -0
  78. package/dist/esm/actions/watchContractEvent.js +27 -0
  79. package/dist/esm/actions/watchContractEvent.js.map +1 -0
  80. package/dist/esm/actions/watchPendingTransactions.js +27 -0
  81. package/dist/esm/actions/watchPendingTransactions.js.map +1 -0
  82. package/dist/esm/actions/watchPublicClient.js +11 -0
  83. package/dist/esm/actions/watchPublicClient.js.map +1 -0
  84. package/dist/esm/actions/writeContract.js +31 -0
  85. package/dist/esm/actions/writeContract.js.map +1 -0
  86. package/dist/esm/createConfig.js +218 -0
  87. package/dist/esm/createConfig.js.map +1 -0
  88. package/dist/esm/createConnector.js +8 -0
  89. package/dist/esm/createConnector.js.map +1 -0
  90. package/dist/esm/createEmitter.js +39 -0
  91. package/dist/esm/createEmitter.js.map +1 -0
  92. package/dist/esm/createStorage.js +37 -0
  93. package/dist/esm/createStorage.js.map +1 -0
  94. package/dist/esm/errors/base.js +86 -0
  95. package/dist/esm/errors/base.js.map +1 -0
  96. package/dist/esm/errors/config.js +70 -0
  97. package/dist/esm/errors/config.js.map +1 -0
  98. package/dist/esm/errors/connector.js +24 -0
  99. package/dist/esm/errors/connector.js.map +1 -0
  100. package/dist/esm/exports/actions.js +42 -0
  101. package/dist/esm/exports/actions.js.map +1 -0
  102. package/dist/esm/exports/chains.js +4 -0
  103. package/dist/esm/exports/chains.js.map +1 -0
  104. package/dist/esm/exports/index.js +73 -0
  105. package/dist/esm/exports/index.js.map +1 -0
  106. package/dist/esm/exports/internal.js +11 -0
  107. package/dist/esm/exports/internal.js.map +1 -0
  108. package/dist/esm/exports/query.js +30 -0
  109. package/dist/esm/exports/query.js.map +1 -0
  110. package/dist/esm/query/connect.js +11 -0
  111. package/dist/esm/query/connect.js.map +1 -0
  112. package/dist/esm/query/disconnect.js +10 -0
  113. package/dist/esm/query/disconnect.js.map +1 -0
  114. package/dist/esm/query/estimateFeesPerGas.js +16 -0
  115. package/dist/esm/query/estimateFeesPerGas.js.map +1 -0
  116. package/dist/esm/query/estimateGas.js +20 -0
  117. package/dist/esm/query/estimateGas.js.map +1 -0
  118. package/dist/esm/query/getBalance.js +21 -0
  119. package/dist/esm/query/getBalance.js.map +1 -0
  120. package/dist/esm/query/getBlock.js +17 -0
  121. package/dist/esm/query/getBlock.js.map +1 -0
  122. package/dist/esm/query/getBlockNumber.js +18 -0
  123. package/dist/esm/query/getBlockNumber.js.map +1 -0
  124. package/dist/esm/query/getConnectorClient.js +25 -0
  125. package/dist/esm/query/getConnectorClient.js.map +1 -0
  126. package/dist/esm/query/getEnsAddress.js +18 -0
  127. package/dist/esm/query/getEnsAddress.js.map +1 -0
  128. package/dist/esm/query/getEnsAvatar.js +18 -0
  129. package/dist/esm/query/getEnsAvatar.js.map +1 -0
  130. package/dist/esm/query/getEnsName.js +18 -0
  131. package/dist/esm/query/getEnsName.js.map +1 -0
  132. package/dist/esm/query/getEnsResolver.js +18 -0
  133. package/dist/esm/query/getEnsResolver.js.map +1 -0
  134. package/dist/esm/query/getToken.js +18 -0
  135. package/dist/esm/query/getToken.js.map +1 -0
  136. package/dist/esm/query/getTransaction.js +20 -0
  137. package/dist/esm/query/getTransaction.js.map +1 -0
  138. package/dist/esm/query/getWalletClient.js +22 -0
  139. package/dist/esm/query/getWalletClient.js.map +1 -0
  140. package/dist/esm/query/readContract.js +32 -0
  141. package/dist/esm/query/readContract.js.map +1 -0
  142. package/dist/esm/query/readContracts.js +36 -0
  143. package/dist/esm/query/readContracts.js.map +1 -0
  144. package/dist/esm/query/reconnect.js +10 -0
  145. package/dist/esm/query/reconnect.js.map +1 -0
  146. package/dist/esm/query/sendTransaction.js +11 -0
  147. package/dist/esm/query/sendTransaction.js.map +1 -0
  148. package/dist/esm/query/signMessage.js +13 -0
  149. package/dist/esm/query/signMessage.js.map +1 -0
  150. package/dist/esm/query/signTypedData.js +11 -0
  151. package/dist/esm/query/signTypedData.js.map +1 -0
  152. package/dist/esm/query/simulateContract.js +25 -0
  153. package/dist/esm/query/simulateContract.js.map +1 -0
  154. package/dist/esm/query/switchAccount.js +11 -0
  155. package/dist/esm/query/switchAccount.js.map +1 -0
  156. package/dist/esm/query/switchChain.js +11 -0
  157. package/dist/esm/query/switchChain.js.map +1 -0
  158. package/dist/esm/query/types.js +2 -0
  159. package/dist/esm/query/types.js.map +1 -0
  160. package/dist/esm/query/utils.js +45 -0
  161. package/dist/esm/query/utils.js.map +1 -0
  162. package/dist/esm/query/waitForTransactionReceipt.js +23 -0
  163. package/dist/esm/query/waitForTransactionReceipt.js.map +1 -0
  164. package/dist/esm/query/writeContract.js +11 -0
  165. package/dist/esm/query/writeContract.js.map +1 -0
  166. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  167. package/dist/esm/types/chain.js +2 -0
  168. package/dist/esm/types/chain.js.map +1 -0
  169. package/dist/esm/types/properties.js +2 -0
  170. package/dist/esm/types/properties.js.map +1 -0
  171. package/dist/esm/types/register.js +2 -0
  172. package/dist/esm/types/register.js.map +1 -0
  173. package/dist/esm/types/unit.js +2 -0
  174. package/dist/esm/types/unit.js.map +1 -0
  175. package/dist/esm/types/utils.js +2 -0
  176. package/dist/esm/types/utils.js.map +1 -0
  177. package/dist/esm/utils/assertActiveChain.js +14 -0
  178. package/dist/esm/utils/assertActiveChain.js.map +1 -0
  179. package/dist/esm/utils/deepEqual.js +41 -0
  180. package/dist/esm/utils/deepEqual.js.map +1 -0
  181. package/dist/esm/utils/deserialize.js +11 -0
  182. package/dist/esm/utils/deserialize.js.map +1 -0
  183. package/dist/esm/utils/getUnit.js +10 -0
  184. package/dist/esm/utils/getUnit.js.map +1 -0
  185. package/dist/esm/utils/getVersion.js +3 -0
  186. package/dist/esm/utils/getVersion.js.map +1 -0
  187. package/dist/esm/utils/normalizeChainId.js +10 -0
  188. package/dist/esm/utils/normalizeChainId.js.map +1 -0
  189. package/dist/esm/utils/serialize.js +87 -0
  190. package/dist/esm/utils/serialize.js.map +1 -0
  191. package/dist/esm/utils/uid.js +14 -0
  192. package/dist/esm/utils/uid.js.map +1 -0
  193. package/dist/esm/version.js +2 -0
  194. package/dist/esm/version.js.map +1 -0
  195. package/dist/types/actions/connect.d.ts +19 -0
  196. package/dist/types/actions/connect.d.ts.map +1 -0
  197. package/dist/types/actions/disconnect.d.ts +9 -0
  198. package/dist/types/actions/disconnect.d.ts.map +1 -0
  199. package/dist/types/actions/estimateFeesPerGas.d.ts +16 -0
  200. package/dist/types/actions/estimateFeesPerGas.d.ts.map +1 -0
  201. package/dist/types/actions/estimateGas.d.ts +14 -0
  202. package/dist/types/actions/estimateGas.d.ts.map +1 -0
  203. package/dist/types/actions/getAccount.d.ts +46 -0
  204. package/dist/types/actions/getAccount.d.ts.map +1 -0
  205. package/dist/types/actions/getBalance.d.ts +21 -0
  206. package/dist/types/actions/getBalance.d.ts.map +1 -0
  207. package/dist/types/actions/getBlock.d.ts +14 -0
  208. package/dist/types/actions/getBlock.d.ts.map +1 -0
  209. package/dist/types/actions/getBlockNumber.d.ts +10 -0
  210. package/dist/types/actions/getBlockNumber.d.ts.map +1 -0
  211. package/dist/types/actions/getChainId.d.ts +5 -0
  212. package/dist/types/actions/getChainId.d.ts.map +1 -0
  213. package/dist/types/actions/getClient.d.ts +10 -0
  214. package/dist/types/actions/getClient.d.ts.map +1 -0
  215. package/dist/types/actions/getConnections.d.ts +6 -0
  216. package/dist/types/actions/getConnections.d.ts.map +1 -0
  217. package/dist/types/actions/getConnectorClient.d.ts +15 -0
  218. package/dist/types/actions/getConnectorClient.d.ts.map +1 -0
  219. package/dist/types/actions/getEnsAddress.d.ts +10 -0
  220. package/dist/types/actions/getEnsAddress.d.ts.map +1 -0
  221. package/dist/types/actions/getEnsAvatar.d.ts +10 -0
  222. package/dist/types/actions/getEnsAvatar.d.ts.map +1 -0
  223. package/dist/types/actions/getEnsName.d.ts +10 -0
  224. package/dist/types/actions/getEnsName.d.ts.map +1 -0
  225. package/dist/types/actions/getEnsResolver.d.ts +10 -0
  226. package/dist/types/actions/getEnsResolver.d.ts.map +1 -0
  227. package/dist/types/actions/getPublicClient.d.ts +10 -0
  228. package/dist/types/actions/getPublicClient.d.ts.map +1 -0
  229. package/dist/types/actions/getToken.d.ts +22 -0
  230. package/dist/types/actions/getToken.d.ts.map +1 -0
  231. package/dist/types/actions/getTransaction.d.ts +14 -0
  232. package/dist/types/actions/getTransaction.d.ts.map +1 -0
  233. package/dist/types/actions/getWalletClient.d.ts +11 -0
  234. package/dist/types/actions/getWalletClient.d.ts.map +1 -0
  235. package/dist/types/actions/multicall.d.ts +7 -0
  236. package/dist/types/actions/multicall.d.ts.map +1 -0
  237. package/dist/types/actions/readContract.d.ts +11 -0
  238. package/dist/types/actions/readContract.d.ts.map +1 -0
  239. package/dist/types/actions/readContracts.d.ts +10 -0
  240. package/dist/types/actions/readContracts.d.ts.map +1 -0
  241. package/dist/types/actions/reconnect.d.ts +12 -0
  242. package/dist/types/actions/reconnect.d.ts.map +1 -0
  243. package/dist/types/actions/sendTransaction.d.ts +15 -0
  244. package/dist/types/actions/sendTransaction.d.ts.map +1 -0
  245. package/dist/types/actions/signMessage.d.ts +11 -0
  246. package/dist/types/actions/signMessage.d.ts.map +1 -0
  247. package/dist/types/actions/signTypedData.d.ts +10 -0
  248. package/dist/types/actions/signTypedData.d.ts.map +1 -0
  249. package/dist/types/actions/simulateContract.d.ts +21 -0
  250. package/dist/types/actions/simulateContract.d.ts.map +1 -0
  251. package/dist/types/actions/switchAccount.d.ts +14 -0
  252. package/dist/types/actions/switchAccount.d.ts.map +1 -0
  253. package/dist/types/actions/switchChain.d.ts +16 -0
  254. package/dist/types/actions/switchChain.d.ts.map +1 -0
  255. package/dist/types/actions/waitForTransactionReceipt.d.ts +12 -0
  256. package/dist/types/actions/waitForTransactionReceipt.d.ts.map +1 -0
  257. package/dist/types/actions/watchAccount.d.ts +9 -0
  258. package/dist/types/actions/watchAccount.d.ts.map +1 -0
  259. package/dist/types/actions/watchBlockNumber.d.ts +13 -0
  260. package/dist/types/actions/watchBlockNumber.d.ts.map +1 -0
  261. package/dist/types/actions/watchBlocks.d.ts +13 -0
  262. package/dist/types/actions/watchBlocks.d.ts.map +1 -0
  263. package/dist/types/actions/watchChainId.d.ts +9 -0
  264. package/dist/types/actions/watchChainId.d.ts.map +1 -0
  265. package/dist/types/actions/watchClient.d.ts +9 -0
  266. package/dist/types/actions/watchClient.d.ts.map +1 -0
  267. package/dist/types/actions/watchConnections.d.ts +9 -0
  268. package/dist/types/actions/watchConnections.d.ts.map +1 -0
  269. package/dist/types/actions/watchContractEvent.d.ts +13 -0
  270. package/dist/types/actions/watchContractEvent.d.ts.map +1 -0
  271. package/dist/types/actions/watchPendingTransactions.d.ts +13 -0
  272. package/dist/types/actions/watchPendingTransactions.d.ts.map +1 -0
  273. package/dist/types/actions/watchPublicClient.d.ts +9 -0
  274. package/dist/types/actions/watchPublicClient.d.ts.map +1 -0
  275. package/dist/types/actions/writeContract.d.ts +15 -0
  276. package/dist/types/actions/writeContract.d.ts.map +1 -0
  277. package/dist/types/createConfig.d.ts +72 -0
  278. package/dist/types/createConfig.d.ts.map +1 -0
  279. package/dist/types/createConnector.d.ts +57 -0
  280. package/dist/types/createConnector.d.ts.map +1 -0
  281. package/dist/types/createEmitter.d.ts +31 -0
  282. package/dist/types/createEmitter.d.ts.map +1 -0
  283. package/dist/types/createStorage.d.ts +30 -0
  284. package/dist/types/createStorage.d.ts.map +1 -0
  285. package/dist/types/errors/base.d.ts +24 -0
  286. package/dist/types/errors/base.d.ts.map +1 -0
  287. package/dist/types/errors/config.d.ts +34 -0
  288. package/dist/types/errors/config.d.ts.map +1 -0
  289. package/dist/types/errors/connector.d.ts +13 -0
  290. package/dist/types/errors/connector.d.ts.map +1 -0
  291. package/dist/types/exports/actions.d.ts +40 -0
  292. package/dist/types/exports/actions.d.ts.map +1 -0
  293. package/dist/types/exports/chains.d.ts +2 -0
  294. package/dist/types/exports/chains.d.ts.map +1 -0
  295. package/dist/types/exports/index.d.ts +54 -0
  296. package/dist/types/exports/index.d.ts.map +1 -0
  297. package/dist/types/exports/internal.d.ts +5 -0
  298. package/dist/types/exports/internal.d.ts.map +1 -0
  299. package/dist/types/exports/query.d.ts +28 -0
  300. package/dist/types/exports/query.d.ts.map +1 -0
  301. package/dist/types/query/connect.d.ts +15 -0
  302. package/dist/types/query/connect.d.ts.map +1 -0
  303. package/dist/types/query/disconnect.d.ts +12 -0
  304. package/dist/types/query/disconnect.d.ts.map +1 -0
  305. package/dist/types/query/estimateFeesPerGas.d.ts +34 -0
  306. package/dist/types/query/estimateFeesPerGas.d.ts.map +1 -0
  307. package/dist/types/query/estimateGas.d.ts +18 -0
  308. package/dist/types/query/estimateGas.d.ts.map +1 -0
  309. package/dist/types/query/getBalance.d.ts +42 -0
  310. package/dist/types/query/getBalance.d.ts.map +1 -0
  311. package/dist/types/query/getBlock.d.ts +111 -0
  312. package/dist/types/query/getBlock.d.ts.map +1 -0
  313. package/dist/types/query/getBlockNumber.d.ts +34 -0
  314. package/dist/types/query/getBlockNumber.d.ts.map +1 -0
  315. package/dist/types/query/getConnectorClient.d.ts +320 -0
  316. package/dist/types/query/getConnectorClient.d.ts.map +1 -0
  317. package/dist/types/query/getEnsAddress.d.ts +42 -0
  318. package/dist/types/query/getEnsAddress.d.ts.map +1 -0
  319. package/dist/types/query/getEnsAvatar.d.ts +42 -0
  320. package/dist/types/query/getEnsAvatar.d.ts.map +1 -0
  321. package/dist/types/query/getEnsName.d.ts +39 -0
  322. package/dist/types/query/getEnsName.d.ts.map +1 -0
  323. package/dist/types/query/getEnsResolver.d.ts +39 -0
  324. package/dist/types/query/getEnsResolver.d.ts.map +1 -0
  325. package/dist/types/query/getToken.d.ts +33 -0
  326. package/dist/types/query/getToken.d.ts.map +1 -0
  327. package/dist/types/query/getTransaction.d.ts +110 -0
  328. package/dist/types/query/getTransaction.d.ts.map +1 -0
  329. package/dist/types/query/getWalletClient.d.ts +541 -0
  330. package/dist/types/query/getWalletClient.d.ts.map +1 -0
  331. package/dist/types/query/readContract.d.ts +19 -0
  332. package/dist/types/query/readContract.d.ts.map +1 -0
  333. package/dist/types/query/readContracts.d.ts +65 -0
  334. package/dist/types/query/readContracts.d.ts.map +1 -0
  335. package/dist/types/query/reconnect.d.ts +13 -0
  336. package/dist/types/query/reconnect.d.ts.map +1 -0
  337. package/dist/types/query/sendTransaction.d.ts +13 -0
  338. package/dist/types/query/sendTransaction.d.ts.map +1 -0
  339. package/dist/types/query/signMessage.d.ts +17 -0
  340. package/dist/types/query/signMessage.d.ts.map +1 -0
  341. package/dist/types/query/signTypedData.d.ts +219 -0
  342. package/dist/types/query/signTypedData.d.ts.map +1 -0
  343. package/dist/types/query/simulateContract.d.ts +19 -0
  344. package/dist/types/query/simulateContract.d.ts.map +1 -0
  345. package/dist/types/query/switchAccount.d.ts +15 -0
  346. package/dist/types/query/switchAccount.d.ts.map +1 -0
  347. package/dist/types/query/switchChain.d.ts +18 -0
  348. package/dist/types/query/switchChain.d.ts.map +1 -0
  349. package/dist/types/query/types.d.ts +9 -0
  350. package/dist/types/query/types.d.ts.map +1 -0
  351. package/dist/types/query/utils.d.ts +4 -0
  352. package/dist/types/query/utils.d.ts.map +1 -0
  353. package/dist/types/query/waitForTransactionReceipt.d.ts +131 -0
  354. package/dist/types/query/waitForTransactionReceipt.d.ts.map +1 -0
  355. package/dist/types/query/writeContract.d.ts +14 -0
  356. package/dist/types/query/writeContract.d.ts.map +1 -0
  357. package/dist/types/types/chain.d.ts +15 -0
  358. package/dist/types/types/chain.d.ts.map +1 -0
  359. package/dist/types/types/properties.d.ts +11 -0
  360. package/dist/types/types/properties.d.ts.map +1 -0
  361. package/dist/types/types/register.d.ts +8 -0
  362. package/dist/types/types/register.d.ts.map +1 -0
  363. package/dist/types/types/unit.d.ts +2 -0
  364. package/dist/types/types/unit.d.ts.map +1 -0
  365. package/dist/types/types/utils.d.ts +50 -0
  366. package/dist/types/types/utils.d.ts.map +1 -0
  367. package/dist/types/utils/assertActiveChain.d.ts +8 -0
  368. package/dist/types/utils/assertActiveChain.d.ts.map +1 -0
  369. package/dist/types/utils/deepEqual.d.ts +3 -0
  370. package/dist/types/utils/deepEqual.d.ts.map +1 -0
  371. package/dist/types/utils/deserialize.d.ts +4 -0
  372. package/dist/types/utils/deserialize.d.ts.map +1 -0
  373. package/dist/types/utils/getUnit.d.ts +3 -0
  374. package/dist/types/utils/getUnit.d.ts.map +1 -0
  375. package/dist/types/utils/getVersion.d.ts +2 -0
  376. package/dist/types/utils/getVersion.d.ts.map +1 -0
  377. package/dist/types/utils/normalizeChainId.d.ts +2 -0
  378. package/dist/types/utils/normalizeChainId.d.ts.map +1 -0
  379. package/dist/types/utils/serialize.d.ts +16 -0
  380. package/dist/types/utils/serialize.d.ts.map +1 -0
  381. package/dist/types/utils/uid.d.ts +2 -0
  382. package/dist/types/utils/uid.d.ts.map +1 -0
  383. package/dist/types/version.d.ts +2 -0
  384. package/dist/types/version.d.ts.map +1 -0
  385. package/internal/package.json +3 -2
  386. package/package.json +69 -101
  387. package/query/package.json +5 -0
  388. package/src/actions/connect.ts +86 -0
  389. package/src/actions/disconnect.ts +68 -0
  390. package/src/actions/estimateFeesPerGas.ts +76 -0
  391. package/src/actions/estimateGas.ts +62 -0
  392. package/src/actions/getAccount.ts +109 -0
  393. package/src/actions/getBalance.ts +141 -0
  394. package/src/actions/getBlock.ts +63 -0
  395. package/src/actions/getBlockNumber.ts +31 -0
  396. package/src/actions/getChainId.ts +11 -0
  397. package/src/actions/getClient.ts +30 -0
  398. package/src/actions/getConnections.ts +16 -0
  399. package/src/actions/getConnectorClient.ts +96 -0
  400. package/src/actions/getEnsAddress.ts +27 -0
  401. package/src/actions/getEnsAvatar.ts +27 -0
  402. package/src/actions/getEnsName.ts +27 -0
  403. package/src/actions/getEnsResolver.ts +27 -0
  404. package/src/actions/getPublicClient.ts +34 -0
  405. package/src/actions/getToken.ts +140 -0
  406. package/src/actions/getTransaction.ts +44 -0
  407. package/src/actions/getWalletClient.ts +41 -0
  408. package/src/actions/multicall.ts +37 -0
  409. package/src/actions/readContract.ts +55 -0
  410. package/src/actions/readContracts.ts +98 -0
  411. package/src/actions/reconnect.ts +102 -0
  412. package/src/actions/sendTransaction.ts +68 -0
  413. package/src/actions/signMessage.ts +29 -0
  414. package/src/actions/signTypedData.ts +43 -0
  415. package/src/actions/simulateContract.ts +161 -0
  416. package/src/actions/switchAccount.ts +37 -0
  417. package/src/actions/switchChain.ts +63 -0
  418. package/src/actions/waitForTransactionReceipt.ts +69 -0
  419. package/src/actions/watchAccount.ts +32 -0
  420. package/src/actions/watchBlockNumber.ts +78 -0
  421. package/src/actions/watchBlocks.ts +90 -0
  422. package/src/actions/watchChainId.ts +20 -0
  423. package/src/actions/watchClient.ts +34 -0
  424. package/src/actions/watchConnections.ts +26 -0
  425. package/src/actions/watchContractEvent.ts +98 -0
  426. package/src/actions/watchPendingTransactions.ts +79 -0
  427. package/src/actions/watchPublicClient.ts +37 -0
  428. package/src/actions/writeContract.ts +113 -0
  429. package/src/createConfig.ts +382 -0
  430. package/src/createConnector.ts +78 -0
  431. package/src/createEmitter.ts +68 -0
  432. package/src/createStorage.ts +89 -0
  433. package/src/errors/base.ts +71 -0
  434. package/src/errors/config.ts +60 -0
  435. package/src/errors/connector.ts +17 -0
  436. package/src/exports/actions.ts +258 -0
  437. package/src/exports/chains.ts +4 -0
  438. package/src/exports/index.ts +352 -0
  439. package/src/exports/internal.ts +29 -0
  440. package/src/exports/query.ts +229 -0
  441. package/src/query/connect.ts +45 -0
  442. package/src/query/disconnect.ts +43 -0
  443. package/src/query/estimateFeesPerGas.ts +56 -0
  444. package/src/query/estimateGas.ts +55 -0
  445. package/src/query/getBalance.ts +61 -0
  446. package/src/query/getBlock.ts +80 -0
  447. package/src/query/getBlockNumber.ts +55 -0
  448. package/src/query/getConnectorClient.ts +69 -0
  449. package/src/query/getEnsAddress.ts +49 -0
  450. package/src/query/getEnsAvatar.ts +49 -0
  451. package/src/query/getEnsName.ts +49 -0
  452. package/src/query/getEnsResolver.ts +49 -0
  453. package/src/query/getToken.ts +49 -0
  454. package/src/query/getTransaction.ts +75 -0
  455. package/src/query/getWalletClient.ts +65 -0
  456. package/src/query/readContract.ts +88 -0
  457. package/src/query/readContracts.ts +98 -0
  458. package/src/query/reconnect.ts +42 -0
  459. package/src/query/sendTransaction.ts +65 -0
  460. package/src/query/signMessage.ts +42 -0
  461. package/src/query/signTypedData.ts +75 -0
  462. package/src/query/simulateContract.ts +128 -0
  463. package/src/query/switchAccount.ts +52 -0
  464. package/src/query/switchChain.ts +67 -0
  465. package/src/query/types.ts +52 -0
  466. package/src/query/utils.ts +54 -0
  467. package/src/query/waitForTransactionReceipt.ts +71 -0
  468. package/src/query/writeContract.ts +116 -0
  469. package/src/types/chain.ts +25 -0
  470. package/src/types/properties.ts +21 -0
  471. package/src/types/register.ts +8 -0
  472. package/src/types/unit.ts +1 -0
  473. package/src/types/utils.ts +93 -0
  474. package/src/utils/assertActiveChain.ts +26 -0
  475. package/src/utils/deepEqual.ts +43 -0
  476. package/src/utils/deserialize.ts +10 -0
  477. package/src/utils/getUnit.ts +9 -0
  478. package/src/utils/getVersion.ts +3 -0
  479. package/src/utils/normalizeChainId.ts +12 -0
  480. package/src/utils/serialize.ts +116 -0
  481. package/src/utils/uid.ts +14 -0
  482. package/src/version.ts +1 -0
  483. package/connectors/coinbaseWallet/package.json +0 -4
  484. package/connectors/injected/package.json +0 -4
  485. package/connectors/ledger/package.json +0 -4
  486. package/connectors/metaMask/package.json +0 -4
  487. package/connectors/mock/package.json +0 -4
  488. package/connectors/package.json +0 -4
  489. package/connectors/safe/package.json +0 -4
  490. package/connectors/walletConnect/package.json +0 -4
  491. package/connectors/walletConnectLegacy/package.json +0 -4
  492. package/dist/chains.d.ts +0 -2
  493. package/dist/chains.js +0 -2
  494. package/dist/chunk-4E64EZ7V.js +0 -7
  495. package/dist/chunk-BVC4KGLQ.js +0 -8
  496. package/dist/chunk-EQOEZP46.js +0 -6
  497. package/dist/chunk-KFW652VN.js +0 -7
  498. package/dist/chunk-LAFZBYO7.js +0 -2934
  499. package/dist/chunk-MQXBDTVK.js +0 -29
  500. package/dist/connectors/coinbaseWallet.d.ts +0 -1
  501. package/dist/connectors/coinbaseWallet.js +0 -7
  502. package/dist/connectors/index.d.ts +0 -2
  503. package/dist/connectors/index.js +0 -9
  504. package/dist/connectors/injected.d.ts +0 -1
  505. package/dist/connectors/injected.js +0 -7
  506. package/dist/connectors/ledger.d.ts +0 -1
  507. package/dist/connectors/ledger.js +0 -7
  508. package/dist/connectors/metaMask.d.ts +0 -1
  509. package/dist/connectors/metaMask.js +0 -7
  510. package/dist/connectors/mock.d.ts +0 -1
  511. package/dist/connectors/mock.js +0 -9
  512. package/dist/connectors/safe.d.ts +0 -1
  513. package/dist/connectors/safe.js +0 -7
  514. package/dist/connectors/walletConnect.d.ts +0 -1
  515. package/dist/connectors/walletConnect.js +0 -7
  516. package/dist/connectors/walletConnectLegacy.d.ts +0 -1
  517. package/dist/connectors/walletConnectLegacy.js +0 -7
  518. package/dist/index-e744bbc2.d.ts +0 -22
  519. package/dist/index.d.ts +0 -1397
  520. package/dist/index.js +0 -135
  521. package/dist/internal/index.d.ts +0 -24
  522. package/dist/internal/index.js +0 -10
  523. package/dist/internal/test.d.ts +0 -438
  524. package/dist/internal/test.js +0 -160
  525. package/dist/providers/alchemy.d.ts +0 -11
  526. package/dist/providers/alchemy.js +0 -29
  527. package/dist/providers/infura.d.ts +0 -11
  528. package/dist/providers/infura.js +0 -29
  529. package/dist/providers/jsonRpc.d.ts +0 -13
  530. package/dist/providers/jsonRpc.js +0 -28
  531. package/dist/providers/public.d.ts +0 -7
  532. package/dist/providers/public.js +0 -16
  533. package/dist/window.d.ts +0 -7
  534. package/dist/window.js +0 -0
  535. package/internal/test/package.json +0 -4
  536. package/providers/alchemy/package.json +0 -4
  537. package/providers/infura/package.json +0 -4
  538. package/providers/jsonRpc/package.json +0 -4
  539. package/providers/public/package.json +0 -4
  540. package/window/package.json +0 -4
@@ -0,0 +1,34 @@
1
+ import { type PublicClient, publicActions } from 'viem'
2
+
3
+ import type { Config } from '../createConfig.js'
4
+ import type { ChainIdParameter } from '../types/properties.js'
5
+ import type { Evaluate } from '../types/utils.js'
6
+
7
+ export type GetPublicClientParameters<
8
+ config extends Config = Config,
9
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
10
+ > = ChainIdParameter<config, chainId>
11
+
12
+ export type GetPublicClientReturnType<
13
+ config extends Config = Config,
14
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
15
+ > = Evaluate<
16
+ PublicClient<
17
+ config['_internal']['transports'][chainId],
18
+ Extract<config['chains'][number], { id: chainId }>
19
+ >
20
+ >
21
+
22
+ export function getPublicClient<
23
+ config extends Config,
24
+ chainId extends config['chains'][number]['id'],
25
+ >(
26
+ config: config,
27
+ parameters: GetPublicClientParameters<config, chainId> = {},
28
+ ): GetPublicClientReturnType<config, chainId> {
29
+ const client = config.getClient(parameters)
30
+ return client.extend(publicActions) as GetPublicClientReturnType<
31
+ config,
32
+ chainId
33
+ >
34
+ }
@@ -0,0 +1,140 @@
1
+ import type { Address, Hex } from 'viem'
2
+ import {
3
+ ContractFunctionExecutionError,
4
+ formatUnits,
5
+ hexToString,
6
+ trim,
7
+ } from 'viem'
8
+
9
+ import type { Config } from '../createConfig.js'
10
+ import type { ChainIdParameter } from '../types/properties.js'
11
+ import type { Unit } from '../types/unit.js'
12
+ import type { Evaluate } from '../types/utils.js'
13
+ import { getUnit } from '../utils/getUnit.js'
14
+ import { readContracts } from './readContracts.js'
15
+
16
+ export type GetTokenParameters<config extends Config = Config> = Evaluate<
17
+ {
18
+ address: Address
19
+ formatUnits?: Unit
20
+ } & ChainIdParameter<config>
21
+ >
22
+
23
+ export type GetTokenReturnType = {
24
+ address: Address
25
+ decimals: number
26
+ name: string | undefined
27
+ symbol: string | undefined
28
+ totalSupply: {
29
+ formatted: string
30
+ value: bigint
31
+ }
32
+ }
33
+
34
+ export type GetTokenError = Error
35
+
36
+ export async function getToken<config extends Config>(
37
+ config: config,
38
+ parameters: GetTokenParameters<config>,
39
+ ): Promise<GetTokenReturnType> {
40
+ const { address, chainId, formatUnits: unit = 18 } = parameters
41
+
42
+ function getAbi<type extends 'bytes32' | 'string'>(type: type) {
43
+ return [
44
+ {
45
+ type: 'function',
46
+ name: 'decimals',
47
+ stateMutability: 'view',
48
+ inputs: [],
49
+ outputs: [{ type: 'uint8' }],
50
+ },
51
+ {
52
+ type: 'function',
53
+ name: 'name',
54
+ stateMutability: 'view',
55
+ inputs: [],
56
+ outputs: [{ type }],
57
+ },
58
+ {
59
+ type: 'function',
60
+ name: 'symbol',
61
+ stateMutability: 'view',
62
+ inputs: [],
63
+ outputs: [{ type }],
64
+ },
65
+ {
66
+ type: 'function',
67
+ name: 'totalSupply',
68
+ stateMutability: 'view',
69
+ inputs: [],
70
+ outputs: [{ type: 'uint256' }],
71
+ },
72
+ ] as const
73
+ }
74
+
75
+ try {
76
+ const abi = getAbi('string')
77
+ const contractConfig = { address, abi, chainId } as const
78
+ const [decimals, name, symbol, totalSupply] = await readContracts(config, {
79
+ allowFailure: true,
80
+ contracts: [
81
+ { ...contractConfig, functionName: 'decimals' },
82
+ { ...contractConfig, functionName: 'name' },
83
+ { ...contractConfig, functionName: 'symbol' },
84
+ { ...contractConfig, functionName: 'totalSupply' },
85
+ ] as const,
86
+ })
87
+
88
+ // throw if `name` or `symbol` failed
89
+ if (name.error instanceof ContractFunctionExecutionError) throw name.error
90
+ if (symbol.error instanceof ContractFunctionExecutionError)
91
+ throw symbol.error
92
+
93
+ // `decimals` and `totalSupply` are required
94
+ if (decimals.error) throw decimals.error
95
+ if (totalSupply.error) throw totalSupply.error
96
+
97
+ return {
98
+ address,
99
+ decimals: decimals.result,
100
+ name: name.result,
101
+ symbol: symbol.result,
102
+ totalSupply: {
103
+ formatted: formatUnits(totalSupply.result!, getUnit(unit)),
104
+ value: totalSupply.result,
105
+ },
106
+ }
107
+ } catch (error) {
108
+ // In the chance that there is an error upon decoding the contract result,
109
+ // it could be likely that the contract data is represented as bytes32 instead
110
+ // of a string.
111
+ if (error instanceof ContractFunctionExecutionError) {
112
+ const abi = getAbi('bytes32')
113
+ const contractConfig = { address, abi, chainId } as const
114
+ const [decimals, name, symbol, totalSupply] = await readContracts(
115
+ config,
116
+ {
117
+ allowFailure: false,
118
+ contracts: [
119
+ { ...contractConfig, functionName: 'decimals' },
120
+ { ...contractConfig, functionName: 'name' },
121
+ { ...contractConfig, functionName: 'symbol' },
122
+ { ...contractConfig, functionName: 'totalSupply' },
123
+ ] as const,
124
+ },
125
+ )
126
+ return {
127
+ address,
128
+ decimals,
129
+ name: hexToString(trim(name as Hex, { dir: 'right' })),
130
+ symbol: hexToString(trim(symbol as Hex, { dir: 'right' })),
131
+ totalSupply: {
132
+ formatted: formatUnits(totalSupply, getUnit(unit)),
133
+ value: totalSupply,
134
+ },
135
+ }
136
+ }
137
+
138
+ throw error
139
+ }
140
+ }
@@ -0,0 +1,44 @@
1
+ import type { Chain } from 'viem'
2
+ import {
3
+ type GetTransactionParameters as viem_GetTransactionParameters,
4
+ type GetTransactionReturnType as viem_GetTransactionReturnType,
5
+ getTransaction as viem_getTransaction,
6
+ } from 'viem/actions'
7
+
8
+ import { type Config } from '../createConfig.js'
9
+ import type { SelectChains } from '../types/chain.js'
10
+ import type { ChainIdParameter } from '../types/properties.js'
11
+ import { type Evaluate } from '../types/utils.js'
12
+
13
+ export type GetTransactionParameters<
14
+ config extends Config = Config,
15
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
16
+ > = Evaluate<viem_GetTransactionParameters & ChainIdParameter<config, chainId>>
17
+
18
+ export type GetTransactionReturnType<
19
+ config extends Config = Config,
20
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
21
+ ///
22
+ chains extends readonly Chain[] = SelectChains<config, chainId>,
23
+ > = Evaluate<
24
+ {
25
+ [key in keyof chains]: viem_GetTransactionReturnType<chains[key]>
26
+ }[number]
27
+ >
28
+
29
+ export type GetTransactionError = Error
30
+
31
+ /** https://alpha.wagmi.sh/core/api/actions/getTransaction */
32
+ export function getTransaction<
33
+ config extends Config,
34
+ chainId extends config['chains'][number]['id'],
35
+ >(
36
+ config: config,
37
+ parameters: GetTransactionParameters<config, chainId>,
38
+ ): Promise<GetTransactionReturnType<config, chainId>> {
39
+ const { chainId } = parameters
40
+ const client = config.getClient({ chainId })
41
+ return viem_getTransaction(client, parameters) as unknown as Promise<
42
+ GetTransactionReturnType<config, chainId>
43
+ >
44
+ }
@@ -0,0 +1,41 @@
1
+ import { type Account, type WalletClient, walletActions } from 'viem'
2
+
3
+ import type { Config } from '../createConfig.js'
4
+ import type { Evaluate } from '../types/utils.js'
5
+ import {
6
+ type GetConnectorClientError,
7
+ type GetConnectorClientParameters,
8
+ getConnectorClient,
9
+ } from './getConnectorClient.js'
10
+
11
+ export type GetWalletClientParameters<
12
+ config extends Config = Config,
13
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
14
+ > = GetConnectorClientParameters<Config, chainId>
15
+
16
+ export type GetWalletClientReturnType<
17
+ config extends Config = Config,
18
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
19
+ > = Evaluate<
20
+ WalletClient<
21
+ config['_internal']['transports'][chainId],
22
+ Extract<config['chains'][number], { id: chainId }>,
23
+ Account
24
+ >
25
+ >
26
+
27
+ export type GetWalletClientError = GetConnectorClientError
28
+
29
+ export async function getWalletClient<
30
+ config extends Config,
31
+ chainId extends config['chains'][number]['id'],
32
+ >(
33
+ config: config,
34
+ parameters: GetWalletClientParameters<config, chainId> = {},
35
+ ): Promise<GetWalletClientReturnType<config, chainId>> {
36
+ const client = await getConnectorClient(config, parameters)
37
+ return client.extend(walletActions) as unknown as GetWalletClientReturnType<
38
+ config,
39
+ chainId
40
+ >
41
+ }
@@ -0,0 +1,37 @@
1
+ import type {
2
+ ContractFunctionParameters,
3
+ MulticallParameters as viem_MulticallParameters,
4
+ MulticallReturnType as viem_MulticallReturnType,
5
+ } from 'viem'
6
+ import { multicall as viem_multicall } from 'viem/actions'
7
+
8
+ import type { Config } from '../createConfig.js'
9
+ import type { ChainIdParameter } from '../types/properties.js'
10
+
11
+ export type MulticallParameters<
12
+ contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
13
+ allowFailure extends boolean = true,
14
+ config extends Config = Config,
15
+ > = viem_MulticallParameters<contracts, allowFailure> & ChainIdParameter<config>
16
+
17
+ export type MulticallReturnType<
18
+ contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
19
+ allowFailure extends boolean = true,
20
+ > = viem_MulticallReturnType<contracts, allowFailure>
21
+
22
+ export async function multicall<
23
+ config extends Config,
24
+ const contracts extends readonly unknown[],
25
+ allowFailure extends boolean = true,
26
+ >(
27
+ config: config,
28
+ parameters: MulticallParameters<contracts, allowFailure, config>,
29
+ ): Promise<MulticallReturnType<contracts, allowFailure>> {
30
+ const { allowFailure = true, chainId, contracts, ...rest } = parameters
31
+ const client = config.getClient({ chainId })
32
+ return viem_multicall(client, {
33
+ allowFailure,
34
+ contracts,
35
+ ...rest,
36
+ }) as Promise<MulticallReturnType<contracts, allowFailure>>
37
+ }
@@ -0,0 +1,55 @@
1
+ import { type Abi } from 'viem'
2
+ import type { ContractFunctionArgs, ContractFunctionName } from 'viem'
3
+ import {
4
+ type ReadContractParameters as viem_ReadContractParameters,
5
+ type ReadContractReturnType as viem_ReadContractReturnType,
6
+ readContract as viem_readContract,
7
+ } from 'viem/actions'
8
+
9
+ import { type Config } from '../createConfig.js'
10
+ import type { ChainIdParameter } from '../types/properties.js'
11
+
12
+ export type ReadContractParameters<
13
+ abi extends Abi | readonly unknown[] = Abi,
14
+ functionName extends ContractFunctionName<
15
+ abi,
16
+ 'pure' | 'view'
17
+ > = ContractFunctionName<abi, 'pure' | 'view'>,
18
+ args extends ContractFunctionArgs<
19
+ abi,
20
+ 'pure' | 'view',
21
+ functionName
22
+ > = ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
23
+ config extends Config = Config,
24
+ > = viem_ReadContractParameters<abi, functionName, args> &
25
+ ChainIdParameter<config>
26
+
27
+ export type ReadContractReturnType<
28
+ abi extends Abi | readonly unknown[] = Abi,
29
+ functionName extends ContractFunctionName<
30
+ abi,
31
+ 'pure' | 'view'
32
+ > = ContractFunctionName<abi, 'pure' | 'view'>,
33
+ args extends ContractFunctionArgs<
34
+ abi,
35
+ 'pure' | 'view',
36
+ functionName
37
+ > = ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
38
+ > = viem_ReadContractReturnType<abi, functionName, args>
39
+
40
+ export type ReadContractError = Error
41
+
42
+ /** https://alpha.wagmi.sh/core/api/actions/readContract */
43
+ export function readContract<
44
+ config extends Config,
45
+ const abi extends Abi | readonly unknown[],
46
+ functionName extends ContractFunctionName<abi, 'pure' | 'view'>,
47
+ args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
48
+ >(
49
+ config: config,
50
+ parameters: ReadContractParameters<abi, functionName, args, config>,
51
+ ): Promise<ReadContractReturnType<abi, functionName, args>> {
52
+ const { chainId } = parameters
53
+ const client = config.getClient({ chainId })
54
+ return viem_readContract(client, parameters as any)
55
+ }
@@ -0,0 +1,98 @@
1
+ import type {
2
+ ContractFunctionParameters,
3
+ MulticallParameters as viem_MulticallParameters,
4
+ MulticallReturnType as viem_MulticallReturnType,
5
+ } from 'viem'
6
+ import { ContractFunctionExecutionError } from 'viem'
7
+
8
+ import { type Config } from '../createConfig.js'
9
+ import { type ChainIdParameter } from '../types/properties.js'
10
+ import { multicall } from './multicall.js'
11
+ import { readContract } from './readContract.js'
12
+
13
+ export type ReadContractsParameters<
14
+ contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
15
+ allowFailure extends boolean = true,
16
+ config extends Config = Config,
17
+ > = viem_MulticallParameters<
18
+ contracts,
19
+ allowFailure,
20
+ { properties: ChainIdParameter<config> }
21
+ >
22
+
23
+ export type ReadContractsReturnType<
24
+ contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
25
+ allowFailure extends boolean = true,
26
+ > = viem_MulticallReturnType<contracts, allowFailure>
27
+
28
+ export type ReadContractsError = Error
29
+
30
+ export async function readContracts<
31
+ config extends Config,
32
+ const contracts extends readonly ContractFunctionParameters[],
33
+ allowFailure extends boolean = true,
34
+ >(
35
+ config: config,
36
+ parameters: ReadContractsParameters<contracts, allowFailure, config>,
37
+ ): Promise<ReadContractsReturnType<contracts, allowFailure>> {
38
+ const { allowFailure = true, blockNumber, blockTag, ...rest } = parameters
39
+ const contracts = parameters.contracts as (ContractFunctionParameters & {
40
+ chainId?: number | undefined
41
+ })[]
42
+
43
+ try {
44
+ const contractsByChainId = contracts.reduce(
45
+ (contracts, contract, index) => {
46
+ const chainId = contract.chainId ?? config.state.chainId
47
+ return {
48
+ ...contracts,
49
+ [chainId]: [...(contracts[chainId] || []), { contract, index }],
50
+ }
51
+ },
52
+ {} as {
53
+ [chainId: number]: {
54
+ contract: ContractFunctionParameters
55
+ index: number
56
+ }[]
57
+ },
58
+ )
59
+ const promises = () =>
60
+ Object.entries(contractsByChainId).map(([chainId, contracts]) =>
61
+ multicall(config, {
62
+ ...rest,
63
+ allowFailure,
64
+ chainId: parseInt(chainId),
65
+ contracts: contracts.map(({ contract }) => contract),
66
+ }),
67
+ )
68
+
69
+ const multicallResults = (await Promise.all(promises())).flat()
70
+ // Reorder the contract results back to the order they were
71
+ // provided in.
72
+ const resultIndexes = Object.values(contractsByChainId).flatMap(
73
+ (contracts) => contracts.map(({ index }) => index),
74
+ )
75
+ return multicallResults.reduce((results, result, index) => {
76
+ if (results) results[resultIndexes[index]!] = result
77
+ return results
78
+ }, [] as unknown[]) as ReadContractsReturnType<contracts, allowFailure>
79
+ } catch (error) {
80
+ if (error instanceof ContractFunctionExecutionError) throw error
81
+
82
+ const promises = () =>
83
+ contracts.map((contract) =>
84
+ readContract(config, { ...contract, blockNumber, blockTag }),
85
+ )
86
+ if (allowFailure)
87
+ return (await Promise.allSettled(promises())).map((result) => {
88
+ if (result.status === 'fulfilled')
89
+ return { result: result.value, status: 'success' }
90
+ return { error: result.reason, result: undefined, status: 'failure' }
91
+ }) as ReadContractsReturnType<contracts, allowFailure>
92
+
93
+ return (await Promise.all(promises())) as ReadContractsReturnType<
94
+ contracts,
95
+ allowFailure
96
+ >
97
+ }
98
+ }
@@ -0,0 +1,102 @@
1
+ import type { Address } from 'viem'
2
+
3
+ import type { Config, Connection, Connector } from '../createConfig.js'
4
+ import { type CreateConnectorFn } from '../createConnector.js'
5
+ import type { Evaluate } from '../types/utils.js'
6
+
7
+ export type ReconnectParameters = {
8
+ /** Connectors to attempt reconnect with */
9
+ connectors?: readonly (CreateConnectorFn | Connector)[] | undefined
10
+ }
11
+
12
+ export type ReconnectReturnType = Evaluate<Connection>[]
13
+
14
+ export type ReconnectError = Error
15
+
16
+ let isReconnecting = false
17
+
18
+ /** https://alpha.wagmi.sh/core/api/actions/reconnect */
19
+ export async function reconnect(
20
+ config: Config,
21
+ parameters: ReconnectParameters = {},
22
+ ): Promise<ReconnectReturnType> {
23
+ // If already reconnecting, do nothing
24
+ if (isReconnecting) return []
25
+ isReconnecting = true
26
+
27
+ config.setState((x) => ({
28
+ ...x,
29
+ status: x.current ? 'reconnecting' : 'connecting',
30
+ }))
31
+
32
+ const connectors: Connector[] = []
33
+ if (parameters.connectors?.length) {
34
+ for (const connector_ of parameters.connectors) {
35
+ let connector: Connector
36
+ // "Register" connector if not already created
37
+ if (typeof connector_ === 'function')
38
+ connector = config._internal.setup(connector_)
39
+ else connector = connector_
40
+ connectors.push(connector)
41
+ }
42
+ } else connectors.push(...config.connectors)
43
+
44
+ // Try recently-used connectors first
45
+ const recentConnectorId = await config.storage?.getItem('recentConnectorId')
46
+ const scores: Record<string, number> = {}
47
+ for (const [, connection] of config.state.connections) {
48
+ scores[connection.connector.id] = 1
49
+ }
50
+ if (recentConnectorId) scores[recentConnectorId] = 0
51
+ const sorted =
52
+ Object.keys(scores).length > 0
53
+ ? // .toSorted()
54
+ [...connectors].sort(
55
+ (a, b) => (scores[a.id] ?? 10) - (scores[b.id] ?? 10),
56
+ )
57
+ : connectors
58
+
59
+ // Iterate through each connector and try to connect
60
+ let connected = false
61
+ const connections = []
62
+ for (const connector of sorted) {
63
+ const isAuthorized = await connector.isAuthorized()
64
+ if (!isAuthorized) continue
65
+
66
+ const data = await connector.connect()
67
+ connector.emitter.off('connect', config._internal.connect)
68
+ connector.emitter.on('change', config._internal.change)
69
+ connector.emitter.on('disconnect', config._internal.disconnect)
70
+
71
+ config.setState((x) => {
72
+ const connections = new Map(connected ? x.connections : new Map()).set(
73
+ connector.uid,
74
+ { accounts: data.accounts, chainId: data.chainId, connector },
75
+ )
76
+ return {
77
+ ...x,
78
+ current: connected ? x.current : connector.uid,
79
+ connections,
80
+ }
81
+ })
82
+ connections.push({
83
+ accounts: data.accounts as readonly [Address, ...Address[]],
84
+ chainId: data.chainId,
85
+ connector,
86
+ })
87
+ connected = true
88
+ }
89
+
90
+ // If connecting didn't succeed, set to disconnected
91
+ if (!connected)
92
+ config.setState((x) => ({
93
+ ...x,
94
+ connections: new Map(),
95
+ current: undefined,
96
+ status: 'disconnected',
97
+ }))
98
+ else config.setState((x) => ({ ...x, status: 'connected' }))
99
+
100
+ isReconnecting = false
101
+ return connections
102
+ }
@@ -0,0 +1,68 @@
1
+ import type {
2
+ Account,
3
+ Address,
4
+ Chain,
5
+ SendTransactionParameters as viem_SendTransactionParameters,
6
+ SendTransactionReturnType as viem_SendTransactionReturnType,
7
+ } from 'viem'
8
+ import { sendTransaction as viem_sendTransaction } from 'viem/actions'
9
+
10
+ import type { Config } from '../createConfig.js'
11
+ import type { SelectChains } from '../types/chain.js'
12
+ import type {
13
+ ChainIdParameter,
14
+ ConnectorParameter,
15
+ } from '../types/properties.js'
16
+ import type { Evaluate } from '../types/utils.js'
17
+ import { assertActiveChain } from '../utils/assertActiveChain.js'
18
+ import { getConnectorClient } from './getConnectorClient.js'
19
+
20
+ export type SendTransactionParameters<
21
+ config extends Config = Config,
22
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
23
+ ///
24
+ chains extends readonly Chain[] = SelectChains<config, chainId>,
25
+ > = {
26
+ [key in keyof chains]: Evaluate<
27
+ Omit<
28
+ viem_SendTransactionParameters<chains[key], Account, chains[key]>,
29
+ 'chain'
30
+ > &
31
+ ChainIdParameter<config, chainId> &
32
+ ConnectorParameter & {
33
+ to: Address
34
+ }
35
+ >
36
+ }[number]
37
+
38
+ export type SendTransactionReturnType = viem_SendTransactionReturnType
39
+
40
+ export type SendTransactionError = Error
41
+
42
+ /** https://alpha.wagmi.sh/core/api/actions/sendTransaction */
43
+ export async function sendTransaction<
44
+ config extends Config,
45
+ chainId extends config['chains'][number]['id'],
46
+ >(
47
+ config: config,
48
+ parameters: SendTransactionParameters<config, chainId>,
49
+ ): Promise<SendTransactionReturnType> {
50
+ const { account, chainId, connector, ...rest } = parameters
51
+
52
+ const client = await getConnectorClient(config, {
53
+ account,
54
+ chainId,
55
+ connector,
56
+ })
57
+ if (chainId)
58
+ assertActiveChain(config, { activeChainId: client.chain.id, chainId })
59
+
60
+ const hash = await viem_sendTransaction(client, {
61
+ ...(rest as unknown as viem_SendTransactionParameters),
62
+ // Setting to `null` to not validate inside `viem_sendTransaction`
63
+ // since we already validated above
64
+ chain: null,
65
+ } as viem_SendTransactionParameters)
66
+
67
+ return hash
68
+ }
@@ -0,0 +1,29 @@
1
+ import type { Account } from 'viem'
2
+ import {
3
+ type SignMessageParameters as viem_SignMessageParameters,
4
+ type SignMessageReturnType as viem_SignMessageReturnType,
5
+ signMessage as viem_signMessage,
6
+ } from 'viem/actions'
7
+
8
+ import { type Config } from '../createConfig.js'
9
+ import type { ConnectorParameter } from '../types/properties.js'
10
+ import type { Evaluate } from '../types/utils.js'
11
+ import { getConnectorClient } from './getConnectorClient.js'
12
+
13
+ export type SignMessageParameters = Evaluate<
14
+ viem_SignMessageParameters<Account> & ConnectorParameter
15
+ >
16
+
17
+ export type SignMessageReturnType = viem_SignMessageReturnType
18
+
19
+ export type SignMessageError = Error
20
+
21
+ /** https://alpha.wagmi.sh/core/api/actions/signMessage */
22
+ export async function signMessage(
23
+ config: Config,
24
+ parameters: SignMessageParameters,
25
+ ): Promise<SignMessageReturnType> {
26
+ const { account, connector, ...rest } = parameters
27
+ const client = await getConnectorClient(config, { account, connector })
28
+ return viem_signMessage(client, rest)
29
+ }