wagmi 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/README.md +13 -0
  2. package/actions/package.json +5 -0
  3. package/chains/package.json +5 -0
  4. package/codegen/package.json +5 -0
  5. package/connectors/package.json +5 -0
  6. package/dist/esm/context.js +6 -11
  7. package/dist/esm/context.js.map +1 -1
  8. package/dist/esm/errors/base.js +1 -1
  9. package/dist/esm/errors/base.js.map +1 -1
  10. package/dist/esm/errors/context.js +3 -1
  11. package/dist/esm/errors/context.js.map +1 -1
  12. package/dist/esm/exports/actions.js +2 -1
  13. package/dist/esm/exports/actions.js.map +1 -1
  14. package/dist/esm/exports/chains.js +1 -0
  15. package/dist/esm/exports/chains.js.map +1 -1
  16. package/dist/esm/exports/codegen.js +12 -0
  17. package/dist/esm/exports/codegen.js.map +1 -0
  18. package/dist/esm/exports/connectors.js +1 -0
  19. package/dist/esm/exports/connectors.js.map +1 -1
  20. package/dist/esm/exports/index.js +43 -15
  21. package/dist/esm/exports/index.js.map +1 -1
  22. package/dist/esm/exports/query.js +1 -0
  23. package/dist/esm/exports/query.js.map +1 -1
  24. package/dist/esm/hooks/codegen/createUseReadContract.js +33 -0
  25. package/dist/esm/hooks/codegen/createUseReadContract.js.map +1 -0
  26. package/dist/esm/hooks/codegen/createUseSimulateContract.js +33 -0
  27. package/dist/esm/hooks/codegen/createUseSimulateContract.js.map +1 -0
  28. package/dist/esm/hooks/codegen/createUseWatchContractEvent.js +32 -0
  29. package/dist/esm/hooks/codegen/createUseWatchContractEvent.js.map +1 -0
  30. package/dist/esm/hooks/codegen/createUseWriteContract.js +95 -0
  31. package/dist/esm/hooks/codegen/createUseWriteContract.js.map +1 -0
  32. package/dist/esm/hooks/useAccount.js +1 -1
  33. package/dist/esm/hooks/useAccount.js.map +1 -1
  34. package/dist/esm/hooks/useAccountEffect.js +10 -3
  35. package/dist/esm/hooks/useAccountEffect.js.map +1 -1
  36. package/dist/esm/hooks/useBalance.js +4 -4
  37. package/dist/esm/hooks/useBalance.js.map +1 -1
  38. package/dist/esm/hooks/useBlock.js +36 -0
  39. package/dist/esm/hooks/useBlock.js.map +1 -0
  40. package/dist/esm/hooks/useBlockNumber.js +6 -8
  41. package/dist/esm/hooks/useBlockNumber.js.map +1 -1
  42. package/dist/esm/hooks/useBlockTransactionCount.js +20 -0
  43. package/dist/esm/hooks/useBlockTransactionCount.js.map +1 -0
  44. package/dist/esm/hooks/useChainId.js +2 -2
  45. package/dist/esm/hooks/useChainId.js.map +1 -1
  46. package/dist/esm/hooks/useClient.js +1 -1
  47. package/dist/esm/hooks/useClient.js.map +1 -1
  48. package/dist/esm/hooks/useConfig.js +1 -1
  49. package/dist/esm/hooks/useConfig.js.map +1 -1
  50. package/dist/esm/hooks/useConnect.js +12 -2
  51. package/dist/esm/hooks/useConnect.js.map +1 -1
  52. package/dist/esm/hooks/useConnections.js +2 -2
  53. package/dist/esm/hooks/useConnections.js.map +1 -1
  54. package/dist/esm/hooks/useConnectorClient.js +2 -3
  55. package/dist/esm/hooks/useConnectorClient.js.map +1 -1
  56. package/dist/esm/hooks/useConnectors.js +10 -0
  57. package/dist/esm/hooks/useConnectors.js.map +1 -0
  58. package/dist/esm/hooks/useDisconnect.js +1 -1
  59. package/dist/esm/hooks/useDisconnect.js.map +1 -1
  60. package/dist/esm/hooks/useEnsAddress.js +4 -4
  61. package/dist/esm/hooks/useEnsAddress.js.map +1 -1
  62. package/dist/esm/hooks/useEnsAvatar.js +4 -4
  63. package/dist/esm/hooks/useEnsAvatar.js.map +1 -1
  64. package/dist/esm/hooks/useEnsName.js +4 -4
  65. package/dist/esm/hooks/useEnsName.js.map +1 -1
  66. package/dist/esm/hooks/useEnsResolver.js +4 -4
  67. package/dist/esm/hooks/useEnsResolver.js.map +1 -1
  68. package/dist/esm/hooks/useEstimateFeesPerGas.js +4 -4
  69. package/dist/esm/hooks/useEstimateFeesPerGas.js.map +1 -1
  70. package/dist/esm/hooks/useEstimateGas.js +3 -3
  71. package/dist/esm/hooks/useEstimateGas.js.map +1 -1
  72. package/dist/esm/hooks/useEstimateMaxPriorityFeePerGas.js +19 -0
  73. package/dist/esm/hooks/useEstimateMaxPriorityFeePerGas.js.map +1 -0
  74. package/dist/esm/hooks/useFeeHistory.js +20 -0
  75. package/dist/esm/hooks/useFeeHistory.js.map +1 -0
  76. package/dist/esm/hooks/useGasPrice.js +20 -0
  77. package/dist/esm/hooks/useGasPrice.js.map +1 -0
  78. package/dist/esm/hooks/useInfiniteReadContracts.js +24 -0
  79. package/dist/esm/hooks/useInfiniteReadContracts.js.map +1 -0
  80. package/dist/esm/hooks/usePublicClient.js +1 -1
  81. package/dist/esm/hooks/usePublicClient.js.map +1 -1
  82. package/dist/esm/hooks/{useContractRead.js → useReadContract.js} +5 -8
  83. package/dist/esm/hooks/useReadContract.js.map +1 -0
  84. package/dist/esm/hooks/{useContractReads.js → useReadContracts.js} +7 -9
  85. package/dist/esm/hooks/useReadContracts.js.map +1 -0
  86. package/dist/esm/hooks/useReconnect.js +1 -1
  87. package/dist/esm/hooks/useReconnect.js.map +1 -1
  88. package/dist/esm/hooks/useSendTransaction.js +1 -1
  89. package/dist/esm/hooks/useSendTransaction.js.map +1 -1
  90. package/dist/esm/hooks/useSignMessage.js +1 -1
  91. package/dist/esm/hooks/useSignMessage.js.map +1 -1
  92. package/dist/esm/hooks/useSignTypedData.js +1 -1
  93. package/dist/esm/hooks/useSignTypedData.js.map +1 -1
  94. package/dist/esm/hooks/{useContractSimulate.js → useSimulateContract.js} +6 -6
  95. package/dist/esm/hooks/useSimulateContract.js.map +1 -0
  96. package/dist/esm/hooks/useSwitchAccount.js +1 -1
  97. package/dist/esm/hooks/useSwitchAccount.js.map +1 -1
  98. package/dist/esm/hooks/useSwitchChain.js +1 -1
  99. package/dist/esm/hooks/useSwitchChain.js.map +1 -1
  100. package/dist/esm/hooks/useToken.js +8 -4
  101. package/dist/esm/hooks/useToken.js.map +1 -1
  102. package/dist/esm/hooks/useTransaction.js +8 -4
  103. package/dist/esm/hooks/useTransaction.js.map +1 -1
  104. package/dist/esm/hooks/useTransactionCount.js +19 -0
  105. package/dist/esm/hooks/useTransactionCount.js.map +1 -0
  106. package/dist/esm/hooks/useVerifyMessage.js +19 -0
  107. package/dist/esm/hooks/useVerifyMessage.js.map +1 -0
  108. package/dist/esm/hooks/useVerifyTypedData.js +25 -0
  109. package/dist/esm/hooks/useVerifyTypedData.js.map +1 -0
  110. package/dist/esm/hooks/useWaitForTransactionReceipt.js +9 -5
  111. package/dist/esm/hooks/useWaitForTransactionReceipt.js.map +1 -1
  112. package/dist/esm/hooks/useWalletClient.js +2 -3
  113. package/dist/esm/hooks/useWalletClient.js.map +1 -1
  114. package/dist/esm/hooks/useWatchBlockNumber.js +1 -1
  115. package/dist/esm/hooks/useWatchBlockNumber.js.map +1 -1
  116. package/dist/esm/hooks/useWatchBlocks.js +25 -0
  117. package/dist/esm/hooks/useWatchBlocks.js.map +1 -0
  118. package/dist/esm/hooks/useWatchContractEvent.js +1 -1
  119. package/dist/esm/hooks/useWatchContractEvent.js.map +1 -1
  120. package/dist/esm/hooks/useWatchPendingTransactions.js +1 -1
  121. package/dist/esm/hooks/useWatchPendingTransactions.js.map +1 -1
  122. package/dist/esm/hooks/{useContractWrite.js → useWriteContract.js} +5 -5
  123. package/dist/esm/hooks/useWriteContract.js.map +1 -0
  124. package/dist/esm/hydrate.js +28 -0
  125. package/dist/esm/hydrate.js.map +1 -0
  126. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  127. package/dist/esm/types/properties.js +3 -1
  128. package/dist/esm/types/properties.js.map +1 -1
  129. package/dist/esm/utils/query.js +10 -1
  130. package/dist/esm/utils/query.js.map +1 -1
  131. package/dist/esm/version.js +1 -1
  132. package/dist/types/context.d.ts +6 -7
  133. package/dist/types/context.d.ts.map +1 -1
  134. package/dist/types/errors/base.d.ts +3 -0
  135. package/dist/types/errors/base.d.ts.map +1 -1
  136. package/dist/types/errors/context.d.ts +3 -0
  137. package/dist/types/errors/context.d.ts.map +1 -1
  138. package/dist/types/exports/actions.d.ts.map +1 -1
  139. package/dist/types/exports/chains.d.ts.map +1 -1
  140. package/dist/types/exports/codegen.d.ts +6 -0
  141. package/dist/types/exports/codegen.d.ts.map +1 -0
  142. package/dist/types/exports/connectors.d.ts.map +1 -1
  143. package/dist/types/exports/index.d.ts +33 -10
  144. package/dist/types/exports/index.d.ts.map +1 -1
  145. package/dist/types/exports/query.d.ts.map +1 -1
  146. package/dist/types/hooks/codegen/createUseReadContract.d.ts +18 -0
  147. package/dist/types/hooks/codegen/createUseReadContract.d.ts.map +1 -0
  148. package/dist/types/hooks/codegen/createUseSimulateContract.d.ts +21 -0
  149. package/dist/types/hooks/codegen/createUseSimulateContract.d.ts.map +1 -0
  150. package/dist/types/hooks/codegen/createUseWatchContractEvent.d.ts +14 -0
  151. package/dist/types/hooks/codegen/createUseWatchContractEvent.d.ts.map +1 -0
  152. package/dist/types/hooks/codegen/createUseWriteContract.d.ts +27 -0
  153. package/dist/types/hooks/codegen/createUseWriteContract.d.ts.map +1 -0
  154. package/dist/types/hooks/useAccount.d.ts +1 -1
  155. package/dist/types/hooks/useAccount.d.ts.map +1 -1
  156. package/dist/types/hooks/useAccountEffect.d.ts +2 -2
  157. package/dist/types/hooks/useAccountEffect.d.ts.map +1 -1
  158. package/dist/types/hooks/useBalance.d.ts +6 -8
  159. package/dist/types/hooks/useBalance.d.ts.map +1 -1
  160. package/dist/types/hooks/useBlock.d.ts +14 -0
  161. package/dist/types/hooks/useBlock.d.ts.map +1 -0
  162. package/dist/types/hooks/useBlockNumber.d.ts +8 -9
  163. package/dist/types/hooks/useBlockNumber.d.ts.map +1 -1
  164. package/dist/types/hooks/useBlockTransactionCount.d.ts +10 -0
  165. package/dist/types/hooks/useBlockTransactionCount.d.ts.map +1 -0
  166. package/dist/types/hooks/useChainId.d.ts +1 -1
  167. package/dist/types/hooks/useChainId.d.ts.map +1 -1
  168. package/dist/types/hooks/useClient.d.ts +1 -1
  169. package/dist/types/hooks/useClient.d.ts.map +1 -1
  170. package/dist/types/hooks/useConfig.d.ts +1 -1
  171. package/dist/types/hooks/useConfig.d.ts.map +1 -1
  172. package/dist/types/hooks/useConnect.d.ts +5 -5
  173. package/dist/types/hooks/useConnect.d.ts.map +1 -1
  174. package/dist/types/hooks/useConnections.d.ts +1 -1
  175. package/dist/types/hooks/useConnections.d.ts.map +1 -1
  176. package/dist/types/hooks/useConnectorClient.d.ts +4 -4
  177. package/dist/types/hooks/useConnectorClient.d.ts.map +1 -1
  178. package/dist/types/hooks/useConnectors.d.ts +7 -0
  179. package/dist/types/hooks/useConnectors.d.ts.map +1 -0
  180. package/dist/types/hooks/useDisconnect.d.ts +4 -4
  181. package/dist/types/hooks/useDisconnect.d.ts.map +1 -1
  182. package/dist/types/hooks/useEnsAddress.d.ts +6 -8
  183. package/dist/types/hooks/useEnsAddress.d.ts.map +1 -1
  184. package/dist/types/hooks/useEnsAvatar.d.ts +6 -8
  185. package/dist/types/hooks/useEnsAvatar.d.ts.map +1 -1
  186. package/dist/types/hooks/useEnsName.d.ts +6 -8
  187. package/dist/types/hooks/useEnsName.d.ts.map +1 -1
  188. package/dist/types/hooks/useEnsResolver.d.ts +6 -8
  189. package/dist/types/hooks/useEnsResolver.d.ts.map +1 -1
  190. package/dist/types/hooks/useEstimateFeesPerGas.d.ts +6 -8
  191. package/dist/types/hooks/useEstimateFeesPerGas.d.ts.map +1 -1
  192. package/dist/types/hooks/useEstimateGas.d.ts +6 -8
  193. package/dist/types/hooks/useEstimateGas.d.ts.map +1 -1
  194. package/dist/types/hooks/useEstimateMaxPriorityFeePerGas.d.ts +10 -0
  195. package/dist/types/hooks/useEstimateMaxPriorityFeePerGas.d.ts.map +1 -0
  196. package/dist/types/hooks/useFeeHistory.d.ts +10 -0
  197. package/dist/types/hooks/useFeeHistory.d.ts.map +1 -0
  198. package/dist/types/hooks/useGasPrice.d.ts +10 -0
  199. package/dist/types/hooks/useGasPrice.d.ts.map +1 -0
  200. package/dist/types/hooks/useInfiniteReadContracts.d.ts +11 -0
  201. package/dist/types/hooks/useInfiniteReadContracts.d.ts.map +1 -0
  202. package/dist/types/hooks/usePublicClient.d.ts +1 -1
  203. package/dist/types/hooks/usePublicClient.d.ts.map +1 -1
  204. package/dist/types/hooks/{useContractRead.d.ts → useReadContract.d.ts} +8 -10
  205. package/dist/types/hooks/useReadContract.d.ts.map +1 -0
  206. package/dist/types/hooks/useReadContracts.d.ts +11 -0
  207. package/dist/types/hooks/useReadContracts.d.ts.map +1 -0
  208. package/dist/types/hooks/useReconnect.d.ts +4 -4
  209. package/dist/types/hooks/useReconnect.d.ts.map +1 -1
  210. package/dist/types/hooks/useSendTransaction.d.ts +4 -4
  211. package/dist/types/hooks/useSendTransaction.d.ts.map +1 -1
  212. package/dist/types/hooks/useSignMessage.d.ts +4 -4
  213. package/dist/types/hooks/useSignMessage.d.ts.map +1 -1
  214. package/dist/types/hooks/useSignTypedData.d.ts +4 -4
  215. package/dist/types/hooks/useSignTypedData.d.ts.map +1 -1
  216. package/dist/types/hooks/{useContractSimulate.d.ts → useSimulateContract.d.ts} +8 -10
  217. package/dist/types/hooks/useSimulateContract.d.ts.map +1 -0
  218. package/dist/types/hooks/useSwitchAccount.d.ts +4 -4
  219. package/dist/types/hooks/useSwitchAccount.d.ts.map +1 -1
  220. package/dist/types/hooks/useSwitchChain.d.ts +4 -4
  221. package/dist/types/hooks/useSwitchChain.d.ts.map +1 -1
  222. package/dist/types/hooks/useToken.d.ts +10 -8
  223. package/dist/types/hooks/useToken.d.ts.map +1 -1
  224. package/dist/types/hooks/useTransaction.d.ts +6 -8
  225. package/dist/types/hooks/useTransaction.d.ts.map +1 -1
  226. package/dist/types/hooks/useTransactionCount.d.ts +11 -0
  227. package/dist/types/hooks/useTransactionCount.d.ts.map +1 -0
  228. package/dist/types/hooks/useVerifyMessage.d.ts +11 -0
  229. package/dist/types/hooks/useVerifyMessage.d.ts.map +1 -0
  230. package/dist/types/hooks/useVerifyTypedData.d.ts +11 -0
  231. package/dist/types/hooks/useVerifyTypedData.d.ts.map +1 -0
  232. package/dist/types/hooks/useWaitForTransactionReceipt.d.ts +6 -8
  233. package/dist/types/hooks/useWaitForTransactionReceipt.d.ts.map +1 -1
  234. package/dist/types/hooks/useWalletClient.d.ts +4 -4
  235. package/dist/types/hooks/useWalletClient.d.ts.map +1 -1
  236. package/dist/types/hooks/useWatchBlockNumber.d.ts +1 -1
  237. package/dist/types/hooks/useWatchBlockNumber.d.ts.map +1 -1
  238. package/dist/types/hooks/useWatchBlocks.d.ts +9 -0
  239. package/dist/types/hooks/useWatchBlocks.d.ts.map +1 -0
  240. package/dist/types/hooks/useWatchContractEvent.d.ts +1 -1
  241. package/dist/types/hooks/useWatchContractEvent.d.ts.map +1 -1
  242. package/dist/types/hooks/useWatchPendingTransactions.d.ts +1 -1
  243. package/dist/types/hooks/useWatchPendingTransactions.d.ts.map +1 -1
  244. package/dist/types/hooks/useWriteContract.d.ts +15 -0
  245. package/dist/types/hooks/useWriteContract.d.ts.map +1 -0
  246. package/dist/types/hydrate.d.ts +9 -0
  247. package/dist/types/hydrate.d.ts.map +1 -0
  248. package/dist/types/types/properties.d.ts +10 -1
  249. package/dist/types/types/properties.d.ts.map +1 -1
  250. package/dist/types/utils/query.d.ts +12 -3
  251. package/dist/types/utils/query.d.ts.map +1 -1
  252. package/dist/types/version.d.ts +1 -1
  253. package/package.json +26 -34
  254. package/query/package.json +5 -0
  255. package/src/context.ts +15 -14
  256. package/src/errors/base.ts +2 -1
  257. package/src/errors/context.ts +6 -1
  258. package/src/exports/actions.ts +2 -1
  259. package/src/exports/chains.ts +1 -0
  260. package/src/exports/codegen.ts +17 -0
  261. package/src/exports/connectors.ts +1 -0
  262. package/src/exports/index.ts +135 -37
  263. package/src/exports/query.ts +1 -0
  264. package/src/hooks/codegen/createUseReadContract.ts +128 -0
  265. package/src/hooks/codegen/createUseSimulateContract.ts +121 -0
  266. package/src/hooks/codegen/createUseWatchContractEvent.ts +98 -0
  267. package/src/hooks/codegen/createUseWriteContract.ts +290 -0
  268. package/src/hooks/useAccount.ts +1 -1
  269. package/src/hooks/useAccountEffect.ts +11 -4
  270. package/src/hooks/useBalance.ts +14 -21
  271. package/src/hooks/useBlock.ts +129 -0
  272. package/src/hooks/useBlockNumber.ts +30 -32
  273. package/src/hooks/useBlockTransactionCount.ts +65 -0
  274. package/src/hooks/useChainId.ts +2 -1
  275. package/src/hooks/useClient.ts +1 -1
  276. package/src/hooks/useConfig.ts +1 -1
  277. package/src/hooks/useConnect.ts +21 -6
  278. package/src/hooks/useConnections.ts +2 -1
  279. package/src/hooks/useConnectorClient.ts +9 -7
  280. package/src/hooks/useConnectors.ts +28 -0
  281. package/src/hooks/useDisconnect.ts +4 -4
  282. package/src/hooks/useEnsAddress.ts +18 -21
  283. package/src/hooks/useEnsAvatar.ts +18 -19
  284. package/src/hooks/useEnsName.ts +14 -21
  285. package/src/hooks/useEnsResolver.ts +18 -21
  286. package/src/hooks/useEstimateFeesPerGas.ts +14 -21
  287. package/src/hooks/useEstimateGas.ts +19 -22
  288. package/src/hooks/useEstimateMaxPriorityFeePerGas.ts +61 -0
  289. package/src/hooks/useFeeHistory.ts +62 -0
  290. package/src/hooks/useGasPrice.ts +60 -0
  291. package/src/hooks/useInfiniteReadContracts.ts +89 -0
  292. package/src/hooks/usePublicClient.ts +1 -1
  293. package/src/hooks/{useContractRead.ts → useReadContract.ts} +22 -25
  294. package/src/hooks/{useContractReads.ts → useReadContracts.ts} +27 -28
  295. package/src/hooks/useReconnect.ts +4 -4
  296. package/src/hooks/useSendTransaction.ts +4 -4
  297. package/src/hooks/useSignMessage.ts +4 -4
  298. package/src/hooks/useSignTypedData.ts +4 -4
  299. package/src/hooks/{useContractSimulate.ts → useSimulateContract.ts} +26 -27
  300. package/src/hooks/useSwitchAccount.ts +4 -4
  301. package/src/hooks/useSwitchChain.ts +8 -4
  302. package/src/hooks/useToken.ts +18 -21
  303. package/src/hooks/useTransaction.ts +22 -21
  304. package/src/hooks/useTransactionCount.ts +59 -0
  305. package/src/hooks/useVerifyMessage.ts +59 -0
  306. package/src/hooks/useVerifyTypedData.ts +81 -0
  307. package/src/hooks/useWaitForTransactionReceipt.ts +19 -22
  308. package/src/hooks/useWalletClient.ts +25 -21
  309. package/src/hooks/useWatchBlockNumber.ts +1 -1
  310. package/src/hooks/useWatchBlocks.ts +61 -0
  311. package/src/hooks/useWatchContractEvent.ts +1 -1
  312. package/src/hooks/useWatchPendingTransactions.ts +1 -1
  313. package/src/hooks/{useContractWrite.ts → useWriteContract.ts} +18 -14
  314. package/src/hydrate.ts +36 -0
  315. package/src/types/properties.ts +43 -1
  316. package/src/utils/query.ts +66 -15
  317. package/src/version.ts +1 -1
  318. package/dist/esm/hooks/useContractRead.js.map +0 -1
  319. package/dist/esm/hooks/useContractReads.js.map +0 -1
  320. package/dist/esm/hooks/useContractSimulate.js.map +0 -1
  321. package/dist/esm/hooks/useContractWrite.js.map +0 -1
  322. package/dist/types/hooks/useContractRead.d.ts.map +0 -1
  323. package/dist/types/hooks/useContractReads.d.ts +0 -13
  324. package/dist/types/hooks/useContractReads.d.ts.map +0 -1
  325. package/dist/types/hooks/useContractSimulate.d.ts.map +0 -1
  326. package/dist/types/hooks/useContractWrite.d.ts +0 -15
  327. package/dist/types/hooks/useContractWrite.d.ts.map +0 -1
@@ -0,0 +1,121 @@
1
+ import {
2
+ type Config,
3
+ type ResolvedRegister,
4
+ type SimulateContractErrorType,
5
+ type SimulateContractParameters,
6
+ } from '@wagmi/core'
7
+ import { type ScopeKeyParameter, type UnionPartial } from '@wagmi/core/internal'
8
+ import {
9
+ type SimulateContractData,
10
+ type SimulateContractQueryFnData,
11
+ type SimulateContractQueryKey,
12
+ } from '@wagmi/core/query'
13
+ import {
14
+ type Abi,
15
+ type Address,
16
+ type ContractFunctionArgs,
17
+ type ContractFunctionName,
18
+ } from 'viem'
19
+
20
+ import {
21
+ type ConfigParameter,
22
+ type QueryParameter,
23
+ } from '../../types/properties.js'
24
+ import { useAccount } from '../useAccount.js'
25
+ import { useChainId } from '../useChainId.js'
26
+ import {
27
+ type UseSimulateContractReturnType,
28
+ useSimulateContract,
29
+ } from '../useSimulateContract.js'
30
+
31
+ type stateMutability = 'nonpayable' | 'payable'
32
+
33
+ export type CreateUseSimulateContractParameters<
34
+ abi extends Abi | readonly unknown[],
35
+ address extends Address | Record<number, Address> | undefined = undefined,
36
+ functionName extends
37
+ | ContractFunctionName<abi, stateMutability>
38
+ | undefined = undefined,
39
+ > = {
40
+ abi: abi | Abi | readonly unknown[]
41
+ address?: address | Address | Record<number, Address> | undefined
42
+ functionName?:
43
+ | functionName
44
+ | ContractFunctionName<abi, stateMutability>
45
+ | undefined
46
+ }
47
+
48
+ export type CreateUseSimulateContractReturnType<
49
+ abi extends Abi | readonly unknown[],
50
+ address extends Address | Record<number, Address> | undefined,
51
+ functionName extends ContractFunctionName<abi, stateMutability> | undefined,
52
+ > = <
53
+ name extends functionName extends ContractFunctionName<abi, stateMutability>
54
+ ? functionName
55
+ : ContractFunctionName<abi, stateMutability>,
56
+ args extends ContractFunctionArgs<abi, stateMutability, name>,
57
+ config extends Config = ResolvedRegister['config'],
58
+ chainId extends config['chains'][number]['id'] | undefined = undefined,
59
+ selectData = SimulateContractData<abi, name, args, config, chainId>,
60
+ >(
61
+ parameters?: {
62
+ abi?: undefined
63
+ address?: address extends undefined ? Address : undefined
64
+ functionName?: functionName extends undefined ? name : undefined
65
+ chainId?: address extends Record<number, Address>
66
+ ?
67
+ | keyof address
68
+ | (chainId extends keyof address ? chainId : never)
69
+ | undefined
70
+ : chainId | number | undefined
71
+ } & UnionPartial<
72
+ // TODO: Take `abi` and `address` from above and omit from below (currently breaks inference)
73
+ SimulateContractParameters<abi, name, args, config, chainId>
74
+ > &
75
+ ScopeKeyParameter &
76
+ ConfigParameter<config> &
77
+ QueryParameter<
78
+ SimulateContractQueryFnData<abi, name, args, config, chainId>,
79
+ SimulateContractErrorType,
80
+ selectData,
81
+ SimulateContractQueryKey<abi, name, args, config, chainId>
82
+ >,
83
+ ) => UseSimulateContractReturnType<abi, name, args, config, chainId, selectData>
84
+
85
+ export function createUseSimulateContract<
86
+ const abi extends Abi | readonly unknown[],
87
+ const address extends
88
+ | Address
89
+ | Record<number, Address>
90
+ | undefined = undefined,
91
+ functionName extends
92
+ | ContractFunctionName<abi, stateMutability>
93
+ | undefined = undefined,
94
+ >(
95
+ config: CreateUseSimulateContractParameters<abi, address, functionName>,
96
+ ): CreateUseSimulateContractReturnType<abi, address, functionName> {
97
+ if (config.address !== undefined && typeof config.address === 'object')
98
+ return (parameters) => {
99
+ const configChainId = useChainId()
100
+ const account = useAccount()
101
+ const chainId =
102
+ (parameters as { chainId?: number })?.chainId ??
103
+ account.chainId ??
104
+ configChainId
105
+ return useSimulateContract({
106
+ ...(parameters as any),
107
+ ...(config.functionName ? { functionName: config.functionName } : {}),
108
+ address: config.address?.[chainId],
109
+ abi: config.abi,
110
+ })
111
+ }
112
+
113
+ return (parameters) => {
114
+ return useSimulateContract({
115
+ ...(parameters as any),
116
+ ...(config.address ? { address: config.address } : {}),
117
+ ...(config.functionName ? { functionName: config.functionName } : {}),
118
+ abi: config.abi,
119
+ })
120
+ }
121
+ }
@@ -0,0 +1,98 @@
1
+ import {
2
+ type Config,
3
+ type ResolvedRegister,
4
+ type WatchContractEventParameters,
5
+ } from '@wagmi/core'
6
+ import {
7
+ type UnionEvaluate,
8
+ type UnionOmit,
9
+ type UnionPartial,
10
+ } from '@wagmi/core/internal'
11
+ import { type Abi, type Address, type ContractEventName } from 'viem'
12
+
13
+ import {
14
+ type ConfigParameter,
15
+ type EnabledParameter,
16
+ } from '../../types/properties.js'
17
+ import { useAccount } from '../useAccount.js'
18
+ import { useChainId } from '../useChainId.js'
19
+ import { useWatchContractEvent } from '../useWatchContractEvent.js'
20
+
21
+ export type CreateUseWatchContractEventParameters<
22
+ abi extends Abi | readonly unknown[],
23
+ address extends Address | Record<number, Address> | undefined = undefined,
24
+ eventName extends ContractEventName<abi> | undefined = undefined,
25
+ > = {
26
+ abi: abi | Abi | readonly unknown[]
27
+ address?: address | Address | Record<number, Address> | undefined
28
+ eventName?: eventName | ContractEventName<abi> | undefined
29
+ }
30
+
31
+ export type CreateUseWatchContractEventReturnType<
32
+ abi extends Abi | readonly unknown[],
33
+ address extends Address | Record<number, Address> | undefined,
34
+ eventName extends ContractEventName<abi> | undefined,
35
+ ///
36
+ omittedProperties extends 'abi' | 'address' | 'chainId' | 'eventName' =
37
+ | 'abi'
38
+ | (address extends undefined ? never : 'address')
39
+ | (address extends Record<number, Address> ? 'chainId' : never)
40
+ | (eventName extends undefined ? never : 'eventName'),
41
+ > = <
42
+ name extends eventName extends ContractEventName<abi>
43
+ ? eventName
44
+ : ContractEventName<abi>,
45
+ strict extends boolean | undefined = undefined,
46
+ config extends Config = ResolvedRegister['config'],
47
+ chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
48
+ >(
49
+ parameters?: UnionEvaluate<
50
+ UnionPartial<
51
+ UnionOmit<
52
+ WatchContractEventParameters<abi, name, strict, config, chainId>,
53
+ omittedProperties
54
+ >
55
+ > &
56
+ ConfigParameter<config> &
57
+ EnabledParameter
58
+ > &
59
+ (address extends Record<number, Address>
60
+ ? { chainId?: keyof address | undefined }
61
+ : unknown),
62
+ ) => void
63
+
64
+ export function createUseWatchContractEvent<
65
+ const abi extends Abi | readonly unknown[],
66
+ const address extends
67
+ | Address
68
+ | Record<number, Address>
69
+ | undefined = undefined,
70
+ eventName extends ContractEventName<abi> | undefined = undefined,
71
+ >(
72
+ config: CreateUseWatchContractEventParameters<abi, address, eventName>,
73
+ ): CreateUseWatchContractEventReturnType<abi, address, eventName> {
74
+ if (config.address !== undefined && typeof config.address === 'object')
75
+ return (parameters) => {
76
+ const configChainId = useChainId()
77
+ const account = useAccount()
78
+ const chainId =
79
+ (parameters as { chainId?: number })?.chainId ??
80
+ account.chainId ??
81
+ configChainId
82
+ return useWatchContractEvent({
83
+ ...(parameters as any),
84
+ ...(config.eventName ? { eventName: config.eventName } : {}),
85
+ address: config.address?.[chainId],
86
+ abi: config.abi,
87
+ })
88
+ }
89
+
90
+ return (parameters) => {
91
+ return useWatchContractEvent({
92
+ ...(parameters as any),
93
+ ...(config.address ? { address: config.address } : {}),
94
+ ...(config.eventName ? { eventName: config.eventName } : {}),
95
+ abi: config.abi,
96
+ })
97
+ }
98
+ }
@@ -0,0 +1,290 @@
1
+ import { type MutateOptions } from '@tanstack/react-query'
2
+ import {
3
+ type Config,
4
+ type ResolvedRegister,
5
+ type WriteContractErrorType,
6
+ } from '@wagmi/core'
7
+ import type {
8
+ ChainIdParameter,
9
+ ConnectorParameter,
10
+ Evaluate,
11
+ SelectChains,
12
+ UnionEvaluate,
13
+ UnionOmit,
14
+ } from '@wagmi/core/internal'
15
+ import {
16
+ type WriteContractData,
17
+ type WriteContractVariables,
18
+ } from '@wagmi/core/query'
19
+ import { useCallback } from 'react'
20
+ import {
21
+ type Abi,
22
+ type Account,
23
+ type Address,
24
+ type Chain,
25
+ type ContractFunctionArgs,
26
+ type ContractFunctionName,
27
+ } from 'viem'
28
+ import { type WriteContractParameters as viem_WriteContractParameters } from 'viem/actions'
29
+
30
+ import { useAccount } from '../useAccount.js'
31
+ import { useChainId } from '../useChainId.js'
32
+ import {
33
+ type UseWriteContractParameters,
34
+ type UseWriteContractReturnType as wagmi_UseWriteContractReturnType,
35
+ useWriteContract,
36
+ } from '../useWriteContract.js'
37
+
38
+ type stateMutability = 'nonpayable' | 'payable'
39
+
40
+ export type CreateUseWriteContractParameters<
41
+ abi extends Abi | readonly unknown[],
42
+ address extends Address | Record<number, Address> | undefined = undefined,
43
+ functionName extends
44
+ | ContractFunctionName<abi, stateMutability>
45
+ | undefined = undefined,
46
+ > = {
47
+ abi: abi | Abi | readonly unknown[]
48
+ address?: address | Address | Record<number, Address> | undefined
49
+ functionName?:
50
+ | functionName
51
+ | ContractFunctionName<abi, stateMutability>
52
+ | undefined
53
+ }
54
+
55
+ export type CreateUseWriteContractReturnType<
56
+ abi extends Abi | readonly unknown[],
57
+ address extends Address | Record<number, Address> | undefined,
58
+ functionName extends ContractFunctionName<abi, stateMutability> | undefined,
59
+ > = <config extends Config = ResolvedRegister['config'], context = unknown>(
60
+ parameters?: UseWriteContractParameters<config, context>,
61
+ ) => Evaluate<
62
+ Omit<
63
+ wagmi_UseWriteContractReturnType<config, context>,
64
+ 'writeContract' | 'writeContractAsync'
65
+ > & {
66
+ writeContract: <
67
+ const abi2 extends abi,
68
+ name extends functionName extends ContractFunctionName<
69
+ abi,
70
+ stateMutability
71
+ >
72
+ ? functionName
73
+ : ContractFunctionName<abi, stateMutability>,
74
+ args extends ContractFunctionArgs<abi2, stateMutability, name>,
75
+ chainId extends config['chains'][number]['id'],
76
+ >(
77
+ variables: Variables<
78
+ abi2,
79
+ functionName,
80
+ name,
81
+ args,
82
+ config,
83
+ chainId,
84
+ address
85
+ >,
86
+ options?:
87
+ | MutateOptions<
88
+ WriteContractData,
89
+ WriteContractErrorType,
90
+ WriteContractVariables<
91
+ abi2,
92
+ name,
93
+ args,
94
+ config,
95
+ chainId,
96
+ // use `functionName` to make sure it's not union of all possible function names
97
+ name
98
+ >,
99
+ context
100
+ >
101
+ | undefined,
102
+ ) => void
103
+ writeContractAsync: <
104
+ const abi2 extends abi,
105
+ name extends functionName extends ContractFunctionName<
106
+ abi,
107
+ stateMutability
108
+ >
109
+ ? functionName
110
+ : ContractFunctionName<abi, stateMutability>,
111
+ args extends ContractFunctionArgs<abi2, stateMutability, name>,
112
+ chainId extends config['chains'][number]['id'],
113
+ >(
114
+ variables: Variables<
115
+ abi2,
116
+ functionName,
117
+ name,
118
+ args,
119
+ config,
120
+ chainId,
121
+ address
122
+ >,
123
+ options?:
124
+ | MutateOptions<
125
+ WriteContractData,
126
+ WriteContractErrorType,
127
+ WriteContractVariables<
128
+ abi2,
129
+ name,
130
+ args,
131
+ config,
132
+ chainId,
133
+ // use `functionName` to make sure it's not union of all possible function names
134
+ name
135
+ >,
136
+ context
137
+ >
138
+ | undefined,
139
+ ) => Promise<WriteContractData>
140
+ }
141
+ >
142
+
143
+ export function createUseWriteContract<
144
+ const abi extends Abi | readonly unknown[],
145
+ const address extends
146
+ | Address
147
+ | Record<number, Address>
148
+ | undefined = undefined,
149
+ functionName extends
150
+ | ContractFunctionName<abi, stateMutability>
151
+ | undefined = undefined,
152
+ >(
153
+ config: CreateUseWriteContractParameters<abi, address, functionName>,
154
+ ): CreateUseWriteContractReturnType<abi, address, functionName> {
155
+ if (config.address !== undefined && typeof config.address === 'object')
156
+ return (parameters) => {
157
+ const result = useWriteContract(parameters)
158
+ const configChainId = useChainId()
159
+ const account = useAccount()
160
+ type Args = Parameters<wagmi_UseWriteContractReturnType['writeContract']>
161
+ return {
162
+ ...(result as any),
163
+ writeContract: useCallback(
164
+ (...args: Args) => {
165
+ let chainId
166
+ if (args[0].chainId) chainId = args[0].chainId
167
+ else if (args[0].account && args[0].account === account.address)
168
+ chainId = account.chainId
169
+ else if (args[0].account === undefined) chainId = account.chainId
170
+ else chainId = configChainId
171
+
172
+ const variables = {
173
+ ...(args[0] as any),
174
+ address: chainId ? config.address?.[chainId] : undefined,
175
+ abi: config.abi,
176
+ }
177
+ result.writeContract(variables, args[1] as any)
178
+ },
179
+ [
180
+ account.address,
181
+ account.chainId,
182
+ config,
183
+ configChainId,
184
+ result.writeContract,
185
+ ],
186
+ ),
187
+ writeContractAsync: useCallback(
188
+ (...args: Args) => {
189
+ let chainId
190
+ if (args[0].chainId) chainId = args[0].chainId
191
+ else if (args[0].account && args[0].account === account.address)
192
+ chainId = account.chainId
193
+ else if (args[0].account === undefined) chainId = account.chainId
194
+ else chainId = configChainId
195
+
196
+ const variables = {
197
+ ...(args[0] as any),
198
+ address: chainId ? config.address?.[chainId] : undefined,
199
+ abi: config.abi,
200
+ }
201
+ return result.writeContractAsync(variables, args[1] as any)
202
+ },
203
+ [
204
+ account.address,
205
+ account.chainId,
206
+ config,
207
+ configChainId,
208
+ result.writeContractAsync,
209
+ ],
210
+ ),
211
+ }
212
+ }
213
+
214
+ return (parameters) => {
215
+ const result = useWriteContract(parameters)
216
+ type Args = Parameters<wagmi_UseWriteContractReturnType['writeContract']>
217
+ return {
218
+ ...(result as any),
219
+ writeContract: useCallback(
220
+ (...args: Args) => {
221
+ const variables = {
222
+ ...(args[0] as any),
223
+ ...(config.address ? { address: config.address } : {}),
224
+ ...(config.functionName
225
+ ? { functionName: config.functionName }
226
+ : {}),
227
+ abi: config.abi,
228
+ }
229
+ result.writeContract(variables, args[1] as any)
230
+ },
231
+ [config, result.writeContract],
232
+ ),
233
+ writeContractAsync: useCallback(
234
+ (...args: Args) => {
235
+ const variables = {
236
+ ...(args[0] as any),
237
+ ...(config.address ? { address: config.address } : {}),
238
+ ...(config.functionName
239
+ ? { functionName: config.functionName }
240
+ : {}),
241
+ abi: config.abi,
242
+ }
243
+ return result.writeContractAsync(variables, args[1] as any)
244
+ },
245
+ [config, result.writeContractAsync],
246
+ ),
247
+ }
248
+ }
249
+ }
250
+
251
+ type Variables<
252
+ abi extends Abi | readonly unknown[],
253
+ functionName extends ContractFunctionName<abi, stateMutability> | undefined,
254
+ name extends ContractFunctionName<abi, stateMutability>,
255
+ args extends ContractFunctionArgs<abi, stateMutability, name>,
256
+ config extends Config,
257
+ chainId extends config['chains'][number]['id'],
258
+ address extends Address | Record<number, Address> | undefined,
259
+ ///
260
+ allFunctionNames = ContractFunctionName<abi, stateMutability>,
261
+ chains extends readonly Chain[] = SelectChains<config, chainId>,
262
+ omittedProperties extends 'abi' | 'address' | 'functionName' =
263
+ | 'abi'
264
+ | (address extends undefined ? never : 'address')
265
+ | (functionName extends undefined ? never : 'functionName'),
266
+ > = UnionEvaluate<
267
+ {
268
+ [key in keyof chains]: UnionOmit<
269
+ viem_WriteContractParameters<
270
+ abi,
271
+ name,
272
+ args,
273
+ chains[key],
274
+ Account,
275
+ chains[key],
276
+ allFunctionNames
277
+ >,
278
+ omittedProperties | 'chain'
279
+ >
280
+ }[number] &
281
+ (address extends Record<number, Address>
282
+ ? {
283
+ chainId?:
284
+ | keyof address
285
+ | (chainId extends keyof address ? chainId : never)
286
+ | undefined
287
+ }
288
+ : Evaluate<ChainIdParameter<config, chainId>>) &
289
+ ConnectorParameter & { __mode?: 'prepared' }
290
+ >
@@ -14,7 +14,7 @@ export type UseAccountParameters = ConfigParameter
14
14
 
15
15
  export type UseAccountReturnType = GetAccountReturnType
16
16
 
17
- /** https://alpha.wagmi.sh/react/api/hooks/useAccount */
17
+ /** https://wagmi.sh/react/api/hooks/useAccount */
18
18
  export function useAccount(
19
19
  parameters: UseAccountParameters = {},
20
20
  ): UseAccountReturnType {
@@ -13,7 +13,7 @@ export type UseAccountEffectParameters = Evaluate<
13
13
  data: Evaluate<
14
14
  Pick<
15
15
  Extract<GetAccountReturnType, { status: 'connected' }>,
16
- 'address' | 'addresses' | 'chainId' | 'connector'
16
+ 'address' | 'addresses' | 'chain' | 'chainId' | 'connector'
17
17
  > & {
18
18
  isReconnected: boolean
19
19
  }
@@ -23,7 +23,7 @@ export type UseAccountEffectParameters = Evaluate<
23
23
  } & ConfigParameter
24
24
  >
25
25
 
26
- /** https://alpha.wagmi.sh/react/api/hooks/useAccountEffect */
26
+ /** https://wagmi.sh/react/api/hooks/useAccountEffect */
27
27
  export function useAccountEffect(parameters: UseAccountEffectParameters = {}) {
28
28
  const { onConnect, onDisconnect } = parameters
29
29
 
@@ -38,12 +38,19 @@ export function useAccountEffect(parameters: UseAccountEffectParameters = {}) {
38
38
  prevData.address === undefined)) &&
39
39
  data.status === 'connected'
40
40
  ) {
41
- const { address, addresses, chainId, connector } = data
41
+ const { address, addresses, chain, chainId, connector } = data
42
42
  const isReconnected =
43
43
  prevData.status === 'reconnecting' ||
44
44
  // if `previousAccount.status` is `undefined`, the connector connected immediately.
45
45
  prevData.status === undefined
46
- onConnect?.({ address, addresses, chainId, connector, isReconnected })
46
+ onConnect?.({
47
+ address,
48
+ addresses,
49
+ chain,
50
+ chainId,
51
+ connector,
52
+ isReconnected,
53
+ })
47
54
  } else if (
48
55
  prevData.status === 'connected' &&
49
56
  data.status === 'disconnected'
@@ -2,7 +2,7 @@
2
2
 
3
3
  import {
4
4
  type Config,
5
- type GetBalanceError,
5
+ type GetBalanceErrorType,
6
6
  type ResolvedRegister,
7
7
  } from '@wagmi/core'
8
8
  import type { Evaluate } from '@wagmi/core/internal'
@@ -14,12 +14,8 @@ import {
14
14
  } from '@wagmi/core/query'
15
15
  import type { GetBalanceQueryFnData } from '@wagmi/core/query'
16
16
 
17
- import type { ConfigParameter } from '../types/properties.js'
18
- import {
19
- type UseQueryParameters,
20
- type UseQueryReturnType,
21
- useQuery,
22
- } from '../utils/query.js'
17
+ import type { ConfigParameter, QueryParameter } from '../types/properties.js'
18
+ import { type UseQueryReturnType, useQuery } from '../utils/query.js'
23
19
  import { useChainId } from './useChainId.js'
24
20
  import { useConfig } from './useConfig.js'
25
21
 
@@ -28,22 +24,19 @@ export type UseBalanceParameters<
28
24
  selectData = GetBalanceData,
29
25
  > = Evaluate<
30
26
  GetBalanceOptions<config> &
31
- ConfigParameter<config> & {
32
- query?:
33
- | UseQueryParameters<
34
- GetBalanceQueryFnData,
35
- GetBalanceError,
36
- selectData,
37
- GetBalanceQueryKey<config>
38
- >
39
- | undefined
40
- }
27
+ ConfigParameter<config> &
28
+ QueryParameter<
29
+ GetBalanceQueryFnData,
30
+ GetBalanceErrorType,
31
+ selectData,
32
+ GetBalanceQueryKey<config>
33
+ >
41
34
  >
42
35
 
43
36
  export type UseBalanceReturnType<selectData = GetBalanceData> =
44
- UseQueryReturnType<selectData, GetBalanceError>
37
+ UseQueryReturnType<selectData, GetBalanceErrorType>
45
38
 
46
- /** https://alpha.wagmi.sh/react/api/hooks/useBalance */
39
+ /** https://wagmi.sh/react/api/hooks/useBalance */
47
40
  export function useBalance<
48
41
  config extends Config = ResolvedRegister['config'],
49
42
  selectData = GetBalanceData,
@@ -55,11 +48,11 @@ export function useBalance<
55
48
  const config = useConfig(parameters)
56
49
  const chainId = useChainId()
57
50
 
58
- const queryOptions = getBalanceQueryOptions(config, {
51
+ const options = getBalanceQueryOptions(config, {
59
52
  ...parameters,
60
53
  chainId: parameters.chainId ?? chainId,
61
54
  })
62
55
  const enabled = Boolean(address && (query.enabled ?? true))
63
56
 
64
- return useQuery({ ...queryOptions, ...query, enabled })
57
+ return useQuery({ ...query, ...options, enabled })
65
58
  }