@wagmi/core 2.3.1 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/dist/esm/actions/call.js +3 -1
  2. package/dist/esm/actions/call.js.map +1 -1
  3. package/dist/esm/actions/estimateFeesPerGas.js +6 -1
  4. package/dist/esm/actions/estimateFeesPerGas.js.map +1 -1
  5. package/dist/esm/actions/estimateGas.js +3 -4
  6. package/dist/esm/actions/estimateGas.js.map +1 -1
  7. package/dist/esm/actions/estimateMaxPriorityFeePerGas.js +3 -1
  8. package/dist/esm/actions/estimateMaxPriorityFeePerGas.js.map +1 -1
  9. package/dist/esm/actions/getBalance.js +3 -1
  10. package/dist/esm/actions/getBalance.js.map +1 -1
  11. package/dist/esm/actions/getBlock.js +3 -1
  12. package/dist/esm/actions/getBlock.js.map +1 -1
  13. package/dist/esm/actions/getBlockNumber.js +3 -1
  14. package/dist/esm/actions/getBlockNumber.js.map +1 -1
  15. package/dist/esm/actions/getBlockTransactionCount.js +3 -1
  16. package/dist/esm/actions/getBlockTransactionCount.js.map +1 -1
  17. package/dist/esm/actions/getBytecode.js +3 -1
  18. package/dist/esm/actions/getBytecode.js.map +1 -1
  19. package/dist/esm/actions/getEnsAddress.js +3 -1
  20. package/dist/esm/actions/getEnsAddress.js.map +1 -1
  21. package/dist/esm/actions/getEnsAvatar.js +3 -1
  22. package/dist/esm/actions/getEnsAvatar.js.map +1 -1
  23. package/dist/esm/actions/getEnsName.js +3 -1
  24. package/dist/esm/actions/getEnsName.js.map +1 -1
  25. package/dist/esm/actions/getEnsResolver.js +3 -1
  26. package/dist/esm/actions/getEnsResolver.js.map +1 -1
  27. package/dist/esm/actions/getEnsText.js +3 -1
  28. package/dist/esm/actions/getEnsText.js.map +1 -1
  29. package/dist/esm/actions/getFeeHistory.js +3 -1
  30. package/dist/esm/actions/getFeeHistory.js.map +1 -1
  31. package/dist/esm/actions/getGasPrice.js +3 -1
  32. package/dist/esm/actions/getGasPrice.js.map +1 -1
  33. package/dist/esm/actions/getProof.js +3 -1
  34. package/dist/esm/actions/getProof.js.map +1 -1
  35. package/dist/esm/actions/getStorageAt.js +3 -1
  36. package/dist/esm/actions/getStorageAt.js.map +1 -1
  37. package/dist/esm/actions/getTransaction.js +3 -1
  38. package/dist/esm/actions/getTransaction.js.map +1 -1
  39. package/dist/esm/actions/getTransactionConfirmations.js +14 -0
  40. package/dist/esm/actions/getTransactionConfirmations.js.map +1 -0
  41. package/dist/esm/actions/getTransactionCount.js +3 -1
  42. package/dist/esm/actions/getTransactionCount.js.map +1 -1
  43. package/dist/esm/actions/getTransactionReceipt.js +3 -1
  44. package/dist/esm/actions/getTransactionReceipt.js.map +1 -1
  45. package/dist/esm/actions/multicall.js +3 -1
  46. package/dist/esm/actions/multicall.js.map +1 -1
  47. package/dist/esm/actions/prepareTransactionRequest.js +20 -0
  48. package/dist/esm/actions/prepareTransactionRequest.js.map +1 -0
  49. package/dist/esm/actions/readContract.js +3 -1
  50. package/dist/esm/actions/readContract.js.map +1 -1
  51. package/dist/esm/actions/sendTransaction.js +7 -3
  52. package/dist/esm/actions/sendTransaction.js.map +1 -1
  53. package/dist/esm/actions/signMessage.js +3 -1
  54. package/dist/esm/actions/signMessage.js.map +1 -1
  55. package/dist/esm/actions/signTypedData.js +3 -1
  56. package/dist/esm/actions/signTypedData.js.map +1 -1
  57. package/dist/esm/actions/simulateContract.js +3 -5
  58. package/dist/esm/actions/simulateContract.js.map +1 -1
  59. package/dist/esm/actions/verifyMessage.js +3 -1
  60. package/dist/esm/actions/verifyMessage.js.map +1 -1
  61. package/dist/esm/actions/verifyTypedData.js +3 -1
  62. package/dist/esm/actions/verifyTypedData.js.map +1 -1
  63. package/dist/esm/actions/waitForTransactionReceipt.js +10 -10
  64. package/dist/esm/actions/waitForTransactionReceipt.js.map +1 -1
  65. package/dist/esm/actions/watchBlockNumber.js +3 -1
  66. package/dist/esm/actions/watchBlockNumber.js.map +1 -1
  67. package/dist/esm/actions/watchBlocks.js +3 -1
  68. package/dist/esm/actions/watchBlocks.js.map +1 -1
  69. package/dist/esm/actions/watchContractEvent.js +3 -1
  70. package/dist/esm/actions/watchContractEvent.js.map +1 -1
  71. package/dist/esm/actions/watchPendingTransactions.js +3 -1
  72. package/dist/esm/actions/watchPendingTransactions.js.map +1 -1
  73. package/dist/esm/actions/writeContract.js +3 -1
  74. package/dist/esm/actions/writeContract.js.map +1 -1
  75. package/dist/esm/exports/actions.js +2 -0
  76. package/dist/esm/exports/actions.js.map +1 -1
  77. package/dist/esm/exports/index.js +2 -0
  78. package/dist/esm/exports/index.js.map +1 -1
  79. package/dist/esm/exports/query.js +2 -0
  80. package/dist/esm/exports/query.js.map +1 -1
  81. package/dist/esm/query/getTransactionConfirmations.js +26 -0
  82. package/dist/esm/query/getTransactionConfirmations.js.map +1 -0
  83. package/dist/esm/query/prepareTransactionRequest.js +26 -0
  84. package/dist/esm/query/prepareTransactionRequest.js.map +1 -0
  85. package/dist/esm/query/simulateContract.js +1 -0
  86. package/dist/esm/query/simulateContract.js.map +1 -1
  87. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  88. package/dist/esm/utils/getAction.js +18 -0
  89. package/dist/esm/utils/getAction.js.map +1 -0
  90. package/dist/esm/version.js +1 -1
  91. package/dist/types/actions/call.d.ts.map +1 -1
  92. package/dist/types/actions/estimateFeesPerGas.d.ts.map +1 -1
  93. package/dist/types/actions/estimateGas.d.ts.map +1 -1
  94. package/dist/types/actions/estimateMaxPriorityFeePerGas.d.ts.map +1 -1
  95. package/dist/types/actions/getBalance.d.ts.map +1 -1
  96. package/dist/types/actions/getBlock.d.ts.map +1 -1
  97. package/dist/types/actions/getBlockNumber.d.ts.map +1 -1
  98. package/dist/types/actions/getBlockTransactionCount.d.ts.map +1 -1
  99. package/dist/types/actions/getBytecode.d.ts.map +1 -1
  100. package/dist/types/actions/getEnsAddress.d.ts.map +1 -1
  101. package/dist/types/actions/getEnsAvatar.d.ts.map +1 -1
  102. package/dist/types/actions/getEnsName.d.ts.map +1 -1
  103. package/dist/types/actions/getEnsResolver.d.ts.map +1 -1
  104. package/dist/types/actions/getEnsText.d.ts.map +1 -1
  105. package/dist/types/actions/getFeeHistory.d.ts.map +1 -1
  106. package/dist/types/actions/getGasPrice.d.ts.map +1 -1
  107. package/dist/types/actions/getProof.d.ts.map +1 -1
  108. package/dist/types/actions/getStorageAt.d.ts.map +1 -1
  109. package/dist/types/actions/getTransaction.d.ts.map +1 -1
  110. package/dist/types/actions/getTransactionConfirmations.d.ts +13 -0
  111. package/dist/types/actions/getTransactionConfirmations.d.ts.map +1 -0
  112. package/dist/types/actions/getTransactionCount.d.ts.map +1 -1
  113. package/dist/types/actions/getTransactionReceipt.d.ts.map +1 -1
  114. package/dist/types/actions/multicall.d.ts.map +1 -1
  115. package/dist/types/actions/prepareTransactionRequest.d.ts +19 -0
  116. package/dist/types/actions/prepareTransactionRequest.d.ts.map +1 -0
  117. package/dist/types/actions/readContract.d.ts.map +1 -1
  118. package/dist/types/actions/sendTransaction.d.ts.map +1 -1
  119. package/dist/types/actions/signMessage.d.ts.map +1 -1
  120. package/dist/types/actions/signTypedData.d.ts.map +1 -1
  121. package/dist/types/actions/simulateContract.d.ts.map +1 -1
  122. package/dist/types/actions/verifyMessage.d.ts.map +1 -1
  123. package/dist/types/actions/verifyTypedData.d.ts.map +1 -1
  124. package/dist/types/actions/waitForTransactionReceipt.d.ts +2 -2
  125. package/dist/types/actions/waitForTransactionReceipt.d.ts.map +1 -1
  126. package/dist/types/actions/watchBlockNumber.d.ts.map +1 -1
  127. package/dist/types/actions/watchBlocks.d.ts.map +1 -1
  128. package/dist/types/actions/watchContractEvent.d.ts.map +1 -1
  129. package/dist/types/actions/watchPendingTransactions.d.ts.map +1 -1
  130. package/dist/types/actions/writeContract.d.ts.map +1 -1
  131. package/dist/types/exports/actions.d.ts +2 -0
  132. package/dist/types/exports/actions.d.ts.map +1 -1
  133. package/dist/types/exports/index.d.ts +2 -0
  134. package/dist/types/exports/index.d.ts.map +1 -1
  135. package/dist/types/exports/query.d.ts +2 -0
  136. package/dist/types/exports/query.d.ts.map +1 -1
  137. package/dist/types/query/getTransactionConfirmations.d.ts +18 -0
  138. package/dist/types/query/getTransactionConfirmations.d.ts.map +1 -0
  139. package/dist/types/query/prepareTransactionRequest.d.ts +19 -0
  140. package/dist/types/query/prepareTransactionRequest.d.ts.map +1 -0
  141. package/dist/types/query/simulateContract.d.ts +1 -1
  142. package/dist/types/query/simulateContract.d.ts.map +1 -1
  143. package/dist/types/utils/getAction.d.ts +12 -0
  144. package/dist/types/utils/getAction.d.ts.map +1 -0
  145. package/dist/types/version.d.ts +1 -1
  146. package/package.json +1 -1
  147. package/src/actions/call.ts +3 -1
  148. package/src/actions/estimateFeesPerGas.ts +10 -2
  149. package/src/actions/estimateGas.ts +3 -4
  150. package/src/actions/estimateMaxPriorityFeePerGas.ts +7 -1
  151. package/src/actions/getBalance.ts +3 -2
  152. package/src/actions/getBlock.ts +3 -1
  153. package/src/actions/getBlockNumber.ts +3 -1
  154. package/src/actions/getBlockTransactionCount.ts +7 -1
  155. package/src/actions/getBytecode.ts +3 -1
  156. package/src/actions/getEnsAddress.ts +3 -1
  157. package/src/actions/getEnsAvatar.ts +3 -1
  158. package/src/actions/getEnsName.ts +3 -1
  159. package/src/actions/getEnsResolver.ts +3 -1
  160. package/src/actions/getEnsText.ts +3 -1
  161. package/src/actions/getFeeHistory.ts +3 -1
  162. package/src/actions/getGasPrice.ts +3 -1
  163. package/src/actions/getProof.ts +3 -1
  164. package/src/actions/getStorageAt.ts +3 -1
  165. package/src/actions/getTransaction.ts +3 -1
  166. package/src/actions/getTransactionConfirmations.ts +52 -0
  167. package/src/actions/getTransactionCount.ts +5 -2
  168. package/src/actions/getTransactionReceipt.ts +7 -1
  169. package/src/actions/multicall.ts +3 -1
  170. package/src/actions/prepareTransactionRequest.ts +111 -0
  171. package/src/actions/readContract.ts +3 -1
  172. package/src/actions/sendTransaction.ts +7 -3
  173. package/src/actions/signMessage.ts +3 -1
  174. package/src/actions/signTypedData.ts +3 -4
  175. package/src/actions/simulateContract.ts +3 -5
  176. package/src/actions/verifyMessage.ts +3 -1
  177. package/src/actions/verifyTypedData.ts +3 -1
  178. package/src/actions/waitForTransactionReceipt.ts +19 -16
  179. package/src/actions/watchBlockNumber.ts +3 -4
  180. package/src/actions/watchBlocks.ts +3 -1
  181. package/src/actions/watchContractEvent.ts +5 -2
  182. package/src/actions/watchPendingTransactions.ts +5 -2
  183. package/src/actions/writeContract.ts +3 -1
  184. package/src/exports/actions.ts +14 -0
  185. package/src/exports/index.ts +14 -0
  186. package/src/exports/query.ts +18 -0
  187. package/src/query/getTransactionConfirmations.ts +78 -0
  188. package/src/query/prepareTransactionRequest.ts +83 -0
  189. package/src/query/simulateContract.ts +5 -1
  190. package/src/utils/getAction.ts +38 -0
  191. package/src/version.ts +1 -1
@@ -0,0 +1,111 @@
1
+ import {
2
+ type Account,
3
+ type Address,
4
+ type Chain,
5
+ type PrepareTransactionRequestErrorType as viem_PrepareTransactionRequestErrorType,
6
+ type PrepareTransactionRequestParameterType as viem_PrepareTransactionRequestParameterType,
7
+ type PrepareTransactionRequestParameters as viem_PrepareTransactionRequestParameters,
8
+ type PrepareTransactionRequestReturnType as viem_PrepareTransactionRequestReturnType,
9
+ } from 'viem'
10
+ import { prepareTransactionRequest as viem_prepareTransactionRequest } from 'viem/actions'
11
+
12
+ import { type Config } from '../createConfig.js'
13
+ import { type SelectChains } from '../types/chain.js'
14
+ import {
15
+ type ChainIdParameter,
16
+ type ConnectorParameter,
17
+ } from '../types/properties.js'
18
+ import {
19
+ type Evaluate,
20
+ type IsNarrowable,
21
+ type UnionEvaluate,
22
+ type UnionOmit,
23
+ } from '../types/utils.js'
24
+ import { getAction } from '../utils/getAction.js'
25
+ import { getConnectorClient } from './getConnectorClient.js'
26
+
27
+ export type PrepareTransactionRequestParameters<
28
+ parameterType extends viem_PrepareTransactionRequestParameterType = viem_PrepareTransactionRequestParameterType,
29
+ config extends Config = Config,
30
+ chainId extends
31
+ | config['chains'][number]['id']
32
+ | undefined = config['chains'][number]['id'],
33
+ ///
34
+ chains extends readonly Chain[] = SelectChains<config, chainId>,
35
+ > = {
36
+ [key in keyof chains]: UnionEvaluate<
37
+ UnionOmit<
38
+ viem_PrepareTransactionRequestParameters<
39
+ chains[key],
40
+ Account,
41
+ chains[key],
42
+ Account | Address,
43
+ parameterType
44
+ >,
45
+ 'chain'
46
+ > &
47
+ ChainIdParameter<config, chainId> &
48
+ ConnectorParameter & {
49
+ to: Address
50
+ }
51
+ >
52
+ }[number]
53
+
54
+ export type PrepareTransactionRequestReturnType<
55
+ parameterType extends viem_PrepareTransactionRequestParameterType = viem_PrepareTransactionRequestParameterType,
56
+ config extends Config = Config,
57
+ chainId extends
58
+ | config['chains'][number]['id']
59
+ | undefined = config['chains'][number]['id'],
60
+ ///
61
+ chains extends readonly Chain[] = SelectChains<config, chainId>,
62
+ > = {
63
+ [key in keyof chains]: Evaluate<
64
+ viem_PrepareTransactionRequestReturnType<
65
+ IsNarrowable<chains[key], Chain> extends true ? chains[key] : undefined,
66
+ Account,
67
+ chains[key],
68
+ Account,
69
+ parameterType
70
+ >
71
+ > &
72
+ ConnectorParameter & {
73
+ chainId: chains[key]['id']
74
+ }
75
+ }[number]
76
+
77
+ export type PrepareTransactionRequestErrorType =
78
+ viem_PrepareTransactionRequestErrorType
79
+
80
+ /** https://wagmi.sh/core/api/actions/prepareTransactionRequest */
81
+ export async function prepareTransactionRequest<
82
+ config extends Config,
83
+ parameterType extends viem_PrepareTransactionRequestParameterType,
84
+ chainId extends config['chains'][number]['id'] | undefined,
85
+ >(
86
+ config: config,
87
+ parameters: PrepareTransactionRequestParameters<
88
+ parameterType,
89
+ config,
90
+ chainId
91
+ >,
92
+ ): Promise<
93
+ PrepareTransactionRequestReturnType<parameterType, config, chainId>
94
+ > {
95
+ const { account, chainId, connector, ...rest } = parameters
96
+ const client = await getConnectorClient(config, {
97
+ account,
98
+ chainId,
99
+ connector,
100
+ })
101
+ const action = getAction(
102
+ client,
103
+ viem_prepareTransactionRequest,
104
+ 'prepareTransactionRequest',
105
+ )
106
+ return action(
107
+ rest as unknown as viem_PrepareTransactionRequestParameters,
108
+ ) as unknown as Promise<
109
+ PrepareTransactionRequestReturnType<parameterType, config, chainId>
110
+ >
111
+ }
@@ -9,6 +9,7 @@ import {
9
9
 
10
10
  import { type Config } from '../createConfig.js'
11
11
  import { type ChainIdParameter } from '../types/properties.js'
12
+ import { getAction } from '../utils/getAction.js'
12
13
 
13
14
  export type ReadContractParameters<
14
15
  abi extends Abi | readonly unknown[] = Abi,
@@ -52,5 +53,6 @@ export function readContract<
52
53
  ): Promise<ReadContractReturnType<abi, functionName, args>> {
53
54
  const { chainId, ...rest } = parameters
54
55
  const client = config.getClient({ chainId })
55
- return viem_readContract(client, rest as any)
56
+ const action = getAction(client, viem_readContract, 'readContract')
57
+ return action(rest as any)
56
58
  }
@@ -20,6 +20,7 @@ import type {
20
20
  ConnectorParameter,
21
21
  } from '../types/properties.js'
22
22
  import { type Evaluate } from '../types/utils.js'
23
+ import { getAction } from '../utils/getAction.js'
23
24
  import {
24
25
  type GetConnectorClientErrorType,
25
26
  getConnectorClient,
@@ -78,17 +79,20 @@ export async function sendTransaction<
78
79
  if (gas_ === null) return undefined
79
80
 
80
81
  // Run gas estimation if no value is provided.
81
- if (gas_ === undefined)
82
- return viem_estimateGas(client, {
82
+ if (gas_ === undefined) {
83
+ const action = getAction(client, viem_estimateGas, 'estimateGas')
84
+ return action({
83
85
  ...(rest as any),
84
86
  chain: chainId ? { id: chainId } : null,
85
87
  })
88
+ }
86
89
 
87
90
  // Use provided gas value.
88
91
  return gas_
89
92
  })()
90
93
 
91
- const hash = await viem_sendTransaction(client, {
94
+ const action = getAction(client, viem_sendTransaction, 'sendTransaction')
95
+ const hash = await action({
92
96
  ...(rest as any),
93
97
  gas,
94
98
  chain: chainId ? { id: chainId } : null,
@@ -10,6 +10,7 @@ import { type Config } from '../createConfig.js'
10
10
  import type { BaseErrorType, ErrorType } from '../errors/base.js'
11
11
  import type { ConnectorParameter } from '../types/properties.js'
12
12
  import { type Evaluate } from '../types/utils.js'
13
+ import { getAction } from '../utils/getAction.js'
13
14
  import {
14
15
  type GetConnectorClientErrorType,
15
16
  getConnectorClient,
@@ -37,5 +38,6 @@ export async function signMessage(
37
38
  ): Promise<SignMessageReturnType> {
38
39
  const { account, connector, ...rest } = parameters
39
40
  const client = await getConnectorClient(config, { account, connector })
40
- return viem_signMessage(client, rest)
41
+ const action = getAction(client, viem_signMessage, 'signMessage')
42
+ return action(rest as viem_SignMessageParameters<Account>)
41
43
  }
@@ -10,6 +10,7 @@ import { type Config } from '../createConfig.js'
10
10
  import type { BaseErrorType, ErrorType } from '../errors/base.js'
11
11
  import type { ConnectorParameter } from '../types/properties.js'
12
12
  import type { UnionEvaluate } from '../types/utils.js'
13
+ import { getAction } from '../utils/getAction.js'
13
14
  import {
14
15
  type GetConnectorClientErrorType,
15
16
  getConnectorClient,
@@ -46,8 +47,6 @@ export async function signTypedData<
46
47
  ): Promise<SignTypedDataReturnType> {
47
48
  const { account, connector, ...rest } = parameters
48
49
  const client = await getConnectorClient(config, { account, connector })
49
- return viem_signTypedData(
50
- client,
51
- rest as unknown as viem_SignTypedDataParameters,
52
- )
50
+ const action = getAction(client, viem_signTypedData, 'signTypedData')
51
+ return action(rest as unknown as viem_SignTypedDataParameters)
53
52
  }
@@ -26,6 +26,7 @@ import type {
26
26
  UnionEvaluate,
27
27
  UnionOmit,
28
28
  } from '../types/utils.js'
29
+ import { getAction } from '../utils/getAction.js'
29
30
  import {
30
31
  type GetConnectorClientErrorType,
31
32
  getConnectorClient,
@@ -148,11 +149,8 @@ export async function simulateContract<
148
149
  }
149
150
 
150
151
  const client = config.getClient({ chainId })
151
- const { result, request } = await viem_simulateContract(client, {
152
- ...rest,
153
- abi,
154
- account,
155
- })
152
+ const action = getAction(client, viem_simulateContract, 'simulateContract')
153
+ const { result, request } = await action({ ...rest, abi, account })
156
154
 
157
155
  return {
158
156
  chainId: client.chain.id,
@@ -8,6 +8,7 @@ import {
8
8
  import { type Config } from '../createConfig.js'
9
9
  import { type ChainIdParameter } from '../types/properties.js'
10
10
  import { type Evaluate } from '../types/utils.js'
11
+ import { getAction } from '../utils/getAction.js'
11
12
 
12
13
  export type VerifyMessageParameters<config extends Config = Config> = Evaluate<
13
14
  viem_VerifyMessageParameters & ChainIdParameter<config>
@@ -24,5 +25,6 @@ export async function verifyMessage<config extends Config>(
24
25
  ): Promise<VerifyMessageReturnType> {
25
26
  const { chainId, ...rest } = parameters
26
27
  const client = config.getClient({ chainId })
27
- return viem_verifyMessage(client, rest)
28
+ const action = getAction(client, viem_verifyMessage, 'verifyMessage')
29
+ return action(rest)
28
30
  }
@@ -9,6 +9,7 @@ import {
9
9
  import { type Config } from '../createConfig.js'
10
10
  import { type ChainIdParameter } from '../types/properties.js'
11
11
  import { type Evaluate } from '../types/utils.js'
12
+ import { getAction } from '../utils/getAction.js'
12
13
 
13
14
  export type VerifyTypedDataParameters<
14
15
  typedData extends TypedData | Record<string, unknown> = TypedData,
@@ -34,5 +35,6 @@ export async function verifyTypedData<
34
35
  ): Promise<VerifyTypedDataReturnType> {
35
36
  const { chainId, ...rest } = parameters
36
37
  const client = config.getClient({ chainId })
37
- return viem_verifyTypedData(client, rest as viem_VerifyTypedDataParameters)
38
+ const action = getAction(client, viem_verifyTypedData, 'verifyTypedData')
39
+ return action(rest as viem_VerifyTypedDataParameters)
38
40
  }
@@ -1,4 +1,4 @@
1
- import type { CallParameters, Chain } from 'viem'
1
+ import { type Chain } from 'viem'
2
2
  import { hexToString } from 'viem'
3
3
  import {
4
4
  type WaitForTransactionReceiptErrorType as viem_WaitForTransactionReceiptErrorType,
@@ -10,9 +10,10 @@ import {
10
10
  } from 'viem/actions'
11
11
 
12
12
  import { type Config } from '../createConfig.js'
13
- import type { SelectChains } from '../types/chain.js'
13
+ import { type SelectChains } from '../types/chain.js'
14
14
  import { type ChainIdParameter } from '../types/properties.js'
15
15
  import { type Evaluate, type IsNarrowable } from '../types/utils.js'
16
+ import { getAction } from '../utils/getAction.js'
16
17
 
17
18
  export type WaitForTransactionReceiptParameters<
18
19
  config extends Config = Config,
@@ -47,29 +48,31 @@ export async function waitForTransactionReceipt<
47
48
  const { chainId, timeout = 0, ...rest } = parameters
48
49
 
49
50
  const client = config.getClient({ chainId })
50
- const receipt = await viem_waitForTransactionReceipt(client, {
51
- ...rest,
52
- timeout,
53
- })
51
+ const action = getAction(
52
+ client,
53
+ viem_waitForTransactionReceipt,
54
+ 'waitForTransactionReceipt',
55
+ )
56
+ const receipt = await action({ ...rest, timeout })
54
57
 
55
58
  if (receipt.status === 'reverted') {
56
- const txn = await getTransaction(client, { hash: receipt.transactionHash })
57
- const code = (await call(client, {
59
+ const action_getTransaction = getAction(
60
+ client,
61
+ getTransaction,
62
+ 'getTransaction',
63
+ )
64
+ const txn = await action_getTransaction({ hash: receipt.transactionHash })
65
+ const action_call = getAction(client, call, 'call')
66
+ const code = (await action_call({
58
67
  ...txn,
59
68
  gasPrice: txn.type !== 'eip1559' ? txn.gasPrice : undefined,
60
69
  maxFeePerGas: txn.type === 'eip1559' ? txn.maxFeePerGas : undefined,
61
70
  maxPriorityFeePerGas:
62
71
  txn.type === 'eip1559' ? txn.maxPriorityFeePerGas : undefined,
63
- } as CallParameters)) as unknown as string
72
+ })) as unknown as string
64
73
  const reason = hexToString(`0x${code.substring(138)}`)
65
74
  throw new Error(reason)
66
75
  }
67
76
 
68
- return {
69
- ...(receipt as unknown as WaitForTransactionReceiptReturnType<
70
- config,
71
- chainId
72
- >),
73
- chainId: client.chain.id,
74
- }
77
+ return { ...receipt, chainId: client.chain.id }
75
78
  }
@@ -12,6 +12,7 @@ import type {
12
12
  SyncConnectedChainParameter,
13
13
  } from '../types/properties.js'
14
14
  import type { UnionEvaluate } from '../types/utils.js'
15
+ import { getAction } from '../utils/getAction.js'
15
16
 
16
17
  export type WatchBlockNumberParameters<
17
18
  config extends Config = Config,
@@ -51,10 +52,8 @@ export function watchBlockNumber<
51
52
  if (unwatch) unwatch()
52
53
 
53
54
  const client = config.getClient({ chainId })
54
- unwatch = viem_watchBlockNumber(
55
- client,
56
- rest as viem_WatchBlockNumberParameters,
57
- )
55
+ const action = getAction(client, viem_watchBlockNumber, 'watchBlockNumber')
56
+ unwatch = action(rest as viem_WatchBlockNumberParameters)
58
57
  return unwatch
59
58
  }
60
59
 
@@ -12,6 +12,7 @@ import type {
12
12
  SyncConnectedChainParameter,
13
13
  } from '../types/properties.js'
14
14
  import type { IsNarrowable, UnionEvaluate } from '../types/utils.js'
15
+ import { getAction } from '../utils/getAction.js'
15
16
 
16
17
  export type WatchBlocksParameters<
17
18
  includeTransactions extends boolean = false,
@@ -63,7 +64,8 @@ export function watchBlocks<
63
64
  if (unwatch) unwatch()
64
65
 
65
66
  const client = config.getClient({ chainId })
66
- unwatch = viem_watchBlocks(client, rest as viem_WatchBlocksParameters)
67
+ const action = getAction(client, viem_watchBlocks, 'watchBlocks')
68
+ unwatch = action(rest as viem_WatchBlocksParameters)
67
69
  return unwatch
68
70
  }
69
71
 
@@ -18,6 +18,7 @@ import {
18
18
  type SyncConnectedChainParameter,
19
19
  } from '../types/properties.js'
20
20
  import { type UnionEvaluate } from '../types/utils.js'
21
+ import { getAction } from '../utils/getAction.js'
21
22
 
22
23
  export type WatchContractEventParameters<
23
24
  abi extends Abi | readonly unknown[] = Abi,
@@ -72,10 +73,12 @@ export function watchContractEvent<
72
73
  if (unwatch) unwatch()
73
74
 
74
75
  const client = config.getClient({ chainId })
75
- unwatch = viem_watchContractEvent(
76
+ const action = getAction(
76
77
  client,
77
- rest as unknown as viem_WatchContractEventParameters,
78
+ viem_watchContractEvent,
79
+ 'watchContractEvent',
78
80
  )
81
+ unwatch = action(rest as unknown as viem_WatchContractEventParameters)
79
82
  return unwatch
80
83
  }
81
84
 
@@ -12,6 +12,7 @@ import type {
12
12
  SyncConnectedChainParameter,
13
13
  } from '../types/properties.js'
14
14
  import type { UnionEvaluate } from '../types/utils.js'
15
+ import { getAction } from '../utils/getAction.js'
15
16
 
16
17
  export type WatchPendingTransactionsParameters<
17
18
  config extends Config = Config,
@@ -52,10 +53,12 @@ export function watchPendingTransactions<
52
53
  if (unwatch) unwatch()
53
54
 
54
55
  const client = config.getClient({ chainId })
55
- unwatch = viem_watchPendingTransactions(
56
+ const action = getAction(
56
57
  client,
57
- rest as viem_WatchPendingTransactionsParameters,
58
+ viem_watchPendingTransactions,
59
+ 'watchPendingTransactions',
58
60
  )
61
+ unwatch = action(rest as viem_WatchPendingTransactionsParameters)
59
62
  return unwatch
60
63
  }
61
64
 
@@ -20,6 +20,7 @@ import {
20
20
  type ConnectorParameter,
21
21
  } from '../types/properties.js'
22
22
  import type { Evaluate, UnionEvaluate, UnionOmit } from '../types/utils.js'
23
+ import { getAction } from '../utils/getAction.js'
23
24
  import {
24
25
  type GetConnectorClientErrorType,
25
26
  getConnectorClient,
@@ -110,7 +111,8 @@ export async function writeContract<
110
111
  request = simulateRequest
111
112
  }
112
113
 
113
- const hash = await viem_writeContract(client, {
114
+ const action = getAction(client, viem_writeContract, 'writeContract')
115
+ const hash = await action({
114
116
  ...(request as any),
115
117
  chain: chainId ? { id: chainId } : null,
116
118
  })
@@ -211,6 +211,13 @@ export {
211
211
  getTransaction as fetchTransaction,
212
212
  } from '../actions/getTransaction.js'
213
213
 
214
+ export {
215
+ type GetTransactionConfirmationsErrorType,
216
+ type GetTransactionConfirmationsParameters,
217
+ type GetTransactionConfirmationsReturnType,
218
+ getTransactionConfirmations,
219
+ } from '../actions/getTransactionConfirmations.js'
220
+
214
221
  export {
215
222
  type GetTransactionCountErrorType,
216
223
  type GetTransactionCountParameters,
@@ -238,6 +245,13 @@ export {
238
245
  multicall,
239
246
  } from '../actions/multicall.js'
240
247
 
248
+ export {
249
+ type PrepareTransactionRequestParameters,
250
+ type PrepareTransactionRequestReturnType,
251
+ type PrepareTransactionRequestErrorType,
252
+ prepareTransactionRequest,
253
+ } from '../actions/prepareTransactionRequest.js'
254
+
241
255
  export {
242
256
  type ReadContractParameters,
243
257
  type ReadContractReturnType,
@@ -211,6 +211,13 @@ export {
211
211
  getTransaction as fetchTransaction,
212
212
  } from '../actions/getTransaction.js'
213
213
 
214
+ export {
215
+ type GetTransactionConfirmationsErrorType,
216
+ type GetTransactionConfirmationsParameters,
217
+ type GetTransactionConfirmationsReturnType,
218
+ getTransactionConfirmations,
219
+ } from '../actions/getTransactionConfirmations.js'
220
+
214
221
  export {
215
222
  type GetTransactionCountErrorType,
216
223
  type GetTransactionCountParameters,
@@ -238,6 +245,13 @@ export {
238
245
  multicall,
239
246
  } from '../actions/multicall.js'
240
247
 
248
+ export {
249
+ type PrepareTransactionRequestErrorType,
250
+ type PrepareTransactionRequestParameters,
251
+ type PrepareTransactionRequestReturnType,
252
+ prepareTransactionRequest,
253
+ } from '../actions/prepareTransactionRequest.js'
254
+
241
255
  export {
242
256
  type ReadContractParameters,
243
257
  type ReadContractReturnType,
@@ -207,6 +207,15 @@ export {
207
207
  getTransactionQueryOptions,
208
208
  } from '../query/getTransaction.js'
209
209
 
210
+ export {
211
+ type GetTransactionConfirmationsData,
212
+ type GetTransactionConfirmationsOptions,
213
+ type GetTransactionConfirmationsQueryFnData,
214
+ type GetTransactionConfirmationsQueryKey,
215
+ getTransactionConfirmationsQueryKey,
216
+ getTransactionConfirmationsQueryOptions,
217
+ } from '../query/getTransactionConfirmations.js'
218
+
210
219
  export {
211
220
  type GetTransactionCountData,
212
221
  type GetTransactionCountOptions,
@@ -243,6 +252,15 @@ export {
243
252
  infiniteReadContractsQueryOptions,
244
253
  } from '../query/infiniteReadContracts.js'
245
254
 
255
+ export {
256
+ type PrepareTransactionRequestData,
257
+ type PrepareTransactionRequestOptions,
258
+ type PrepareTransactionRequestQueryFnData,
259
+ type PrepareTransactionRequestQueryKey,
260
+ prepareTransactionRequestQueryKey,
261
+ prepareTransactionRequestQueryOptions,
262
+ } from '../query/prepareTransactionRequest.js'
263
+
246
264
  export {
247
265
  type ReadContractData,
248
266
  type ReadContractOptions,
@@ -0,0 +1,78 @@
1
+ import { type QueryOptions } from '@tanstack/query-core'
2
+
3
+ import {
4
+ type GetTransactionConfirmationsErrorType,
5
+ type GetTransactionConfirmationsParameters,
6
+ type GetTransactionConfirmationsReturnType,
7
+ getTransactionConfirmations,
8
+ } from '../actions/getTransactionConfirmations.js'
9
+ import { type Config } from '../createConfig.js'
10
+ import { type ScopeKeyParameter } from '../types/properties.js'
11
+ import { type UnionPartial } from '../types/utils.js'
12
+ import { filterQueryOptions } from './utils.js'
13
+
14
+ export type GetTransactionConfirmationsOptions<
15
+ config extends Config,
16
+ chainId extends
17
+ | config['chains'][number]['id']
18
+ | undefined = config['chains'][number]['id'],
19
+ > = UnionPartial<GetTransactionConfirmationsParameters<config, chainId>> &
20
+ ScopeKeyParameter
21
+
22
+ export function getTransactionConfirmationsQueryOptions<
23
+ config extends Config,
24
+ chainId extends
25
+ | config['chains'][number]['id']
26
+ | undefined = config['chains'][number]['id'],
27
+ >(
28
+ config: config,
29
+ options: GetTransactionConfirmationsOptions<config, chainId> = {} as any,
30
+ ) {
31
+ return {
32
+ async queryFn({ queryKey }) {
33
+ const {
34
+ hash,
35
+ transactionReceipt,
36
+ scopeKey: _,
37
+ ...parameters
38
+ } = queryKey[1]
39
+ if (!hash && !transactionReceipt)
40
+ throw new Error('hash or transactionReceipt is required')
41
+
42
+ const confirmations = await getTransactionConfirmations(config, {
43
+ hash,
44
+ transactionReceipt,
45
+ ...(parameters as any),
46
+ })
47
+ return confirmations ?? null
48
+ },
49
+ queryKey: getTransactionConfirmationsQueryKey(options),
50
+ } as const satisfies QueryOptions<
51
+ GetTransactionConfirmationsQueryFnData,
52
+ GetTransactionConfirmationsErrorType,
53
+ GetTransactionConfirmationsData,
54
+ GetTransactionConfirmationsQueryKey<config, chainId>
55
+ >
56
+ }
57
+
58
+ export type GetTransactionConfirmationsQueryFnData =
59
+ GetTransactionConfirmationsReturnType
60
+
61
+ export type GetTransactionConfirmationsData =
62
+ GetTransactionConfirmationsQueryFnData
63
+
64
+ export function getTransactionConfirmationsQueryKey<
65
+ config extends Config,
66
+ chainId extends
67
+ | config['chains'][number]['id']
68
+ | undefined = config['chains'][number]['id'],
69
+ >(options: GetTransactionConfirmationsOptions<config, chainId> = {} as any) {
70
+ return ['transactionConfirmations', filterQueryOptions(options)] as const
71
+ }
72
+
73
+ export type GetTransactionConfirmationsQueryKey<
74
+ config extends Config,
75
+ chainId extends
76
+ | config['chains'][number]['id']
77
+ | undefined = config['chains'][number]['id'],
78
+ > = ReturnType<typeof getTransactionConfirmationsQueryKey<config, chainId>>
@@ -0,0 +1,83 @@
1
+ import { type QueryOptions } from '@tanstack/query-core'
2
+
3
+ import { type PrepareTransactionRequestParameterType as viem_PrepareTransactionRequestParameterType } from 'viem'
4
+
5
+ import {
6
+ type PrepareTransactionRequestErrorType,
7
+ type PrepareTransactionRequestParameters,
8
+ type PrepareTransactionRequestReturnType,
9
+ prepareTransactionRequest,
10
+ } from '../actions/prepareTransactionRequest.js'
11
+ import { type Config } from '../createConfig.js'
12
+ import { type ScopeKeyParameter } from '../types/properties.js'
13
+ import { type UnionPartial } from '../types/utils.js'
14
+ import { filterQueryOptions } from './utils.js'
15
+
16
+ export type PrepareTransactionRequestOptions<
17
+ parameterType extends viem_PrepareTransactionRequestParameterType,
18
+ config extends Config,
19
+ chainId extends config['chains'][number]['id'] | undefined,
20
+ > = UnionPartial<
21
+ PrepareTransactionRequestParameters<parameterType, config, chainId>
22
+ > &
23
+ ScopeKeyParameter
24
+
25
+ export function prepareTransactionRequestQueryOptions<
26
+ config extends Config,
27
+ parameterType extends viem_PrepareTransactionRequestParameterType,
28
+ chainId extends config['chains'][number]['id'] | undefined,
29
+ >(
30
+ config: config,
31
+ options: PrepareTransactionRequestOptions<
32
+ parameterType,
33
+ config,
34
+ chainId
35
+ > = {} as any,
36
+ ) {
37
+ return {
38
+ queryFn({ queryKey }) {
39
+ const { scopeKey: _, to, ...parameters } = queryKey[1]
40
+ if (!to) throw new Error('to is required')
41
+ return prepareTransactionRequest(config, {
42
+ to,
43
+ ...(parameters as any),
44
+ }) as unknown as Promise<
45
+ PrepareTransactionRequestQueryFnData<parameterType, config, chainId>
46
+ >
47
+ },
48
+ queryKey: prepareTransactionRequestQueryKey(options),
49
+ } as const satisfies QueryOptions<
50
+ PrepareTransactionRequestQueryFnData<parameterType, config, chainId>,
51
+ PrepareTransactionRequestErrorType,
52
+ PrepareTransactionRequestData<parameterType, config, chainId>,
53
+ PrepareTransactionRequestQueryKey<parameterType, config, chainId>
54
+ >
55
+ }
56
+ export type PrepareTransactionRequestQueryFnData<
57
+ parameterType extends viem_PrepareTransactionRequestParameterType,
58
+ config extends Config,
59
+ chainId extends config['chains'][number]['id'] | undefined,
60
+ > = PrepareTransactionRequestReturnType<parameterType, config, chainId>
61
+
62
+ export type PrepareTransactionRequestData<
63
+ parameterType extends viem_PrepareTransactionRequestParameterType,
64
+ config extends Config,
65
+ chainId extends config['chains'][number]['id'] | undefined,
66
+ > = PrepareTransactionRequestQueryFnData<parameterType, config, chainId>
67
+
68
+ export function prepareTransactionRequestQueryKey<
69
+ config extends Config,
70
+ parameterType extends viem_PrepareTransactionRequestParameterType,
71
+ chainId extends config['chains'][number]['id'] | undefined,
72
+ >(options: PrepareTransactionRequestOptions<parameterType, config, chainId>) {
73
+ const { connector: _c, ...rest } = options
74
+ return ['prepareTransactionRequest', filterQueryOptions(rest)] as const
75
+ }
76
+
77
+ export type PrepareTransactionRequestQueryKey<
78
+ parameterType extends viem_PrepareTransactionRequestParameterType,
79
+ config extends Config,
80
+ chainId extends config['chains'][number]['id'] | undefined,
81
+ > = ReturnType<
82
+ typeof prepareTransactionRequestQueryKey<config, parameterType, chainId>
83
+ >