@wagmi/core 3.2.1 → 3.2.3

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 (250) hide show
  1. package/dist/esm/actions/deployContract.js +7 -1
  2. package/dist/esm/actions/deployContract.js.map +1 -1
  3. package/dist/esm/actions/prepareTransactionRequest.js.map +1 -1
  4. package/dist/esm/actions/sendTransaction.js +7 -1
  5. package/dist/esm/actions/sendTransaction.js.map +1 -1
  6. package/dist/esm/actions/sendTransactionSync.js +7 -1
  7. package/dist/esm/actions/sendTransactionSync.js.map +1 -1
  8. package/dist/esm/actions/simulateContract.js.map +1 -1
  9. package/dist/esm/actions/writeContract.js +7 -1
  10. package/dist/esm/actions/writeContract.js.map +1 -1
  11. package/dist/esm/exports/internal.js.map +1 -1
  12. package/dist/esm/exports/query.js.map +1 -1
  13. package/dist/esm/query/call.js +4 -3
  14. package/dist/esm/query/call.js.map +1 -1
  15. package/dist/esm/query/estimateFeesPerGas.js +3 -2
  16. package/dist/esm/query/estimateFeesPerGas.js.map +1 -1
  17. package/dist/esm/query/estimateGas.js +12 -7
  18. package/dist/esm/query/estimateGas.js.map +1 -1
  19. package/dist/esm/query/estimateMaxPriorityFeePerGas.js +3 -2
  20. package/dist/esm/query/estimateMaxPriorityFeePerGas.js.map +1 -1
  21. package/dist/esm/query/getBalance.js +6 -4
  22. package/dist/esm/query/getBalance.js.map +1 -1
  23. package/dist/esm/query/getBlock.js +3 -2
  24. package/dist/esm/query/getBlock.js.map +1 -1
  25. package/dist/esm/query/getBlockNumber.js +3 -2
  26. package/dist/esm/query/getBlockNumber.js.map +1 -1
  27. package/dist/esm/query/getBlockTransactionCount.js +3 -2
  28. package/dist/esm/query/getBlockTransactionCount.js.map +1 -1
  29. package/dist/esm/query/getBytecode.js +10 -5
  30. package/dist/esm/query/getBytecode.js.map +1 -1
  31. package/dist/esm/query/getCallsStatus.js +6 -8
  32. package/dist/esm/query/getCallsStatus.js.map +1 -1
  33. package/dist/esm/query/getCapabilities.js +6 -8
  34. package/dist/esm/query/getCapabilities.js.map +1 -1
  35. package/dist/esm/query/getConnectorClient.js +7 -9
  36. package/dist/esm/query/getConnectorClient.js.map +1 -1
  37. package/dist/esm/query/getEnsAddress.js +6 -4
  38. package/dist/esm/query/getEnsAddress.js.map +1 -1
  39. package/dist/esm/query/getEnsAvatar.js +6 -4
  40. package/dist/esm/query/getEnsAvatar.js.map +1 -1
  41. package/dist/esm/query/getEnsName.js +6 -4
  42. package/dist/esm/query/getEnsName.js.map +1 -1
  43. package/dist/esm/query/getEnsResolver.js +6 -4
  44. package/dist/esm/query/getEnsResolver.js.map +1 -1
  45. package/dist/esm/query/getEnsText.js +10 -4
  46. package/dist/esm/query/getEnsText.js.map +1 -1
  47. package/dist/esm/query/getFeeHistory.js +10 -6
  48. package/dist/esm/query/getFeeHistory.js.map +1 -1
  49. package/dist/esm/query/getGasPrice.js +3 -2
  50. package/dist/esm/query/getGasPrice.js.map +1 -1
  51. package/dist/esm/query/getProof.js +13 -5
  52. package/dist/esm/query/getProof.js.map +1 -1
  53. package/dist/esm/query/getStorageAt.js +11 -5
  54. package/dist/esm/query/getStorageAt.js.map +1 -1
  55. package/dist/esm/query/getTransaction.js +14 -8
  56. package/dist/esm/query/getTransaction.js.map +1 -1
  57. package/dist/esm/query/getTransactionConfirmations.js +8 -5
  58. package/dist/esm/query/getTransactionConfirmations.js.map +1 -1
  59. package/dist/esm/query/getTransactionCount.js +6 -4
  60. package/dist/esm/query/getTransactionCount.js.map +1 -1
  61. package/dist/esm/query/getTransactionReceipt.js +10 -5
  62. package/dist/esm/query/getTransactionReceipt.js.map +1 -1
  63. package/dist/esm/query/getWalletClient.js +12 -9
  64. package/dist/esm/query/getWalletClient.js.map +1 -1
  65. package/dist/esm/query/infiniteReadContracts.js +1 -1
  66. package/dist/esm/query/infiniteReadContracts.js.map +1 -1
  67. package/dist/esm/query/prepareTransactionRequest.js +7 -5
  68. package/dist/esm/query/prepareTransactionRequest.js.map +1 -1
  69. package/dist/esm/query/readContract.js +18 -21
  70. package/dist/esm/query/readContract.js.map +1 -1
  71. package/dist/esm/query/readContracts.js +5 -4
  72. package/dist/esm/query/readContracts.js.map +1 -1
  73. package/dist/esm/query/simulateContract.js +18 -10
  74. package/dist/esm/query/simulateContract.js.map +1 -1
  75. package/dist/esm/query/utils.js +3 -1
  76. package/dist/esm/query/utils.js.map +1 -1
  77. package/dist/esm/query/verifyMessage.js +20 -7
  78. package/dist/esm/query/verifyMessage.js.map +1 -1
  79. package/dist/esm/query/verifyTypedData.js +20 -13
  80. package/dist/esm/query/verifyTypedData.js.map +1 -1
  81. package/dist/esm/query/waitForCallsStatus.js +14 -11
  82. package/dist/esm/query/waitForCallsStatus.js.map +1 -1
  83. package/dist/esm/query/waitForTransactionReceipt.js +6 -4
  84. package/dist/esm/query/waitForTransactionReceipt.js.map +1 -1
  85. package/dist/esm/tempo/Connectors.js +4 -2
  86. package/dist/esm/tempo/Connectors.js.map +1 -1
  87. package/dist/esm/tempo/KeyManager.js +49 -1
  88. package/dist/esm/tempo/KeyManager.js.map +1 -1
  89. package/dist/esm/tempo/actions/amm.js +1 -1
  90. package/dist/esm/tempo/actions/amm.js.map +1 -1
  91. package/dist/esm/tempo/actions/fee.js +1 -1
  92. package/dist/esm/tempo/actions/fee.js.map +1 -1
  93. package/dist/esm/tempo/actions/nonce.js +1 -1
  94. package/dist/esm/tempo/actions/nonce.js.map +1 -1
  95. package/dist/esm/tempo/actions/utils.js +17 -1
  96. package/dist/esm/tempo/actions/utils.js.map +1 -1
  97. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  98. package/dist/esm/types/query.js +2 -0
  99. package/dist/esm/types/query.js.map +1 -0
  100. package/dist/esm/version.js +1 -1
  101. package/dist/types/actions/deployContract.d.ts.map +1 -1
  102. package/dist/types/actions/prepareTransactionRequest.d.ts +2 -2
  103. package/dist/types/actions/prepareTransactionRequest.d.ts.map +1 -1
  104. package/dist/types/actions/sendTransaction.d.ts.map +1 -1
  105. package/dist/types/actions/sendTransactionSync.d.ts.map +1 -1
  106. package/dist/types/actions/simulateContract.d.ts +5 -3
  107. package/dist/types/actions/simulateContract.d.ts.map +1 -1
  108. package/dist/types/actions/verifyTypedData.d.ts +2 -2
  109. package/dist/types/actions/verifyTypedData.d.ts.map +1 -1
  110. package/dist/types/actions/writeContract.d.ts.map +1 -1
  111. package/dist/types/exports/internal.d.ts +1 -0
  112. package/dist/types/exports/internal.d.ts.map +1 -1
  113. package/dist/types/exports/query.d.ts +34 -34
  114. package/dist/types/exports/query.d.ts.map +1 -1
  115. package/dist/types/query/call.d.ts +34 -13
  116. package/dist/types/query/call.d.ts.map +1 -1
  117. package/dist/types/query/estimateFeesPerGas.d.ts +7 -22
  118. package/dist/types/query/estimateFeesPerGas.d.ts.map +1 -1
  119. package/dist/types/query/estimateGas.d.ts +12 -15
  120. package/dist/types/query/estimateGas.d.ts.map +1 -1
  121. package/dist/types/query/estimateMaxPriorityFeePerGas.d.ts +6 -19
  122. package/dist/types/query/estimateMaxPriorityFeePerGas.d.ts.map +1 -1
  123. package/dist/types/query/getBalance.d.ts +8 -27
  124. package/dist/types/query/getBalance.d.ts.map +1 -1
  125. package/dist/types/query/getBlock.d.ts +13 -13
  126. package/dist/types/query/getBlock.d.ts.map +1 -1
  127. package/dist/types/query/getBlockNumber.d.ts +7 -23
  128. package/dist/types/query/getBlockNumber.d.ts.map +1 -1
  129. package/dist/types/query/getBlockTransactionCount.d.ts +12 -13
  130. package/dist/types/query/getBlockTransactionCount.d.ts.map +1 -1
  131. package/dist/types/query/getBytecode.d.ts +12 -13
  132. package/dist/types/query/getBytecode.d.ts.map +1 -1
  133. package/dist/types/query/getCallsStatus.d.ts +7 -36
  134. package/dist/types/query/getCallsStatus.d.ts.map +1 -1
  135. package/dist/types/query/getCapabilities.d.ts +8 -50
  136. package/dist/types/query/getCapabilities.d.ts.map +1 -1
  137. package/dist/types/query/getConnectorClient.d.ts +11 -521
  138. package/dist/types/query/getConnectorClient.d.ts.map +1 -1
  139. package/dist/types/query/getEnsAddress.d.ts +8 -35
  140. package/dist/types/query/getEnsAddress.d.ts.map +1 -1
  141. package/dist/types/query/getEnsAvatar.d.ts +7 -34
  142. package/dist/types/query/getEnsAvatar.d.ts.map +1 -1
  143. package/dist/types/query/getEnsName.d.ts +8 -35
  144. package/dist/types/query/getEnsName.d.ts.map +1 -1
  145. package/dist/types/query/getEnsResolver.d.ts +8 -29
  146. package/dist/types/query/getEnsResolver.d.ts.map +1 -1
  147. package/dist/types/query/getEnsText.d.ts +9 -36
  148. package/dist/types/query/getEnsText.d.ts.map +1 -1
  149. package/dist/types/query/getFeeHistory.d.ts +9 -30
  150. package/dist/types/query/getFeeHistory.d.ts.map +1 -1
  151. package/dist/types/query/getGasPrice.d.ts +6 -19
  152. package/dist/types/query/getGasPrice.d.ts.map +1 -1
  153. package/dist/types/query/getProof.d.ts +13 -13
  154. package/dist/types/query/getProof.d.ts.map +1 -1
  155. package/dist/types/query/getStorageAt.d.ts +13 -13
  156. package/dist/types/query/getStorageAt.d.ts.map +1 -1
  157. package/dist/types/query/getTransaction.d.ts +16 -15
  158. package/dist/types/query/getTransaction.d.ts.map +1 -1
  159. package/dist/types/query/getTransactionConfirmations.d.ts +9 -13
  160. package/dist/types/query/getTransactionConfirmations.d.ts.map +1 -1
  161. package/dist/types/query/getTransactionCount.d.ts +8 -27
  162. package/dist/types/query/getTransactionCount.d.ts.map +1 -1
  163. package/dist/types/query/getTransactionReceipt.d.ts +7 -24
  164. package/dist/types/query/getTransactionReceipt.d.ts.map +1 -1
  165. package/dist/types/query/getWalletClient.d.ts +11 -31
  166. package/dist/types/query/getWalletClient.d.ts.map +1 -1
  167. package/dist/types/query/infiniteReadContracts.d.ts +13 -13
  168. package/dist/types/query/infiniteReadContracts.d.ts.map +1 -1
  169. package/dist/types/query/prepareTransactionRequest.d.ts +9 -13
  170. package/dist/types/query/prepareTransactionRequest.d.ts.map +1 -1
  171. package/dist/types/query/readContract.d.ts +9 -167
  172. package/dist/types/query/readContract.d.ts.map +1 -1
  173. package/dist/types/query/readContracts.d.ts +18 -60
  174. package/dist/types/query/readContracts.d.ts.map +1 -1
  175. package/dist/types/query/simulateContract.d.ts +11 -14
  176. package/dist/types/query/simulateContract.d.ts.map +1 -1
  177. package/dist/types/query/utils.d.ts +9 -1
  178. package/dist/types/query/utils.d.ts.map +1 -1
  179. package/dist/types/query/verifyMessage.d.ts +8 -43
  180. package/dist/types/query/verifyMessage.d.ts.map +1 -1
  181. package/dist/types/query/verifyTypedData.d.ts +10 -14
  182. package/dist/types/query/verifyTypedData.d.ts.map +1 -1
  183. package/dist/types/query/waitForCallsStatus.d.ts +9 -56
  184. package/dist/types/query/waitForCallsStatus.d.ts.map +1 -1
  185. package/dist/types/query/waitForTransactionReceipt.d.ts +11 -46
  186. package/dist/types/query/waitForTransactionReceipt.d.ts.map +1 -1
  187. package/dist/types/tempo/Connectors.d.ts.map +1 -1
  188. package/dist/types/tempo/KeyManager.d.ts.map +1 -1
  189. package/dist/types/tempo/actions/amm.d.ts.map +1 -1
  190. package/dist/types/tempo/actions/fee.d.ts.map +1 -1
  191. package/dist/types/tempo/actions/nonce.d.ts.map +1 -1
  192. package/dist/types/tempo/actions/utils.d.ts +1 -0
  193. package/dist/types/tempo/actions/utils.d.ts.map +1 -1
  194. package/dist/types/types/query.d.ts +9 -0
  195. package/dist/types/types/query.d.ts.map +1 -0
  196. package/dist/types/version.d.ts +1 -1
  197. package/package.json +1 -1
  198. package/src/actions/deployContract.ts +7 -1
  199. package/src/actions/prepareTransactionRequest.ts +9 -12
  200. package/src/actions/sendTransaction.ts +7 -1
  201. package/src/actions/sendTransactionSync.ts +7 -1
  202. package/src/actions/simulateContract.ts +11 -19
  203. package/src/actions/verifyTypedData.ts +2 -2
  204. package/src/actions/writeContract.ts +7 -1
  205. package/src/exports/internal.ts +2 -0
  206. package/src/exports/query.ts +34 -0
  207. package/src/query/call.ts +29 -16
  208. package/src/query/estimateFeesPerGas.ts +34 -12
  209. package/src/query/estimateGas.ts +53 -24
  210. package/src/query/estimateMaxPriorityFeePerGas.ts +37 -18
  211. package/src/query/getBalance.ts +38 -20
  212. package/src/query/getBlock.ts +50 -16
  213. package/src/query/getBlockNumber.ts +34 -13
  214. package/src/query/getBlockTransactionCount.ts +34 -15
  215. package/src/query/getBytecode.ts +41 -19
  216. package/src/query/getCallsStatus.ts +36 -21
  217. package/src/query/getCapabilities.ts +40 -18
  218. package/src/query/getConnectorClient.ts +45 -20
  219. package/src/query/getEnsAddress.ts +37 -19
  220. package/src/query/getEnsAvatar.ts +37 -19
  221. package/src/query/getEnsName.ts +37 -19
  222. package/src/query/getEnsResolver.ts +38 -18
  223. package/src/query/getEnsText.ts +44 -19
  224. package/src/query/getFeeHistory.ts +46 -28
  225. package/src/query/getGasPrice.ts +34 -13
  226. package/src/query/getProof.ts +45 -19
  227. package/src/query/getStorageAt.ts +44 -19
  228. package/src/query/getTransaction.ts +51 -19
  229. package/src/query/getTransactionConfirmations.ts +46 -23
  230. package/src/query/getTransactionCount.ts +41 -22
  231. package/src/query/getTransactionReceipt.ts +42 -14
  232. package/src/query/getWalletClient.ts +46 -20
  233. package/src/query/infiniteReadContracts.ts +1 -1
  234. package/src/query/prepareTransactionRequest.ts +45 -17
  235. package/src/query/readContract.ts +55 -36
  236. package/src/query/readContracts.ts +38 -16
  237. package/src/query/simulateContract.ts +68 -33
  238. package/src/query/utils.ts +14 -5
  239. package/src/query/verifyMessage.ts +50 -26
  240. package/src/query/verifyTypedData.ts +65 -38
  241. package/src/query/waitForCallsStatus.ts +47 -25
  242. package/src/query/waitForTransactionReceipt.ts +36 -16
  243. package/src/tempo/Connectors.ts +3 -4
  244. package/src/tempo/KeyManager.ts +64 -1
  245. package/src/tempo/actions/amm.ts +2 -2
  246. package/src/tempo/actions/fee.ts +1 -1
  247. package/src/tempo/actions/nonce.ts +1 -1
  248. package/src/tempo/actions/utils.ts +26 -0
  249. package/src/types/query.ts +40 -0
  250. package/src/version.ts +1 -1
@@ -1,5 +1,3 @@
1
- import type { QueryOptions } from '@tanstack/query-core'
2
-
3
1
  import {
4
2
  type GetTransactionConfirmationsErrorType,
5
3
  type GetTransactionConfirmationsParameters,
@@ -8,6 +6,7 @@ import {
8
6
  } from '../actions/getTransactionConfirmations.js'
9
7
  import type { Config } from '../createConfig.js'
10
8
  import type { ScopeKeyParameter } from '../types/properties.js'
9
+ import type { QueryOptions, QueryParameter } from '../types/query.js'
11
10
  import type { UnionExactPartial } from '../types/utils.js'
12
11
  import { filterQueryOptions } from './utils.js'
13
12
 
@@ -16,43 +15,49 @@ export type GetTransactionConfirmationsOptions<
16
15
  chainId extends
17
16
  | config['chains'][number]['id']
18
17
  | undefined = config['chains'][number]['id'],
18
+ selectData = GetTransactionConfirmationsData,
19
19
  > = UnionExactPartial<GetTransactionConfirmationsParameters<config, chainId>> &
20
- ScopeKeyParameter
20
+ ScopeKeyParameter &
21
+ QueryParameter<
22
+ GetTransactionConfirmationsQueryFnData,
23
+ GetTransactionConfirmationsErrorType,
24
+ selectData,
25
+ GetTransactionConfirmationsQueryKey<config, chainId>
26
+ >
21
27
 
22
28
  export function getTransactionConfirmationsQueryOptions<
23
29
  config extends Config,
24
30
  chainId extends
25
31
  | config['chains'][number]['id']
26
32
  | undefined = config['chains'][number]['id'],
33
+ selectData = GetTransactionConfirmationsData,
27
34
  >(
28
35
  config: config,
29
- options: GetTransactionConfirmationsOptions<config, chainId> = {} as any,
30
- ) {
36
+ options: GetTransactionConfirmationsOptions<
37
+ config,
38
+ chainId,
39
+ selectData
40
+ > = {} as any,
41
+ ): GetTransactionConfirmationsQueryOptions<config, chainId, selectData> {
31
42
  return {
32
- async queryFn({ queryKey }) {
33
- const {
34
- hash,
35
- transactionReceipt,
36
- scopeKey: _,
37
- ...parameters
38
- } = queryKey[1]
39
- if (!hash && !transactionReceipt)
43
+ ...options.query,
44
+ enabled: Boolean(
45
+ (options.hash || options.transactionReceipt) &&
46
+ (options.query?.enabled ?? true),
47
+ ),
48
+ queryFn: async (context) => {
49
+ const [, { scopeKey: _, ...parameters }] = context.queryKey
50
+ if (!parameters.hash && !parameters.transactionReceipt)
40
51
  throw new Error('hash or transactionReceipt is required')
41
-
42
52
  const confirmations = await getTransactionConfirmations(config, {
43
- hash,
44
- transactionReceipt,
45
53
  ...(parameters as any),
54
+ hash: parameters.hash,
55
+ transactionReceipt: parameters.transactionReceipt,
46
56
  })
47
57
  return confirmations ?? null
48
58
  },
49
59
  queryKey: getTransactionConfirmationsQueryKey(options),
50
- } as const satisfies QueryOptions<
51
- GetTransactionConfirmationsQueryFnData,
52
- GetTransactionConfirmationsErrorType,
53
- GetTransactionConfirmationsData,
54
- GetTransactionConfirmationsQueryKey<config, chainId>
55
- >
60
+ }
56
61
  }
57
62
 
58
63
  export type GetTransactionConfirmationsQueryFnData =
@@ -66,7 +71,12 @@ export function getTransactionConfirmationsQueryKey<
66
71
  chainId extends
67
72
  | config['chains'][number]['id']
68
73
  | undefined = config['chains'][number]['id'],
69
- >(options: GetTransactionConfirmationsOptions<config, chainId> = {} as any) {
74
+ >(
75
+ options: UnionExactPartial<
76
+ GetTransactionConfirmationsParameters<config, chainId>
77
+ > &
78
+ ScopeKeyParameter = {} as any,
79
+ ) {
70
80
  return ['transactionConfirmations', filterQueryOptions(options)] as const
71
81
  }
72
82
 
@@ -76,3 +86,16 @@ export type GetTransactionConfirmationsQueryKey<
76
86
  | config['chains'][number]['id']
77
87
  | undefined = config['chains'][number]['id'],
78
88
  > = ReturnType<typeof getTransactionConfirmationsQueryKey<config, chainId>>
89
+
90
+ export type GetTransactionConfirmationsQueryOptions<
91
+ config extends Config,
92
+ chainId extends
93
+ | config['chains'][number]['id']
94
+ | undefined = config['chains'][number]['id'],
95
+ selectData = GetTransactionConfirmationsData,
96
+ > = QueryOptions<
97
+ GetTransactionConfirmationsQueryFnData,
98
+ GetTransactionConfirmationsErrorType,
99
+ selectData,
100
+ GetTransactionConfirmationsQueryKey<config, chainId>
101
+ >
@@ -1,5 +1,3 @@
1
- import type { QueryOptions } from '@tanstack/query-core'
2
-
3
1
  import {
4
2
  type GetTransactionCountErrorType,
5
3
  type GetTransactionCountParameters,
@@ -8,35 +6,44 @@ import {
8
6
  } from '../actions/getTransactionCount.js'
9
7
  import type { Config } from '../createConfig.js'
10
8
  import type { ScopeKeyParameter } from '../types/properties.js'
11
- import type { Compute, PartialBy } from '../types/utils.js'
9
+ import type { QueryOptions, QueryParameter } from '../types/query.js'
10
+ import type { Compute, ExactPartial } from '../types/utils.js'
12
11
  import { filterQueryOptions } from './utils.js'
13
12
 
14
- export type GetTransactionCountOptions<config extends Config> = Compute<
15
- PartialBy<GetTransactionCountParameters<config>, 'address'> &
16
- ScopeKeyParameter
17
- >
13
+ export type GetTransactionCountOptions<
14
+ config extends Config,
15
+ selectData = GetTransactionCountData,
16
+ > = Compute<
17
+ ExactPartial<GetTransactionCountParameters<config>> & ScopeKeyParameter
18
+ > &
19
+ QueryParameter<
20
+ GetTransactionCountQueryFnData,
21
+ GetTransactionCountErrorType,
22
+ selectData,
23
+ GetTransactionCountQueryKey<config>
24
+ >
18
25
 
19
- export function getTransactionCountQueryOptions<config extends Config>(
26
+ export function getTransactionCountQueryOptions<
27
+ config extends Config,
28
+ selectData = GetTransactionCountData,
29
+ >(
20
30
  config: config,
21
- options: GetTransactionCountOptions<config> = {},
22
- ) {
31
+ options: GetTransactionCountOptions<config, selectData> = {},
32
+ ): GetTransactionCountQueryOptions<config, selectData> {
23
33
  return {
24
- async queryFn({ queryKey }) {
25
- const { address, scopeKey: _, ...parameters } = queryKey[1]
26
- if (!address) throw new Error('address is required')
34
+ ...options.query,
35
+ enabled: Boolean(options.address && (options.query?.enabled ?? true)),
36
+ queryFn: async (context) => {
37
+ const [, { scopeKey: _, ...parameters }] = context.queryKey
38
+ if (!parameters.address) throw new Error('address is required')
27
39
  const transactionCount = await getTransactionCount(config, {
28
- ...(parameters as GetTransactionCountParameters),
29
- address,
40
+ ...(parameters as any),
41
+ address: parameters.address,
30
42
  })
31
43
  return transactionCount ?? null
32
44
  },
33
45
  queryKey: getTransactionCountQueryKey(options),
34
- } as const satisfies QueryOptions<
35
- GetTransactionCountQueryFnData,
36
- GetTransactionCountErrorType,
37
- GetTransactionCountData,
38
- GetTransactionCountQueryKey<config>
39
- >
46
+ }
40
47
  }
41
48
 
42
49
  export type GetTransactionCountQueryFnData =
@@ -45,7 +52,9 @@ export type GetTransactionCountQueryFnData =
45
52
  export type GetTransactionCountData = GetTransactionCountQueryFnData
46
53
 
47
54
  export function getTransactionCountQueryKey<config extends Config>(
48
- options: GetTransactionCountOptions<config> = {},
55
+ options: Compute<
56
+ ExactPartial<GetTransactionCountParameters<config>> & ScopeKeyParameter
57
+ > = {},
49
58
  ) {
50
59
  return ['transactionCount', filterQueryOptions(options)] as const
51
60
  }
@@ -53,3 +62,13 @@ export function getTransactionCountQueryKey<config extends Config>(
53
62
  export type GetTransactionCountQueryKey<config extends Config> = ReturnType<
54
63
  typeof getTransactionCountQueryKey<config>
55
64
  >
65
+
66
+ export type GetTransactionCountQueryOptions<
67
+ config extends Config,
68
+ selectData = GetTransactionCountData,
69
+ > = QueryOptions<
70
+ GetTransactionCountQueryFnData,
71
+ GetTransactionCountErrorType,
72
+ selectData,
73
+ GetTransactionCountQueryKey<config>
74
+ >
@@ -1,4 +1,3 @@
1
- import type { QueryOptions } from '@tanstack/query-core'
2
1
  import type { GetTransactionReceiptReturnType } from '../actions/getTransactionReceipt.js'
3
2
  import {
4
3
  type GetTransactionReceiptErrorType,
@@ -7,35 +6,48 @@ import {
7
6
  } from '../actions/getTransactionReceipt.js'
8
7
  import type { Config } from '../createConfig.js'
9
8
  import type { ScopeKeyParameter } from '../types/properties.js'
9
+ import type { QueryOptions, QueryParameter } from '../types/query.js'
10
10
  import type { Compute, ExactPartial } from '../types/utils.js'
11
11
  import { filterQueryOptions } from './utils.js'
12
12
 
13
13
  export type GetTransactionReceiptOptions<
14
14
  config extends Config,
15
15
  chainId extends config['chains'][number]['id'],
16
+ selectData = GetTransactionReceiptData<config, chainId>,
16
17
  > = Compute<
17
18
  ExactPartial<GetTransactionReceiptParameters<config, chainId>> &
18
19
  ScopeKeyParameter
19
- >
20
+ > &
21
+ QueryParameter<
22
+ GetTransactionReceiptQueryFnData<config, chainId>,
23
+ GetTransactionReceiptErrorType,
24
+ selectData,
25
+ GetTransactionReceiptQueryKey<config, chainId>
26
+ >
20
27
 
21
28
  export function getTransactionReceiptQueryOptions<
22
29
  config extends Config,
23
30
  chainId extends config['chains'][number]['id'],
24
- >(config: config, options: GetTransactionReceiptOptions<config, chainId> = {}) {
31
+ selectData = GetTransactionReceiptData<config, chainId>,
32
+ >(
33
+ config: config,
34
+ options: GetTransactionReceiptOptions<config, chainId, selectData> = {},
35
+ ): GetTransactionReceiptQueryOptions<config, chainId, selectData> {
25
36
  return {
26
- queryFn({ queryKey }) {
27
- const { hash, scopeKey: _, ...parameters } = queryKey[1]
28
- if (!hash) throw new Error('hash is required')
29
- return getTransactionReceipt(config, { ...parameters, hash })
37
+ ...options.query,
38
+ enabled: Boolean(options.hash && (options.query?.enabled ?? true)),
39
+ queryFn: async (context) => {
40
+ const [, { scopeKey: _, ...parameters }] = context.queryKey
41
+ if (!parameters.hash) throw new Error('hash is required')
42
+ return getTransactionReceipt(config, {
43
+ ...(parameters as any),
44
+ hash: parameters.hash,
45
+ })
30
46
  },
31
47
  queryKey: getTransactionReceiptQueryKey(options),
32
- } as const satisfies QueryOptions<
33
- GetTransactionReceiptQueryFnData<config, chainId>,
34
- GetTransactionReceiptErrorType,
35
- GetTransactionReceiptData<config, chainId>,
36
- GetTransactionReceiptQueryKey<config, chainId>
37
- >
48
+ }
38
49
  }
50
+
39
51
  export type GetTransactionReceiptQueryFnData<
40
52
  config extends Config,
41
53
  chainId extends config['chains'][number]['id'],
@@ -49,7 +61,12 @@ export type GetTransactionReceiptData<
49
61
  export function getTransactionReceiptQueryKey<
50
62
  config extends Config,
51
63
  chainId extends config['chains'][number]['id'],
52
- >(options: GetTransactionReceiptOptions<config, chainId>) {
64
+ >(
65
+ options: Compute<
66
+ ExactPartial<GetTransactionReceiptParameters<config, chainId>> &
67
+ ScopeKeyParameter
68
+ > = {},
69
+ ) {
53
70
  return ['getTransactionReceipt', filterQueryOptions(options)] as const
54
71
  }
55
72
 
@@ -57,3 +74,14 @@ export type GetTransactionReceiptQueryKey<
57
74
  config extends Config,
58
75
  chainId extends config['chains'][number]['id'],
59
76
  > = ReturnType<typeof getTransactionReceiptQueryKey<config, chainId>>
77
+
78
+ export type GetTransactionReceiptQueryOptions<
79
+ config extends Config,
80
+ chainId extends config['chains'][number]['id'],
81
+ selectData = GetTransactionReceiptData<config, chainId>,
82
+ > = QueryOptions<
83
+ GetTransactionReceiptQueryFnData<config, chainId>,
84
+ GetTransactionReceiptErrorType,
85
+ selectData,
86
+ GetTransactionReceiptQueryKey<config, chainId>
87
+ >
@@ -1,5 +1,3 @@
1
- import type { QueryOptions } from '@tanstack/query-core'
2
-
3
1
  import {
4
2
  type GetWalletClientErrorType,
5
3
  type GetWalletClientParameters,
@@ -8,34 +6,51 @@ import {
8
6
  } from '../actions/getWalletClient.js'
9
7
  import type { Config } from '../createConfig.js'
10
8
  import type { ScopeKeyParameter } from '../types/properties.js'
9
+ import type { QueryOptions, QueryParameter } from '../types/query.js'
11
10
  import type { Compute, ExactPartial } from '../types/utils.js'
12
11
  import { filterQueryOptions } from './utils.js'
13
12
 
14
13
  export type GetWalletClientOptions<
15
14
  config extends Config,
16
15
  chainId extends config['chains'][number]['id'],
16
+ selectData = GetWalletClientData<config, chainId>,
17
17
  > = Compute<
18
18
  ExactPartial<GetWalletClientParameters<config, chainId>> & ScopeKeyParameter
19
- >
19
+ > &
20
+ QueryParameter<
21
+ GetWalletClientQueryFnData<config, chainId>,
22
+ GetWalletClientErrorType,
23
+ selectData,
24
+ GetWalletClientQueryKey<config, chainId>
25
+ >
20
26
 
21
27
  export function getWalletClientQueryOptions<
22
28
  config extends Config,
23
29
  chainId extends config['chains'][number]['id'],
24
- >(config: config, options: GetWalletClientOptions<config, chainId> = {}) {
30
+ selectData = GetWalletClientData<config, chainId>,
31
+ >(
32
+ config: config,
33
+ options: GetWalletClientOptions<config, chainId, selectData> = {},
34
+ ): GetWalletClientQueryOptions<config, chainId, selectData> {
25
35
  return {
36
+ ...options.query,
37
+ enabled: Boolean(
38
+ options.connector?.getProvider && (options.query?.enabled ?? true),
39
+ ),
26
40
  gcTime: 0,
27
- async queryFn({ queryKey }) {
28
- const { connector } = options
29
- const { connectorUid: _, scopeKey: _s, ...parameters } = queryKey[1]
30
- return getWalletClient(config, { ...parameters, connector }) as never
41
+ queryFn: async (context) => {
42
+ if (!options.connector?.getProvider)
43
+ throw new Error('connector is required')
44
+ const [, { connectorUid: _, scopeKey: __, ...parameters }] =
45
+ context.queryKey
46
+ return getWalletClient(config, {
47
+ ...parameters,
48
+ connector: options.connector,
49
+ }) as never
31
50
  },
32
51
  queryKey: getWalletClientQueryKey(options),
33
- } as const satisfies QueryOptions<
34
- GetWalletClientQueryFnData<config, chainId>,
35
- GetWalletClientErrorType,
36
- GetWalletClientData<config, chainId>,
37
- GetWalletClientQueryKey<config, chainId>
38
- >
52
+ staleTime: Number.POSITIVE_INFINITY,
53
+ }
39
54
  }
40
55
 
41
56
  export type GetWalletClientQueryFnData<
@@ -51,15 +66,26 @@ export type GetWalletClientData<
51
66
  export function getWalletClientQueryKey<
52
67
  config extends Config,
53
68
  chainId extends config['chains'][number]['id'],
54
- >(options: GetWalletClientOptions<config, chainId> = {}) {
55
- const { connector, ...parameters } = options
56
- return [
57
- 'walletClient',
58
- { ...filterQueryOptions(parameters), connectorUid: connector?.uid },
59
- ] as const
69
+ >(
70
+ options: Compute<
71
+ ExactPartial<GetWalletClientParameters<config, chainId>> & ScopeKeyParameter
72
+ > = {},
73
+ ) {
74
+ return ['walletClient', filterQueryOptions(options)] as const
60
75
  }
61
76
 
62
77
  export type GetWalletClientQueryKey<
63
78
  config extends Config,
64
79
  chainId extends config['chains'][number]['id'],
65
80
  > = ReturnType<typeof getWalletClientQueryKey<config, chainId>>
81
+
82
+ export type GetWalletClientQueryOptions<
83
+ config extends Config,
84
+ chainId extends config['chains'][number]['id'],
85
+ selectData = GetWalletClientData<config, chainId>,
86
+ > = QueryOptions<
87
+ GetWalletClientQueryFnData<config, chainId>,
88
+ GetWalletClientErrorType,
89
+ selectData,
90
+ GetWalletClientQueryKey<config, chainId>
91
+ >
@@ -108,7 +108,7 @@ export function infiniteReadContractsQueryKey<
108
108
  ChainIdParameter<config> &
109
109
  RequiredPageParamsParameters<contracts, allowFailure, pageParam>,
110
110
  ) {
111
- const { contracts: _, query: _q, ...parameters } = options
111
+ const { contracts: _, ...parameters } = options
112
112
  return ['infiniteReadContracts', filterQueryOptions(parameters)] as const
113
113
  }
114
114
 
@@ -1,5 +1,3 @@
1
- import type { QueryOptions } from '@tanstack/query-core'
2
-
3
1
  import type { PrepareTransactionRequestRequest as viem_PrepareTransactionRequestRequest } from 'viem'
4
2
 
5
3
  import {
@@ -11,6 +9,7 @@ import {
11
9
  import type { Config } from '../createConfig.js'
12
10
  import type { SelectChains } from '../types/chain.js'
13
11
  import type { ScopeKeyParameter } from '../types/properties.js'
12
+ import type { QueryOptions, QueryParameter } from '../types/query.js'
14
13
  import type { UnionExactPartial } from '../types/utils.js'
15
14
  import { filterQueryOptions } from './utils.js'
16
15
 
@@ -21,10 +20,17 @@ export type PrepareTransactionRequestOptions<
21
20
  SelectChains<config, chainId>[0],
22
21
  SelectChains<config, chainId>[0]
23
22
  >,
23
+ selectData = PrepareTransactionRequestData<config, chainId, request>,
24
24
  > = UnionExactPartial<
25
25
  PrepareTransactionRequestParameters<config, chainId, request>
26
26
  > &
27
- ScopeKeyParameter
27
+ ScopeKeyParameter &
28
+ QueryParameter<
29
+ PrepareTransactionRequestQueryFnData<config, chainId, request>,
30
+ PrepareTransactionRequestErrorType,
31
+ selectData,
32
+ PrepareTransactionRequestQueryKey<config, chainId, request>
33
+ >
28
34
 
29
35
  export function prepareTransactionRequestQueryOptions<
30
36
  config extends Config,
@@ -33,33 +39,35 @@ export function prepareTransactionRequestQueryOptions<
33
39
  SelectChains<config, chainId>[0],
34
40
  SelectChains<config, chainId>[0]
35
41
  >,
42
+ selectData = PrepareTransactionRequestData<config, chainId, request>,
36
43
  >(
37
44
  config: config,
38
45
  options: PrepareTransactionRequestOptions<
39
46
  config,
40
47
  chainId,
41
- request
48
+ request,
49
+ selectData
42
50
  > = {} as any,
43
- ) {
51
+ ): PrepareTransactionRequestQueryOptions<config, chainId, request, selectData> {
44
52
  return {
45
- queryFn({ queryKey }) {
46
- const { scopeKey: _, to, ...parameters } = queryKey[1]
47
- if (!to) throw new Error('to is required')
53
+ ...options.query,
54
+ enabled: Boolean(options.to && (options.query?.enabled ?? true)),
55
+ queryFn: async (context) => {
56
+ const [, { scopeKey: _, ...parameters }] = context.queryKey
57
+ if (!parameters.to) throw new Error('to is required')
48
58
  return prepareTransactionRequest(config, {
49
- to,
50
59
  ...(parameters as any),
60
+ to: parameters.to,
51
61
  }) as unknown as Promise<
52
62
  PrepareTransactionRequestQueryFnData<config, chainId, request>
53
63
  >
54
64
  },
55
- queryKey: prepareTransactionRequestQueryKey(options),
56
- } as const satisfies QueryOptions<
57
- PrepareTransactionRequestQueryFnData<config, chainId, request>,
58
- PrepareTransactionRequestErrorType,
59
- PrepareTransactionRequestData<config, chainId, request>,
60
- PrepareTransactionRequestQueryKey<config, chainId, request>
61
- >
65
+ queryKey: prepareTransactionRequestQueryKey(
66
+ options,
67
+ ) as PrepareTransactionRequestQueryKey<config, chainId, request>,
68
+ }
62
69
  }
70
+
63
71
  export type PrepareTransactionRequestQueryFnData<
64
72
  config extends Config,
65
73
  chainId extends config['chains'][number]['id'] | undefined,
@@ -85,7 +93,12 @@ export function prepareTransactionRequestQueryKey<
85
93
  SelectChains<config, chainId>[0],
86
94
  SelectChains<config, chainId>[0]
87
95
  >,
88
- >(options: PrepareTransactionRequestOptions<config, chainId, request>) {
96
+ >(
97
+ options: UnionExactPartial<
98
+ PrepareTransactionRequestParameters<config, chainId, request>
99
+ > &
100
+ ScopeKeyParameter = {} as any,
101
+ ) {
89
102
  return ['prepareTransactionRequest', filterQueryOptions(options)] as const
90
103
  }
91
104
 
@@ -99,3 +112,18 @@ export type PrepareTransactionRequestQueryKey<
99
112
  > = ReturnType<
100
113
  typeof prepareTransactionRequestQueryKey<config, chainId, request>
101
114
  >
115
+
116
+ export type PrepareTransactionRequestQueryOptions<
117
+ config extends Config,
118
+ chainId extends config['chains'][number]['id'] | undefined,
119
+ request extends viem_PrepareTransactionRequestRequest<
120
+ SelectChains<config, chainId>[0],
121
+ SelectChains<config, chainId>[0]
122
+ >,
123
+ selectData = PrepareTransactionRequestData<config, chainId, request>,
124
+ > = QueryOptions<
125
+ PrepareTransactionRequestQueryFnData<config, chainId, request>,
126
+ PrepareTransactionRequestErrorType,
127
+ selectData,
128
+ PrepareTransactionRequestQueryKey<config, chainId, request>
129
+ >
@@ -1,6 +1,4 @@
1
- import type { QueryOptions } from '@tanstack/query-core'
2
1
  import type { Abi, ContractFunctionArgs, ContractFunctionName } from 'viem'
3
-
4
2
  import {
5
3
  type ReadContractErrorType,
6
4
  type ReadContractParameters,
@@ -9,58 +7,62 @@ import {
9
7
  } from '../actions/readContract.js'
10
8
  import type { Config } from '../createConfig.js'
11
9
  import type { ScopeKeyParameter } from '../types/properties.js'
10
+ import type { QueryOptions, QueryParameter } from '../types/query.js'
12
11
  import type { UnionExactPartial } from '../types/utils.js'
13
- import { filterQueryOptions } from './utils.js'
12
+ import { filterQueryOptions, structuralSharing } from './utils.js'
14
13
 
15
14
  export type ReadContractOptions<
16
15
  abi extends Abi | readonly unknown[],
17
16
  functionName extends ContractFunctionName<abi, 'pure' | 'view'>,
18
17
  args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
19
18
  config extends Config,
19
+ selectData = ReadContractData<abi, functionName, args>,
20
20
  > = UnionExactPartial<ReadContractParameters<abi, functionName, args, config>> &
21
- ScopeKeyParameter
21
+ ScopeKeyParameter &
22
+ QueryParameter<
23
+ ReadContractQueryFnData<abi, functionName, args>,
24
+ ReadContractErrorType,
25
+ selectData,
26
+ ReadContractQueryKey<abi, functionName, args, config>
27
+ >
22
28
 
23
29
  export function readContractQueryOptions<
24
30
  config extends Config,
25
31
  const abi extends Abi | readonly unknown[],
26
32
  functionName extends ContractFunctionName<abi, 'pure' | 'view'>,
27
- args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
33
+ const args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
34
+ selectData = ReadContractData<abi, functionName, args>,
28
35
  >(
29
36
  config: config,
30
37
  options: ReadContractOptions<abi, functionName, args, config> = {} as any,
31
- ) {
38
+ ): ReadContractQueryOptions<abi, functionName, args, config, selectData> {
32
39
  return {
40
+ ...options.query,
41
+ enabled: Boolean(
42
+ Boolean(options.address || ('code' in options && options.code)) &&
43
+ options.abi &&
44
+ options.functionName &&
45
+ (options.query?.enabled ?? true),
46
+ ),
33
47
  // TODO: Support `signal` once Viem actions allow passthrough
34
48
  // https://tkdodo.eu/blog/why-you-want-react-query#bonus-cancellation
35
- async queryFn({ queryKey }) {
36
- const abi = options.abi as Abi
37
- if (!abi) throw new Error('abi is required')
38
-
39
- const { functionName, scopeKey: _, ...parameters } = queryKey[1]
40
- const addressOrCodeParams = (() => {
41
- const params = queryKey[1] as unknown as ReadContractParameters
42
- if (params.address) return { address: params.address }
43
- if (params.code) return { code: params.code }
44
- throw new Error('address or code is required')
45
- })()
46
-
47
- if (!functionName) throw new Error('functionName is required')
48
-
49
- return readContract(config, {
50
- abi,
51
- functionName,
52
- args: parameters.args as readonly unknown[],
53
- ...addressOrCodeParams,
54
- ...parameters,
55
- }) as Promise<ReadContractData<abi, functionName, args>>
49
+ queryFn: async (context) => {
50
+ if (!options.abi) throw new Error('abi is required')
51
+ const [, { scopeKey: _, ...parameters }] = context.queryKey
52
+ if (!parameters.functionName) throw new Error('functionName is required')
53
+ const result = await readContract(config, {
54
+ ...(parameters as any),
55
+ abi: options.abi,
56
+ address: parameters.address,
57
+ code:
58
+ 'code' in parameters && parameters.code ? parameters.code : undefined,
59
+ functionName: parameters.functionName,
60
+ })
61
+ return result as ReadContractData<abi, functionName, args>
56
62
  },
57
63
  queryKey: readContractQueryKey(options as any) as any,
58
- } as const satisfies QueryOptions<
59
- ReadContractQueryFnData<abi, functionName, args>,
60
- ReadContractErrorType,
61
- ReadContractData<abi, functionName, args>,
62
- ReadContractQueryKey<abi, functionName, args, config>
63
- >
64
+ structuralSharing,
65
+ } as ReadContractQueryOptions<abi, functionName, args, config, selectData>
64
66
  }
65
67
 
66
68
  export type ReadContractQueryFnData<
@@ -80,9 +82,13 @@ export function readContractQueryKey<
80
82
  const abi extends Abi | readonly unknown[],
81
83
  functionName extends ContractFunctionName<abi, 'pure' | 'view'>,
82
84
  args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
83
- >(options: ReadContractOptions<abi, functionName, args, config> = {} as any) {
84
- const { abi: _, ...rest } = options
85
- return ['readContract', filterQueryOptions(rest)] as const
85
+ >(
86
+ options: UnionExactPartial<
87
+ ReadContractParameters<abi, functionName, args, config>
88
+ > &
89
+ ScopeKeyParameter = {} as any,
90
+ ) {
91
+ return ['readContract', filterQueryOptions(options)] as const
86
92
  }
87
93
 
88
94
  export type ReadContractQueryKey<
@@ -91,3 +97,16 @@ export type ReadContractQueryKey<
91
97
  args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
92
98
  config extends Config,
93
99
  > = ReturnType<typeof readContractQueryKey<config, abi, functionName, args>>
100
+
101
+ export type ReadContractQueryOptions<
102
+ abi extends Abi | readonly unknown[],
103
+ functionName extends ContractFunctionName<abi, 'pure' | 'view'>,
104
+ args extends ContractFunctionArgs<abi, 'pure' | 'view', functionName>,
105
+ config extends Config,
106
+ selectData = ReadContractData<abi, functionName, args>,
107
+ > = QueryOptions<
108
+ ReadContractQueryFnData<abi, functionName, args>,
109
+ ReadContractErrorType,
110
+ selectData,
111
+ ReadContractQueryKey<abi, functionName, args, config>
112
+ >