@wagmi/core 2.5.0 → 2.6.1

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 (182) 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/getClient.js +6 -1
  20. package/dist/esm/actions/getClient.js.map +1 -1
  21. package/dist/esm/actions/getEnsAddress.js +3 -1
  22. package/dist/esm/actions/getEnsAddress.js.map +1 -1
  23. package/dist/esm/actions/getEnsAvatar.js +3 -1
  24. package/dist/esm/actions/getEnsAvatar.js.map +1 -1
  25. package/dist/esm/actions/getEnsName.js +3 -1
  26. package/dist/esm/actions/getEnsName.js.map +1 -1
  27. package/dist/esm/actions/getEnsResolver.js +3 -1
  28. package/dist/esm/actions/getEnsResolver.js.map +1 -1
  29. package/dist/esm/actions/getEnsText.js +3 -1
  30. package/dist/esm/actions/getEnsText.js.map +1 -1
  31. package/dist/esm/actions/getFeeHistory.js +3 -1
  32. package/dist/esm/actions/getFeeHistory.js.map +1 -1
  33. package/dist/esm/actions/getGasPrice.js +3 -1
  34. package/dist/esm/actions/getGasPrice.js.map +1 -1
  35. package/dist/esm/actions/getProof.js +3 -1
  36. package/dist/esm/actions/getProof.js.map +1 -1
  37. package/dist/esm/actions/getPublicClient.js +3 -2
  38. package/dist/esm/actions/getPublicClient.js.map +1 -1
  39. package/dist/esm/actions/getStorageAt.js +3 -1
  40. package/dist/esm/actions/getStorageAt.js.map +1 -1
  41. package/dist/esm/actions/getTransaction.js +3 -1
  42. package/dist/esm/actions/getTransaction.js.map +1 -1
  43. package/dist/esm/actions/getTransactionConfirmations.js +3 -1
  44. package/dist/esm/actions/getTransactionConfirmations.js.map +1 -1
  45. package/dist/esm/actions/getTransactionCount.js +3 -1
  46. package/dist/esm/actions/getTransactionCount.js.map +1 -1
  47. package/dist/esm/actions/getTransactionReceipt.js +3 -1
  48. package/dist/esm/actions/getTransactionReceipt.js.map +1 -1
  49. package/dist/esm/actions/multicall.js +3 -1
  50. package/dist/esm/actions/multicall.js.map +1 -1
  51. package/dist/esm/actions/prepareTransactionRequest.js +3 -1
  52. package/dist/esm/actions/prepareTransactionRequest.js.map +1 -1
  53. package/dist/esm/actions/readContract.js +3 -1
  54. package/dist/esm/actions/readContract.js.map +1 -1
  55. package/dist/esm/actions/sendTransaction.js +7 -3
  56. package/dist/esm/actions/sendTransaction.js.map +1 -1
  57. package/dist/esm/actions/signMessage.js +3 -1
  58. package/dist/esm/actions/signMessage.js.map +1 -1
  59. package/dist/esm/actions/signTypedData.js +3 -1
  60. package/dist/esm/actions/signTypedData.js.map +1 -1
  61. package/dist/esm/actions/simulateContract.js +3 -5
  62. package/dist/esm/actions/simulateContract.js.map +1 -1
  63. package/dist/esm/actions/verifyMessage.js +3 -1
  64. package/dist/esm/actions/verifyMessage.js.map +1 -1
  65. package/dist/esm/actions/verifyTypedData.js +3 -1
  66. package/dist/esm/actions/verifyTypedData.js.map +1 -1
  67. package/dist/esm/actions/waitForTransactionReceipt.js +10 -10
  68. package/dist/esm/actions/waitForTransactionReceipt.js.map +1 -1
  69. package/dist/esm/actions/watchBlockNumber.js +3 -1
  70. package/dist/esm/actions/watchBlockNumber.js.map +1 -1
  71. package/dist/esm/actions/watchBlocks.js +3 -1
  72. package/dist/esm/actions/watchBlocks.js.map +1 -1
  73. package/dist/esm/actions/watchContractEvent.js +3 -1
  74. package/dist/esm/actions/watchContractEvent.js.map +1 -1
  75. package/dist/esm/actions/watchPendingTransactions.js +3 -1
  76. package/dist/esm/actions/watchPendingTransactions.js.map +1 -1
  77. package/dist/esm/actions/writeContract.js +3 -1
  78. package/dist/esm/actions/writeContract.js.map +1 -1
  79. package/dist/esm/connectors/injected.js +6 -4
  80. package/dist/esm/connectors/injected.js.map +1 -1
  81. package/dist/esm/connectors/mock.js +4 -2
  82. package/dist/esm/connectors/mock.js.map +1 -1
  83. package/dist/esm/createConfig.js +9 -15
  84. package/dist/esm/createConfig.js.map +1 -1
  85. package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
  86. package/dist/esm/utils/getAction.js +18 -0
  87. package/dist/esm/utils/getAction.js.map +1 -0
  88. package/dist/esm/version.js +1 -1
  89. package/dist/types/actions/call.d.ts.map +1 -1
  90. package/dist/types/actions/estimateFeesPerGas.d.ts.map +1 -1
  91. package/dist/types/actions/estimateGas.d.ts.map +1 -1
  92. package/dist/types/actions/estimateMaxPriorityFeePerGas.d.ts.map +1 -1
  93. package/dist/types/actions/getBalance.d.ts.map +1 -1
  94. package/dist/types/actions/getBlock.d.ts.map +1 -1
  95. package/dist/types/actions/getBlockNumber.d.ts.map +1 -1
  96. package/dist/types/actions/getBlockTransactionCount.d.ts.map +1 -1
  97. package/dist/types/actions/getBytecode.d.ts.map +1 -1
  98. package/dist/types/actions/getClient.d.ts +6 -6
  99. package/dist/types/actions/getClient.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/getPublicClient.d.ts +6 -6
  109. package/dist/types/actions/getPublicClient.d.ts.map +1 -1
  110. package/dist/types/actions/getStorageAt.d.ts.map +1 -1
  111. package/dist/types/actions/getTransaction.d.ts.map +1 -1
  112. package/dist/types/actions/getTransactionConfirmations.d.ts.map +1 -1
  113. package/dist/types/actions/getTransactionCount.d.ts.map +1 -1
  114. package/dist/types/actions/getTransactionReceipt.d.ts.map +1 -1
  115. package/dist/types/actions/multicall.d.ts.map +1 -1
  116. package/dist/types/actions/prepareTransactionRequest.d.ts.map +1 -1
  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/connectors/injected.d.ts +1 -1
  132. package/dist/types/connectors/injected.d.ts.map +1 -1
  133. package/dist/types/connectors/mock.d.ts.map +1 -1
  134. package/dist/types/createConfig.d.ts.map +1 -1
  135. package/dist/types/utils/getAction.d.ts +12 -0
  136. package/dist/types/utils/getAction.d.ts.map +1 -0
  137. package/dist/types/version.d.ts +1 -1
  138. package/package.json +1 -1
  139. package/src/actions/call.ts +3 -1
  140. package/src/actions/estimateFeesPerGas.ts +10 -2
  141. package/src/actions/estimateGas.ts +3 -4
  142. package/src/actions/estimateMaxPriorityFeePerGas.ts +7 -1
  143. package/src/actions/getBalance.ts +3 -2
  144. package/src/actions/getBlock.ts +3 -1
  145. package/src/actions/getBlockNumber.ts +3 -1
  146. package/src/actions/getBlockTransactionCount.ts +7 -1
  147. package/src/actions/getBytecode.ts +3 -1
  148. package/src/actions/getClient.ts +33 -11
  149. package/src/actions/getEnsAddress.ts +3 -1
  150. package/src/actions/getEnsAvatar.ts +3 -1
  151. package/src/actions/getEnsName.ts +3 -1
  152. package/src/actions/getEnsResolver.ts +3 -1
  153. package/src/actions/getEnsText.ts +3 -1
  154. package/src/actions/getFeeHistory.ts +3 -1
  155. package/src/actions/getGasPrice.ts +3 -1
  156. package/src/actions/getProof.ts +3 -1
  157. package/src/actions/getPublicClient.ts +30 -12
  158. package/src/actions/getStorageAt.ts +3 -1
  159. package/src/actions/getTransaction.ts +3 -1
  160. package/src/actions/getTransactionConfirmations.ts +5 -2
  161. package/src/actions/getTransactionCount.ts +5 -2
  162. package/src/actions/getTransactionReceipt.ts +7 -1
  163. package/src/actions/multicall.ts +3 -1
  164. package/src/actions/prepareTransactionRequest.ts +6 -1
  165. package/src/actions/readContract.ts +3 -1
  166. package/src/actions/sendTransaction.ts +7 -3
  167. package/src/actions/signMessage.ts +3 -1
  168. package/src/actions/signTypedData.ts +3 -4
  169. package/src/actions/simulateContract.ts +3 -5
  170. package/src/actions/verifyMessage.ts +3 -1
  171. package/src/actions/verifyTypedData.ts +3 -1
  172. package/src/actions/waitForTransactionReceipt.ts +19 -16
  173. package/src/actions/watchBlockNumber.ts +3 -4
  174. package/src/actions/watchBlocks.ts +3 -1
  175. package/src/actions/watchContractEvent.ts +5 -2
  176. package/src/actions/watchPendingTransactions.ts +5 -2
  177. package/src/actions/writeContract.ts +3 -1
  178. package/src/connectors/injected.ts +9 -4
  179. package/src/connectors/mock.ts +5 -2
  180. package/src/createConfig.ts +9 -15
  181. package/src/utils/getAction.ts +38 -0
  182. package/src/version.ts +1 -1
@@ -7,6 +7,7 @@ import { call as viem_call } from 'viem/actions'
7
7
 
8
8
  import { type Config } from '../createConfig.js'
9
9
  import { type ChainIdParameter } from '../types/properties.js'
10
+ import { getAction } from '../utils/getAction.js'
10
11
 
11
12
  export type CallParameters<config extends Config = Config> =
12
13
  viem_CallParameters & ChainIdParameter<config>
@@ -21,5 +22,6 @@ export async function call<config extends Config,>(
21
22
  ): Promise<CallReturnType> {
22
23
  const { chainId, ...rest } = parameters
23
24
  const client = config.getClient({ chainId })
24
- return viem_call(client, rest)
25
+ const action = getAction(client, viem_call, 'call')
26
+ return action(rest)
25
27
  }
@@ -17,6 +17,7 @@ import { type ChainIdParameter } from '../types/properties.js'
17
17
  import { type Unit } from '../types/unit.js'
18
18
  import { type Evaluate } from '../types/utils.js'
19
19
  import type { UnionEvaluate, UnionLooseOmit } from '../types/utils.js'
20
+ import { getAction } from '../utils/getAction.js'
20
21
  import { getUnit } from '../utils/getUnit.js'
21
22
 
22
23
  export type EstimateFeesPerGasParameters<
@@ -57,9 +58,16 @@ export async function estimateFeesPerGas<
57
58
  const { chainId, formatUnits: units = 'gwei', ...rest } = parameters
58
59
 
59
60
  const client = config.getClient({ chainId })
61
+ const action = getAction(
62
+ client,
63
+ viem_estimateFeesPerGas,
64
+ 'estimateFeesPerGas',
65
+ )
60
66
 
61
- const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } =
62
- await viem_estimateFeesPerGas(client, rest)
67
+ const { gasPrice, maxFeePerGas, maxPriorityFeePerGas } = await action({
68
+ ...rest,
69
+ chain: client.chain,
70
+ })
63
71
 
64
72
  const unit = getUnit(units)
65
73
  const formatted = {
@@ -14,6 +14,7 @@ import type {
14
14
  ConnectorParameter,
15
15
  } from '../types/properties.js'
16
16
  import { type UnionEvaluate, type UnionLooseOmit } from '../types/utils.js'
17
+ import { getAction } from '../utils/getAction.js'
17
18
  import {
18
19
  type GetConnectorClientErrorType,
19
20
  getConnectorClient,
@@ -67,8 +68,6 @@ export async function estimateGas<
67
68
  }
68
69
 
69
70
  const client = config.getClient({ chainId })
70
- return viem_estimateGas(client, {
71
- ...(rest as viem_EstimateGasParameters),
72
- account,
73
- })
71
+ const action = getAction(client, viem_estimateGas, 'estimateGas')
72
+ return action({ ...(rest as viem_EstimateGasParameters), account })
74
73
  }
@@ -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, type UnionLooseOmit } from '../types/utils.js'
12
+ import { getAction } from '../utils/getAction.js'
12
13
 
13
14
  export type EstimateMaxPriorityFeePerGasParameters<
14
15
  config extends Config = Config,
@@ -37,5 +38,10 @@ export async function estimateMaxPriorityFeePerGas<
37
38
  ): Promise<EstimateMaxPriorityFeePerGasReturnType> {
38
39
  const { chainId } = parameters
39
40
  const client = config.getClient({ chainId })
40
- return viem_estimateMaxPriorityFeePerGas(client)
41
+ const action = getAction(
42
+ client,
43
+ viem_estimateMaxPriorityFeePerGas,
44
+ 'estimateMaxPriorityFeePerGas',
45
+ )
46
+ return action({ chain: client.chain })
41
47
  }
@@ -16,6 +16,7 @@ import { type Config } from '../createConfig.js'
16
16
  import { type ChainIdParameter } from '../types/properties.js'
17
17
  import { type Unit } from '../types/unit.js'
18
18
  import { type Evaluate } from '../types/utils.js'
19
+ import { getAction } from '../utils/getAction.js'
19
20
  import { getUnit } from '../utils/getUnit.js'
20
21
  import { readContracts } from './readContracts.js'
21
22
 
@@ -82,8 +83,8 @@ export async function getBalance<config extends Config>(
82
83
  }
83
84
 
84
85
  const client = config.getClient({ chainId })
85
- const value = await viem_getBalance(
86
- client,
86
+ const action = getAction(client, viem_getBalance, 'getBalance')
87
+ const value = await action(
87
88
  blockNumber ? { address, blockNumber } : { address, blockTag },
88
89
  )
89
90
  const chain = config.chains.find((x) => x.id === chainId) ?? client.chain!
@@ -10,6 +10,7 @@ import { type Config } from '../createConfig.js'
10
10
  import type { SelectChains } from '../types/chain.js'
11
11
  import { type ChainIdParameter } from '../types/properties.js'
12
12
  import { type Evaluate, type IsNarrowable } from '../types/utils.js'
13
+ import { getAction } from '../utils/getAction.js'
13
14
 
14
15
  export type GetBlockParameters<
15
16
  includeTransactions extends boolean = false,
@@ -58,7 +59,8 @@ export async function getBlock<
58
59
  ): Promise<GetBlockReturnType<includeTransactions, blockTag, config, chainId>> {
59
60
  const { chainId, ...rest } = parameters
60
61
  const client = config.getClient({ chainId })
61
- const block = await viem_getBlock(client, rest)
62
+ const action = getAction(client, viem_getBlock, 'getBlock')
63
+ const block = await action(rest)
62
64
  return {
63
65
  ...(block as GetBlockReturnType<
64
66
  includeTransactions,
@@ -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 GetBlockNumberParameters<
13
14
  config extends Config = Config,
@@ -28,5 +29,6 @@ export function getBlockNumber<
28
29
  ): Promise<GetBlockNumberReturnType> {
29
30
  const { chainId, ...rest } = parameters
30
31
  const client = config.getClient({ chainId })
31
- return viem_getBlockNumber(client, rest)
32
+ const action = getAction(client, viem_getBlockNumber, 'getBlockNumber')
33
+ return action(rest)
32
34
  }
@@ -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 UnionEvaluate } from '../types/utils.js'
11
+ import { getAction } from '../utils/getAction.js'
11
12
 
12
13
  export type GetBlockTransactionCountParameters<
13
14
  config extends Config = Config,
@@ -32,5 +33,10 @@ export function getBlockTransactionCount<
32
33
  ): Promise<GetBlockTransactionCountReturnType> {
33
34
  const { chainId, ...rest } = parameters
34
35
  const client = config.getClient({ chainId })
35
- return viem_getBlockTransactionCount(client, rest)
36
+ const action = getAction(
37
+ client,
38
+ viem_getBlockTransactionCount,
39
+ 'getBlockTransactionCount',
40
+ )
41
+ return action(rest)
36
42
  }
@@ -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 GetBytecodeParameters<config extends Config = Config> = Evaluate<
13
14
  viem_GetBytecodeParameters & ChainIdParameter<config>
@@ -24,5 +25,6 @@ export async function getBytecode<config extends Config>(
24
25
  ): Promise<GetBytecodeReturnType> {
25
26
  const { chainId, ...rest } = parameters
26
27
  const client = config.getClient({ chainId })
27
- return viem_getBytecode(client, rest)
28
+ const action = getAction(client, viem_getBytecode, 'getBytecode')
29
+ return action(rest)
28
30
  }
@@ -2,29 +2,51 @@ import { type Client } from 'viem'
2
2
 
3
3
  import { type Config } from '../createConfig.js'
4
4
  import { type ChainIdParameter } from '../types/properties.js'
5
- import { type Evaluate } from '../types/utils.js'
5
+ import { type Evaluate, type IsNarrowable } from '../types/utils.js'
6
6
 
7
7
  export type GetClientParameters<
8
8
  config extends Config = Config,
9
- chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
9
+ chainId extends
10
+ | config['chains'][number]['id']
11
+ | number
12
+ | undefined = config['chains'][number]['id'],
10
13
  > = ChainIdParameter<config, chainId>
11
14
 
12
15
  export type GetClientReturnType<
13
16
  config extends Config = Config,
14
- chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
15
- > = Evaluate<
16
- Client<
17
- config['_internal']['transports'][chainId],
18
- Extract<config['chains'][number], { id: chainId }>
19
- >
20
- >
17
+ chainId extends
18
+ | config['chains'][number]['id']
19
+ | undefined = config['chains'][number]['id'],
20
+ ///
21
+ resolvedChainId extends
22
+ | config['chains'][number]['id']
23
+ | undefined = IsNarrowable<
24
+ config['chains'][number]['id'],
25
+ number
26
+ > extends true
27
+ ? IsNarrowable<chainId, number> extends true
28
+ ? chainId
29
+ : config['chains'][number]['id']
30
+ : config['chains'][number]['id'] | undefined,
31
+ > = resolvedChainId extends config['chains'][number]['id']
32
+ ? Evaluate<
33
+ Client<
34
+ config['_internal']['transports'][resolvedChainId],
35
+ Extract<config['chains'][number], { id: resolvedChainId }>
36
+ >
37
+ >
38
+ : undefined
21
39
 
22
40
  export function getClient<
23
41
  config extends Config,
24
- chainId extends config['chains'][number]['id'],
42
+ chainId extends config['chains'][number]['id'] | number | undefined,
25
43
  >(
26
44
  config: config,
27
45
  parameters: GetClientParameters<config, chainId> = {},
28
46
  ): GetClientReturnType<config, chainId> {
29
- return config.getClient(parameters) as GetClientReturnType<config, chainId>
47
+ let client = undefined
48
+ try {
49
+ client = config.getClient(parameters)
50
+ } catch {}
51
+ return client as GetClientReturnType<config, chainId>
30
52
  }
@@ -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 GetEnsAddressParameters<config extends Config = Config> = Evaluate<
13
14
  viem_GetEnsAddressParameters & ChainIdParameter<config>
@@ -24,5 +25,6 @@ export function getEnsAddress<config extends Config>(
24
25
  ): Promise<GetEnsAddressReturnType> {
25
26
  const { chainId, ...rest } = parameters
26
27
  const client = config.getClient({ chainId })
27
- return viem_getEnsAddress(client, rest)
28
+ const action = getAction(client, viem_getEnsAddress, 'getEnsAddress')
29
+ return action(rest)
28
30
  }
@@ -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 GetEnsAvatarParameters<config extends Config = Config> = Evaluate<
13
14
  viem_GetEnsAvatarParameters & ChainIdParameter<config>
@@ -24,5 +25,6 @@ export function getEnsAvatar<config extends Config>(
24
25
  ): Promise<GetEnsAvatarReturnType> {
25
26
  const { chainId, ...rest } = parameters
26
27
  const client = config.getClient({ chainId })
27
- return viem_getEnsAvatar(client, rest)
28
+ const action = getAction(client, viem_getEnsAvatar, 'getEnsAvatar')
29
+ return action(rest)
28
30
  }
@@ -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 GetEnsNameParameters<config extends Config = Config> = Evaluate<
13
14
  viem_GetEnsNameParameters & ChainIdParameter<config>
@@ -24,5 +25,6 @@ export function getEnsName<config extends Config>(
24
25
  ): Promise<GetEnsNameReturnType> {
25
26
  const { chainId, ...rest } = parameters
26
27
  const client = config.getClient({ chainId })
27
- return viem_getEnsName(client, rest)
28
+ const action = getAction(client, viem_getEnsName, 'getEnsName')
29
+ return action(rest)
28
30
  }
@@ -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 GetEnsResolverParameters<config extends Config = Config> = Evaluate<
13
14
  viem_GetEnsResolverParameters & ChainIdParameter<config>
@@ -24,5 +25,6 @@ export function getEnsResolver<config extends Config>(
24
25
  ): Promise<GetEnsResolverReturnType> {
25
26
  const { chainId, ...rest } = parameters
26
27
  const client = config.getClient({ chainId })
27
- return viem_getEnsResolver(client, rest)
28
+ const action = getAction(client, viem_getEnsResolver, 'getEnsResolver')
29
+ return action(rest)
28
30
  }
@@ -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 GetEnsTextParameters<config extends Config = Config> = Evaluate<
13
14
  viem_GetEnsTextParameters & ChainIdParameter<config>
@@ -24,5 +25,6 @@ export function getEnsText<config extends Config>(
24
25
  ): Promise<GetEnsTextReturnType> {
25
26
  const { chainId, ...rest } = parameters
26
27
  const client = config.getClient({ chainId })
27
- return viem_getEnsText(client, rest)
28
+ const action = getAction(client, viem_getEnsText, 'getEnsText')
29
+ return action(rest)
28
30
  }
@@ -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 GetFeeHistoryParameters<
13
14
  config extends Config = Config,
@@ -28,5 +29,6 @@ export function getFeeHistory<
28
29
  ): Promise<GetFeeHistoryReturnType> {
29
30
  const { chainId, ...rest } = parameters
30
31
  const client = config.getClient({ chainId })
31
- return viem_getFeeHistory(client, rest)
32
+ const action = getAction(client, viem_getFeeHistory, 'getFeeHistory')
33
+ return action(rest)
32
34
  }
@@ -7,6 +7,7 @@ import {
7
7
  import { type Config } from '../createConfig.js'
8
8
  import { type ChainIdParameter } from '../types/properties.js'
9
9
  import { type Evaluate } from '../types/utils.js'
10
+ import { getAction } from '../utils/getAction.js'
10
11
 
11
12
  export type GetGasPriceParameters<
12
13
  config extends Config = Config,
@@ -27,5 +28,6 @@ export function getGasPrice<
27
28
  ): Promise<GetGasPriceReturnType> {
28
29
  const { chainId } = parameters
29
30
  const client = config.getClient({ chainId })
30
- return viem_getGasPrice(client)
31
+ const action = getAction(client, viem_getGasPrice, 'getGasPrice')
32
+ return action({})
31
33
  }
@@ -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 GetProofParameters<config extends Config = Config> = Evaluate<
13
14
  viem_GetProofParameters & ChainIdParameter<config>
@@ -24,5 +25,6 @@ export async function getProof<config extends Config>(
24
25
  ): Promise<GetProofReturnType> {
25
26
  const { chainId, ...rest } = parameters
26
27
  const client = config.getClient({ chainId })
27
- return viem_getProof(client, rest)
28
+ const action = getAction(client, viem_getProof, 'getProof')
29
+ return action(rest)
28
30
  }
@@ -2,32 +2,50 @@ import { type PublicClient, publicActions } from 'viem'
2
2
 
3
3
  import { type Config } from '../createConfig.js'
4
4
  import { type ChainIdParameter } from '../types/properties.js'
5
- import { type Evaluate } from '../types/utils.js'
5
+ import { type Evaluate, type IsNarrowable } from '../types/utils.js'
6
+ import { getClient } from './getClient.js'
6
7
 
7
8
  export type GetPublicClientParameters<
8
9
  config extends Config = Config,
9
- chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
10
+ chainId extends
11
+ | config['chains'][number]['id']
12
+ | undefined = config['chains'][number]['id'],
10
13
  > = ChainIdParameter<config, chainId>
11
14
 
12
15
  export type GetPublicClientReturnType<
13
16
  config extends Config = Config,
14
- chainId extends config['chains'][number]['id'] = config['chains'][number]['id'],
15
- > = Evaluate<
16
- PublicClient<
17
- config['_internal']['transports'][chainId],
18
- Extract<config['chains'][number], { id: chainId }>
19
- >
20
- >
17
+ chainId extends
18
+ | config['chains'][number]['id']
19
+ | undefined = config['chains'][number]['id'],
20
+ ///
21
+ resolvedChainId extends
22
+ | config['chains'][number]['id']
23
+ | undefined = IsNarrowable<
24
+ config['chains'][number]['id'],
25
+ number
26
+ > extends true
27
+ ? IsNarrowable<chainId, number> extends true
28
+ ? chainId
29
+ : config['chains'][number]['id']
30
+ : config['chains'][number]['id'] | undefined,
31
+ > = resolvedChainId extends config['chains'][number]['id']
32
+ ? Evaluate<
33
+ PublicClient<
34
+ config['_internal']['transports'][resolvedChainId],
35
+ Extract<config['chains'][number], { id: resolvedChainId }>
36
+ >
37
+ >
38
+ : undefined
21
39
 
22
40
  export function getPublicClient<
23
41
  config extends Config,
24
- chainId extends config['chains'][number]['id'],
42
+ chainId extends config['chains'][number]['id'] | number | undefined,
25
43
  >(
26
44
  config: config,
27
45
  parameters: GetPublicClientParameters<config, chainId> = {},
28
46
  ): GetPublicClientReturnType<config, chainId> {
29
- const client = config.getClient(parameters)
30
- return client.extend(publicActions) as GetPublicClientReturnType<
47
+ const client = getClient(config, parameters)
48
+ return client?.extend(publicActions) as GetPublicClientReturnType<
31
49
  config,
32
50
  chainId
33
51
  >
@@ -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 GetStorageAtParameters<config extends Config = Config> = Evaluate<
13
14
  viem_GetStorageAtParameters & ChainIdParameter<config>
@@ -24,5 +25,6 @@ export async function getStorageAt<config extends Config>(
24
25
  ): Promise<GetStorageAtReturnType> {
25
26
  const { chainId, ...rest } = parameters
26
27
  const client = config.getClient({ chainId })
27
- return viem_getStorageAt(client, rest)
28
+ const action = getAction(client, viem_getStorageAt, 'getStorageAt')
29
+ return action(rest)
28
30
  }
@@ -10,6 +10,7 @@ import { type Config } from '../createConfig.js'
10
10
  import type { SelectChains } from '../types/chain.js'
11
11
  import { type ChainIdParameter } from '../types/properties.js'
12
12
  import { type Evaluate, type IsNarrowable } from '../types/utils.js'
13
+ import { getAction } from '../utils/getAction.js'
13
14
 
14
15
  export type GetTransactionParameters<
15
16
  config extends Config = Config,
@@ -41,7 +42,8 @@ export function getTransaction<
41
42
  ): Promise<GetTransactionReturnType<config, chainId>> {
42
43
  const { chainId, ...rest } = parameters
43
44
  const client = config.getClient({ chainId })
44
- return viem_getTransaction(client, rest) as unknown as Promise<
45
+ const action = getAction(client, viem_getTransaction, 'getTransaction')
46
+ return action(rest) as unknown as Promise<
45
47
  GetTransactionReturnType<config, chainId>
46
48
  >
47
49
  }
@@ -9,6 +9,7 @@ import {
9
9
  import { type Config } from '../createConfig.js'
10
10
  import { type SelectChains } from '../types/chain.js'
11
11
  import { type ChainIdParameter } from '../types/properties.js'
12
+ import { getAction } from '../utils/getAction.js'
12
13
 
13
14
  export type GetTransactionConfirmationsParameters<
14
15
  config extends Config = Config,
@@ -42,8 +43,10 @@ export function getTransactionConfirmations<
42
43
  ): Promise<GetTransactionConfirmationsReturnType> {
43
44
  const { chainId, ...rest } = parameters
44
45
  const client = config.getClient({ chainId })
45
- return viem_getTransactionConfirmations(
46
+ const action = getAction(
46
47
  client,
47
- rest as viem_GetTransactionConfirmationsParameters,
48
+ viem_getTransactionConfirmations,
49
+ 'getTransactionConfirmations',
48
50
  )
51
+ return action(rest as viem_GetTransactionConfirmationsParameters)
49
52
  }
@@ -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 GetTransactionCountParameters<config extends Config = Config> =
13
14
  Evaluate<ChainIdParameter<config> & viem_GetTransactionCountParameters>
@@ -24,8 +25,10 @@ export async function getTransactionCount<config extends Config>(
24
25
  const { address, blockNumber, blockTag, chainId } = parameters
25
26
 
26
27
  const client = config.getClient({ chainId })
27
- return viem_getTransactionCount(
28
+ const action = getAction(
28
29
  client,
29
- blockNumber ? { address, blockNumber } : { address, blockTag },
30
+ viem_getTransactionCount,
31
+ 'getTransactionCount',
30
32
  )
33
+ return action(blockNumber ? { address, blockNumber } : { address, blockTag })
31
34
  }
@@ -10,6 +10,7 @@ import { type Config } from '../createConfig.js'
10
10
  import { type SelectChains } from '../types/chain.js'
11
11
  import { type ChainIdParameter } from '../types/properties.js'
12
12
  import { type Evaluate, type IsNarrowable } from '../types/utils.js'
13
+ import { getAction } from '../utils/getAction.js'
13
14
 
14
15
  export type GetTransactionReceiptParameters<
15
16
  config extends Config = Config,
@@ -43,5 +44,10 @@ export async function getTransactionReceipt<
43
44
  ): Promise<GetTransactionReceiptReturnType<config, chainId>> {
44
45
  const { chainId, ...rest } = parameters
45
46
  const client = config.getClient({ chainId })
46
- return viem_getTransactionReceipt(client, rest)
47
+ const action = getAction(
48
+ client,
49
+ viem_getTransactionReceipt,
50
+ 'getTransactionReceipt',
51
+ )
52
+ return action(rest)
47
53
  }
@@ -8,6 +8,7 @@ import { multicall as viem_multicall } from 'viem/actions'
8
8
 
9
9
  import { type Config } from '../createConfig.js'
10
10
  import { type ChainIdParameter } from '../types/properties.js'
11
+ import { getAction } from '../utils/getAction.js'
11
12
 
12
13
  export type MulticallParameters<
13
14
  contracts extends readonly unknown[] = readonly ContractFunctionParameters[],
@@ -32,7 +33,8 @@ export async function multicall<
32
33
  ): Promise<MulticallReturnType<contracts, allowFailure>> {
33
34
  const { allowFailure = true, chainId, contracts, ...rest } = parameters
34
35
  const client = config.getClient({ chainId })
35
- return viem_multicall(client, {
36
+ const action = getAction(client, viem_multicall, 'multicall')
37
+ return action({
36
38
  allowFailure,
37
39
  contracts,
38
40
  ...rest,
@@ -21,6 +21,7 @@ import {
21
21
  type UnionEvaluate,
22
22
  type UnionOmit,
23
23
  } from '../types/utils.js'
24
+ import { getAction } from '../utils/getAction.js'
24
25
  import { getConnectorClient } from './getConnectorClient.js'
25
26
 
26
27
  export type PrepareTransactionRequestParameters<
@@ -97,8 +98,12 @@ export async function prepareTransactionRequest<
97
98
  chainId,
98
99
  connector,
99
100
  })
100
- return viem_prepareTransactionRequest(
101
+ const action = getAction(
101
102
  client,
103
+ viem_prepareTransactionRequest,
104
+ 'prepareTransactionRequest',
105
+ )
106
+ return action(
102
107
  rest as unknown as viem_PrepareTransactionRequestParameters,
103
108
  ) as unknown as Promise<
104
109
  PrepareTransactionRequestReturnType<parameterType, config, chainId>
@@ -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
  }