@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,382 @@
1
+ import {
2
+ type Address,
3
+ type Chain,
4
+ type Client,
5
+ type ClientConfig as viem_ClientConfig,
6
+ type Transport,
7
+ createClient,
8
+ } from 'viem'
9
+ import { persist, subscribeWithSelector } from 'zustand/middleware'
10
+ import { createStore } from 'zustand/vanilla'
11
+
12
+ import {
13
+ type ConnectorEventMap,
14
+ type CreateConnectorFn,
15
+ } from './createConnector.js'
16
+ import { Emitter, type EventData, createEmitter } from './createEmitter.js'
17
+ import { type Storage, createStorage, noopStorage } from './createStorage.js'
18
+ import { ChainNotConfiguredError } from './errors/config.js'
19
+ import type { Evaluate, ExactPartial, LooseOmit, OneOf } from './types/utils.js'
20
+ import { uid } from './utils/uid.js'
21
+
22
+ export type CreateConfigParameters<
23
+ chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],
24
+ transports extends Record<chains[number]['id'], Transport> = Record<
25
+ chains[number]['id'],
26
+ Transport
27
+ >,
28
+ > = Evaluate<
29
+ {
30
+ chains: chains
31
+ connectors?: CreateConnectorFn[] | undefined
32
+ reconnectOnMount?: boolean | undefined
33
+ storage?: Storage | null | undefined
34
+ syncConnectedChain?: boolean | undefined
35
+ } & OneOf<
36
+ | ({ transports: transports } & {
37
+ [key in keyof ClientConfig]?:
38
+ | ClientConfig[key]
39
+ | { [_ in chains[number]['id']]?: ClientConfig[key] | undefined }
40
+ | undefined
41
+ })
42
+ | {
43
+ client(parameters: { chain: chains[number] }): Client<
44
+ transports[chains[number]['id']],
45
+ chains[number]
46
+ >
47
+ }
48
+ > &
49
+ OneOf<
50
+ | {
51
+ /** @deprecated Use `reconnectOnMount` instead */
52
+ autoConnect?: boolean | undefined
53
+ }
54
+ | { reconnectOnMount?: boolean | undefined }
55
+ >
56
+ >
57
+
58
+ export type Config<
59
+ chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],
60
+ transports extends Record<chains[number]['id'], Transport> = Record<
61
+ chains[number]['id'],
62
+ Transport
63
+ >,
64
+ > = {
65
+ readonly chains: chains
66
+ readonly connectors: readonly Connector[]
67
+ readonly state: State<chains>
68
+ readonly storage: Storage | null
69
+
70
+ getClient<chainId extends chains[number]['id']>(parameters?: {
71
+ chainId?: chainId | chains[number]['id'] | undefined
72
+ }): Client<transports[chainId], Extract<chains[number], { id: chainId }>>
73
+ setState<tchains extends readonly [Chain, ...Chain[]] = chains>(
74
+ value: State<tchains> | ((state: State<tchains>) => State<tchains>),
75
+ ): void
76
+ subscribe<state>(
77
+ selector: (state: State<chains>) => state,
78
+ listener: (selectedState: state, previousSelectedState: state) => void,
79
+ options?:
80
+ | {
81
+ equalityFn?: ((a: state, b: state) => boolean) | undefined
82
+ fireImmediately?: boolean | undefined
83
+ }
84
+ | undefined,
85
+ ): () => void
86
+
87
+ _internal: {
88
+ readonly reconnectOnMount: boolean
89
+ readonly syncConnectedChain: boolean
90
+ readonly transports: transports
91
+
92
+ change(data: EventData<ConnectorEventMap, 'change'>): void
93
+ connect(data: EventData<ConnectorEventMap, 'connect'>): void
94
+ disconnect(data: EventData<ConnectorEventMap, 'disconnect'>): void
95
+ setup(connectorFn: CreateConnectorFn): Connector
96
+ }
97
+ }
98
+
99
+ export function createConfig<
100
+ const chains extends readonly [Chain, ...Chain[]],
101
+ transports extends Record<chains[number]['id'], Transport>,
102
+ >(
103
+ parameters: CreateConfigParameters<chains, transports>,
104
+ ): Config<chains, transports> {
105
+ const {
106
+ autoConnect,
107
+ chains,
108
+ reconnectOnMount = autoConnect ?? true,
109
+ storage = createStorage({
110
+ storage:
111
+ typeof window !== 'undefined' && window.localStorage
112
+ ? window.localStorage
113
+ : noopStorage,
114
+ }),
115
+ syncConnectedChain = true,
116
+ ...rest
117
+ } = parameters
118
+
119
+ /////////////////////////////////////////////////////////////////////////////////////////////////
120
+ // Set up connectors, clients, etc.
121
+ /////////////////////////////////////////////////////////////////////////////////////////////////
122
+
123
+ const connectors = (rest.connectors ?? []).map(setup)
124
+ function setup(connectorFn: CreateConnectorFn) {
125
+ // Set up emitter with uid and add to connector so they are "linked" together.
126
+ const emitter = createEmitter<ConnectorEventMap>(uid())
127
+ const connector = {
128
+ ...connectorFn({ emitter, chains, storage }),
129
+ emitter,
130
+ uid: emitter.uid,
131
+ }
132
+
133
+ // Start listening for `connect` events if `reconnectOnMount` is switched on.
134
+ // This allows connectors to "connect" themselves without user interaction (e.g. MetaMask's "Manually connect to current site")
135
+ if (reconnectOnMount) emitter.on('connect', connect)
136
+ connector.setup?.()
137
+
138
+ return connector
139
+ }
140
+
141
+ const clients = new Map<number, Client<Transport, chains[number]>>()
142
+ function getClient<chainId extends chains[number]['id']>(
143
+ config: { chainId?: chainId | chains[number]['id'] | undefined } = {},
144
+ ): Client<Transport, Extract<chains[number], { id: chainId }>> {
145
+ const chainId = config.chainId ?? store.getState().chainId
146
+ const chain = chains.find((x) => x.id === chainId)
147
+
148
+ // If the target chain is not configured, use the client of the current chain.
149
+ // TODO: should we error instead? idk. figure out later.
150
+ type Return = Client<Transport, Extract<chains[number], { id: chainId }>>
151
+ {
152
+ const client = clients.get(store.getState().chainId)
153
+ if (client && !chain) return client as Return
154
+ else if (!chain) throw new ChainNotConfiguredError()
155
+ }
156
+
157
+ // If a memoized client exists for a chain id, use that.
158
+ {
159
+ const client = clients.get(chainId)
160
+ if (client) return client as Return
161
+ }
162
+
163
+ let client
164
+ if (rest.client) client = rest.client({ chain })
165
+ else {
166
+ const chainId = chain.id as chains[number]['id']
167
+ // Grab all properties off `rest` and resolve for use in `createClient`
168
+ const properties: Partial<viem_ClientConfig> = {}
169
+ const entries = Object.entries(rest) as [keyof typeof rest, any][]
170
+ for (const [key, value] of entries) {
171
+ if (key === 'client' || key === 'connectors' || key === 'transports')
172
+ continue
173
+ else {
174
+ if (typeof value === 'object') properties[key] = value[chainId]
175
+ else properties[key] = value
176
+ }
177
+ }
178
+ client = createClient({
179
+ ...properties,
180
+ chain,
181
+ batch: properties.batch ?? { multicall: true },
182
+ transport: rest.transports[chainId],
183
+ })
184
+ }
185
+
186
+ clients.set(chainId, client)
187
+ return client as Return
188
+ }
189
+
190
+ /////////////////////////////////////////////////////////////////////////////////////////////////
191
+ // Create store
192
+ /////////////////////////////////////////////////////////////////////////////////////////////////
193
+
194
+ const initialState: State = {
195
+ chainId: chains[0].id,
196
+ connections: new Map(),
197
+ current: undefined,
198
+ status: 'disconnected',
199
+ }
200
+
201
+ const store = createStore(
202
+ subscribeWithSelector(
203
+ // only use persist middleware if storage exists
204
+ storage
205
+ ? persist(() => initialState, {
206
+ name: 'store',
207
+ partialize(state) {
208
+ return {
209
+ chainId: state.chainId,
210
+ connections: state.connections,
211
+ current: state.current,
212
+ status: state.status,
213
+ } satisfies PartializedState
214
+ },
215
+ skipHydration: !reconnectOnMount,
216
+ storage: storage as Storage<Record<string, unknown>>,
217
+ version: 1,
218
+ })
219
+ : () => initialState,
220
+ ),
221
+ )
222
+
223
+ /////////////////////////////////////////////////////////////////////////////////////////////////
224
+ // Subscribe to changes
225
+ /////////////////////////////////////////////////////////////////////////////////////////////////
226
+
227
+ // Update default chain when connector chain changes
228
+ if (syncConnectedChain)
229
+ store.subscribe(
230
+ ({ connections, current }) =>
231
+ current ? connections.get(current)?.chainId : undefined,
232
+ (chainId) => {
233
+ // If chain is not configured, then don't switch over to it.
234
+ const isChainConfigured = chains.some((x) => x.id === chainId)
235
+ if (!isChainConfigured) return
236
+
237
+ return store.setState((x) => ({
238
+ ...x,
239
+ chainId: chainId ?? x.chainId,
240
+ }))
241
+ },
242
+ )
243
+
244
+ /////////////////////////////////////////////////////////////////////////////////////////////////
245
+ // Emitter listeners
246
+ /////////////////////////////////////////////////////////////////////////////////////////////////
247
+
248
+ function change(data: EventData<ConnectorEventMap, 'change'>) {
249
+ store.setState((x) => {
250
+ const connection = x.connections.get(data.uid)!
251
+ return {
252
+ ...x,
253
+ connections: new Map(x.connections).set(data.uid, {
254
+ accounts:
255
+ (data.accounts as readonly [Address, ...Address[]]) ??
256
+ connection.accounts,
257
+ chainId: data.chainId ?? connection.chainId,
258
+ connector: connection.connector,
259
+ }),
260
+ }
261
+ })
262
+ }
263
+ function connect(data: EventData<ConnectorEventMap, 'connect'>) {
264
+ // Disable handling if reconnecting
265
+ if (store.getState().status === 'reconnecting') return
266
+
267
+ store.setState((x) => {
268
+ const connector = connectors.find((x) => x.uid === data.uid)
269
+ if (!connector) return x
270
+ return {
271
+ ...x,
272
+ connections: new Map(x.connections).set(data.uid, {
273
+ accounts: data.accounts as readonly [Address, ...Address[]],
274
+ chainId: data.chainId,
275
+ connector: connector,
276
+ }),
277
+ current: data.uid,
278
+ status: 'connected',
279
+ }
280
+ })
281
+ }
282
+ function disconnect(data: EventData<ConnectorEventMap, 'disconnect'>) {
283
+ store.setState((x) => {
284
+ const connection = x.connections.get(data.uid)
285
+ if (connection) {
286
+ connection.connector.emitter.off('change', change)
287
+ connection.connector.emitter.off('disconnect', disconnect)
288
+ connection.connector.emitter.on('connect', connect)
289
+ }
290
+
291
+ x.connections.delete(data.uid)
292
+
293
+ if (x.connections.size === 0)
294
+ return {
295
+ ...x,
296
+ connections: new Map(),
297
+ current: undefined,
298
+ status: 'disconnected',
299
+ }
300
+
301
+ const nextConnection = x.connections.values().next().value as Connection
302
+ return {
303
+ ...x,
304
+ connections: new Map(x.connections),
305
+ current: nextConnection.connector.uid,
306
+ }
307
+ })
308
+ }
309
+
310
+ return {
311
+ chains: chains as chains,
312
+ connectors,
313
+ get state() {
314
+ return store.getState() as unknown as State<chains>
315
+ },
316
+ storage,
317
+
318
+ getClient,
319
+ setState(value) {
320
+ let newState: State
321
+ if (typeof value === 'function') newState = value(store.getState() as any)
322
+ else newState = value
323
+
324
+ // Reset state if it got set to something not matching the base state
325
+ if (typeof newState !== 'object') newState = initialState
326
+ const isCorrupt = Object.keys(initialState).some((x) => !(x in newState))
327
+ if (isCorrupt) newState = initialState
328
+
329
+ store.setState(newState, true)
330
+ },
331
+ subscribe(selector, listener, options) {
332
+ return store.subscribe(
333
+ selector as unknown as (state: State) => any,
334
+ listener,
335
+ options,
336
+ )
337
+ },
338
+
339
+ _internal: {
340
+ reconnectOnMount,
341
+ syncConnectedChain,
342
+ transports: rest.transports as transports,
343
+ change,
344
+ connect,
345
+ disconnect,
346
+ setup,
347
+ },
348
+ }
349
+ }
350
+
351
+ /////////////////////////////////////////////////////////////////////////////////////////////////
352
+ // Types
353
+ /////////////////////////////////////////////////////////////////////////////////////////////////
354
+
355
+ export type State<
356
+ chains extends readonly [Chain, ...Chain[]] = readonly [Chain, ...Chain[]],
357
+ > = {
358
+ chainId: chains[number]['id']
359
+ connections: Map<string, Connection>
360
+ current: string | undefined
361
+ status: 'connected' | 'connecting' | 'disconnected' | 'reconnecting'
362
+ }
363
+
364
+ export type PartializedState = Evaluate<
365
+ ExactPartial<Pick<State, 'chainId' | 'connections' | 'current' | 'status'>>
366
+ >
367
+
368
+ export type Connection = {
369
+ accounts: readonly [Address, ...Address[]]
370
+ chainId: number
371
+ connector: Connector
372
+ }
373
+
374
+ export type Connector = ReturnType<CreateConnectorFn> & {
375
+ emitter: Emitter<ConnectorEventMap>
376
+ uid: string
377
+ }
378
+
379
+ type ClientConfig = LooseOmit<
380
+ viem_ClientConfig,
381
+ 'account' | 'chain' | 'key' | 'name' | 'transport' | 'type'
382
+ >
@@ -0,0 +1,78 @@
1
+ import {
2
+ type Address,
3
+ type Chain,
4
+ type Client,
5
+ type ProviderConnectInfo,
6
+ type ProviderMessage,
7
+ } from 'viem'
8
+
9
+ import { Emitter } from './createEmitter.js'
10
+ import { type Storage } from './createStorage.js'
11
+ import { type Evaluate } from './types/utils.js'
12
+
13
+ export type ConnectorEventMap = {
14
+ change: {
15
+ accounts?: readonly Address[] | undefined
16
+ chainId?: number | undefined
17
+ }
18
+ connect: { accounts: readonly Address[]; chainId: number }
19
+ disconnect: never
20
+ error: { error: Error }
21
+ message: { type: string; data?: unknown | undefined }
22
+ }
23
+
24
+ export type CreateConnectorFn<
25
+ provider = unknown,
26
+ properties extends Record<string, unknown> = {},
27
+ storageItem extends Record<string, unknown> = {},
28
+ > = (config: {
29
+ chains: readonly [Chain, ...Chain[]]
30
+ emitter: Emitter<ConnectorEventMap>
31
+ storage?: Evaluate<Storage<storageItem>> | null | undefined
32
+ }) => Evaluate<
33
+ {
34
+ readonly id: string
35
+ readonly name: string
36
+
37
+ setup?(): Promise<void>
38
+ connect(
39
+ parameters?: { chainId?: number | undefined } | undefined,
40
+ ): Promise<{
41
+ accounts: readonly Address[]
42
+ chainId: number
43
+ }>
44
+ disconnect(): Promise<void>
45
+ getAccounts(): Promise<readonly Address[]>
46
+ getChainId(): Promise<number>
47
+ getProvider(
48
+ parameters?:
49
+ | {
50
+ chainId?: number | undefined
51
+ }
52
+ | undefined,
53
+ ): Promise<provider>
54
+ getClient?(
55
+ parameters?:
56
+ | {
57
+ chainId?: number | undefined
58
+ }
59
+ | undefined,
60
+ ): Promise<Client>
61
+ isAuthorized(): Promise<boolean>
62
+ switchChain?(parameters: { chainId: number }): Promise<Chain>
63
+
64
+ onAccountsChanged(accounts: string[]): void
65
+ onChainChanged(chainId: string): void
66
+ onConnect?(connectInfo: ProviderConnectInfo): void
67
+ onDisconnect(error?: Error | undefined): void
68
+ onMessage?(message: ProviderMessage): void
69
+ } & properties
70
+ >
71
+
72
+ export function createConnector<
73
+ provider,
74
+ properties extends Record<string, unknown> = {},
75
+ storageItem extends Record<string, unknown> = {},
76
+ >(fn: CreateConnectorFn<provider, properties, storageItem>) {
77
+ return fn
78
+ }
@@ -0,0 +1,68 @@
1
+ import { EventEmitter } from 'eventemitter3'
2
+
3
+ type EventMap = Record<string, object | never>
4
+ type EventKey<eventMap extends EventMap> = string & keyof eventMap
5
+ type EventFn<parameters extends unknown[] = any[]> = (
6
+ ...parameters: parameters
7
+ ) => void
8
+ export type EventData<
9
+ eventMap extends EventMap,
10
+ eventName extends keyof eventMap,
11
+ > = (eventMap[eventName] extends [never] ? unknown : eventMap[eventName]) & {
12
+ uid: string
13
+ }
14
+
15
+ export class Emitter<eventMap extends EventMap> {
16
+ #emitter = new EventEmitter()
17
+
18
+ constructor(public uid: string) {}
19
+
20
+ on<key extends EventKey<eventMap>>(
21
+ eventName: key,
22
+ fn: EventFn<
23
+ eventMap[key] extends [never]
24
+ ? [{ uid: string }]
25
+ : [data: eventMap[key] & { uid: string }]
26
+ >,
27
+ ) {
28
+ this.#emitter.on(eventName, fn as EventFn)
29
+ }
30
+
31
+ once<key extends EventKey<eventMap>>(
32
+ eventName: key,
33
+ fn: EventFn<
34
+ eventMap[key] extends [never]
35
+ ? [{ uid: string }]
36
+ : [data: eventMap[key] & { uid: string }]
37
+ >,
38
+ ) {
39
+ this.#emitter.once(eventName, fn as EventFn)
40
+ }
41
+
42
+ off<key extends EventKey<eventMap>>(
43
+ eventName: key,
44
+ fn: EventFn<
45
+ eventMap[key] extends [never]
46
+ ? [{ uid: string }]
47
+ : [data: eventMap[key] & { uid: string }]
48
+ >,
49
+ ) {
50
+ this.#emitter.off(eventName, fn as EventFn)
51
+ }
52
+
53
+ emit<key extends EventKey<eventMap>>(
54
+ eventName: key,
55
+ ...params: eventMap[key] extends [never] ? [] : [data: eventMap[key]]
56
+ ) {
57
+ const data = params[0]
58
+ this.#emitter.emit(eventName, { uid: this.uid, ...data })
59
+ }
60
+
61
+ listenerCount<key extends EventKey<eventMap>>(eventName: key) {
62
+ return this.#emitter.listenerCount(eventName)
63
+ }
64
+ }
65
+
66
+ export function createEmitter<eventMap extends EventMap>(uid: string) {
67
+ return new Emitter<eventMap>(uid)
68
+ }
@@ -0,0 +1,89 @@
1
+ import { type PartializedState } from './createConfig.js'
2
+ import type { Evaluate } from './types/utils.js'
3
+ import { deserialize as deserialize_ } from './utils/deserialize.js'
4
+ import { serialize as serialize_ } from './utils/serialize.js'
5
+
6
+ // key-values for loose autocomplete and typing
7
+ export type StorageItemMap = {
8
+ recentConnectorId: string
9
+ state: PartializedState
10
+ }
11
+
12
+ export type Storage<
13
+ itemMap extends Record<string, unknown> = {},
14
+ ///
15
+ storageItemMap extends StorageItemMap = StorageItemMap & itemMap,
16
+ > = {
17
+ getItem<
18
+ key extends keyof storageItemMap,
19
+ value extends storageItemMap[key],
20
+ defaultValue extends value | null | undefined,
21
+ >(
22
+ key: key,
23
+ defaultValue?: defaultValue | undefined,
24
+ ):
25
+ | (defaultValue extends null ? value | null : value)
26
+ | Promise<defaultValue extends null ? value | null : value>
27
+ setItem<
28
+ key extends keyof storageItemMap,
29
+ value extends storageItemMap[key] | null,
30
+ >(key: key, value: value): void | Promise<void>
31
+ removeItem(key: keyof storageItemMap): void | Promise<void>
32
+ }
33
+
34
+ type BaseStorage = {
35
+ getItem(
36
+ key: string,
37
+ ): string | null | undefined | Promise<string | null | undefined>
38
+ setItem(key: string, value: string): void | Promise<void>
39
+ removeItem(key: string): void | Promise<void>
40
+ }
41
+
42
+ export type CreateStorageParameters = {
43
+ deserialize?: (<T>(value: string) => T) | undefined
44
+ key?: string | undefined
45
+ serialize?: (<T>(value: T) => string) | undefined
46
+ storage: Evaluate<BaseStorage>
47
+ }
48
+
49
+ export function createStorage<
50
+ itemMap extends Record<string, unknown> = {},
51
+ storageItemMap extends StorageItemMap = StorageItemMap & itemMap,
52
+ >(parameters: CreateStorageParameters): Evaluate<Storage<storageItemMap>> {
53
+ const {
54
+ deserialize = deserialize_,
55
+ key: prefix = 'wagmi',
56
+ serialize = serialize_,
57
+ storage,
58
+ } = parameters
59
+
60
+ function unwrap<type>(value: type): type | Promise<type> {
61
+ if (value instanceof Promise)
62
+ return value.then((x) => x).catch(() => undefined)
63
+ return value
64
+ }
65
+
66
+ return {
67
+ ...storage,
68
+ async getItem(key, defaultValue) {
69
+ const value = storage.getItem(`${prefix}.${key as string}`)
70
+ const unwrapped = await unwrap(value)
71
+ if (unwrapped) return deserialize(unwrapped) ?? null
72
+ return (defaultValue ?? null) as any
73
+ },
74
+ async setItem(key, value) {
75
+ const storageKey = `${prefix}.${key as string}`
76
+ if (value === null) await unwrap(storage.removeItem(storageKey))
77
+ else await unwrap(storage.setItem(storageKey, serialize(value)))
78
+ },
79
+ async removeItem(key) {
80
+ await unwrap(storage.removeItem(`${prefix}.${key as string}`))
81
+ },
82
+ }
83
+ }
84
+
85
+ export const noopStorage = {
86
+ getItem: () => null,
87
+ setItem: () => {},
88
+ removeItem: () => {},
89
+ } satisfies BaseStorage
@@ -0,0 +1,71 @@
1
+ import type { Evaluate, OneOf } from '../types/utils.js'
2
+ import { getVersion } from '../utils/getVersion.js'
3
+
4
+ type BaseErrorOptions = Evaluate<
5
+ {
6
+ docsPath?: string
7
+ docsSlug?: string
8
+ metaMessages?: string[]
9
+ } & OneOf<{ details?: string } | { cause: BaseError | Error }>
10
+ >
11
+
12
+ export class BaseError extends Error {
13
+ details: string
14
+ docsPath?: string | undefined
15
+ metaMessages?: string[] | undefined
16
+ shortMessage: string
17
+
18
+ override name = 'WagmiCoreError'
19
+ get docsBaseUrl() {
20
+ return 'https://alpha.wagmi.sh/core'
21
+ }
22
+ get version() {
23
+ return getVersion()
24
+ }
25
+
26
+ constructor(shortMessage: string, options: BaseErrorOptions = {}) {
27
+ super()
28
+
29
+ const details =
30
+ options.cause instanceof BaseError
31
+ ? options.cause.details
32
+ : options.cause?.message
33
+ ? options.cause.message
34
+ : options.details!
35
+ const docsPath =
36
+ options.cause instanceof BaseError
37
+ ? options.cause.docsPath || options.docsPath
38
+ : options.docsPath
39
+
40
+ this.message = [
41
+ shortMessage || 'An error occurred.',
42
+ '',
43
+ ...(options.metaMessages ? [...options.metaMessages, ''] : []),
44
+ ...(docsPath
45
+ ? [
46
+ `Docs: ${this.docsBaseUrl}${docsPath}.html${
47
+ options.docsSlug ? `#${options.docsSlug}` : ''
48
+ }`,
49
+ ]
50
+ : []),
51
+ ...(details ? [`Details: ${details}`] : []),
52
+ `Version: ${this.version}`,
53
+ ].join('\n')
54
+
55
+ if (options.cause) this.cause = options.cause
56
+ this.details = details
57
+ this.docsPath = docsPath
58
+ this.metaMessages = options.metaMessages
59
+ this.shortMessage = shortMessage
60
+ }
61
+
62
+ walk(fn?: (err: unknown) => boolean) {
63
+ return this.#walk(this, fn)
64
+ }
65
+
66
+ #walk(err: unknown, fn?: (err: unknown) => boolean): unknown {
67
+ if (fn?.(err)) return err
68
+ if ((err as Error).cause) return this.#walk((err as Error).cause, fn)
69
+ return err
70
+ }
71
+ }