@wagmi/core 1.4.1 → 2.0.0

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 (523) hide show
  1. package/dist/esm/actions/connect.js +53 -0
  2. package/dist/esm/actions/connect.js.map +1 -0
  3. package/dist/esm/actions/disconnect.js +49 -0
  4. package/dist/esm/actions/disconnect.js.map +1 -0
  5. package/dist/esm/actions/estimateFeesPerGas.js +24 -0
  6. package/dist/esm/actions/estimateFeesPerGas.js.map +1 -0
  7. package/dist/esm/actions/estimateGas.js +25 -0
  8. package/dist/esm/actions/estimateGas.js.map +1 -0
  9. package/dist/esm/actions/getAccount.js +61 -0
  10. package/dist/esm/actions/getAccount.js.map +1 -0
  11. package/dist/esm/actions/getBalance.js +83 -0
  12. package/dist/esm/actions/getBalance.js.map +1 -0
  13. package/dist/esm/actions/getBlockNumber.js +9 -0
  14. package/dist/esm/actions/getBlockNumber.js.map +1 -0
  15. package/dist/esm/actions/getChainId.js +5 -0
  16. package/dist/esm/actions/getChainId.js.map +1 -0
  17. package/dist/esm/actions/getClient.js +5 -0
  18. package/dist/esm/actions/getClient.js.map +1 -0
  19. package/dist/esm/actions/getConnections.js +13 -0
  20. package/dist/esm/actions/getConnections.js.map +1 -0
  21. package/dist/esm/actions/getConnectorClient.js +42 -0
  22. package/dist/esm/actions/getConnectorClient.js.map +1 -0
  23. package/dist/esm/actions/getEnsAddress.js +9 -0
  24. package/dist/esm/actions/getEnsAddress.js.map +1 -0
  25. package/dist/esm/actions/getEnsAvatar.js +9 -0
  26. package/dist/esm/actions/getEnsAvatar.js.map +1 -0
  27. package/dist/esm/actions/getEnsName.js +9 -0
  28. package/dist/esm/actions/getEnsName.js.map +1 -0
  29. package/dist/esm/actions/getEnsResolver.js +9 -0
  30. package/dist/esm/actions/getEnsResolver.js.map +1 -0
  31. package/dist/esm/actions/getPublicClient.js +6 -0
  32. package/dist/esm/actions/getPublicClient.js.map +1 -0
  33. package/dist/esm/actions/getToken.js +101 -0
  34. package/dist/esm/actions/getToken.js.map +1 -0
  35. package/dist/esm/actions/getTransaction.js +10 -0
  36. package/dist/esm/actions/getTransaction.js.map +1 -0
  37. package/dist/esm/actions/getWalletClient.js +7 -0
  38. package/dist/esm/actions/getWalletClient.js.map +1 -0
  39. package/dist/esm/actions/multicall.js +11 -0
  40. package/dist/esm/actions/multicall.js.map +1 -0
  41. package/dist/esm/actions/readContract.js +10 -0
  42. package/dist/esm/actions/readContract.js.map +1 -0
  43. package/dist/esm/actions/readContracts.js +46 -0
  44. package/dist/esm/actions/readContracts.js.map +1 -0
  45. package/dist/esm/actions/reconnect.js +78 -0
  46. package/dist/esm/actions/reconnect.js.map +1 -0
  47. package/dist/esm/actions/sendTransaction.js +22 -0
  48. package/dist/esm/actions/sendTransaction.js.map +1 -0
  49. package/dist/esm/actions/signMessage.js +10 -0
  50. package/dist/esm/actions/signMessage.js.map +1 -0
  51. package/dist/esm/actions/signTypedData.js +10 -0
  52. package/dist/esm/actions/signTypedData.js.map +1 -0
  53. package/dist/esm/actions/simulateContract.js +33 -0
  54. package/dist/esm/actions/simulateContract.js.map +1 -0
  55. package/dist/esm/actions/switchAccount.js +19 -0
  56. package/dist/esm/actions/switchAccount.js.map +1 -0
  57. package/dist/esm/actions/switchChain.js +23 -0
  58. package/dist/esm/actions/switchChain.js.map +1 -0
  59. package/dist/esm/actions/waitForTransactionReceipt.js +23 -0
  60. package/dist/esm/actions/waitForTransactionReceipt.js.map +1 -0
  61. package/dist/esm/actions/watchAccount.js +18 -0
  62. package/dist/esm/actions/watchAccount.js.map +1 -0
  63. package/dist/esm/actions/watchBlockNumber.js +28 -0
  64. package/dist/esm/actions/watchBlockNumber.js.map +1 -0
  65. package/dist/esm/actions/watchChainId.js +6 -0
  66. package/dist/esm/actions/watchChainId.js.map +1 -0
  67. package/dist/esm/actions/watchClient.js +11 -0
  68. package/dist/esm/actions/watchClient.js.map +1 -0
  69. package/dist/esm/actions/watchConnections.js +10 -0
  70. package/dist/esm/actions/watchConnections.js.map +1 -0
  71. package/dist/esm/actions/watchContractEvent.js +27 -0
  72. package/dist/esm/actions/watchContractEvent.js.map +1 -0
  73. package/dist/esm/actions/watchPendingTransactions.js +27 -0
  74. package/dist/esm/actions/watchPendingTransactions.js.map +1 -0
  75. package/dist/esm/actions/watchPublicClient.js +11 -0
  76. package/dist/esm/actions/watchPublicClient.js.map +1 -0
  77. package/dist/esm/actions/writeContract.js +31 -0
  78. package/dist/esm/actions/writeContract.js.map +1 -0
  79. package/dist/esm/createConfig.js +218 -0
  80. package/dist/esm/createConfig.js.map +1 -0
  81. package/dist/esm/createConnector.js +8 -0
  82. package/dist/esm/createConnector.js.map +1 -0
  83. package/dist/esm/createEmitter.js +39 -0
  84. package/dist/esm/createEmitter.js.map +1 -0
  85. package/dist/esm/createStorage.js +37 -0
  86. package/dist/esm/createStorage.js.map +1 -0
  87. package/dist/esm/errors/base.js +86 -0
  88. package/dist/esm/errors/base.js.map +1 -0
  89. package/dist/esm/errors/config.js +70 -0
  90. package/dist/esm/errors/config.js.map +1 -0
  91. package/dist/esm/errors/connector.js +24 -0
  92. package/dist/esm/errors/connector.js.map +1 -0
  93. package/dist/esm/exports/actions.js +42 -0
  94. package/dist/esm/exports/actions.js.map +1 -0
  95. package/dist/esm/exports/chains.js +4 -0
  96. package/dist/esm/exports/chains.js.map +1 -0
  97. package/dist/esm/exports/index.js +71 -0
  98. package/dist/esm/exports/index.js.map +1 -0
  99. package/dist/esm/exports/internal.js +11 -0
  100. package/dist/esm/exports/internal.js.map +1 -0
  101. package/dist/esm/exports/query.js +29 -0
  102. package/dist/esm/exports/query.js.map +1 -0
  103. package/dist/esm/query/connect.js +11 -0
  104. package/dist/esm/query/connect.js.map +1 -0
  105. package/dist/esm/query/disconnect.js +10 -0
  106. package/dist/esm/query/disconnect.js.map +1 -0
  107. package/dist/esm/query/estimateFeesPerGas.js +16 -0
  108. package/dist/esm/query/estimateFeesPerGas.js.map +1 -0
  109. package/dist/esm/query/estimateGas.js +20 -0
  110. package/dist/esm/query/estimateGas.js.map +1 -0
  111. package/dist/esm/query/getBalance.js +21 -0
  112. package/dist/esm/query/getBalance.js.map +1 -0
  113. package/dist/esm/query/getBlockNumber.js +18 -0
  114. package/dist/esm/query/getBlockNumber.js.map +1 -0
  115. package/dist/esm/query/getConnectorClient.js +24 -0
  116. package/dist/esm/query/getConnectorClient.js.map +1 -0
  117. package/dist/esm/query/getEnsAddress.js +18 -0
  118. package/dist/esm/query/getEnsAddress.js.map +1 -0
  119. package/dist/esm/query/getEnsAvatar.js +18 -0
  120. package/dist/esm/query/getEnsAvatar.js.map +1 -0
  121. package/dist/esm/query/getEnsName.js +18 -0
  122. package/dist/esm/query/getEnsName.js.map +1 -0
  123. package/dist/esm/query/getEnsResolver.js +18 -0
  124. package/dist/esm/query/getEnsResolver.js.map +1 -0
  125. package/dist/esm/query/getToken.js +18 -0
  126. package/dist/esm/query/getToken.js.map +1 -0
  127. package/dist/esm/query/getTransaction.js +20 -0
  128. package/dist/esm/query/getTransaction.js.map +1 -0
  129. package/dist/esm/query/getWalletClient.js +21 -0
  130. package/dist/esm/query/getWalletClient.js.map +1 -0
  131. package/dist/esm/query/readContract.js +32 -0
  132. package/dist/esm/query/readContract.js.map +1 -0
  133. package/dist/esm/query/readContracts.js +36 -0
  134. package/dist/esm/query/readContracts.js.map +1 -0
  135. package/dist/esm/query/reconnect.js +10 -0
  136. package/dist/esm/query/reconnect.js.map +1 -0
  137. package/dist/esm/query/sendTransaction.js +11 -0
  138. package/dist/esm/query/sendTransaction.js.map +1 -0
  139. package/dist/esm/query/signMessage.js +13 -0
  140. package/dist/esm/query/signMessage.js.map +1 -0
  141. package/dist/esm/query/signTypedData.js +11 -0
  142. package/dist/esm/query/signTypedData.js.map +1 -0
  143. package/dist/esm/query/simulateContract.js +25 -0
  144. package/dist/esm/query/simulateContract.js.map +1 -0
  145. package/dist/esm/query/switchAccount.js +11 -0
  146. package/dist/esm/query/switchAccount.js.map +1 -0
  147. package/dist/esm/query/switchChain.js +11 -0
  148. package/dist/esm/query/switchChain.js.map +1 -0
  149. package/dist/esm/query/types.js +2 -0
  150. package/dist/esm/query/types.js.map +1 -0
  151. package/dist/esm/query/utils.js +45 -0
  152. package/dist/esm/query/utils.js.map +1 -0
  153. package/dist/esm/query/waitForTransactionReceipt.js +23 -0
  154. package/dist/esm/query/waitForTransactionReceipt.js.map +1 -0
  155. package/dist/esm/query/writeContract.js +11 -0
  156. package/dist/esm/query/writeContract.js.map +1 -0
  157. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  158. package/dist/esm/types/chain.js +2 -0
  159. package/dist/esm/types/chain.js.map +1 -0
  160. package/dist/esm/types/properties.js +2 -0
  161. package/dist/esm/types/properties.js.map +1 -0
  162. package/dist/esm/types/register.js +2 -0
  163. package/dist/esm/types/register.js.map +1 -0
  164. package/dist/esm/types/unit.js +2 -0
  165. package/dist/esm/types/unit.js.map +1 -0
  166. package/dist/esm/types/utils.js +2 -0
  167. package/dist/esm/types/utils.js.map +1 -0
  168. package/dist/esm/utils/assertActiveChain.js +14 -0
  169. package/dist/esm/utils/assertActiveChain.js.map +1 -0
  170. package/dist/esm/utils/deepEqual.js +41 -0
  171. package/dist/esm/utils/deepEqual.js.map +1 -0
  172. package/dist/esm/utils/deserialize.js +11 -0
  173. package/dist/esm/utils/deserialize.js.map +1 -0
  174. package/dist/esm/utils/getUnit.js +10 -0
  175. package/dist/esm/utils/getUnit.js.map +1 -0
  176. package/dist/esm/utils/getVersion.js +3 -0
  177. package/dist/esm/utils/getVersion.js.map +1 -0
  178. package/dist/esm/utils/normalizeChainId.js +10 -0
  179. package/dist/esm/utils/normalizeChainId.js.map +1 -0
  180. package/dist/esm/utils/serialize.js +87 -0
  181. package/dist/esm/utils/serialize.js.map +1 -0
  182. package/dist/esm/utils/uid.js +14 -0
  183. package/dist/esm/utils/uid.js.map +1 -0
  184. package/dist/esm/version.js +2 -0
  185. package/dist/esm/version.js.map +1 -0
  186. package/dist/types/actions/connect.d.ts +19 -0
  187. package/dist/types/actions/connect.d.ts.map +1 -0
  188. package/dist/types/actions/disconnect.d.ts +9 -0
  189. package/dist/types/actions/disconnect.d.ts.map +1 -0
  190. package/dist/types/actions/estimateFeesPerGas.d.ts +16 -0
  191. package/dist/types/actions/estimateFeesPerGas.d.ts.map +1 -0
  192. package/dist/types/actions/estimateGas.d.ts +14 -0
  193. package/dist/types/actions/estimateGas.d.ts.map +1 -0
  194. package/dist/types/actions/getAccount.d.ts +46 -0
  195. package/dist/types/actions/getAccount.d.ts.map +1 -0
  196. package/dist/types/actions/getBalance.d.ts +21 -0
  197. package/dist/types/actions/getBalance.d.ts.map +1 -0
  198. package/dist/types/actions/getBlockNumber.d.ts +10 -0
  199. package/dist/types/actions/getBlockNumber.d.ts.map +1 -0
  200. package/dist/types/actions/getChainId.d.ts +5 -0
  201. package/dist/types/actions/getChainId.d.ts.map +1 -0
  202. package/dist/types/actions/getClient.d.ts +10 -0
  203. package/dist/types/actions/getClient.d.ts.map +1 -0
  204. package/dist/types/actions/getConnections.d.ts +6 -0
  205. package/dist/types/actions/getConnections.d.ts.map +1 -0
  206. package/dist/types/actions/getConnectorClient.d.ts +15 -0
  207. package/dist/types/actions/getConnectorClient.d.ts.map +1 -0
  208. package/dist/types/actions/getEnsAddress.d.ts +10 -0
  209. package/dist/types/actions/getEnsAddress.d.ts.map +1 -0
  210. package/dist/types/actions/getEnsAvatar.d.ts +10 -0
  211. package/dist/types/actions/getEnsAvatar.d.ts.map +1 -0
  212. package/dist/types/actions/getEnsName.d.ts +10 -0
  213. package/dist/types/actions/getEnsName.d.ts.map +1 -0
  214. package/dist/types/actions/getEnsResolver.d.ts +10 -0
  215. package/dist/types/actions/getEnsResolver.d.ts.map +1 -0
  216. package/dist/types/actions/getPublicClient.d.ts +10 -0
  217. package/dist/types/actions/getPublicClient.d.ts.map +1 -0
  218. package/dist/types/actions/getToken.d.ts +22 -0
  219. package/dist/types/actions/getToken.d.ts.map +1 -0
  220. package/dist/types/actions/getTransaction.d.ts +14 -0
  221. package/dist/types/actions/getTransaction.d.ts.map +1 -0
  222. package/dist/types/actions/getWalletClient.d.ts +11 -0
  223. package/dist/types/actions/getWalletClient.d.ts.map +1 -0
  224. package/dist/types/actions/multicall.d.ts +7 -0
  225. package/dist/types/actions/multicall.d.ts.map +1 -0
  226. package/dist/types/actions/readContract.d.ts +11 -0
  227. package/dist/types/actions/readContract.d.ts.map +1 -0
  228. package/dist/types/actions/readContracts.d.ts +10 -0
  229. package/dist/types/actions/readContracts.d.ts.map +1 -0
  230. package/dist/types/actions/reconnect.d.ts +12 -0
  231. package/dist/types/actions/reconnect.d.ts.map +1 -0
  232. package/dist/types/actions/sendTransaction.d.ts +15 -0
  233. package/dist/types/actions/sendTransaction.d.ts.map +1 -0
  234. package/dist/types/actions/signMessage.d.ts +11 -0
  235. package/dist/types/actions/signMessage.d.ts.map +1 -0
  236. package/dist/types/actions/signTypedData.d.ts +10 -0
  237. package/dist/types/actions/signTypedData.d.ts.map +1 -0
  238. package/dist/types/actions/simulateContract.d.ts +21 -0
  239. package/dist/types/actions/simulateContract.d.ts.map +1 -0
  240. package/dist/types/actions/switchAccount.d.ts +14 -0
  241. package/dist/types/actions/switchAccount.d.ts.map +1 -0
  242. package/dist/types/actions/switchChain.d.ts +16 -0
  243. package/dist/types/actions/switchChain.d.ts.map +1 -0
  244. package/dist/types/actions/waitForTransactionReceipt.d.ts +12 -0
  245. package/dist/types/actions/waitForTransactionReceipt.d.ts.map +1 -0
  246. package/dist/types/actions/watchAccount.d.ts +9 -0
  247. package/dist/types/actions/watchAccount.d.ts.map +1 -0
  248. package/dist/types/actions/watchBlockNumber.d.ts +13 -0
  249. package/dist/types/actions/watchBlockNumber.d.ts.map +1 -0
  250. package/dist/types/actions/watchChainId.d.ts +9 -0
  251. package/dist/types/actions/watchChainId.d.ts.map +1 -0
  252. package/dist/types/actions/watchClient.d.ts +9 -0
  253. package/dist/types/actions/watchClient.d.ts.map +1 -0
  254. package/dist/types/actions/watchConnections.d.ts +9 -0
  255. package/dist/types/actions/watchConnections.d.ts.map +1 -0
  256. package/dist/types/actions/watchContractEvent.d.ts +13 -0
  257. package/dist/types/actions/watchContractEvent.d.ts.map +1 -0
  258. package/dist/types/actions/watchPendingTransactions.d.ts +13 -0
  259. package/dist/types/actions/watchPendingTransactions.d.ts.map +1 -0
  260. package/dist/types/actions/watchPublicClient.d.ts +9 -0
  261. package/dist/types/actions/watchPublicClient.d.ts.map +1 -0
  262. package/dist/types/actions/writeContract.d.ts +15 -0
  263. package/dist/types/actions/writeContract.d.ts.map +1 -0
  264. package/dist/types/createConfig.d.ts +72 -0
  265. package/dist/types/createConfig.d.ts.map +1 -0
  266. package/dist/types/createConnector.d.ts +57 -0
  267. package/dist/types/createConnector.d.ts.map +1 -0
  268. package/dist/types/createEmitter.d.ts +31 -0
  269. package/dist/types/createEmitter.d.ts.map +1 -0
  270. package/dist/types/createStorage.d.ts +30 -0
  271. package/dist/types/createStorage.d.ts.map +1 -0
  272. package/dist/types/errors/base.d.ts +24 -0
  273. package/dist/types/errors/base.d.ts.map +1 -0
  274. package/dist/types/errors/config.d.ts +34 -0
  275. package/dist/types/errors/config.d.ts.map +1 -0
  276. package/dist/types/errors/connector.d.ts +13 -0
  277. package/dist/types/errors/connector.d.ts.map +1 -0
  278. package/dist/types/exports/actions.d.ts +40 -0
  279. package/dist/types/exports/actions.d.ts.map +1 -0
  280. package/dist/types/exports/chains.d.ts +2 -0
  281. package/dist/types/exports/chains.d.ts.map +1 -0
  282. package/dist/types/exports/index.d.ts +52 -0
  283. package/dist/types/exports/index.d.ts.map +1 -0
  284. package/dist/types/exports/internal.d.ts +5 -0
  285. package/dist/types/exports/internal.d.ts.map +1 -0
  286. package/dist/types/exports/query.d.ts +27 -0
  287. package/dist/types/exports/query.d.ts.map +1 -0
  288. package/dist/types/query/connect.d.ts +15 -0
  289. package/dist/types/query/connect.d.ts.map +1 -0
  290. package/dist/types/query/disconnect.d.ts +12 -0
  291. package/dist/types/query/disconnect.d.ts.map +1 -0
  292. package/dist/types/query/estimateFeesPerGas.d.ts +34 -0
  293. package/dist/types/query/estimateFeesPerGas.d.ts.map +1 -0
  294. package/dist/types/query/estimateGas.d.ts +18 -0
  295. package/dist/types/query/estimateGas.d.ts.map +1 -0
  296. package/dist/types/query/getBalance.d.ts +42 -0
  297. package/dist/types/query/getBalance.d.ts.map +1 -0
  298. package/dist/types/query/getBlockNumber.d.ts +34 -0
  299. package/dist/types/query/getBlockNumber.d.ts.map +1 -0
  300. package/dist/types/query/getConnectorClient.d.ts +319 -0
  301. package/dist/types/query/getConnectorClient.d.ts.map +1 -0
  302. package/dist/types/query/getEnsAddress.d.ts +42 -0
  303. package/dist/types/query/getEnsAddress.d.ts.map +1 -0
  304. package/dist/types/query/getEnsAvatar.d.ts +42 -0
  305. package/dist/types/query/getEnsAvatar.d.ts.map +1 -0
  306. package/dist/types/query/getEnsName.d.ts +39 -0
  307. package/dist/types/query/getEnsName.d.ts.map +1 -0
  308. package/dist/types/query/getEnsResolver.d.ts +39 -0
  309. package/dist/types/query/getEnsResolver.d.ts.map +1 -0
  310. package/dist/types/query/getToken.d.ts +33 -0
  311. package/dist/types/query/getToken.d.ts.map +1 -0
  312. package/dist/types/query/getTransaction.d.ts +110 -0
  313. package/dist/types/query/getTransaction.d.ts.map +1 -0
  314. package/dist/types/query/getWalletClient.d.ts +540 -0
  315. package/dist/types/query/getWalletClient.d.ts.map +1 -0
  316. package/dist/types/query/readContract.d.ts +19 -0
  317. package/dist/types/query/readContract.d.ts.map +1 -0
  318. package/dist/types/query/readContracts.d.ts +65 -0
  319. package/dist/types/query/readContracts.d.ts.map +1 -0
  320. package/dist/types/query/reconnect.d.ts +13 -0
  321. package/dist/types/query/reconnect.d.ts.map +1 -0
  322. package/dist/types/query/sendTransaction.d.ts +13 -0
  323. package/dist/types/query/sendTransaction.d.ts.map +1 -0
  324. package/dist/types/query/signMessage.d.ts +17 -0
  325. package/dist/types/query/signMessage.d.ts.map +1 -0
  326. package/dist/types/query/signTypedData.d.ts +219 -0
  327. package/dist/types/query/signTypedData.d.ts.map +1 -0
  328. package/dist/types/query/simulateContract.d.ts +19 -0
  329. package/dist/types/query/simulateContract.d.ts.map +1 -0
  330. package/dist/types/query/switchAccount.d.ts +15 -0
  331. package/dist/types/query/switchAccount.d.ts.map +1 -0
  332. package/dist/types/query/switchChain.d.ts +18 -0
  333. package/dist/types/query/switchChain.d.ts.map +1 -0
  334. package/dist/types/query/types.d.ts +9 -0
  335. package/dist/types/query/types.d.ts.map +1 -0
  336. package/dist/types/query/utils.d.ts +4 -0
  337. package/dist/types/query/utils.d.ts.map +1 -0
  338. package/dist/types/query/waitForTransactionReceipt.d.ts +131 -0
  339. package/dist/types/query/waitForTransactionReceipt.d.ts.map +1 -0
  340. package/dist/types/query/writeContract.d.ts +14 -0
  341. package/dist/types/query/writeContract.d.ts.map +1 -0
  342. package/dist/types/types/chain.d.ts +15 -0
  343. package/dist/types/types/chain.d.ts.map +1 -0
  344. package/dist/types/types/properties.d.ts +11 -0
  345. package/dist/types/types/properties.d.ts.map +1 -0
  346. package/dist/types/types/register.d.ts +8 -0
  347. package/dist/types/types/register.d.ts.map +1 -0
  348. package/dist/types/types/unit.d.ts +2 -0
  349. package/dist/types/types/unit.d.ts.map +1 -0
  350. package/dist/types/types/utils.d.ts +41 -0
  351. package/dist/types/types/utils.d.ts.map +1 -0
  352. package/dist/types/utils/assertActiveChain.d.ts +8 -0
  353. package/dist/types/utils/assertActiveChain.d.ts.map +1 -0
  354. package/dist/types/utils/deepEqual.d.ts +3 -0
  355. package/dist/types/utils/deepEqual.d.ts.map +1 -0
  356. package/dist/types/utils/deserialize.d.ts +4 -0
  357. package/dist/types/utils/deserialize.d.ts.map +1 -0
  358. package/dist/types/utils/getUnit.d.ts +3 -0
  359. package/dist/types/utils/getUnit.d.ts.map +1 -0
  360. package/dist/types/utils/getVersion.d.ts +2 -0
  361. package/dist/types/utils/getVersion.d.ts.map +1 -0
  362. package/dist/types/utils/normalizeChainId.d.ts +2 -0
  363. package/dist/types/utils/normalizeChainId.d.ts.map +1 -0
  364. package/dist/types/utils/serialize.d.ts +16 -0
  365. package/dist/types/utils/serialize.d.ts.map +1 -0
  366. package/dist/types/utils/uid.d.ts +2 -0
  367. package/dist/types/utils/uid.d.ts.map +1 -0
  368. package/dist/types/version.d.ts +2 -0
  369. package/dist/types/version.d.ts.map +1 -0
  370. package/package.json +65 -101
  371. package/src/actions/connect.ts +86 -0
  372. package/src/actions/disconnect.ts +68 -0
  373. package/src/actions/estimateFeesPerGas.ts +76 -0
  374. package/src/actions/estimateGas.ts +62 -0
  375. package/src/actions/getAccount.ts +109 -0
  376. package/src/actions/getBalance.ts +141 -0
  377. package/src/actions/getBlockNumber.ts +27 -0
  378. package/src/actions/getChainId.ts +11 -0
  379. package/src/actions/getClient.ts +30 -0
  380. package/src/actions/getConnections.ts +16 -0
  381. package/src/actions/getConnectorClient.ts +96 -0
  382. package/src/actions/getEnsAddress.ts +27 -0
  383. package/src/actions/getEnsAvatar.ts +27 -0
  384. package/src/actions/getEnsName.ts +27 -0
  385. package/src/actions/getEnsResolver.ts +27 -0
  386. package/src/actions/getPublicClient.ts +34 -0
  387. package/src/actions/getToken.ts +140 -0
  388. package/src/actions/getTransaction.ts +44 -0
  389. package/src/actions/getWalletClient.ts +41 -0
  390. package/src/actions/multicall.ts +37 -0
  391. package/src/actions/readContract.ts +55 -0
  392. package/src/actions/readContracts.ts +98 -0
  393. package/src/actions/reconnect.ts +102 -0
  394. package/src/actions/sendTransaction.ts +68 -0
  395. package/src/actions/signMessage.ts +29 -0
  396. package/src/actions/signTypedData.ts +36 -0
  397. package/src/actions/simulateContract.ts +161 -0
  398. package/src/actions/switchAccount.ts +37 -0
  399. package/src/actions/switchChain.ts +63 -0
  400. package/src/actions/waitForTransactionReceipt.ts +69 -0
  401. package/src/actions/watchAccount.ts +32 -0
  402. package/src/actions/watchBlockNumber.ts +78 -0
  403. package/src/actions/watchChainId.ts +20 -0
  404. package/src/actions/watchClient.ts +34 -0
  405. package/src/actions/watchConnections.ts +26 -0
  406. package/src/actions/watchContractEvent.ts +98 -0
  407. package/src/actions/watchPendingTransactions.ts +79 -0
  408. package/src/actions/watchPublicClient.ts +37 -0
  409. package/src/actions/writeContract.ts +111 -0
  410. package/src/createConfig.ts +382 -0
  411. package/src/createConnector.ts +78 -0
  412. package/src/createEmitter.ts +68 -0
  413. package/src/createStorage.ts +89 -0
  414. package/src/errors/base.ts +71 -0
  415. package/src/errors/config.ts +60 -0
  416. package/src/errors/connector.ts +17 -0
  417. package/src/exports/actions.ts +258 -0
  418. package/src/exports/chains.ts +4 -0
  419. package/src/exports/index.ts +339 -0
  420. package/src/exports/internal.ts +28 -0
  421. package/src/exports/query.ts +220 -0
  422. package/src/query/connect.ts +45 -0
  423. package/src/query/disconnect.ts +43 -0
  424. package/src/query/estimateFeesPerGas.ts +56 -0
  425. package/src/query/estimateGas.ts +55 -0
  426. package/src/query/getBalance.ts +61 -0
  427. package/src/query/getBlockNumber.ts +50 -0
  428. package/src/query/getConnectorClient.ts +68 -0
  429. package/src/query/getEnsAddress.ts +49 -0
  430. package/src/query/getEnsAvatar.ts +49 -0
  431. package/src/query/getEnsName.ts +49 -0
  432. package/src/query/getEnsResolver.ts +49 -0
  433. package/src/query/getToken.ts +49 -0
  434. package/src/query/getTransaction.ts +75 -0
  435. package/src/query/getWalletClient.ts +64 -0
  436. package/src/query/readContract.ts +88 -0
  437. package/src/query/readContracts.ts +98 -0
  438. package/src/query/reconnect.ts +42 -0
  439. package/src/query/sendTransaction.ts +65 -0
  440. package/src/query/signMessage.ts +42 -0
  441. package/src/query/signTypedData.ts +63 -0
  442. package/src/query/simulateContract.ts +128 -0
  443. package/src/query/switchAccount.ts +52 -0
  444. package/src/query/switchChain.ts +67 -0
  445. package/src/query/types.ts +52 -0
  446. package/src/query/utils.ts +54 -0
  447. package/src/query/waitForTransactionReceipt.ts +71 -0
  448. package/src/query/writeContract.ts +91 -0
  449. package/src/types/chain.ts +25 -0
  450. package/src/types/properties.ts +21 -0
  451. package/src/types/register.ts +8 -0
  452. package/src/types/unit.ts +1 -0
  453. package/src/types/utils.ts +85 -0
  454. package/src/utils/assertActiveChain.ts +26 -0
  455. package/src/utils/deepEqual.ts +43 -0
  456. package/src/utils/deserialize.ts +10 -0
  457. package/src/utils/getUnit.ts +9 -0
  458. package/src/utils/getVersion.ts +3 -0
  459. package/src/utils/normalizeChainId.ts +12 -0
  460. package/src/utils/serialize.ts +116 -0
  461. package/src/utils/uid.ts +14 -0
  462. package/src/version.ts +1 -0
  463. package/README.md +0 -30
  464. package/chains/package.json +0 -4
  465. package/connectors/coinbaseWallet/package.json +0 -4
  466. package/connectors/injected/package.json +0 -4
  467. package/connectors/ledger/package.json +0 -4
  468. package/connectors/metaMask/package.json +0 -4
  469. package/connectors/mock/package.json +0 -4
  470. package/connectors/package.json +0 -4
  471. package/connectors/safe/package.json +0 -4
  472. package/connectors/walletConnect/package.json +0 -4
  473. package/connectors/walletConnectLegacy/package.json +0 -4
  474. package/dist/chains.d.ts +0 -2
  475. package/dist/chains.js +0 -2
  476. package/dist/chunk-4E64EZ7V.js +0 -7
  477. package/dist/chunk-BVC4KGLQ.js +0 -8
  478. package/dist/chunk-EQOEZP46.js +0 -6
  479. package/dist/chunk-KFW652VN.js +0 -7
  480. package/dist/chunk-LAFZBYO7.js +0 -2934
  481. package/dist/chunk-MQXBDTVK.js +0 -29
  482. package/dist/connectors/coinbaseWallet.d.ts +0 -1
  483. package/dist/connectors/coinbaseWallet.js +0 -7
  484. package/dist/connectors/index.d.ts +0 -2
  485. package/dist/connectors/index.js +0 -9
  486. package/dist/connectors/injected.d.ts +0 -1
  487. package/dist/connectors/injected.js +0 -7
  488. package/dist/connectors/ledger.d.ts +0 -1
  489. package/dist/connectors/ledger.js +0 -7
  490. package/dist/connectors/metaMask.d.ts +0 -1
  491. package/dist/connectors/metaMask.js +0 -7
  492. package/dist/connectors/mock.d.ts +0 -1
  493. package/dist/connectors/mock.js +0 -9
  494. package/dist/connectors/safe.d.ts +0 -1
  495. package/dist/connectors/safe.js +0 -7
  496. package/dist/connectors/walletConnect.d.ts +0 -1
  497. package/dist/connectors/walletConnect.js +0 -7
  498. package/dist/connectors/walletConnectLegacy.d.ts +0 -1
  499. package/dist/connectors/walletConnectLegacy.js +0 -7
  500. package/dist/index-e744bbc2.d.ts +0 -22
  501. package/dist/index.d.ts +0 -1397
  502. package/dist/index.js +0 -135
  503. package/dist/internal/index.d.ts +0 -24
  504. package/dist/internal/index.js +0 -10
  505. package/dist/internal/test.d.ts +0 -438
  506. package/dist/internal/test.js +0 -160
  507. package/dist/providers/alchemy.d.ts +0 -11
  508. package/dist/providers/alchemy.js +0 -29
  509. package/dist/providers/infura.d.ts +0 -11
  510. package/dist/providers/infura.js +0 -29
  511. package/dist/providers/jsonRpc.d.ts +0 -13
  512. package/dist/providers/jsonRpc.js +0 -28
  513. package/dist/providers/public.d.ts +0 -7
  514. package/dist/providers/public.js +0 -16
  515. package/dist/window.d.ts +0 -7
  516. package/dist/window.js +0 -0
  517. package/internal/package.json +0 -4
  518. package/internal/test/package.json +0 -4
  519. package/providers/alchemy/package.json +0 -4
  520. package/providers/infura/package.json +0 -4
  521. package/providers/jsonRpc/package.json +0 -4
  522. package/providers/public/package.json +0 -4
  523. package/window/package.json +0 -4
@@ -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
+ }
@@ -0,0 +1,36 @@
1
+ import type { Account, TypedData } from 'viem'
2
+ import {
3
+ type SignTypedDataParameters as viem_SignTypedDataParameters,
4
+ type SignTypedDataReturnType as viem_SignTypedDataReturnType,
5
+ signTypedData as viem_signTypedData,
6
+ } from 'viem/actions'
7
+
8
+ import { type Config } from '../createConfig.js'
9
+ import type { ConnectorParameter } from '../types/properties.js'
10
+ import { getConnectorClient } from './getConnectorClient.js'
11
+
12
+ export type SignTypedDataParameters<
13
+ typedData extends TypedData | Record<string, unknown> = TypedData,
14
+ primaryType extends keyof typedData | 'EIP712Domain' = keyof typedData,
15
+ > = viem_SignTypedDataParameters<typedData, primaryType, Account> &
16
+ ConnectorParameter
17
+
18
+ export type SignTypedDataReturnType = viem_SignTypedDataReturnType
19
+
20
+ export type SignTypedDataError = Error
21
+
22
+ /** https://alpha.wagmi.sh/core/api/actions/signTypedData */
23
+ export async function signTypedData<
24
+ const typedData extends TypedData | Record<string, unknown>,
25
+ primaryType extends keyof typedData | 'EIP712Domain',
26
+ >(
27
+ config: Config,
28
+ parameters: SignTypedDataParameters<typedData, primaryType>,
29
+ ): Promise<SignTypedDataReturnType> {
30
+ const { account, connector, ...rest } = parameters
31
+ const client = await getConnectorClient(config, { account, connector })
32
+ return viem_signTypedData(
33
+ client,
34
+ rest as unknown as viem_SignTypedDataParameters,
35
+ )
36
+ }
@@ -0,0 +1,161 @@
1
+ import type {
2
+ Abi,
3
+ Account,
4
+ Address,
5
+ Chain,
6
+ ContractFunctionArgs,
7
+ ContractFunctionName,
8
+ } from 'viem'
9
+ import {
10
+ type SimulateContractParameters as viem_SimulateContractParameters,
11
+ type SimulateContractReturnType as viem_SimulateContractReturnType,
12
+ simulateContract as viem_simulateContract,
13
+ } from 'viem/actions'
14
+
15
+ import { type Config } from '../createConfig.js'
16
+ import type { SelectChains } from '../types/chain.js'
17
+ import type {
18
+ ChainIdParameter,
19
+ ConnectorParameter,
20
+ } from '../types/properties.js'
21
+ import type { PartialBy, UnionEvaluate, UnionOmit } from '../types/utils.js'
22
+ import { assertActiveChain } from '../utils/assertActiveChain.js'
23
+ import { getConnectorClient } from './getConnectorClient.js'
24
+
25
+ export type SimulateContractParameters<
26
+ abi extends Abi | readonly unknown[] = Abi,
27
+ functionName extends ContractFunctionName<
28
+ abi,
29
+ 'nonpayable' | 'payable'
30
+ > = ContractFunctionName<abi, 'nonpayable' | 'payable'>,
31
+ args extends ContractFunctionArgs<
32
+ abi,
33
+ 'nonpayable' | 'payable',
34
+ functionName
35
+ > = ContractFunctionArgs<abi, 'nonpayable' | 'payable', functionName>,
36
+ config extends Config = Config,
37
+ chainId extends
38
+ | config['chains'][number]['id']
39
+ | undefined = config['chains'][number]['id'],
40
+ ///
41
+ chains extends readonly Chain[] = SelectChains<config, chainId>,
42
+ > = {
43
+ [key in keyof chains]: UnionEvaluate<
44
+ UnionOmit<
45
+ viem_SimulateContractParameters<
46
+ abi,
47
+ functionName,
48
+ args,
49
+ chains[key],
50
+ chains[key]
51
+ >,
52
+ 'chain'
53
+ >
54
+ > &
55
+ ChainIdParameter<config, chainId> &
56
+ ConnectorParameter
57
+ }[number]
58
+
59
+ export type SimulateContractReturnType<
60
+ abi extends Abi | readonly unknown[] = Abi,
61
+ functionName extends ContractFunctionName<
62
+ abi,
63
+ 'nonpayable' | 'payable'
64
+ > = ContractFunctionName<abi, 'nonpayable' | 'payable'>,
65
+ args extends ContractFunctionArgs<
66
+ abi,
67
+ 'nonpayable' | 'payable',
68
+ functionName
69
+ > = ContractFunctionArgs<abi, 'nonpayable' | 'payable', functionName>,
70
+ config extends Config = Config,
71
+ chainId extends
72
+ | config['chains'][number]['id']
73
+ | undefined = config['chains'][number]['id'],
74
+ ///
75
+ chains extends readonly Chain[] = SelectChains<config, chainId>,
76
+ > = {
77
+ [key in keyof chains]: viem_SimulateContractReturnType<
78
+ abi,
79
+ functionName,
80
+ args,
81
+ chains[key]
82
+ > extends infer type extends viem_SimulateContractReturnType<
83
+ abi,
84
+ functionName,
85
+ args
86
+ >
87
+ ? UnionEvaluate<
88
+ UnionOmit<type, 'request'> & {
89
+ request: UnionEvaluate<
90
+ UnionOmit<type['request'], 'chain'> &
91
+ PartialBy<
92
+ { __mode: 'prepared'; chainId: chainId },
93
+ chainId extends config['chains'][number]['id']
94
+ ? never
95
+ : 'chainId'
96
+ >
97
+ >
98
+ }
99
+ >
100
+ : never
101
+ }[number]
102
+
103
+ export type SimulateContractError = Error
104
+
105
+ /** https://alpha.wagmi.sh/core/api/actions/simulateContract */
106
+ export async function simulateContract<
107
+ config extends Config,
108
+ const abi extends Abi | readonly unknown[],
109
+ functionName extends ContractFunctionName<abi, 'nonpayable' | 'payable'>,
110
+ args extends ContractFunctionArgs<
111
+ abi,
112
+ 'nonpayable' | 'payable',
113
+ functionName
114
+ >,
115
+ chainId extends config['chains'][number]['id'] | undefined = undefined,
116
+ >(
117
+ config: config,
118
+ parameters: SimulateContractParameters<
119
+ abi,
120
+ functionName,
121
+ args,
122
+ config,
123
+ chainId
124
+ >,
125
+ ): Promise<
126
+ SimulateContractReturnType<abi, functionName, args, config, chainId>
127
+ > {
128
+ const { abi, chainId, connector, ...rest } =
129
+ parameters as SimulateContractParameters
130
+
131
+ let account: Address | Account
132
+ let activeChainId: number | undefined
133
+ if (parameters.account) account = parameters.account
134
+ else {
135
+ const connectorClient = await getConnectorClient(config, {
136
+ chainId,
137
+ connector,
138
+ })
139
+ account = connectorClient.account
140
+ activeChainId = connectorClient.chain.id
141
+ }
142
+ if (chainId) assertActiveChain(config, { activeChainId, chainId })
143
+
144
+ const client = config.getClient({ chainId })
145
+ const { result, request } = await viem_simulateContract(client, {
146
+ ...rest,
147
+ abi,
148
+ account,
149
+ })
150
+
151
+ return {
152
+ result,
153
+ request: { __mode: 'prepared', ...request, chainId },
154
+ } as unknown as SimulateContractReturnType<
155
+ abi,
156
+ functionName,
157
+ args,
158
+ config,
159
+ chainId
160
+ >
161
+ }
@@ -0,0 +1,37 @@
1
+ import type { Address } from 'viem'
2
+
3
+ import { type Config, type Connector } from '../createConfig.js'
4
+ import { ConnectorNotConnectedError } from '../errors/config.js'
5
+
6
+ export type SwitchAccountParameters = {
7
+ connector: Connector
8
+ }
9
+
10
+ export type SwitchAccountReturnType<config extends Config = Config> = {
11
+ accounts: readonly [Address, ...Address[]]
12
+ chainId:
13
+ | config['chains'][number]['id']
14
+ | (number extends config['chains'][number]['id'] ? number : number & {})
15
+ }
16
+
17
+ export type SwitchAccountError = ConnectorNotConnectedError | Error
18
+
19
+ /** https://alpha.wagmi.sh/core/api/actions/switchAccount */
20
+ export async function switchAccount<config extends Config>(
21
+ config: config,
22
+ parameters: SwitchAccountParameters,
23
+ ): Promise<SwitchAccountReturnType<config>> {
24
+ const { connector } = parameters
25
+ const connection = config.state.connections.get(connector.uid)
26
+ if (!connection) throw new ConnectorNotConnectedError()
27
+
28
+ await config.storage?.setItem('recentConnectorId', connector.id)
29
+ config.setState((x) => ({
30
+ ...x,
31
+ current: connector.uid,
32
+ }))
33
+ return {
34
+ accounts: connection.accounts,
35
+ chainId: connection.chainId,
36
+ }
37
+ }
@@ -0,0 +1,63 @@
1
+ import {
2
+ SwitchChainError as SwitchChainError_,
3
+ UserRejectedRequestError,
4
+ } from 'viem'
5
+
6
+ import { type Config } from '../createConfig.js'
7
+ import type { BaseError } from '../errors/base.js'
8
+ import { ChainNotConfiguredError } from '../errors/config.js'
9
+ import { SwitchChainNotSupportedError } from '../errors/connector.js'
10
+ import { type ProviderNotFoundError } from '../errors/connector.js'
11
+ import type { ConnectorParameter } from '../types/properties.js'
12
+ import type { Evaluate } from '../types/utils.js'
13
+
14
+ export type SwitchChainParameters<
15
+ config extends Config = Config,
16
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
17
+ > = Evaluate<
18
+ {
19
+ chainId: chainId | config['chains'][number]['id']
20
+ } & ConnectorParameter
21
+ >
22
+
23
+ export type SwitchChainReturnType<
24
+ config extends Config = Config,
25
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
26
+ > = Extract<
27
+ config['chains'][number],
28
+ { id: Config extends config ? number : chainId }
29
+ >
30
+
31
+ export type SwitchChainError =
32
+ | ProviderNotFoundError
33
+ | SwitchChainError_
34
+ | UserRejectedRequestError
35
+ | BaseError
36
+ | Error
37
+
38
+ /** https://alpha.wagmi.sh/core/api/actions/switchChain */
39
+ export async function switchChain<
40
+ config extends Config,
41
+ chainId extends config['chains'][number]['id'],
42
+ >(
43
+ config: config,
44
+ parameters: SwitchChainParameters<config, chainId>,
45
+ ): Promise<SwitchChainReturnType<config, chainId>> {
46
+ const { chainId } = parameters
47
+
48
+ const connection = config.state.connections.get(
49
+ parameters.connector?.uid ?? config.state.current!,
50
+ )
51
+ if (connection) {
52
+ const connector = connection.connector
53
+ if (!connector.switchChain)
54
+ throw new SwitchChainNotSupportedError({ connector })
55
+ const chain = await connector.switchChain({ chainId })
56
+ return chain as SwitchChainReturnType<config, chainId>
57
+ }
58
+
59
+ const chain = config.chains.find((x) => x.id === chainId)
60
+ if (!chain) throw new ChainNotConfiguredError()
61
+ config.setState((x) => ({ ...x, chainId }))
62
+ return chain as SwitchChainReturnType<config, chainId>
63
+ }
@@ -0,0 +1,69 @@
1
+ import type {
2
+ CallParameters,
3
+ Chain,
4
+ WaitForTransactionReceiptParameters as viem_WaitForTransactionReceiptParameters,
5
+ WaitForTransactionReceiptReturnType as viem_WaitForTransactionReceiptReturnType,
6
+ } from 'viem'
7
+ import { hexToString } from 'viem'
8
+ import {
9
+ call,
10
+ getTransaction,
11
+ waitForTransactionReceipt as viem_waitForTransactionReceipt,
12
+ } from 'viem/actions'
13
+
14
+ import type { Config } from '../createConfig.js'
15
+ import type { SelectChains } from '../types/chain.js'
16
+ import type { ChainIdParameter } from '../types/properties.js'
17
+ import type { Evaluate } from '../types/utils.js'
18
+
19
+ export type WaitForTransactionReceiptParameters<
20
+ config extends Config = Config,
21
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
22
+ > = Evaluate<
23
+ viem_WaitForTransactionReceiptParameters & ChainIdParameter<config, chainId>
24
+ >
25
+
26
+ export type WaitForTransactionReceiptReturnType<
27
+ config extends Config = Config,
28
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
29
+ ///
30
+ chains extends readonly Chain[] = SelectChains<config, chainId>,
31
+ > = Evaluate<
32
+ {
33
+ [key in keyof chains]: viem_WaitForTransactionReceiptReturnType<chains[key]>
34
+ }[number]
35
+ >
36
+
37
+ export type WaitForTransactionReceiptError = Error
38
+
39
+ export async function waitForTransactionReceipt<
40
+ config extends Config,
41
+ chainId extends config['chains'][number]['id'],
42
+ >(
43
+ config: config,
44
+ parameters: WaitForTransactionReceiptParameters<config, chainId>,
45
+ ): Promise<WaitForTransactionReceiptReturnType<config, chainId>> {
46
+ const { chainId, timeout = 0, ...rest } = parameters
47
+ const client = config.getClient({ chainId })
48
+
49
+ const receipt = await viem_waitForTransactionReceipt(client, {
50
+ ...rest,
51
+ timeout,
52
+ })
53
+ if (receipt.status === 'reverted') {
54
+ const txn = await getTransaction(client, { hash: receipt.transactionHash })
55
+ const code = (await call(client, {
56
+ ...txn,
57
+ gasPrice: txn.type !== 'eip1559' ? txn.gasPrice : undefined,
58
+ maxFeePerGas: txn.type === 'eip1559' ? txn.maxFeePerGas : undefined,
59
+ maxPriorityFeePerGas:
60
+ txn.type === 'eip1559' ? txn.maxPriorityFeePerGas : undefined,
61
+ } as CallParameters)) as unknown as string
62
+ const reason = hexToString(`0x${code.substring(138)}`)
63
+ throw new Error(reason)
64
+ }
65
+ return receipt as unknown as WaitForTransactionReceiptReturnType<
66
+ config,
67
+ chainId
68
+ >
69
+ }
@@ -0,0 +1,32 @@
1
+ import { type Config } from '../createConfig.js'
2
+ import { deepEqual } from '../utils/deepEqual.js'
3
+ import { type GetAccountReturnType, getAccount } from './getAccount.js'
4
+
5
+ export type WatchAccountParameters = {
6
+ onChange(
7
+ account: GetAccountReturnType,
8
+ prevAccount: GetAccountReturnType,
9
+ ): void
10
+ }
11
+
12
+ export type WatchAccountReturnType = () => void
13
+
14
+ /** https://alpha.wagmi.sh/core/api/actions/watchAccount */
15
+ export function watchAccount(
16
+ config: Config,
17
+ parameters: WatchAccountParameters,
18
+ ): WatchAccountReturnType {
19
+ const { onChange } = parameters
20
+ return config.subscribe(() => getAccount(config), onChange, {
21
+ equalityFn(a, b) {
22
+ const { connector: aConnector, ...aRest } = a
23
+ const { connector: bConnector, ...bRest } = b
24
+ return (
25
+ deepEqual(aRest, bRest) &&
26
+ // check connector separately
27
+ aConnector?.id === bConnector?.id &&
28
+ aConnector?.uid === bConnector?.uid
29
+ )
30
+ },
31
+ })
32
+ }
@@ -0,0 +1,78 @@
1
+ import {
2
+ type WatchBlockNumberParameters as viem_WatchBlockNumberParameters,
3
+ type WatchBlockNumberReturnType as viem_WatchBlockNumberReturnType,
4
+ watchBlockNumber as viem_watchBlockNumber,
5
+ } from 'viem/actions'
6
+
7
+ import type { Chain, Transport, WebSocketTransport } from 'viem'
8
+ import { type Config } from '../createConfig.js'
9
+ import type { SelectChains } from '../types/chain.js'
10
+ import type {
11
+ ChainIdParameter,
12
+ SyncConnectedChainParameter,
13
+ } from '../types/properties.js'
14
+ import type { UnionEvaluate } from '../types/utils.js'
15
+
16
+ export type WatchBlockNumberParameters<
17
+ config extends Config = Config,
18
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
19
+ ///
20
+ chains extends readonly Chain[] = SelectChains<config, chainId>,
21
+ > = {
22
+ [key in keyof chains]: UnionEvaluate<
23
+ viem_WatchBlockNumberParameters<
24
+ config['_internal']['transports'][chains[key]['id']] extends infer transport extends Transport
25
+ ? Transport extends transport
26
+ ? WebSocketTransport
27
+ : transport
28
+ : WebSocketTransport
29
+ > &
30
+ ChainIdParameter<config, chainId> &
31
+ SyncConnectedChainParameter
32
+ >
33
+ }[number]
34
+
35
+ export type WatchBlockNumberReturnType = viem_WatchBlockNumberReturnType
36
+
37
+ // TODO: wrap in viem's `observe` to avoid duplicate invocations.
38
+ /** https://alpha.wagmi.sh/core/api/actions/watchBlockNumber */
39
+ export function watchBlockNumber<
40
+ config extends Config,
41
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
42
+ >(
43
+ config: config,
44
+ parameters: WatchBlockNumberParameters<config, chainId>,
45
+ ): WatchBlockNumberReturnType {
46
+ const { syncConnectedChain = config._internal.syncConnectedChain, ...rest } =
47
+ parameters
48
+
49
+ let unwatch: WatchBlockNumberReturnType | undefined
50
+ const listener = (chainId: number | undefined) => {
51
+ if (unwatch) unwatch()
52
+
53
+ const client = config.getClient({ chainId })
54
+ unwatch = viem_watchBlockNumber(
55
+ client,
56
+ rest as unknown as viem_WatchBlockNumberParameters,
57
+ )
58
+ return unwatch
59
+ }
60
+
61
+ // set up listener for block number changes
62
+ const unlisten = listener(parameters.chainId)
63
+
64
+ // set up subscriber for connected chain changes
65
+ let unsubscribe: (() => void) | undefined
66
+ if (syncConnectedChain && !parameters.chainId)
67
+ unsubscribe = config.subscribe(
68
+ ({ chainId }) => chainId,
69
+ async (chainId) => {
70
+ return listener(chainId)
71
+ },
72
+ )
73
+
74
+ return () => {
75
+ unlisten?.()
76
+ unsubscribe?.()
77
+ }
78
+ }