@wagmi/core 3.2.1 → 3.2.2

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 (226) hide show
  1. package/dist/esm/actions/prepareTransactionRequest.js.map +1 -1
  2. package/dist/esm/actions/simulateContract.js.map +1 -1
  3. package/dist/esm/exports/internal.js.map +1 -1
  4. package/dist/esm/exports/query.js.map +1 -1
  5. package/dist/esm/query/call.js +4 -3
  6. package/dist/esm/query/call.js.map +1 -1
  7. package/dist/esm/query/estimateFeesPerGas.js +3 -2
  8. package/dist/esm/query/estimateFeesPerGas.js.map +1 -1
  9. package/dist/esm/query/estimateGas.js +12 -7
  10. package/dist/esm/query/estimateGas.js.map +1 -1
  11. package/dist/esm/query/estimateMaxPriorityFeePerGas.js +3 -2
  12. package/dist/esm/query/estimateMaxPriorityFeePerGas.js.map +1 -1
  13. package/dist/esm/query/getBalance.js +6 -4
  14. package/dist/esm/query/getBalance.js.map +1 -1
  15. package/dist/esm/query/getBlock.js +3 -2
  16. package/dist/esm/query/getBlock.js.map +1 -1
  17. package/dist/esm/query/getBlockNumber.js +3 -2
  18. package/dist/esm/query/getBlockNumber.js.map +1 -1
  19. package/dist/esm/query/getBlockTransactionCount.js +3 -2
  20. package/dist/esm/query/getBlockTransactionCount.js.map +1 -1
  21. package/dist/esm/query/getBytecode.js +10 -5
  22. package/dist/esm/query/getBytecode.js.map +1 -1
  23. package/dist/esm/query/getCallsStatus.js +6 -8
  24. package/dist/esm/query/getCallsStatus.js.map +1 -1
  25. package/dist/esm/query/getCapabilities.js +6 -8
  26. package/dist/esm/query/getCapabilities.js.map +1 -1
  27. package/dist/esm/query/getConnectorClient.js +7 -9
  28. package/dist/esm/query/getConnectorClient.js.map +1 -1
  29. package/dist/esm/query/getEnsAddress.js +6 -4
  30. package/dist/esm/query/getEnsAddress.js.map +1 -1
  31. package/dist/esm/query/getEnsAvatar.js +6 -4
  32. package/dist/esm/query/getEnsAvatar.js.map +1 -1
  33. package/dist/esm/query/getEnsName.js +6 -4
  34. package/dist/esm/query/getEnsName.js.map +1 -1
  35. package/dist/esm/query/getEnsResolver.js +6 -4
  36. package/dist/esm/query/getEnsResolver.js.map +1 -1
  37. package/dist/esm/query/getEnsText.js +10 -4
  38. package/dist/esm/query/getEnsText.js.map +1 -1
  39. package/dist/esm/query/getFeeHistory.js +10 -6
  40. package/dist/esm/query/getFeeHistory.js.map +1 -1
  41. package/dist/esm/query/getGasPrice.js +3 -2
  42. package/dist/esm/query/getGasPrice.js.map +1 -1
  43. package/dist/esm/query/getProof.js +13 -5
  44. package/dist/esm/query/getProof.js.map +1 -1
  45. package/dist/esm/query/getStorageAt.js +11 -5
  46. package/dist/esm/query/getStorageAt.js.map +1 -1
  47. package/dist/esm/query/getTransaction.js +14 -8
  48. package/dist/esm/query/getTransaction.js.map +1 -1
  49. package/dist/esm/query/getTransactionConfirmations.js +8 -5
  50. package/dist/esm/query/getTransactionConfirmations.js.map +1 -1
  51. package/dist/esm/query/getTransactionCount.js +6 -4
  52. package/dist/esm/query/getTransactionCount.js.map +1 -1
  53. package/dist/esm/query/getTransactionReceipt.js +10 -5
  54. package/dist/esm/query/getTransactionReceipt.js.map +1 -1
  55. package/dist/esm/query/getWalletClient.js +12 -9
  56. package/dist/esm/query/getWalletClient.js.map +1 -1
  57. package/dist/esm/query/infiniteReadContracts.js +1 -1
  58. package/dist/esm/query/infiniteReadContracts.js.map +1 -1
  59. package/dist/esm/query/prepareTransactionRequest.js +7 -5
  60. package/dist/esm/query/prepareTransactionRequest.js.map +1 -1
  61. package/dist/esm/query/readContract.js +18 -21
  62. package/dist/esm/query/readContract.js.map +1 -1
  63. package/dist/esm/query/readContracts.js +5 -4
  64. package/dist/esm/query/readContracts.js.map +1 -1
  65. package/dist/esm/query/simulateContract.js +18 -10
  66. package/dist/esm/query/simulateContract.js.map +1 -1
  67. package/dist/esm/query/utils.js +3 -1
  68. package/dist/esm/query/utils.js.map +1 -1
  69. package/dist/esm/query/verifyMessage.js +20 -7
  70. package/dist/esm/query/verifyMessage.js.map +1 -1
  71. package/dist/esm/query/verifyTypedData.js +20 -13
  72. package/dist/esm/query/verifyTypedData.js.map +1 -1
  73. package/dist/esm/query/waitForCallsStatus.js +14 -11
  74. package/dist/esm/query/waitForCallsStatus.js.map +1 -1
  75. package/dist/esm/query/waitForTransactionReceipt.js +6 -4
  76. package/dist/esm/query/waitForTransactionReceipt.js.map +1 -1
  77. package/dist/esm/tempo/actions/amm.js +1 -1
  78. package/dist/esm/tempo/actions/amm.js.map +1 -1
  79. package/dist/esm/tempo/actions/fee.js +1 -1
  80. package/dist/esm/tempo/actions/fee.js.map +1 -1
  81. package/dist/esm/tempo/actions/nonce.js +1 -1
  82. package/dist/esm/tempo/actions/nonce.js.map +1 -1
  83. package/dist/esm/tempo/actions/utils.js +17 -1
  84. package/dist/esm/tempo/actions/utils.js.map +1 -1
  85. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  86. package/dist/esm/types/query.js +2 -0
  87. package/dist/esm/types/query.js.map +1 -0
  88. package/dist/esm/version.js +1 -1
  89. package/dist/types/actions/prepareTransactionRequest.d.ts +2 -2
  90. package/dist/types/actions/prepareTransactionRequest.d.ts.map +1 -1
  91. package/dist/types/actions/simulateContract.d.ts +5 -3
  92. package/dist/types/actions/simulateContract.d.ts.map +1 -1
  93. package/dist/types/actions/verifyTypedData.d.ts +2 -2
  94. package/dist/types/actions/verifyTypedData.d.ts.map +1 -1
  95. package/dist/types/exports/internal.d.ts +1 -0
  96. package/dist/types/exports/internal.d.ts.map +1 -1
  97. package/dist/types/exports/query.d.ts +34 -34
  98. package/dist/types/exports/query.d.ts.map +1 -1
  99. package/dist/types/query/call.d.ts +34 -13
  100. package/dist/types/query/call.d.ts.map +1 -1
  101. package/dist/types/query/estimateFeesPerGas.d.ts +7 -22
  102. package/dist/types/query/estimateFeesPerGas.d.ts.map +1 -1
  103. package/dist/types/query/estimateGas.d.ts +12 -15
  104. package/dist/types/query/estimateGas.d.ts.map +1 -1
  105. package/dist/types/query/estimateMaxPriorityFeePerGas.d.ts +6 -19
  106. package/dist/types/query/estimateMaxPriorityFeePerGas.d.ts.map +1 -1
  107. package/dist/types/query/getBalance.d.ts +8 -27
  108. package/dist/types/query/getBalance.d.ts.map +1 -1
  109. package/dist/types/query/getBlock.d.ts +13 -13
  110. package/dist/types/query/getBlock.d.ts.map +1 -1
  111. package/dist/types/query/getBlockNumber.d.ts +7 -23
  112. package/dist/types/query/getBlockNumber.d.ts.map +1 -1
  113. package/dist/types/query/getBlockTransactionCount.d.ts +12 -13
  114. package/dist/types/query/getBlockTransactionCount.d.ts.map +1 -1
  115. package/dist/types/query/getBytecode.d.ts +12 -13
  116. package/dist/types/query/getBytecode.d.ts.map +1 -1
  117. package/dist/types/query/getCallsStatus.d.ts +7 -36
  118. package/dist/types/query/getCallsStatus.d.ts.map +1 -1
  119. package/dist/types/query/getCapabilities.d.ts +8 -50
  120. package/dist/types/query/getCapabilities.d.ts.map +1 -1
  121. package/dist/types/query/getConnectorClient.d.ts +11 -521
  122. package/dist/types/query/getConnectorClient.d.ts.map +1 -1
  123. package/dist/types/query/getEnsAddress.d.ts +8 -35
  124. package/dist/types/query/getEnsAddress.d.ts.map +1 -1
  125. package/dist/types/query/getEnsAvatar.d.ts +7 -34
  126. package/dist/types/query/getEnsAvatar.d.ts.map +1 -1
  127. package/dist/types/query/getEnsName.d.ts +8 -35
  128. package/dist/types/query/getEnsName.d.ts.map +1 -1
  129. package/dist/types/query/getEnsResolver.d.ts +8 -29
  130. package/dist/types/query/getEnsResolver.d.ts.map +1 -1
  131. package/dist/types/query/getEnsText.d.ts +9 -36
  132. package/dist/types/query/getEnsText.d.ts.map +1 -1
  133. package/dist/types/query/getFeeHistory.d.ts +9 -30
  134. package/dist/types/query/getFeeHistory.d.ts.map +1 -1
  135. package/dist/types/query/getGasPrice.d.ts +6 -19
  136. package/dist/types/query/getGasPrice.d.ts.map +1 -1
  137. package/dist/types/query/getProof.d.ts +13 -13
  138. package/dist/types/query/getProof.d.ts.map +1 -1
  139. package/dist/types/query/getStorageAt.d.ts +13 -13
  140. package/dist/types/query/getStorageAt.d.ts.map +1 -1
  141. package/dist/types/query/getTransaction.d.ts +16 -15
  142. package/dist/types/query/getTransaction.d.ts.map +1 -1
  143. package/dist/types/query/getTransactionConfirmations.d.ts +9 -13
  144. package/dist/types/query/getTransactionConfirmations.d.ts.map +1 -1
  145. package/dist/types/query/getTransactionCount.d.ts +8 -27
  146. package/dist/types/query/getTransactionCount.d.ts.map +1 -1
  147. package/dist/types/query/getTransactionReceipt.d.ts +7 -24
  148. package/dist/types/query/getTransactionReceipt.d.ts.map +1 -1
  149. package/dist/types/query/getWalletClient.d.ts +11 -31
  150. package/dist/types/query/getWalletClient.d.ts.map +1 -1
  151. package/dist/types/query/infiniteReadContracts.d.ts +13 -13
  152. package/dist/types/query/infiniteReadContracts.d.ts.map +1 -1
  153. package/dist/types/query/prepareTransactionRequest.d.ts +9 -13
  154. package/dist/types/query/prepareTransactionRequest.d.ts.map +1 -1
  155. package/dist/types/query/readContract.d.ts +9 -167
  156. package/dist/types/query/readContract.d.ts.map +1 -1
  157. package/dist/types/query/readContracts.d.ts +18 -60
  158. package/dist/types/query/readContracts.d.ts.map +1 -1
  159. package/dist/types/query/simulateContract.d.ts +11 -14
  160. package/dist/types/query/simulateContract.d.ts.map +1 -1
  161. package/dist/types/query/utils.d.ts +9 -1
  162. package/dist/types/query/utils.d.ts.map +1 -1
  163. package/dist/types/query/verifyMessage.d.ts +8 -43
  164. package/dist/types/query/verifyMessage.d.ts.map +1 -1
  165. package/dist/types/query/verifyTypedData.d.ts +10 -14
  166. package/dist/types/query/verifyTypedData.d.ts.map +1 -1
  167. package/dist/types/query/waitForCallsStatus.d.ts +9 -56
  168. package/dist/types/query/waitForCallsStatus.d.ts.map +1 -1
  169. package/dist/types/query/waitForTransactionReceipt.d.ts +11 -46
  170. package/dist/types/query/waitForTransactionReceipt.d.ts.map +1 -1
  171. package/dist/types/tempo/actions/amm.d.ts.map +1 -1
  172. package/dist/types/tempo/actions/fee.d.ts.map +1 -1
  173. package/dist/types/tempo/actions/nonce.d.ts.map +1 -1
  174. package/dist/types/tempo/actions/utils.d.ts +1 -0
  175. package/dist/types/tempo/actions/utils.d.ts.map +1 -1
  176. package/dist/types/types/query.d.ts +9 -0
  177. package/dist/types/types/query.d.ts.map +1 -0
  178. package/dist/types/version.d.ts +1 -1
  179. package/package.json +1 -1
  180. package/src/actions/prepareTransactionRequest.ts +9 -12
  181. package/src/actions/simulateContract.ts +11 -19
  182. package/src/actions/verifyTypedData.ts +2 -2
  183. package/src/exports/internal.ts +2 -0
  184. package/src/exports/query.ts +34 -0
  185. package/src/query/call.ts +29 -16
  186. package/src/query/estimateFeesPerGas.ts +34 -12
  187. package/src/query/estimateGas.ts +53 -24
  188. package/src/query/estimateMaxPriorityFeePerGas.ts +37 -18
  189. package/src/query/getBalance.ts +38 -20
  190. package/src/query/getBlock.ts +50 -16
  191. package/src/query/getBlockNumber.ts +34 -13
  192. package/src/query/getBlockTransactionCount.ts +34 -15
  193. package/src/query/getBytecode.ts +41 -19
  194. package/src/query/getCallsStatus.ts +36 -21
  195. package/src/query/getCapabilities.ts +40 -18
  196. package/src/query/getConnectorClient.ts +45 -20
  197. package/src/query/getEnsAddress.ts +37 -19
  198. package/src/query/getEnsAvatar.ts +37 -19
  199. package/src/query/getEnsName.ts +37 -19
  200. package/src/query/getEnsResolver.ts +38 -18
  201. package/src/query/getEnsText.ts +44 -19
  202. package/src/query/getFeeHistory.ts +46 -28
  203. package/src/query/getGasPrice.ts +34 -13
  204. package/src/query/getProof.ts +45 -19
  205. package/src/query/getStorageAt.ts +44 -19
  206. package/src/query/getTransaction.ts +51 -19
  207. package/src/query/getTransactionConfirmations.ts +46 -23
  208. package/src/query/getTransactionCount.ts +41 -22
  209. package/src/query/getTransactionReceipt.ts +42 -14
  210. package/src/query/getWalletClient.ts +46 -20
  211. package/src/query/infiniteReadContracts.ts +1 -1
  212. package/src/query/prepareTransactionRequest.ts +45 -17
  213. package/src/query/readContract.ts +55 -36
  214. package/src/query/readContracts.ts +38 -16
  215. package/src/query/simulateContract.ts +68 -33
  216. package/src/query/utils.ts +14 -5
  217. package/src/query/verifyMessage.ts +50 -26
  218. package/src/query/verifyTypedData.ts +65 -38
  219. package/src/query/waitForCallsStatus.ts +47 -25
  220. package/src/query/waitForTransactionReceipt.ts +36 -16
  221. package/src/tempo/actions/amm.ts +2 -2
  222. package/src/tempo/actions/fee.ts +1 -1
  223. package/src/tempo/actions/nonce.ts +1 -1
  224. package/src/tempo/actions/utils.ts +26 -0
  225. package/src/types/query.ts +40 -0
  226. 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 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
+ >
@@ -1,9 +1,7 @@
1
- import type { QueryOptions } from '@tanstack/query-core'
2
1
  import type {
3
2
  ContractFunctionParameters,
4
3
  MulticallParameters as viem_MulticallParameters,
5
4
  } from 'viem'
6
-
7
5
  import {
8
6
  type ReadContractsErrorType,
9
7
  type ReadContractsReturnType,
@@ -14,6 +12,7 @@ import type {
14
12
  ChainIdParameter,
15
13
  ScopeKeyParameter,
16
14
  } from '../types/properties.js'
15
+ import type { QueryOptions, QueryParameter } from '../types/query.js'
17
16
  import type { ExactPartial } from '../types/utils.js'
18
17
  import { filterQueryOptions } from './utils.js'
19
18
 
@@ -21,6 +20,7 @@ export type ReadContractsOptions<
21
20
  contracts extends readonly unknown[],
22
21
  allowFailure extends boolean,
23
22
  config extends Config,
23
+ selectData = ReadContractsData<contracts, allowFailure>,
24
24
  > = ExactPartial<
25
25
  viem_MulticallParameters<
26
26
  contracts,
@@ -28,39 +28,42 @@ export type ReadContractsOptions<
28
28
  { optional: true; properties: ChainIdParameter<config> }
29
29
  >
30
30
  > &
31
- ScopeKeyParameter
31
+ ScopeKeyParameter &
32
+ QueryParameter<
33
+ ReadContractsQueryFnData<contracts, allowFailure>,
34
+ ReadContractsErrorType,
35
+ selectData,
36
+ ReadContractsQueryKey<contracts, allowFailure, config>
37
+ >
32
38
 
33
39
  export function readContractsQueryOptions<
34
40
  config extends Config,
35
41
  const contracts extends readonly unknown[],
36
42
  allowFailure extends boolean = true,
43
+ selectData = ReadContractsData<contracts, allowFailure>,
37
44
  >(
38
45
  config: config,
39
- options: ReadContractsOptions<contracts, allowFailure, config> &
46
+ options: ReadContractsOptions<contracts, allowFailure, config, selectData> &
40
47
  ChainIdParameter<config> = {},
41
- ) {
48
+ ): ReadContractsQueryOptions<contracts, allowFailure, config, selectData> {
42
49
  return {
43
- async queryFn({ queryKey }) {
50
+ ...options.query,
51
+ queryFn: async (context) => {
44
52
  const contracts: ContractFunctionParameters[] = []
45
- const length = queryKey[1].contracts.length
53
+ const length = context.queryKey[1].contracts.length
46
54
  for (let i = 0; i < length; i++) {
47
- const contract = queryKey[1].contracts[i]!
55
+ const contract = context.queryKey[1].contracts[i]!
48
56
  const abi = (options.contracts?.[i] as ContractFunctionParameters).abi
49
57
  contracts.push({ ...contract, abi })
50
58
  }
51
- const { scopeKey: _, ...parameters } = queryKey[1]
59
+ const { scopeKey: _, ...parameters } = context.queryKey[1]
52
60
  return readContracts(config, {
53
61
  ...parameters,
54
62
  contracts,
55
63
  }) as Promise<ReadContractsReturnType<contracts, allowFailure>>
56
64
  },
57
65
  queryKey: readContractsQueryKey(options),
58
- } as const satisfies QueryOptions<
59
- ReadContractsQueryFnData<contracts, allowFailure>,
60
- ReadContractsErrorType,
61
- ReadContractsData<contracts, allowFailure>,
62
- ReadContractsQueryKey<contracts, allowFailure, config>
63
- >
66
+ }
64
67
  }
65
68
 
66
69
  export type ReadContractsQueryFnData<
@@ -78,7 +81,14 @@ export function readContractsQueryKey<
78
81
  const contracts extends readonly unknown[],
79
82
  allowFailure extends boolean,
80
83
  >(
81
- options: ReadContractsOptions<contracts, allowFailure, config> &
84
+ options: ExactPartial<
85
+ viem_MulticallParameters<
86
+ contracts,
87
+ allowFailure,
88
+ { optional: true; properties: ChainIdParameter<config> }
89
+ >
90
+ > &
91
+ ScopeKeyParameter &
82
92
  ChainIdParameter<config> = {},
83
93
  ) {
84
94
  const contracts = []
@@ -98,3 +108,15 @@ export type ReadContractsQueryKey<
98
108
  allowFailure extends boolean,
99
109
  config extends Config,
100
110
  > = ReturnType<typeof readContractsQueryKey<config, contracts, allowFailure>>
111
+
112
+ export type ReadContractsQueryOptions<
113
+ contracts extends readonly unknown[],
114
+ allowFailure extends boolean,
115
+ config extends Config,
116
+ selectData = ReadContractsData<contracts, allowFailure>,
117
+ > = QueryOptions<
118
+ ReadContractsQueryFnData<contracts, allowFailure>,
119
+ ReadContractsErrorType,
120
+ selectData,
121
+ ReadContractsQueryKey<contracts, allowFailure, config>
122
+ >