wagmi 3.3.4 → 3.4.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 (252) hide show
  1. package/dist/esm/exports/index.js +3 -0
  2. package/dist/esm/exports/index.js.map +1 -1
  3. package/dist/esm/hooks/codegen/createUseWriteContract.js +2 -0
  4. package/dist/esm/hooks/codegen/createUseWriteContract.js.map +1 -1
  5. package/dist/esm/hooks/useBalance.js +0 -1
  6. package/dist/esm/hooks/useBalance.js.map +1 -1
  7. package/dist/esm/hooks/useBlobBaseFee.js +16 -0
  8. package/dist/esm/hooks/useBlobBaseFee.js.map +1 -0
  9. package/dist/esm/hooks/useBlock.js +0 -1
  10. package/dist/esm/hooks/useBlock.js.map +1 -1
  11. package/dist/esm/hooks/useBlockNumber.js +0 -1
  12. package/dist/esm/hooks/useBlockNumber.js.map +1 -1
  13. package/dist/esm/hooks/useBlockTransactionCount.js +0 -1
  14. package/dist/esm/hooks/useBlockTransactionCount.js.map +1 -1
  15. package/dist/esm/hooks/useBytecode.js +0 -1
  16. package/dist/esm/hooks/useBytecode.js.map +1 -1
  17. package/dist/esm/hooks/useCall.js +0 -1
  18. package/dist/esm/hooks/useCall.js.map +1 -1
  19. package/dist/esm/hooks/useCallsStatus.js +0 -1
  20. package/dist/esm/hooks/useCallsStatus.js.map +1 -1
  21. package/dist/esm/hooks/useCapabilities.js +0 -1
  22. package/dist/esm/hooks/useCapabilities.js.map +1 -1
  23. package/dist/esm/hooks/useConnect.js +2 -5
  24. package/dist/esm/hooks/useConnect.js.map +1 -1
  25. package/dist/esm/hooks/useContractEvents.js +16 -0
  26. package/dist/esm/hooks/useContractEvents.js.map +1 -0
  27. package/dist/esm/hooks/useDeployContract.js +2 -4
  28. package/dist/esm/hooks/useDeployContract.js.map +1 -1
  29. package/dist/esm/hooks/useDisconnect.js +2 -2
  30. package/dist/esm/hooks/useDisconnect.js.map +1 -1
  31. package/dist/esm/hooks/useEnsAddress.js +0 -1
  32. package/dist/esm/hooks/useEnsAddress.js.map +1 -1
  33. package/dist/esm/hooks/useEnsAvatar.js +0 -1
  34. package/dist/esm/hooks/useEnsAvatar.js.map +1 -1
  35. package/dist/esm/hooks/useEnsName.js +0 -1
  36. package/dist/esm/hooks/useEnsName.js.map +1 -1
  37. package/dist/esm/hooks/useEnsResolver.js +0 -1
  38. package/dist/esm/hooks/useEnsResolver.js.map +1 -1
  39. package/dist/esm/hooks/useEnsText.js +0 -1
  40. package/dist/esm/hooks/useEnsText.js.map +1 -1
  41. package/dist/esm/hooks/useEstimateFeesPerGas.js +0 -1
  42. package/dist/esm/hooks/useEstimateFeesPerGas.js.map +1 -1
  43. package/dist/esm/hooks/useEstimateGas.js +0 -1
  44. package/dist/esm/hooks/useEstimateGas.js.map +1 -1
  45. package/dist/esm/hooks/useEstimateMaxPriorityFeePerGas.js +0 -1
  46. package/dist/esm/hooks/useEstimateMaxPriorityFeePerGas.js.map +1 -1
  47. package/dist/esm/hooks/useFeeHistory.js +0 -1
  48. package/dist/esm/hooks/useFeeHistory.js.map +1 -1
  49. package/dist/esm/hooks/useGasPrice.js +0 -1
  50. package/dist/esm/hooks/useGasPrice.js.map +1 -1
  51. package/dist/esm/hooks/usePrepareTransactionRequest.js +0 -1
  52. package/dist/esm/hooks/usePrepareTransactionRequest.js.map +1 -1
  53. package/dist/esm/hooks/useProof.js +0 -1
  54. package/dist/esm/hooks/useProof.js.map +1 -1
  55. package/dist/esm/hooks/useReadContract.js +0 -1
  56. package/dist/esm/hooks/useReadContract.js.map +1 -1
  57. package/dist/esm/hooks/useReadContracts.js +0 -1
  58. package/dist/esm/hooks/useReadContracts.js.map +1 -1
  59. package/dist/esm/hooks/useReconnect.js +2 -2
  60. package/dist/esm/hooks/useReconnect.js.map +1 -1
  61. package/dist/esm/hooks/useSendCalls.js +2 -4
  62. package/dist/esm/hooks/useSendCalls.js.map +1 -1
  63. package/dist/esm/hooks/useSendCallsSync.js +2 -4
  64. package/dist/esm/hooks/useSendCallsSync.js.map +1 -1
  65. package/dist/esm/hooks/useSendTransaction.js +2 -2
  66. package/dist/esm/hooks/useSendTransaction.js.map +1 -1
  67. package/dist/esm/hooks/useSendTransactionSync.js +2 -2
  68. package/dist/esm/hooks/useSendTransactionSync.js.map +1 -1
  69. package/dist/esm/hooks/useShowCallsStatus.js +2 -2
  70. package/dist/esm/hooks/useShowCallsStatus.js.map +1 -1
  71. package/dist/esm/hooks/useSignMessage.js +2 -2
  72. package/dist/esm/hooks/useSignMessage.js.map +1 -1
  73. package/dist/esm/hooks/useSignTypedData.js +2 -4
  74. package/dist/esm/hooks/useSignTypedData.js.map +1 -1
  75. package/dist/esm/hooks/useSimulateContract.js +0 -1
  76. package/dist/esm/hooks/useSimulateContract.js.map +1 -1
  77. package/dist/esm/hooks/useStorageAt.js +0 -1
  78. package/dist/esm/hooks/useStorageAt.js.map +1 -1
  79. package/dist/esm/hooks/useSwitchChain.js +2 -4
  80. package/dist/esm/hooks/useSwitchChain.js.map +1 -1
  81. package/dist/esm/hooks/useSwitchConnection.js +2 -4
  82. package/dist/esm/hooks/useSwitchConnection.js.map +1 -1
  83. package/dist/esm/hooks/useTransaction.js +0 -1
  84. package/dist/esm/hooks/useTransaction.js.map +1 -1
  85. package/dist/esm/hooks/useTransactionConfirmations.js +0 -1
  86. package/dist/esm/hooks/useTransactionConfirmations.js.map +1 -1
  87. package/dist/esm/hooks/useTransactionCount.js +0 -1
  88. package/dist/esm/hooks/useTransactionCount.js.map +1 -1
  89. package/dist/esm/hooks/useTransactionReceipt.js +0 -1
  90. package/dist/esm/hooks/useTransactionReceipt.js.map +1 -1
  91. package/dist/esm/hooks/useVerifyMessage.js +0 -1
  92. package/dist/esm/hooks/useVerifyMessage.js.map +1 -1
  93. package/dist/esm/hooks/useVerifyTypedData.js +0 -1
  94. package/dist/esm/hooks/useVerifyTypedData.js.map +1 -1
  95. package/dist/esm/hooks/useWaitForCallsStatus.js +0 -1
  96. package/dist/esm/hooks/useWaitForCallsStatus.js.map +1 -1
  97. package/dist/esm/hooks/useWaitForTransactionReceipt.js +0 -1
  98. package/dist/esm/hooks/useWaitForTransactionReceipt.js.map +1 -1
  99. package/dist/esm/hooks/useWatchAsset.js +2 -2
  100. package/dist/esm/hooks/useWatchAsset.js.map +1 -1
  101. package/dist/esm/hooks/useWatchBlockNumber.js +8 -5
  102. package/dist/esm/hooks/useWatchBlockNumber.js.map +1 -1
  103. package/dist/esm/hooks/useWatchBlocks.js +8 -5
  104. package/dist/esm/hooks/useWatchBlocks.js.map +1 -1
  105. package/dist/esm/hooks/useWatchContractEvent.js +21 -9
  106. package/dist/esm/hooks/useWatchContractEvent.js.map +1 -1
  107. package/dist/esm/hooks/useWatchPendingTransactions.js +8 -5
  108. package/dist/esm/hooks/useWatchPendingTransactions.js.map +1 -1
  109. package/dist/esm/hooks/useWriteContract.js +2 -4
  110. package/dist/esm/hooks/useWriteContract.js.map +1 -1
  111. package/dist/esm/hooks/useWriteContractSync.js +16 -0
  112. package/dist/esm/hooks/useWriteContractSync.js.map +1 -0
  113. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  114. package/dist/esm/utils/query.js +2 -0
  115. package/dist/esm/utils/query.js.map +1 -1
  116. package/dist/esm/version.js +1 -1
  117. package/dist/types/exports/index.d.ts +3 -0
  118. package/dist/types/exports/index.d.ts.map +1 -1
  119. package/dist/types/hooks/codegen/createUseWriteContract.d.ts.map +1 -1
  120. package/dist/types/hooks/useBalance.d.ts.map +1 -1
  121. package/dist/types/hooks/useBlobBaseFee.d.ts +10 -0
  122. package/dist/types/hooks/useBlobBaseFee.d.ts.map +1 -0
  123. package/dist/types/hooks/useBlock.d.ts.map +1 -1
  124. package/dist/types/hooks/useBlockNumber.d.ts.map +1 -1
  125. package/dist/types/hooks/useBlockTransactionCount.d.ts.map +1 -1
  126. package/dist/types/hooks/useBytecode.d.ts.map +1 -1
  127. package/dist/types/hooks/useCall.d.ts.map +1 -1
  128. package/dist/types/hooks/useCallsStatus.d.ts.map +1 -1
  129. package/dist/types/hooks/useCapabilities.d.ts.map +1 -1
  130. package/dist/types/hooks/useConnect.d.ts +4 -8
  131. package/dist/types/hooks/useConnect.d.ts.map +1 -1
  132. package/dist/types/hooks/useContractEvents.d.ts +11 -0
  133. package/dist/types/hooks/useContractEvents.d.ts.map +1 -0
  134. package/dist/types/hooks/useDeployContract.d.ts +4 -8
  135. package/dist/types/hooks/useDeployContract.d.ts.map +1 -1
  136. package/dist/types/hooks/useDisconnect.d.ts +4 -8
  137. package/dist/types/hooks/useDisconnect.d.ts.map +1 -1
  138. package/dist/types/hooks/useEnsAddress.d.ts.map +1 -1
  139. package/dist/types/hooks/useEnsAvatar.d.ts.map +1 -1
  140. package/dist/types/hooks/useEnsName.d.ts.map +1 -1
  141. package/dist/types/hooks/useEnsResolver.d.ts.map +1 -1
  142. package/dist/types/hooks/useEnsText.d.ts.map +1 -1
  143. package/dist/types/hooks/useEstimateFeesPerGas.d.ts.map +1 -1
  144. package/dist/types/hooks/useEstimateMaxPriorityFeePerGas.d.ts.map +1 -1
  145. package/dist/types/hooks/useFeeHistory.d.ts.map +1 -1
  146. package/dist/types/hooks/useGasPrice.d.ts.map +1 -1
  147. package/dist/types/hooks/usePrepareTransactionRequest.d.ts.map +1 -1
  148. package/dist/types/hooks/useProof.d.ts.map +1 -1
  149. package/dist/types/hooks/useReadContract.d.ts.map +1 -1
  150. package/dist/types/hooks/useReadContracts.d.ts.map +1 -1
  151. package/dist/types/hooks/useReconnect.d.ts +5 -8
  152. package/dist/types/hooks/useReconnect.d.ts.map +1 -1
  153. package/dist/types/hooks/useSendCalls.d.ts +4 -8
  154. package/dist/types/hooks/useSendCalls.d.ts.map +1 -1
  155. package/dist/types/hooks/useSendCallsSync.d.ts +4 -8
  156. package/dist/types/hooks/useSendCallsSync.d.ts.map +1 -1
  157. package/dist/types/hooks/useSendTransaction.d.ts +4 -8
  158. package/dist/types/hooks/useSendTransaction.d.ts.map +1 -1
  159. package/dist/types/hooks/useSendTransactionSync.d.ts +4 -8
  160. package/dist/types/hooks/useSendTransactionSync.d.ts.map +1 -1
  161. package/dist/types/hooks/useShowCallsStatus.d.ts +4 -8
  162. package/dist/types/hooks/useShowCallsStatus.d.ts.map +1 -1
  163. package/dist/types/hooks/useSignMessage.d.ts +4 -8
  164. package/dist/types/hooks/useSignMessage.d.ts.map +1 -1
  165. package/dist/types/hooks/useSignTypedData.d.ts +4 -8
  166. package/dist/types/hooks/useSignTypedData.d.ts.map +1 -1
  167. package/dist/types/hooks/useSimulateContract.d.ts.map +1 -1
  168. package/dist/types/hooks/useStorageAt.d.ts.map +1 -1
  169. package/dist/types/hooks/useSwitchChain.d.ts +4 -8
  170. package/dist/types/hooks/useSwitchChain.d.ts.map +1 -1
  171. package/dist/types/hooks/useSwitchConnection.d.ts +4 -8
  172. package/dist/types/hooks/useSwitchConnection.d.ts.map +1 -1
  173. package/dist/types/hooks/useTransaction.d.ts.map +1 -1
  174. package/dist/types/hooks/useTransactionConfirmations.d.ts.map +1 -1
  175. package/dist/types/hooks/useTransactionCount.d.ts.map +1 -1
  176. package/dist/types/hooks/useTransactionReceipt.d.ts.map +1 -1
  177. package/dist/types/hooks/useVerifyMessage.d.ts.map +1 -1
  178. package/dist/types/hooks/useVerifyTypedData.d.ts.map +1 -1
  179. package/dist/types/hooks/useWaitForCallsStatus.d.ts.map +1 -1
  180. package/dist/types/hooks/useWaitForTransactionReceipt.d.ts.map +1 -1
  181. package/dist/types/hooks/useWatchAsset.d.ts +4 -8
  182. package/dist/types/hooks/useWatchAsset.d.ts.map +1 -1
  183. package/dist/types/hooks/useWatchBlockNumber.d.ts.map +1 -1
  184. package/dist/types/hooks/useWatchBlocks.d.ts.map +1 -1
  185. package/dist/types/hooks/useWatchContractEvent.d.ts.map +1 -1
  186. package/dist/types/hooks/useWatchPendingTransactions.d.ts.map +1 -1
  187. package/dist/types/hooks/useWriteContract.d.ts +4 -8
  188. package/dist/types/hooks/useWriteContract.d.ts.map +1 -1
  189. package/dist/types/hooks/useWriteContractSync.d.ts +15 -0
  190. package/dist/types/hooks/useWriteContractSync.d.ts.map +1 -0
  191. package/dist/types/utils/query.d.ts +11 -8
  192. package/dist/types/utils/query.d.ts.map +1 -1
  193. package/dist/types/version.d.ts +1 -1
  194. package/package.json +3 -3
  195. package/src/exports/index.ts +18 -0
  196. package/src/hooks/codegen/createUseWriteContract.ts +2 -0
  197. package/src/hooks/useBalance.ts +0 -1
  198. package/src/hooks/useBlobBaseFee.ts +46 -0
  199. package/src/hooks/useBlock.ts +0 -1
  200. package/src/hooks/useBlockNumber.ts +0 -1
  201. package/src/hooks/useBlockTransactionCount.ts +0 -1
  202. package/src/hooks/useBytecode.ts +0 -1
  203. package/src/hooks/useCall.ts +0 -1
  204. package/src/hooks/useCallsStatus.ts +0 -1
  205. package/src/hooks/useCapabilities.ts +0 -1
  206. package/src/hooks/useConnect.ts +8 -27
  207. package/src/hooks/useContractEvents.ts +111 -0
  208. package/src/hooks/useDeployContract.ts +9 -26
  209. package/src/hooks/useDisconnect.ts +12 -24
  210. package/src/hooks/useEnsAddress.ts +0 -1
  211. package/src/hooks/useEnsAvatar.ts +0 -1
  212. package/src/hooks/useEnsName.ts +0 -1
  213. package/src/hooks/useEnsResolver.ts +0 -1
  214. package/src/hooks/useEnsText.ts +0 -1
  215. package/src/hooks/useEstimateFeesPerGas.ts +0 -1
  216. package/src/hooks/useEstimateGas.ts +0 -1
  217. package/src/hooks/useEstimateMaxPriorityFeePerGas.ts +0 -1
  218. package/src/hooks/useFeeHistory.ts +0 -1
  219. package/src/hooks/useGasPrice.ts +0 -1
  220. package/src/hooks/usePrepareTransactionRequest.ts +0 -1
  221. package/src/hooks/useProof.ts +0 -1
  222. package/src/hooks/useReadContract.ts +0 -1
  223. package/src/hooks/useReadContracts.ts +0 -1
  224. package/src/hooks/useReconnect.ts +13 -24
  225. package/src/hooks/useSendCalls.ts +9 -26
  226. package/src/hooks/useSendCallsSync.ts +9 -26
  227. package/src/hooks/useSendTransaction.ts +9 -24
  228. package/src/hooks/useSendTransactionSync.ts +9 -22
  229. package/src/hooks/useShowCallsStatus.ts +9 -24
  230. package/src/hooks/useSignMessage.ts +12 -24
  231. package/src/hooks/useSignTypedData.ts +9 -24
  232. package/src/hooks/useSimulateContract.ts +0 -1
  233. package/src/hooks/useStorageAt.ts +0 -1
  234. package/src/hooks/useSwitchChain.ts +9 -26
  235. package/src/hooks/useSwitchConnection.ts +9 -26
  236. package/src/hooks/useTransaction.ts +0 -1
  237. package/src/hooks/useTransactionConfirmations.ts +0 -1
  238. package/src/hooks/useTransactionCount.ts +0 -1
  239. package/src/hooks/useTransactionReceipt.ts +0 -1
  240. package/src/hooks/useVerifyMessage.ts +0 -1
  241. package/src/hooks/useVerifyTypedData.ts +0 -1
  242. package/src/hooks/useWaitForCallsStatus.ts +0 -1
  243. package/src/hooks/useWaitForTransactionReceipt.ts +0 -1
  244. package/src/hooks/useWatchAsset.ts +12 -24
  245. package/src/hooks/useWatchBlockNumber.ts +10 -7
  246. package/src/hooks/useWatchBlocks.ts +10 -7
  247. package/src/hooks/useWatchContractEvent.ts +23 -10
  248. package/src/hooks/useWatchPendingTransactions.ts +10 -7
  249. package/src/hooks/useWriteContract.ts +9 -30
  250. package/src/hooks/useWriteContractSync.ts +65 -0
  251. package/src/utils/query.ts +37 -31
  252. package/src/version.ts +1 -1
@@ -1,5 +1,4 @@
1
1
  'use client'
2
-
3
2
  import { useMutation } from '@tanstack/react-query'
4
3
  import type {
5
4
  Config,
@@ -12,33 +11,19 @@ import {
12
11
  type SwitchConnectionData,
13
12
  type SwitchConnectionMutate,
14
13
  type SwitchConnectionMutateAsync,
14
+ type SwitchConnectionOptions,
15
15
  type SwitchConnectionVariables,
16
16
  switchConnectionMutationOptions,
17
17
  } from '@wagmi/core/query'
18
-
19
18
  import type { ConfigParameter } from '../types/properties.js'
20
- import type {
21
- UseMutationParameters,
22
- UseMutationReturnType,
23
- } from '../utils/query.js'
19
+ import type { UseMutationReturnType } from '../utils/query.js'
24
20
  import { useConfig } from './useConfig.js'
25
21
  import { useConnections } from './useConnections.js'
26
22
 
27
23
  export type UseSwitchConnectionParameters<
28
24
  config extends Config = Config,
29
25
  context = unknown,
30
- > = Compute<
31
- ConfigParameter<config> & {
32
- mutation?:
33
- | UseMutationParameters<
34
- SwitchConnectionData<config>,
35
- SwitchConnectionErrorType,
36
- SwitchConnectionVariables,
37
- context
38
- >
39
- | undefined
40
- }
41
- >
26
+ > = Compute<ConfigParameter<config> & SwitchConnectionOptions<config, context>>
42
27
 
43
28
  export type UseSwitchConnectionReturnType<
44
29
  config extends Config = Config,
@@ -48,12 +33,12 @@ export type UseSwitchConnectionReturnType<
48
33
  SwitchConnectionData<config>,
49
34
  SwitchConnectionErrorType,
50
35
  SwitchConnectionVariables,
51
- context
36
+ context,
37
+ SwitchConnectionMutate<config, context>,
38
+ SwitchConnectionMutateAsync<config, context>
52
39
  > & {
53
40
  /** @deprecated use `useConnections` instead */
54
41
  connectors: readonly Connector[]
55
- mutate: SwitchConnectionMutate<config, context>
56
- mutateAsync: SwitchConnectionMutateAsync<config, context>
57
42
  /** @deprecated use `mutate` instead */
58
43
  switchAccount: SwitchConnectionMutate<config, context>
59
44
  /** @deprecated use `mutateAsync` instead */
@@ -73,16 +58,14 @@ export function useSwitchConnection<
73
58
  parameters: UseSwitchConnectionParameters<config, context> = {},
74
59
  ): UseSwitchConnectionReturnType<config, context> {
75
60
  const config = useConfig(parameters)
76
- const mutationOptions = switchConnectionMutationOptions(config)
77
- const mutation = useMutation({ ...parameters.mutation, ...mutationOptions })
61
+ const options = switchConnectionMutationOptions(config, parameters)
62
+ const mutation = useMutation(options)
78
63
  type Return = UseSwitchConnectionReturnType<config, context>
79
64
  return {
80
- ...mutation,
65
+ ...(mutation as Return),
81
66
  connectors: useConnections({ config }).map(
82
67
  (connection) => connection.connector,
83
68
  ),
84
- mutate: mutation.mutate as Return['mutate'],
85
- mutateAsync: mutation.mutateAsync as Return['mutateAsync'],
86
69
  switchAccount: mutation.mutate as Return['mutate'],
87
70
  switchAccountAsync: mutation.mutateAsync as Return['mutateAsync'],
88
71
  switchConnection: mutation.mutate as Return['mutate'],
@@ -45,7 +45,6 @@ export function useTransaction<
45
45
  const options = getTransactionQueryOptions(config, {
46
46
  ...parameters,
47
47
  chainId: parameters.chainId ?? chainId,
48
- query: parameters.query,
49
48
  })
50
49
  return useQuery(options) as any
51
50
  }
@@ -42,7 +42,6 @@ export function useTransactionConfirmations<
42
42
  const options = getTransactionConfirmationsQueryOptions(config, {
43
43
  ...parameters,
44
44
  chainId: parameters.chainId ?? chainId,
45
- query: parameters.query,
46
45
  })
47
46
  return useQuery(options) as any
48
47
  }
@@ -38,7 +38,6 @@ export function useTransactionCount<
38
38
  const options = getTransactionCountQueryOptions(config, {
39
39
  ...parameters,
40
40
  chainId: parameters.chainId ?? chainId,
41
- query: parameters.query,
42
41
  })
43
42
  return useQuery(options)
44
43
  }
@@ -46,7 +46,6 @@ export function useTransactionReceipt<
46
46
  const options = getTransactionReceiptQueryOptions(config, {
47
47
  ...parameters,
48
48
  chainId: parameters.chainId ?? chainId,
49
- query: parameters.query,
50
49
  })
51
50
  return useQuery(options) as any
52
51
  }
@@ -35,7 +35,6 @@ export function useVerifyMessage<
35
35
  const options = verifyMessageQueryOptions(config, {
36
36
  ...parameters,
37
37
  chainId: parameters.chainId ?? chainId,
38
- query: parameters.query,
39
38
  })
40
39
  return useQuery(options)
41
40
  }
@@ -45,7 +45,6 @@ export function useVerifyTypedData<
45
45
  const options = verifyTypedDataQueryOptions(config, {
46
46
  ...(parameters as any),
47
47
  chainId: parameters.chainId ?? chainId,
48
- query: parameters.query,
49
48
  })
50
49
  return useQuery(options) as any
51
50
  }
@@ -36,7 +36,6 @@ export function useWaitForCallsStatus<
36
36
  const options = waitForCallsStatusQueryOptions(config, {
37
37
  ...parameters,
38
38
  connector: parameters.connector ?? connector,
39
- query: parameters.query,
40
39
  })
41
40
  return useQuery(options)
42
41
  }
@@ -50,7 +50,6 @@ export function useWaitForTransactionReceipt<
50
50
  const options = waitForTransactionReceiptQueryOptions(config, {
51
51
  ...parameters,
52
52
  chainId: parameters.chainId ?? chainId,
53
- query: parameters.query,
54
53
  })
55
54
  return useQuery(options) as any
56
55
  }
@@ -1,5 +1,4 @@
1
1
  'use client'
2
-
3
2
  import { useMutation } from '@tanstack/react-query'
4
3
  import type { WatchAssetErrorType } from '@wagmi/core'
5
4
  import type { Compute } from '@wagmi/core/internal'
@@ -7,28 +6,16 @@ import {
7
6
  type WatchAssetData,
8
7
  type WatchAssetMutate,
9
8
  type WatchAssetMutateAsync,
9
+ type WatchAssetOptions,
10
10
  type WatchAssetVariables,
11
11
  watchAssetMutationOptions,
12
12
  } from '@wagmi/core/query'
13
-
14
13
  import type { ConfigParameter } from '../types/properties.js'
15
- import type {
16
- UseMutationParameters,
17
- UseMutationReturnType,
18
- } from '../utils/query.js'
14
+ import type { UseMutationReturnType } from '../utils/query.js'
19
15
  import { useConfig } from './useConfig.js'
20
16
 
21
17
  export type UseWatchAssetParameters<context = unknown> = Compute<
22
- ConfigParameter & {
23
- mutation?:
24
- | UseMutationParameters<
25
- WatchAssetData,
26
- WatchAssetErrorType,
27
- WatchAssetVariables,
28
- context
29
- >
30
- | undefined
31
- }
18
+ ConfigParameter & WatchAssetOptions<context>
32
19
  >
33
20
 
34
21
  export type UseWatchAssetReturnType<context = unknown> = Compute<
@@ -36,10 +23,10 @@ export type UseWatchAssetReturnType<context = unknown> = Compute<
36
23
  WatchAssetData,
37
24
  WatchAssetErrorType,
38
25
  WatchAssetVariables,
39
- context
26
+ context,
27
+ WatchAssetMutate<context>,
28
+ WatchAssetMutateAsync<context>
40
29
  > & {
41
- mutate: WatchAssetMutate<context>
42
- mutateAsync: WatchAssetMutateAsync<context>
43
30
  /** @deprecated use `mutate` instead */
44
31
  watchAsset: WatchAssetMutate<context>
45
32
  /** @deprecated use `mutateAsync` instead */
@@ -52,11 +39,12 @@ export function useWatchAsset<context = unknown>(
52
39
  parameters: UseWatchAssetParameters<context> = {},
53
40
  ): UseWatchAssetReturnType<context> {
54
41
  const config = useConfig(parameters)
55
- const mutationOptions = watchAssetMutationOptions(config)
56
- const mutation = useMutation({ ...parameters.mutation, ...mutationOptions })
42
+ const options = watchAssetMutationOptions(config, parameters)
43
+ const mutation = useMutation(options)
44
+ type Return = UseWatchAssetReturnType<context>
57
45
  return {
58
- ...mutation,
59
- watchAsset: mutation.mutate,
60
- watchAssetAsync: mutation.mutateAsync,
46
+ ...(mutation as Return),
47
+ watchAsset: mutation.mutate as Return['mutate'],
48
+ watchAssetAsync: mutation.mutateAsync as Return['mutateAsync'],
61
49
  }
62
50
  }
@@ -1,5 +1,4 @@
1
1
  'use client'
2
-
3
2
  import {
4
3
  type Config,
5
4
  type ResolvedRegister,
@@ -7,8 +6,7 @@ import {
7
6
  watchBlockNumber,
8
7
  } from '@wagmi/core'
9
8
  import type { UnionCompute, UnionExactPartial } from '@wagmi/core/internal'
10
- import { useEffect } from 'react'
11
-
9
+ import { useEffect, useRef } from 'react'
12
10
  import type { ConfigParameter, EnabledParameter } from '../types/properties.js'
13
11
  import { useChainId } from './useChainId.js'
14
12
  import { useConfig } from './useConfig.js'
@@ -39,23 +37,28 @@ export function useWatchBlockNumber<
39
37
  const configChainId = useChainId({ config })
40
38
  const chainId = parameters.chainId ?? configChainId
41
39
 
40
+ const onBlockNumberRef = useRef(onBlockNumber)
41
+ const onErrorRef = useRef(rest.onError)
42
+ onBlockNumberRef.current = onBlockNumber
43
+ onErrorRef.current = rest.onError
44
+
42
45
  // TODO(react@19): cleanup
43
46
  // biome-ignore lint/correctness/useExhaustiveDependencies: `rest` changes every render so only including properties in dependency array
44
47
  useEffect(() => {
45
48
  if (!enabled) return
46
- if (!onBlockNumber) return
49
+ if (!onBlockNumberRef.current) return
47
50
  return watchBlockNumber(config, {
48
51
  ...(rest as any),
49
52
  chainId,
50
- onBlockNumber,
53
+ onBlockNumber: (blockNumber, prevBlockNumber) =>
54
+ onBlockNumberRef.current?.(blockNumber, prevBlockNumber),
55
+ onError: (error) => onErrorRef.current?.(error),
51
56
  })
52
57
  }, [
53
58
  chainId,
54
59
  config,
55
60
  enabled,
56
- onBlockNumber,
57
61
  ///
58
- rest.onError,
59
62
  rest.emitMissed,
60
63
  rest.emitOnBegin,
61
64
  rest.poll,
@@ -1,5 +1,4 @@
1
1
  'use client'
2
-
3
2
  import {
4
3
  type Config,
5
4
  type ResolvedRegister,
@@ -7,9 +6,8 @@ import {
7
6
  watchBlocks,
8
7
  } from '@wagmi/core'
9
8
  import type { UnionCompute, UnionExactPartial } from '@wagmi/core/internal'
10
- import { useEffect } from 'react'
9
+ import { useEffect, useRef } from 'react'
11
10
  import type { BlockTag } from 'viem'
12
-
13
11
  import type { ConfigParameter, EnabledParameter } from '../types/properties.js'
14
12
  import { useChainId } from './useChainId.js'
15
13
  import { useConfig } from './useConfig.js'
@@ -51,27 +49,32 @@ export function useWatchBlocks<
51
49
  const configChainId = useChainId({ config })
52
50
  const chainId = parameters.chainId ?? configChainId
53
51
 
52
+ const onBlockRef = useRef(onBlock)
53
+ const onErrorRef = useRef(rest.onError)
54
+ onBlockRef.current = onBlock
55
+ onErrorRef.current = rest.onError
56
+
54
57
  // TODO(react@19): cleanup
55
58
  // biome-ignore lint/correctness/useExhaustiveDependencies: `rest` changes every render so only including properties in dependency array
56
59
  useEffect(() => {
57
60
  if (!enabled) return
58
- if (!onBlock) return
61
+ if (!onBlockRef.current) return
59
62
  return watchBlocks(config, {
60
63
  ...(rest as any),
61
64
  chainId,
62
- onBlock,
65
+ onBlock: (block, prevBlock) =>
66
+ onBlockRef.current?.(block as any, prevBlock as any),
67
+ onError: (error) => onErrorRef.current?.(error),
63
68
  })
64
69
  }, [
65
70
  chainId,
66
71
  config,
67
72
  enabled,
68
- onBlock,
69
73
  ///
70
74
  rest.blockTag,
71
75
  rest.emitMissed,
72
76
  rest.emitOnBegin,
73
77
  rest.includeTransactions,
74
- rest.onError,
75
78
  rest.poll,
76
79
  rest.pollingInterval,
77
80
  rest.syncConnectedChain,
@@ -1,15 +1,14 @@
1
1
  'use client'
2
-
3
2
  import {
4
3
  type Config,
4
+ deepEqual,
5
5
  type ResolvedRegister,
6
6
  type WatchContractEventParameters,
7
7
  watchContractEvent,
8
8
  } from '@wagmi/core'
9
9
  import type { UnionCompute, UnionExactPartial } from '@wagmi/core/internal'
10
- import { useEffect } from 'react'
10
+ import { useEffect, useRef } from 'react'
11
11
  import type { Abi, ContractEventName } from 'viem'
12
-
13
12
  import type { ConfigParameter, EnabledParameter } from '../types/properties.js'
14
13
  import { useChainId } from './useChainId.js'
15
14
  import { useConfig } from './useConfig.js'
@@ -54,29 +53,43 @@ export function useWatchContractEvent<
54
53
  const configChainId = useChainId({ config })
55
54
  const chainId = parameters.chainId ?? configChainId
56
55
 
56
+ const onLogsRef = useRef(onLogs)
57
+ const onErrorRef = useRef(rest.onError)
58
+ onLogsRef.current = onLogs
59
+ onErrorRef.current = rest.onError
60
+
61
+ const abiRef = useRef(rest.abi)
62
+ const addressRef = useRef(rest.address)
63
+ const argsRef = useRef(rest.args)
64
+ if (!abiRef.current || !deepEqual(abiRef.current, rest.abi))
65
+ abiRef.current = rest.abi
66
+ if (!addressRef.current || !deepEqual(addressRef.current, rest.address))
67
+ addressRef.current = rest.address
68
+ if (!argsRef.current || !deepEqual(argsRef.current, rest.args))
69
+ argsRef.current = rest.args
70
+
57
71
  // TODO(react@19): cleanup
58
72
  // biome-ignore lint/correctness/useExhaustiveDependencies: `rest` changes every render so only including properties in dependency array
59
73
  useEffect(() => {
60
74
  if (!enabled) return
61
- if (!onLogs) return
75
+ if (!onLogsRef.current) return
62
76
  return watchContractEvent(config, {
63
77
  ...(rest as any),
64
78
  chainId,
65
- onLogs,
79
+ onLogs: (logs) => onLogsRef.current?.(logs as any),
80
+ onError: (error) => onErrorRef.current?.(error),
66
81
  })
67
82
  }, [
68
83
  chainId,
69
84
  config,
70
85
  enabled,
71
- onLogs,
72
86
  ///
73
- rest.abi,
74
- rest.address,
75
- rest.args,
87
+ abiRef.current,
88
+ addressRef.current,
89
+ argsRef.current,
76
90
  rest.batch,
77
91
  rest.eventName,
78
92
  rest.fromBlock,
79
- rest.onError,
80
93
  rest.poll,
81
94
  rest.pollingInterval,
82
95
  rest.strict,
@@ -1,5 +1,4 @@
1
1
  'use client'
2
-
3
2
  import {
4
3
  type Config,
5
4
  type ResolvedRegister,
@@ -7,8 +6,7 @@ import {
7
6
  watchPendingTransactions,
8
7
  } from '@wagmi/core'
9
8
  import type { UnionCompute, UnionExactPartial } from '@wagmi/core/internal'
10
- import { useEffect } from 'react'
11
-
9
+ import { useEffect, useRef } from 'react'
12
10
  import type { ConfigParameter, EnabledParameter } from '../types/properties.js'
13
11
  import { useChainId } from './useChainId.js'
14
12
  import { useConfig } from './useConfig.js'
@@ -42,24 +40,29 @@ export function useWatchPendingTransactions<
42
40
  const configChainId = useChainId({ config })
43
41
  const chainId = parameters.chainId ?? configChainId
44
42
 
43
+ const onTransactionsRef = useRef(onTransactions)
44
+ const onErrorRef = useRef(rest.onError)
45
+ onTransactionsRef.current = onTransactions
46
+ onErrorRef.current = rest.onError
47
+
45
48
  // TODO(react@19): cleanup
46
49
  // biome-ignore lint/correctness/useExhaustiveDependencies: `rest` changes every render so only including properties in dependency array
47
50
  useEffect(() => {
48
51
  if (!enabled) return
49
- if (!onTransactions) return
52
+ if (!onTransactionsRef.current) return
50
53
  return watchPendingTransactions(config, {
51
54
  ...(rest as any),
52
55
  chainId,
53
- onTransactions,
56
+ onTransactions: (transactions) =>
57
+ onTransactionsRef.current?.(transactions),
58
+ onError: (error) => onErrorRef.current?.(error),
54
59
  })
55
60
  }, [
56
61
  chainId,
57
62
  config,
58
63
  enabled,
59
- onTransactions,
60
64
  ///
61
65
  rest.batch,
62
- rest.onError,
63
66
  rest.poll,
64
67
  rest.pollingInterval,
65
68
  rest.syncConnectedChain,
@@ -1,5 +1,4 @@
1
1
  'use client'
2
-
3
2
  import { useMutation } from '@tanstack/react-query'
4
3
  import type {
5
4
  Config,
@@ -10,37 +9,19 @@ import {
10
9
  type WriteContractData,
11
10
  type WriteContractMutate,
12
11
  type WriteContractMutateAsync,
12
+ type WriteContractOptions,
13
13
  type WriteContractVariables,
14
14
  writeContractMutationOptions,
15
15
  } from '@wagmi/core/query'
16
16
  import type { Abi } from 'viem'
17
-
18
17
  import type { ConfigParameter } from '../types/properties.js'
19
- import type {
20
- UseMutationParameters,
21
- UseMutationReturnType,
22
- } from '../utils/query.js'
18
+ import type { UseMutationReturnType } from '../utils/query.js'
23
19
  import { useConfig } from './useConfig.js'
24
20
 
25
21
  export type UseWriteContractParameters<
26
22
  config extends Config = Config,
27
23
  context = unknown,
28
- > = ConfigParameter<config> & {
29
- mutation?:
30
- | UseMutationParameters<
31
- WriteContractData,
32
- WriteContractErrorType,
33
- WriteContractVariables<
34
- Abi,
35
- string,
36
- readonly unknown[],
37
- config,
38
- config['chains'][number]['id']
39
- >,
40
- context
41
- >
42
- | undefined
43
- }
24
+ > = ConfigParameter<config> & WriteContractOptions<config, context>
44
25
 
45
26
  export type UseWriteContractReturnType<
46
27
  config extends Config = Config,
@@ -55,10 +36,10 @@ export type UseWriteContractReturnType<
55
36
  config,
56
37
  config['chains'][number]['id']
57
38
  >,
58
- context
39
+ context,
40
+ WriteContractMutate<config, context>,
41
+ WriteContractMutateAsync<config, context>
59
42
  > & {
60
- mutate: WriteContractMutate<config, context>
61
- mutateAsync: WriteContractMutateAsync<config, context>
62
43
  /** @deprecated use `mutate` instead */
63
44
  writeContract: WriteContractMutate<config, context>
64
45
  /** @deprecated use `mutateAsync` instead */
@@ -73,13 +54,11 @@ export function useWriteContract<
73
54
  parameters: UseWriteContractParameters<config, context> = {},
74
55
  ): UseWriteContractReturnType<config, context> {
75
56
  const config = useConfig(parameters)
76
- const mutationOptions = writeContractMutationOptions(config)
77
- const mutation = useMutation({ ...parameters.mutation, ...mutationOptions })
57
+ const options = writeContractMutationOptions(config, parameters)
58
+ const mutation = useMutation(options)
78
59
  type Return = UseWriteContractReturnType<config, context>
79
60
  return {
80
- ...mutation,
81
- mutate: mutation.mutate as Return['mutate'],
82
- mutateAsync: mutation.mutateAsync as Return['mutateAsync'],
61
+ ...(mutation as Return),
83
62
  writeContract: mutation.mutate as Return['mutate'],
84
63
  writeContractAsync: mutation.mutateAsync as Return['mutateAsync'],
85
64
  }
@@ -0,0 +1,65 @@
1
+ 'use client'
2
+ import { useMutation } from '@tanstack/react-query'
3
+ import type {
4
+ Config,
5
+ ResolvedRegister,
6
+ WriteContractSyncErrorType,
7
+ } from '@wagmi/core'
8
+ import {
9
+ type WriteContractSyncData,
10
+ type WriteContractSyncMutate,
11
+ type WriteContractSyncMutateAsync,
12
+ type WriteContractSyncOptions,
13
+ type WriteContractSyncVariables,
14
+ writeContractSyncMutationOptions,
15
+ } from '@wagmi/core/query'
16
+ import type { Abi } from 'viem'
17
+ import type { ConfigParameter } from '../types/properties.js'
18
+ import type { UseMutationReturnType } from '../utils/query.js'
19
+ import { useConfig } from './useConfig.js'
20
+
21
+ export type UseWriteContractSyncParameters<
22
+ config extends Config = Config,
23
+ context = unknown,
24
+ > = ConfigParameter<config> & WriteContractSyncOptions<config, context>
25
+
26
+ export type UseWriteContractSyncReturnType<
27
+ config extends Config = Config,
28
+ context = unknown,
29
+ > = UseMutationReturnType<
30
+ WriteContractSyncData,
31
+ WriteContractSyncErrorType,
32
+ WriteContractSyncVariables<
33
+ Abi,
34
+ string,
35
+ readonly unknown[],
36
+ config,
37
+ config['chains'][number]['id']
38
+ >,
39
+ context,
40
+ WriteContractSyncMutate<config, context>,
41
+ WriteContractSyncMutateAsync<config, context>
42
+ > & {
43
+ /** @deprecated use `mutate` instead */
44
+ writeContractSync: WriteContractSyncMutate<config, context>
45
+ /** @deprecated use `mutateAsync` instead */
46
+ writeContractSyncAsync: WriteContractSyncMutateAsync<config, context>
47
+ }
48
+
49
+ /** https://wagmi.sh/react/api/hooks/useWriteContractSync */
50
+ export function useWriteContractSync<
51
+ config extends Config = ResolvedRegister['config'],
52
+ context = unknown,
53
+ >(
54
+ parameters: UseWriteContractSyncParameters<config, context> = {},
55
+ ): UseWriteContractSyncReturnType<config, context> {
56
+ const config = useConfig(parameters)
57
+ const options = writeContractSyncMutationOptions(config, parameters)
58
+ const mutation = useMutation(options)
59
+ type Return = UseWriteContractSyncReturnType<config, context>
60
+ return {
61
+ ...(mutation as Return),
62
+ writeContractSync: mutation.mutate as Return['mutate'],
63
+ writeContractSyncAsync: mutation.mutateAsync as Return['mutateAsync'],
64
+ }
65
+ }