@wagmi/core 2.0.0-beta.1 → 2.0.0-beta.10

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 (262) hide show
  1. package/dist/esm/actions/codegen/createReadContract.js +31 -0
  2. package/dist/esm/actions/codegen/createReadContract.js.map +1 -0
  3. package/dist/esm/actions/codegen/createSimulateContract.js +33 -0
  4. package/dist/esm/actions/codegen/createSimulateContract.js.map +1 -0
  5. package/dist/esm/actions/codegen/createWatchContractEvent.js +31 -0
  6. package/dist/esm/actions/codegen/createWatchContractEvent.js.map +1 -0
  7. package/dist/esm/actions/codegen/createWriteContract.js +43 -0
  8. package/dist/esm/actions/codegen/createWriteContract.js.map +1 -0
  9. package/dist/esm/actions/disconnect.js +7 -11
  10. package/dist/esm/actions/disconnect.js.map +1 -1
  11. package/dist/esm/actions/estimateMaxPriorityFeePerGas.js +12 -0
  12. package/dist/esm/actions/estimateMaxPriorityFeePerGas.js.map +1 -0
  13. package/dist/esm/actions/getBlock.js.map +1 -1
  14. package/dist/esm/actions/getBlockTransactionCount.js +11 -0
  15. package/dist/esm/actions/getBlockTransactionCount.js.map +1 -0
  16. package/dist/esm/actions/getFeeHistory.js +11 -0
  17. package/dist/esm/actions/getFeeHistory.js.map +1 -0
  18. package/dist/esm/actions/getGasPrice.js +11 -0
  19. package/dist/esm/actions/getGasPrice.js.map +1 -0
  20. package/dist/esm/actions/getTransaction.js.map +1 -1
  21. package/dist/esm/actions/getTransactionCount.js +11 -0
  22. package/dist/esm/actions/getTransactionCount.js.map +1 -0
  23. package/dist/esm/actions/simulateContract.js +3 -0
  24. package/dist/esm/actions/simulateContract.js.map +1 -1
  25. package/dist/esm/actions/verifyMessage.js +11 -0
  26. package/dist/esm/actions/verifyMessage.js.map +1 -0
  27. package/dist/esm/actions/verifyTypedData.js +12 -0
  28. package/dist/esm/actions/verifyTypedData.js.map +1 -0
  29. package/dist/esm/actions/waitForTransactionReceipt.js.map +1 -1
  30. package/dist/esm/actions/watchContractEvent.js +3 -0
  31. package/dist/esm/actions/watchContractEvent.js.map +1 -1
  32. package/dist/esm/actions/writeContract.js +3 -0
  33. package/dist/esm/actions/writeContract.js.map +1 -1
  34. package/dist/esm/connectors/createConnector.js.map +1 -1
  35. package/dist/esm/connectors/injected.js +10 -4
  36. package/dist/esm/connectors/injected.js.map +1 -1
  37. package/dist/esm/connectors/mock.js +2 -0
  38. package/dist/esm/connectors/mock.js.map +1 -1
  39. package/dist/esm/createConfig.js +13 -2
  40. package/dist/esm/createConfig.js.map +1 -1
  41. package/dist/esm/exports/actions.js +8 -0
  42. package/dist/esm/exports/actions.js.map +1 -1
  43. package/dist/esm/exports/chains.js +1 -0
  44. package/dist/esm/exports/chains.js.map +1 -1
  45. package/dist/esm/exports/codegen.js +5 -0
  46. package/dist/esm/exports/codegen.js.map +1 -0
  47. package/dist/esm/exports/index.js +26 -6
  48. package/dist/esm/exports/index.js.map +1 -1
  49. package/dist/esm/exports/internal.js +5 -4
  50. package/dist/esm/exports/internal.js.map +1 -1
  51. package/dist/esm/exports/query.js +8 -1
  52. package/dist/esm/exports/query.js.map +1 -1
  53. package/dist/esm/query/estimateMaxPriorityFeePerGas.js +19 -0
  54. package/dist/esm/query/estimateMaxPriorityFeePerGas.js.map +1 -0
  55. package/dist/esm/query/getBlock.js +1 -1
  56. package/dist/esm/query/getBlock.js.map +1 -1
  57. package/dist/esm/query/getBlockTransactionCount.js +20 -0
  58. package/dist/esm/query/getBlockTransactionCount.js.map +1 -0
  59. package/dist/esm/query/getFeeHistory.js +27 -0
  60. package/dist/esm/query/getFeeHistory.js.map +1 -0
  61. package/dist/esm/query/getGasPrice.js +20 -0
  62. package/dist/esm/query/getGasPrice.js.map +1 -0
  63. package/dist/esm/query/getTransactionCount.js +23 -0
  64. package/dist/esm/query/getTransactionCount.js.map +1 -0
  65. package/dist/esm/query/infiniteReadContracts.js +2 -0
  66. package/dist/esm/query/infiniteReadContracts.js.map +1 -1
  67. package/dist/esm/query/readContract.js +4 -0
  68. package/dist/esm/query/readContract.js.map +1 -1
  69. package/dist/esm/query/verifyMessage.js +21 -0
  70. package/dist/esm/query/verifyMessage.js.map +1 -0
  71. package/dist/esm/query/verifyTypedData.js +38 -0
  72. package/dist/esm/query/verifyTypedData.js.map +1 -0
  73. package/dist/esm/query/waitForTransactionReceipt.js +1 -1
  74. package/dist/esm/query/waitForTransactionReceipt.js.map +1 -1
  75. package/dist/esm/transports/connector.js +37 -0
  76. package/dist/esm/transports/connector.js.map +1 -0
  77. package/dist/esm/transports/fallback.js +6 -0
  78. package/dist/esm/transports/fallback.js.map +1 -0
  79. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  80. package/dist/esm/version.js +1 -1
  81. package/dist/esm/version.js.map +1 -1
  82. package/dist/types/actions/codegen/createReadContract.d.ts +16 -0
  83. package/dist/types/actions/codegen/createReadContract.d.ts.map +1 -0
  84. package/dist/types/actions/codegen/createSimulateContract.d.ts +20 -0
  85. package/dist/types/actions/codegen/createSimulateContract.d.ts.map +1 -0
  86. package/dist/types/actions/codegen/createWatchContractEvent.d.ts +14 -0
  87. package/dist/types/actions/codegen/createWatchContractEvent.d.ts.map +1 -0
  88. package/dist/types/actions/codegen/createWriteContract.d.ts +22 -0
  89. package/dist/types/actions/codegen/createWriteContract.d.ts.map +1 -0
  90. package/dist/types/actions/disconnect.d.ts +2 -2
  91. package/dist/types/actions/disconnect.d.ts.map +1 -1
  92. package/dist/types/actions/estimateGas.d.ts +2 -2
  93. package/dist/types/actions/estimateGas.d.ts.map +1 -1
  94. package/dist/types/actions/estimateMaxPriorityFeePerGas.d.ts +11 -0
  95. package/dist/types/actions/estimateMaxPriorityFeePerGas.d.ts.map +1 -0
  96. package/dist/types/actions/getBlock.d.ts +2 -2
  97. package/dist/types/actions/getBlock.d.ts.map +1 -1
  98. package/dist/types/actions/getBlockTransactionCount.d.ts +10 -0
  99. package/dist/types/actions/getBlockTransactionCount.d.ts.map +1 -0
  100. package/dist/types/actions/getFeeHistory.d.ts +10 -0
  101. package/dist/types/actions/getFeeHistory.d.ts.map +1 -0
  102. package/dist/types/actions/getGasPrice.d.ts +10 -0
  103. package/dist/types/actions/getGasPrice.d.ts.map +1 -0
  104. package/dist/types/actions/getTransaction.d.ts +2 -2
  105. package/dist/types/actions/getTransaction.d.ts.map +1 -1
  106. package/dist/types/actions/getTransactionCount.d.ts +10 -0
  107. package/dist/types/actions/getTransactionCount.d.ts.map +1 -0
  108. package/dist/types/actions/simulateContract.d.ts +3 -3
  109. package/dist/types/actions/simulateContract.d.ts.map +1 -1
  110. package/dist/types/actions/verifyMessage.d.ts +10 -0
  111. package/dist/types/actions/verifyMessage.d.ts.map +1 -0
  112. package/dist/types/actions/verifyTypedData.d.ts +11 -0
  113. package/dist/types/actions/verifyTypedData.d.ts.map +1 -0
  114. package/dist/types/actions/waitForTransactionReceipt.d.ts +2 -2
  115. package/dist/types/actions/waitForTransactionReceipt.d.ts.map +1 -1
  116. package/dist/types/actions/watchBlocks.d.ts +2 -2
  117. package/dist/types/actions/watchBlocks.d.ts.map +1 -1
  118. package/dist/types/actions/watchContractEvent.d.ts +3 -3
  119. package/dist/types/actions/watchContractEvent.d.ts.map +1 -1
  120. package/dist/types/actions/writeContract.d.ts +3 -3
  121. package/dist/types/actions/writeContract.d.ts.map +1 -1
  122. package/dist/types/connectors/createConnector.d.ts +1 -0
  123. package/dist/types/connectors/createConnector.d.ts.map +1 -1
  124. package/dist/types/connectors/injected.d.ts +7 -0
  125. package/dist/types/connectors/injected.d.ts.map +1 -1
  126. package/dist/types/connectors/mock.d.ts +3 -0
  127. package/dist/types/connectors/mock.d.ts.map +1 -1
  128. package/dist/types/createConfig.d.ts +4 -1
  129. package/dist/types/createConfig.d.ts.map +1 -1
  130. package/dist/types/exports/actions.d.ts +7 -0
  131. package/dist/types/exports/actions.d.ts.map +1 -1
  132. package/dist/types/exports/chains.d.ts.map +1 -1
  133. package/dist/types/exports/codegen.d.ts +5 -0
  134. package/dist/types/exports/codegen.d.ts.map +1 -0
  135. package/dist/types/exports/index.d.ts +12 -1
  136. package/dist/types/exports/index.d.ts.map +1 -1
  137. package/dist/types/exports/internal.d.ts +2 -2
  138. package/dist/types/exports/internal.d.ts.map +1 -1
  139. package/dist/types/exports/query.d.ts +7 -1
  140. package/dist/types/exports/query.d.ts.map +1 -1
  141. package/dist/types/query/estimateFeesPerGas.d.ts +1 -1
  142. package/dist/types/query/estimateFeesPerGas.d.ts.map +1 -1
  143. package/dist/types/query/estimateGas.d.ts +1 -1
  144. package/dist/types/query/estimateGas.d.ts.map +1 -1
  145. package/dist/types/query/estimateMaxPriorityFeePerGas.d.ts +27 -0
  146. package/dist/types/query/estimateMaxPriorityFeePerGas.d.ts.map +1 -0
  147. package/dist/types/query/getBalance.d.ts +1 -1
  148. package/dist/types/query/getBalance.d.ts.map +1 -1
  149. package/dist/types/query/getBlock.d.ts +2 -2
  150. package/dist/types/query/getBlock.d.ts.map +1 -1
  151. package/dist/types/query/getBlockNumber.d.ts +1 -4
  152. package/dist/types/query/getBlockNumber.d.ts.map +1 -1
  153. package/dist/types/query/getBlockTransactionCount.d.ts +18 -0
  154. package/dist/types/query/getBlockTransactionCount.d.ts.map +1 -0
  155. package/dist/types/query/getConnectorClient.d.ts +5 -1
  156. package/dist/types/query/getConnectorClient.d.ts.map +1 -1
  157. package/dist/types/query/getEnsAddress.d.ts +1 -1
  158. package/dist/types/query/getEnsAddress.d.ts.map +1 -1
  159. package/dist/types/query/getEnsAvatar.d.ts +1 -1
  160. package/dist/types/query/getEnsAvatar.d.ts.map +1 -1
  161. package/dist/types/query/getEnsName.d.ts +1 -1
  162. package/dist/types/query/getEnsName.d.ts.map +1 -1
  163. package/dist/types/query/getEnsResolver.d.ts +1 -1
  164. package/dist/types/query/getEnsResolver.d.ts.map +1 -1
  165. package/dist/types/query/getFeeHistory.d.ts +39 -0
  166. package/dist/types/query/getFeeHistory.d.ts.map +1 -0
  167. package/dist/types/query/getGasPrice.d.ts +27 -0
  168. package/dist/types/query/getGasPrice.d.ts.map +1 -0
  169. package/dist/types/query/getToken.d.ts +1 -1
  170. package/dist/types/query/getToken.d.ts.map +1 -1
  171. package/dist/types/query/getTransaction.d.ts +2 -2
  172. package/dist/types/query/getTransaction.d.ts.map +1 -1
  173. package/dist/types/query/getTransactionCount.d.ts +36 -0
  174. package/dist/types/query/getTransactionCount.d.ts.map +1 -0
  175. package/dist/types/query/getWalletClient.d.ts +13 -13
  176. package/dist/types/query/getWalletClient.d.ts.map +1 -1
  177. package/dist/types/query/infiniteReadContracts.d.ts +2 -3
  178. package/dist/types/query/infiniteReadContracts.d.ts.map +1 -1
  179. package/dist/types/query/readContract.d.ts +2 -2
  180. package/dist/types/query/readContract.d.ts.map +1 -1
  181. package/dist/types/query/readContracts.d.ts +1 -1
  182. package/dist/types/query/readContracts.d.ts.map +1 -1
  183. package/dist/types/query/signTypedData.d.ts +8 -8
  184. package/dist/types/query/simulateContract.d.ts +1 -1
  185. package/dist/types/query/simulateContract.d.ts.map +1 -1
  186. package/dist/types/query/types.d.ts +0 -3
  187. package/dist/types/query/types.d.ts.map +1 -1
  188. package/dist/types/query/verifyMessage.d.ts +42 -0
  189. package/dist/types/query/verifyMessage.d.ts.map +1 -0
  190. package/dist/types/query/verifyTypedData.d.ts +19 -0
  191. package/dist/types/query/verifyTypedData.d.ts.map +1 -0
  192. package/dist/types/query/waitForTransactionReceipt.d.ts +2 -2
  193. package/dist/types/query/waitForTransactionReceipt.d.ts.map +1 -1
  194. package/dist/types/transports/connector.d.ts +15 -0
  195. package/dist/types/transports/connector.d.ts.map +1 -0
  196. package/dist/types/transports/fallback.d.ts +4 -0
  197. package/dist/types/transports/fallback.d.ts.map +1 -0
  198. package/dist/types/types/properties.d.ts +3 -0
  199. package/dist/types/types/properties.d.ts.map +1 -1
  200. package/dist/types/version.d.ts +1 -1
  201. package/dist/types/version.d.ts.map +1 -1
  202. package/package.json +17 -20
  203. package/src/actions/codegen/createReadContract.ts +100 -0
  204. package/src/actions/codegen/createSimulateContract.ts +122 -0
  205. package/src/actions/codegen/createWatchContractEvent.ts +87 -0
  206. package/src/actions/codegen/createWriteContract.ts +142 -0
  207. package/src/actions/disconnect.ts +11 -17
  208. package/src/actions/estimateGas.ts +1 -1
  209. package/src/actions/estimateMaxPriorityFeePerGas.ts +41 -0
  210. package/src/actions/getBlock.ts +2 -2
  211. package/src/actions/getBlockTransactionCount.ts +36 -0
  212. package/src/actions/getFeeHistory.ts +32 -0
  213. package/src/actions/getGasPrice.ts +31 -0
  214. package/src/actions/getTransaction.ts +4 -2
  215. package/src/actions/getTransactionCount.ts +31 -0
  216. package/src/actions/simulateContract.ts +5 -5
  217. package/src/actions/verifyMessage.ts +28 -0
  218. package/src/actions/verifyTypedData.ts +41 -0
  219. package/src/actions/waitForTransactionReceipt.ts +4 -2
  220. package/src/actions/watchBlocks.ts +2 -2
  221. package/src/actions/watchContractEvent.ts +6 -5
  222. package/src/actions/writeContract.ts +6 -7
  223. package/src/connectors/createConnector.ts +1 -0
  224. package/src/connectors/injected.ts +13 -3
  225. package/src/connectors/mock.ts +2 -0
  226. package/src/createConfig.ts +23 -4
  227. package/src/exports/actions.ts +48 -0
  228. package/src/exports/chains.ts +1 -0
  229. package/src/exports/codegen.ts +7 -0
  230. package/src/exports/index.ts +80 -13
  231. package/src/exports/internal.ts +11 -13
  232. package/src/exports/query.ts +64 -1
  233. package/src/query/estimateFeesPerGas.ts +1 -1
  234. package/src/query/estimateGas.ts +1 -1
  235. package/src/query/estimateMaxPriorityFeePerGas.ts +51 -0
  236. package/src/query/getBalance.ts +1 -1
  237. package/src/query/getBlock.ts +2 -2
  238. package/src/query/getBlockNumber.ts +1 -1
  239. package/src/query/getBlockTransactionCount.ts +62 -0
  240. package/src/query/getConnectorClient.ts +1 -1
  241. package/src/query/getEnsAddress.ts +1 -1
  242. package/src/query/getEnsAvatar.ts +1 -1
  243. package/src/query/getEnsName.ts +1 -1
  244. package/src/query/getEnsResolver.ts +1 -1
  245. package/src/query/getFeeHistory.ts +69 -0
  246. package/src/query/getGasPrice.ts +54 -0
  247. package/src/query/getToken.ts +1 -1
  248. package/src/query/getTransaction.ts +1 -1
  249. package/src/query/getTransactionCount.ts +55 -0
  250. package/src/query/getWalletClient.ts +1 -1
  251. package/src/query/infiniteReadContracts.ts +6 -3
  252. package/src/query/readContract.ts +4 -2
  253. package/src/query/readContracts.ts +1 -1
  254. package/src/query/simulateContract.ts +1 -1
  255. package/src/query/types.ts +0 -2
  256. package/src/query/verifyMessage.ts +54 -0
  257. package/src/query/verifyTypedData.ts +81 -0
  258. package/src/query/waitForTransactionReceipt.ts +1 -1
  259. package/src/transports/connector.ts +87 -0
  260. package/src/transports/fallback.ts +10 -0
  261. package/src/types/properties.ts +2 -0
  262. package/src/version.ts +1 -1
@@ -0,0 +1,54 @@
1
+ import { type QueryOptions } from '@tanstack/query-core'
2
+
3
+ import {
4
+ type GetGasPriceErrorType,
5
+ type GetGasPriceParameters,
6
+ type GetGasPriceReturnType,
7
+ getGasPrice,
8
+ } from '../actions/getGasPrice.js'
9
+ import { type Config } from '../createConfig.js'
10
+ import { type ScopeKeyParameter } from '../types/properties.js'
11
+ import { type Evaluate, type ExactPartial } from '../types/utils.js'
12
+ import { filterQueryOptions } from './utils.js'
13
+
14
+ export type GetGasPriceOptions<
15
+ config extends Config,
16
+ chainId extends config['chains'][number]['id'],
17
+ > = Evaluate<
18
+ ExactPartial<GetGasPriceParameters<config, chainId>> & ScopeKeyParameter
19
+ >
20
+
21
+ export function getGasPriceQueryOptions<
22
+ config extends Config,
23
+ chainId extends config['chains'][number]['id'],
24
+ >(config: config, options: GetGasPriceOptions<config, chainId> = {}) {
25
+ return {
26
+ async queryFn({ queryKey }) {
27
+ const { scopeKey: _, ...parameters } = queryKey[1]
28
+ const gasPrice = await getGasPrice(config, parameters)
29
+ return gasPrice ?? null
30
+ },
31
+ queryKey: getGasPriceQueryKey(options),
32
+ } as const satisfies QueryOptions<
33
+ GetGasPriceQueryFnData,
34
+ GetGasPriceErrorType,
35
+ GetGasPriceData,
36
+ GetGasPriceQueryKey<config, chainId>
37
+ >
38
+ }
39
+
40
+ export type GetGasPriceQueryFnData = GetGasPriceReturnType
41
+
42
+ export type GetGasPriceData = GetGasPriceQueryFnData
43
+
44
+ export function getGasPriceQueryKey<
45
+ config extends Config,
46
+ chainId extends config['chains'][number]['id'],
47
+ >(options: GetGasPriceOptions<config, chainId> = {}) {
48
+ return ['gasPrice', filterQueryOptions(options)] as const
49
+ }
50
+
51
+ export type GetGasPriceQueryKey<
52
+ config extends Config,
53
+ chainId extends config['chains'][number]['id'],
54
+ > = ReturnType<typeof getGasPriceQueryKey<config, chainId>>
@@ -7,8 +7,8 @@ import {
7
7
  getToken,
8
8
  } from '../actions/getToken.js'
9
9
  import { type Config } from '../createConfig.js'
10
+ import type { ScopeKeyParameter } from '../types/properties.js'
10
11
  import type { Evaluate, ExactPartial } from '../types/utils.js'
11
- import type { ScopeKeyParameter } from './types.js'
12
12
  import { filterQueryOptions } from './utils.js'
13
13
 
14
14
  export type GetTokenOptions<config extends Config> = Evaluate<
@@ -7,8 +7,8 @@ import {
7
7
  getTransaction,
8
8
  } from '../actions/getTransaction.js'
9
9
  import { type Config } from '../createConfig.js'
10
+ import type { ScopeKeyParameter } from '../types/properties.js'
10
11
  import type { Evaluate, ExactPartial } from '../types/utils.js'
11
- import type { ScopeKeyParameter } from './types.js'
12
12
  import { filterQueryOptions } from './utils.js'
13
13
 
14
14
  export type GetTransactionOptions<
@@ -0,0 +1,55 @@
1
+ import { type QueryOptions } from '@tanstack/query-core'
2
+
3
+ import {
4
+ type GetTransactionCountErrorType,
5
+ type GetTransactionCountParameters,
6
+ type GetTransactionCountReturnType,
7
+ getTransactionCount,
8
+ } from '../actions/getTransactionCount.js'
9
+ import { type Config } from '../createConfig.js'
10
+ import type { ScopeKeyParameter } from '../types/properties.js'
11
+ import type { Evaluate, PartialBy } from '../types/utils.js'
12
+ import { filterQueryOptions } from './utils.js'
13
+
14
+ export type GetTransactionCountOptions<config extends Config> = Evaluate<
15
+ PartialBy<GetTransactionCountParameters<config>, 'address'> &
16
+ ScopeKeyParameter
17
+ >
18
+
19
+ export function getTransactionCountQueryOptions<config extends Config>(
20
+ config: config,
21
+ options: GetTransactionCountOptions<config> = {},
22
+ ) {
23
+ return {
24
+ async queryFn({ queryKey }) {
25
+ const { address, scopeKey: _, ...parameters } = queryKey[1]
26
+ if (!address) throw new Error('address is required')
27
+ const transactionCount = await getTransactionCount(config, {
28
+ ...(parameters as GetTransactionCountParameters),
29
+ address,
30
+ })
31
+ return transactionCount ?? null
32
+ },
33
+ queryKey: getTransactionCountQueryKey(options),
34
+ } as const satisfies QueryOptions<
35
+ GetTransactionCountQueryFnData,
36
+ GetTransactionCountErrorType,
37
+ GetTransactionCountData,
38
+ GetTransactionCountQueryKey<config>
39
+ >
40
+ }
41
+
42
+ export type GetTransactionCountQueryFnData =
43
+ Evaluate<GetTransactionCountReturnType>
44
+
45
+ export type GetTransactionCountData = GetTransactionCountQueryFnData
46
+
47
+ export function getTransactionCountQueryKey<config extends Config>(
48
+ options: GetTransactionCountOptions<config> = {},
49
+ ) {
50
+ return ['transactionCount', filterQueryOptions(options)] as const
51
+ }
52
+
53
+ export type GetTransactionCountQueryKey<config extends Config> = ReturnType<
54
+ typeof getTransactionCountQueryKey<config>
55
+ >
@@ -7,8 +7,8 @@ import {
7
7
  getWalletClient,
8
8
  } from '../actions/getWalletClient.js'
9
9
  import { type Config } from '../createConfig.js'
10
+ import type { ScopeKeyParameter } from '../types/properties.js'
10
11
  import type { Evaluate, ExactPartial } from '../types/utils.js'
11
- import type { ScopeKeyParameter } from './types.js'
12
12
  import { filterQueryOptions } from './utils.js'
13
13
 
14
14
  export type GetWalletClientOptions<
@@ -6,9 +6,12 @@ import {
6
6
  readContracts,
7
7
  } from '../actions/readContracts.js'
8
8
  import { type Config } from '../createConfig.js'
9
- import { type ChainIdParameter } from '../types/properties.js'
10
- import type { Omit } from '../types/utils.js'
11
- import type { InfiniteQueryOptions, ScopeKeyParameter } from './types.js'
9
+ import {
10
+ type ChainIdParameter,
11
+ type ScopeKeyParameter,
12
+ } from '../types/properties.js'
13
+ import { type Omit } from '../types/utils.js'
14
+ import { type InfiniteQueryOptions } from './types.js'
12
15
  import { filterQueryOptions } from './utils.js'
13
16
 
14
17
  export type InfiniteReadContractsOptions<
@@ -12,8 +12,8 @@ import {
12
12
  readContract,
13
13
  } from '../actions/readContract.js'
14
14
  import { type Config } from '../createConfig.js'
15
- import type { UnionPartial } from '../types/utils.js'
16
- import type { ScopeKeyParameter } from './types.js'
15
+ import { type ScopeKeyParameter } from '../types/properties.js'
16
+ import { type UnionPartial } from '../types/utils.js'
17
17
  import { filterQueryOptions } from './utils.js'
18
18
 
19
19
  export type ReadContractOptions<
@@ -34,6 +34,8 @@ export function readContractQueryOptions<
34
34
  options: ReadContractOptions<abi, functionName, args, config> = {} as any,
35
35
  ) {
36
36
  return {
37
+ // TODO: Support `signal` once Viem actions allow passthrough
38
+ // https://tkdodo.eu/blog/why-you-want-react-query#bonus-cancellation
37
39
  async queryFn({ queryKey }) {
38
40
  const abi = options.abi as Abi
39
41
  if (!abi) throw new Error('abi is required')
@@ -11,8 +11,8 @@ import {
11
11
  } from '../actions/readContracts.js'
12
12
  import { type Config } from '../createConfig.js'
13
13
  import { type ChainIdParameter } from '../types/properties.js'
14
+ import type { ScopeKeyParameter } from '../types/properties.js'
14
15
  import type { ExactPartial } from '../types/utils.js'
15
- import type { ScopeKeyParameter } from './types.js'
16
16
  import { filterQueryOptions } from './utils.js'
17
17
 
18
18
  export type ReadContractsOptions<
@@ -8,8 +8,8 @@ import {
8
8
  simulateContract,
9
9
  } from '../actions/simulateContract.js'
10
10
  import { type Config } from '../createConfig.js'
11
+ import type { ScopeKeyParameter } from '../types/properties.js'
11
12
  import type { UnionPartial } from '../types/utils.js'
12
- import type { ScopeKeyParameter } from './types.js'
13
13
  import { filterQueryOptions } from './utils.js'
14
14
 
15
15
  export type SimulateContractOptions<
@@ -79,5 +79,3 @@ type MutateFn<
79
79
  | Evaluate<MutateOptions<data, error, variables, context>>
80
80
  | undefined,
81
81
  ) => Promise<data>
82
-
83
- export type ScopeKeyParameter = { scopeKey?: string | undefined }
@@ -0,0 +1,54 @@
1
+ import { type QueryOptions } from '@tanstack/query-core'
2
+
3
+ import {
4
+ type VerifyMessageErrorType,
5
+ type VerifyMessageParameters,
6
+ type VerifyMessageReturnType,
7
+ verifyMessage,
8
+ } from '../actions/verifyMessage.js'
9
+ import { type Config } from '../createConfig.js'
10
+ import type { ScopeKeyParameter } from '../types/properties.js'
11
+ import type { Evaluate, ExactPartial } from '../types/utils.js'
12
+ import { filterQueryOptions } from './utils.js'
13
+
14
+ export type VerifyMessageOptions<config extends Config> = Evaluate<
15
+ ExactPartial<VerifyMessageParameters<config>> & ScopeKeyParameter
16
+ >
17
+
18
+ export function verifyMessageQueryOptions<config extends Config>(
19
+ config: config,
20
+ options: VerifyMessageOptions<config> = {},
21
+ ) {
22
+ return {
23
+ async queryFn({ queryKey }) {
24
+ const { address, message, signature } = queryKey[1]
25
+ if (!address || !message || !signature)
26
+ throw new Error('address, message, and signature are required')
27
+
28
+ const { scopeKey: _, ...parameters } = queryKey[1]
29
+
30
+ const verified = await verifyMessage(
31
+ config,
32
+ parameters as VerifyMessageParameters,
33
+ )
34
+ return verified ?? null
35
+ },
36
+ queryKey: verifyMessageQueryKey(options),
37
+ } as const satisfies QueryOptions<
38
+ VerifyMessageQueryFnData,
39
+ VerifyMessageErrorType,
40
+ VerifyMessageData,
41
+ VerifyMessageQueryKey
42
+ >
43
+ }
44
+ export type VerifyMessageQueryFnData = VerifyMessageReturnType
45
+
46
+ export type VerifyMessageData = VerifyMessageQueryFnData
47
+
48
+ export function verifyMessageQueryKey<config extends Config>(
49
+ options: VerifyMessageOptions<config>,
50
+ ) {
51
+ return ['verifyMessage', filterQueryOptions(options)] as const
52
+ }
53
+
54
+ export type VerifyMessageQueryKey = ReturnType<typeof verifyMessageQueryKey>
@@ -0,0 +1,81 @@
1
+ import { type QueryOptions } from '@tanstack/query-core'
2
+ import { type TypedData } from 'viem'
3
+
4
+ import {
5
+ type VerifyTypedDataErrorType,
6
+ type VerifyTypedDataParameters,
7
+ type VerifyTypedDataReturnType,
8
+ verifyTypedData,
9
+ } from '../actions/verifyTypedData.js'
10
+ import { type Config } from '../createConfig.js'
11
+ import { type ScopeKeyParameter } from '../types/properties.js'
12
+ import { type ExactPartial } from '../types/utils.js'
13
+ import { filterQueryOptions } from './utils.js'
14
+
15
+ export type VerifyTypedDataOptions<
16
+ typedData extends TypedData | Record<string, unknown>,
17
+ primaryType extends keyof typedData | 'EIP712Domain',
18
+ config extends Config,
19
+ > = ExactPartial<VerifyTypedDataParameters<typedData, primaryType, config>> &
20
+ ScopeKeyParameter
21
+
22
+ export function verifyTypedDataQueryOptions<
23
+ config extends Config,
24
+ const typedData extends TypedData | Record<string, unknown>,
25
+ primaryType extends keyof typedData | 'EIP712Domain',
26
+ >(
27
+ config: config,
28
+ options: VerifyTypedDataOptions<typedData, primaryType, config> = {} as any,
29
+ ) {
30
+ return {
31
+ async queryFn({ queryKey }) {
32
+ const {
33
+ address,
34
+ message,
35
+ primaryType,
36
+ signature,
37
+ types,
38
+ scopeKey: _,
39
+ ...parameters
40
+ } = queryKey[1]
41
+ if (!address) throw new Error('address is required')
42
+ if (!message) throw new Error('message is required')
43
+ if (!primaryType) throw new Error('primaryType is required')
44
+ if (!signature) throw new Error('signature is required')
45
+ if (!types) throw new Error('types is required')
46
+
47
+ const verified = await verifyTypedData(config, {
48
+ address,
49
+ message,
50
+ primaryType,
51
+ signature,
52
+ types,
53
+ ...parameters,
54
+ })
55
+ return verified ?? null
56
+ },
57
+ queryKey: verifyTypedDataQueryKey(options),
58
+ } as const satisfies QueryOptions<
59
+ VerifyTypedDataQueryFnData,
60
+ VerifyTypedDataErrorType,
61
+ VerifyTypedDataData,
62
+ VerifyTypedDataQueryKey<typedData, primaryType, config>
63
+ >
64
+ }
65
+ export type VerifyTypedDataQueryFnData = VerifyTypedDataReturnType
66
+
67
+ export type VerifyTypedDataData = VerifyTypedDataQueryFnData
68
+
69
+ export function verifyTypedDataQueryKey<
70
+ config extends Config,
71
+ const typedData extends TypedData | Record<string, unknown>,
72
+ primaryType extends keyof typedData | 'EIP712Domain',
73
+ >(options: VerifyTypedDataOptions<typedData, primaryType, config>) {
74
+ return ['verifyTypedData', filterQueryOptions(options)] as const
75
+ }
76
+
77
+ export type VerifyTypedDataQueryKey<
78
+ typedData extends TypedData | Record<string, unknown>,
79
+ primaryType extends keyof typedData | 'EIP712Domain',
80
+ config extends Config,
81
+ > = ReturnType<typeof verifyTypedDataQueryKey<config, typedData, primaryType>>
@@ -7,8 +7,8 @@ import {
7
7
  waitForTransactionReceipt,
8
8
  } from '../actions/waitForTransactionReceipt.js'
9
9
  import { type Config } from '../createConfig.js'
10
+ import { type ScopeKeyParameter } from '../types/properties.js'
10
11
  import { type Evaluate, type ExactPartial } from '../types/utils.js'
11
- import { type ScopeKeyParameter } from './types.js'
12
12
  import { filterQueryOptions } from './utils.js'
13
13
 
14
14
  export type WaitForTransactionReceiptOptions<
@@ -0,0 +1,87 @@
1
+ import {
2
+ ChainDisconnectedError,
3
+ type EIP1193Parameters,
4
+ type EIP1193Provider,
5
+ type EIP1193RequestFn,
6
+ ProviderDisconnectedError,
7
+ type TransportConfig,
8
+ type WalletRpcSchema,
9
+ createTransport,
10
+ hexToNumber,
11
+ withRetry,
12
+ withTimeout,
13
+ } from 'viem'
14
+
15
+ import type { Connector, Transport } from '../createConfig.js'
16
+
17
+ export type ConnectorTransportConfig = {
18
+ /** The key of the transport. */
19
+ key?: TransportConfig['key'] | undefined
20
+ /** The name of the transport. */
21
+ name?: TransportConfig['name'] | undefined
22
+ /** The max number of times to retry. */
23
+ retryCount?: TransportConfig['retryCount'] | undefined
24
+ /** The base delay (in ms) between retries. */
25
+ retryDelay?: TransportConfig['retryDelay'] | undefined
26
+ }
27
+
28
+ export type ConnectorTransport = Transport
29
+
30
+ export function unstable_connector(
31
+ connector: Pick<Connector, 'type'>,
32
+ config: ConnectorTransportConfig = {},
33
+ ): Transport {
34
+ const { type } = connector
35
+ const { key = 'connector', name = 'Connector', retryDelay } = config
36
+
37
+ return (parameters) => {
38
+ const { chain, connectors } = parameters
39
+ const retryCount = config.retryCount ?? parameters.retryCount
40
+
41
+ const request: EIP1193RequestFn = async ({ method, params }) => {
42
+ const connector = connectors?.getState().find((c) => c.type === type)
43
+ if (!connector)
44
+ throw new ProviderDisconnectedError(
45
+ new Error(
46
+ `Could not find connector of type "${type}" in \`connectors\` passed to \`createConfig\`.`,
47
+ ),
48
+ )
49
+
50
+ const provider = (await connector.getProvider({
51
+ chainId: chain?.id,
52
+ })) as EIP1193Provider | undefined
53
+ if (!provider)
54
+ throw new ProviderDisconnectedError(
55
+ new Error('Provider is disconnected.'),
56
+ )
57
+
58
+ // We are applying a retry & timeout strategy here as some injected wallets (ie. MetaMask) fail to
59
+ // immediately resolve a JSON-RPC request on page load.
60
+ const chainId = hexToNumber(
61
+ await withRetry(() =>
62
+ withTimeout(() => provider.request({ method: 'eth_chainId' }), {
63
+ timeout: 100,
64
+ }),
65
+ ),
66
+ )
67
+ if (chain && chainId !== chain.id)
68
+ throw new ChainDisconnectedError(
69
+ new Error(
70
+ `The current chain of the connector (id: ${chainId}) does not match the target chain for the request (id: ${chain.id} – ${chain.name}).`,
71
+ ),
72
+ )
73
+
74
+ const body = { method, params } as EIP1193Parameters<WalletRpcSchema>
75
+ return provider.request(body)
76
+ }
77
+
78
+ return createTransport({
79
+ key,
80
+ name,
81
+ request,
82
+ retryCount,
83
+ retryDelay,
84
+ type: 'connector',
85
+ })
86
+ }
87
+ }
@@ -0,0 +1,10 @@
1
+ import { fallback as viem_fallback } from 'viem'
2
+
3
+ import { type Transport } from '../createConfig.js'
4
+
5
+ export function fallback(
6
+ transports: Transport[],
7
+ config?: Parameters<typeof viem_fallback>[1],
8
+ ) {
9
+ return viem_fallback(transports, config)
10
+ }
@@ -16,6 +16,8 @@ export type ConnectorParameter = {
16
16
  connector?: Connector | undefined
17
17
  }
18
18
 
19
+ export type ScopeKeyParameter = { scopeKey?: string | undefined }
20
+
19
21
  export type SyncConnectedChainParameter = {
20
22
  syncConnectedChain?: boolean | undefined
21
23
  }
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.0.0-beta.1'
1
+ export const version = '2.0.0-beta.10'