viem 2.14.0 → 2.14.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/_cjs/actions/index.js +5 -4
  3. package/_cjs/actions/index.js.map +1 -1
  4. package/_cjs/actions/public/call.js +33 -12
  5. package/_cjs/actions/public/call.js.map +1 -1
  6. package/_cjs/actions/public/{getBytecode.js → getCode.js} +4 -4
  7. package/_cjs/actions/public/getCode.js.map +1 -0
  8. package/_cjs/actions/public/readContract.js.map +1 -1
  9. package/_cjs/actions/public/simulateContract.js.map +1 -1
  10. package/_cjs/actions/wallet/writeContract.js.map +1 -1
  11. package/_cjs/chains/definitions/mode.js +15 -0
  12. package/_cjs/chains/definitions/mode.js.map +1 -1
  13. package/_cjs/clients/decorators/public.js +3 -2
  14. package/_cjs/clients/decorators/public.js.map +1 -1
  15. package/_cjs/constants/contracts.js +3 -2
  16. package/_cjs/constants/contracts.js.map +1 -1
  17. package/_cjs/errors/contract.js +1 -1
  18. package/_cjs/errors/contract.js.map +1 -1
  19. package/_cjs/errors/version.js +1 -1
  20. package/_cjs/index.js.map +1 -1
  21. package/_esm/actions/index.js +3 -1
  22. package/_esm/actions/index.js.map +1 -1
  23. package/_esm/actions/public/call.js +36 -17
  24. package/_esm/actions/public/call.js.map +1 -1
  25. package/_esm/actions/public/{getBytecode.js → getCode.js} +7 -7
  26. package/_esm/actions/public/getCode.js.map +1 -0
  27. package/_esm/actions/public/readContract.js.map +1 -1
  28. package/_esm/actions/public/simulateContract.js.map +1 -1
  29. package/_esm/actions/wallet/writeContract.js.map +1 -1
  30. package/_esm/chains/definitions/mode.js +15 -0
  31. package/_esm/chains/definitions/mode.js.map +1 -1
  32. package/_esm/clients/decorators/public.js +3 -2
  33. package/_esm/clients/decorators/public.js.map +1 -1
  34. package/_esm/constants/contracts.js +2 -1
  35. package/_esm/constants/contracts.js.map +1 -1
  36. package/_esm/errors/contract.js +1 -1
  37. package/_esm/errors/contract.js.map +1 -1
  38. package/_esm/errors/version.js +1 -1
  39. package/_esm/index.js.map +1 -1
  40. package/_types/actions/index.d.ts +9 -1
  41. package/_types/actions/index.d.ts.map +1 -1
  42. package/_types/actions/public/call.d.ts +8 -2
  43. package/_types/actions/public/call.d.ts.map +1 -1
  44. package/_types/actions/public/{getBytecode.d.ts → getCode.d.ts} +10 -10
  45. package/_types/actions/public/getCode.d.ts.map +1 -0
  46. package/_types/actions/public/readContract.d.ts +1 -1
  47. package/_types/actions/public/readContract.d.ts.map +1 -1
  48. package/_types/actions/public/simulateContract.d.ts +1 -1
  49. package/_types/actions/public/simulateContract.d.ts.map +1 -1
  50. package/_types/actions/wallet/writeContract.d.ts +1 -1
  51. package/_types/actions/wallet/writeContract.d.ts.map +1 -1
  52. package/_types/chains/definitions/mode.d.ts +15 -0
  53. package/_types/chains/definitions/mode.d.ts.map +1 -1
  54. package/_types/clients/decorators/public.d.ts +19 -17
  55. package/_types/clients/decorators/public.d.ts.map +1 -1
  56. package/_types/constants/contracts.d.ts +2 -1
  57. package/_types/constants/contracts.d.ts.map +1 -1
  58. package/_types/errors/contract.d.ts +1 -1
  59. package/_types/errors/contract.d.ts.map +1 -1
  60. package/_types/errors/version.d.ts +1 -1
  61. package/_types/index.d.ts +8 -2
  62. package/_types/index.d.ts.map +1 -1
  63. package/_types/types/contract.d.ts +6 -2
  64. package/_types/types/contract.d.ts.map +1 -1
  65. package/actions/index.ts +14 -6
  66. package/actions/public/call.ts +61 -18
  67. package/actions/public/{getBytecode.ts → getCode.ts} +11 -11
  68. package/actions/public/readContract.ts +2 -2
  69. package/actions/public/simulateContract.ts +8 -1
  70. package/actions/wallet/writeContract.ts +1 -0
  71. package/chains/definitions/mode.ts +15 -0
  72. package/clients/decorators/public.ts +25 -22
  73. package/constants/contracts.ts +4 -1
  74. package/errors/contract.ts +4 -2
  75. package/errors/version.ts +1 -1
  76. package/index.ts +12 -4
  77. package/package.json +1 -1
  78. package/types/contract.ts +5 -2
  79. package/_cjs/actions/public/getBytecode.js.map +0 -1
  80. package/_esm/actions/public/getBytecode.js.map +0 -1
  81. package/_types/actions/public/getBytecode.d.ts.map +0 -1
@@ -9,7 +9,10 @@ import type { Client } from '../../clients/createClient.js'
9
9
  import type { Transport } from '../../clients/transports/createTransport.js'
10
10
  import { multicall3Abi } from '../../constants/abis.js'
11
11
  import { aggregate3Signature } from '../../constants/contract.js'
12
- import { counterfactualContractCallByteCode } from '../../constants/contracts.js'
12
+ import {
13
+ deploylessCallViaBytecodeBytecode,
14
+ deploylessCallViaFactoryBytecode,
15
+ } from '../../constants/contracts.js'
13
16
  import { BaseError } from '../../errors/base.js'
14
17
  import {
15
18
  ChainDoesNotSupportContract,
@@ -76,12 +79,17 @@ import type {
76
79
  export type CallParameters<
77
80
  TChain extends Chain | undefined = Chain | undefined,
78
81
  > = UnionOmit<FormattedCall<TChain>, 'from'> & {
82
+ /** Account attached to the call (msg.sender). */
79
83
  account?: Account | Address | undefined
84
+ /** Whether or not to enable multicall batching on this call. */
80
85
  batch?: boolean | undefined
86
+ /** Bytecode to perform the call on. */
87
+ code?: Hex | undefined
81
88
  /** Contract deployment factory address (ie. Create2 factory, Smart Account factory, etc). */
82
89
  factory?: Address | undefined
83
90
  /** Calldata to execute on the factory to deploy the contract. */
84
91
  factoryData?: Hex | undefined
92
+ /** State overrides for the call. */
85
93
  stateOverride?: StateOverride | undefined
86
94
  } & (
87
95
  | {
@@ -111,7 +119,8 @@ export type CallErrorType = GetCallErrorReturnType<
111
119
  | FormatTransactionRequestErrorType
112
120
  | ScheduleMulticallErrorType
113
121
  | RequestErrorType
114
- | ToCounterfactualDataErrorType
122
+ | ToDeploylessCallViaBytecodeDataErrorType
123
+ | ToDeploylessCallViaFactoryDataErrorType
115
124
  >
116
125
 
117
126
  /**
@@ -150,6 +159,7 @@ export async function call<TChain extends Chain | undefined>(
150
159
  blockTag = 'latest',
151
160
  accessList,
152
161
  blobs,
162
+ code,
153
163
  data: data_,
154
164
  factory,
155
165
  factoryData,
@@ -166,14 +176,32 @@ export async function call<TChain extends Chain | undefined>(
166
176
  } = args
167
177
  const account = account_ ? parseAccount(account_) : undefined
168
178
 
169
- // Check if the call is going to be routed via a counterfactual contract deployment.
170
- const counterfactual = factory && factoryData && to && data_
179
+ if (code && (factory || factoryData))
180
+ throw new BaseError(
181
+ 'Cannot provide both `code` & `factory`/`factoryData` as parameters.',
182
+ )
183
+ if (code && to)
184
+ throw new BaseError('Cannot provide both `code` & `to` as parameters.')
185
+
186
+ // Check if the call is deployless via bytecode.
187
+ const deploylessCallViaBytecode = code && data_
188
+ // Check if the call is deployless via a factory.
189
+ const deploylessCallViaFactory = factory && factoryData && to && data_
190
+ const deploylessCall = deploylessCallViaBytecode || deploylessCallViaFactory
191
+
171
192
  const data = (() => {
172
- // If the call is going to be routed via a counterfactual contract deployment,
173
- // we need to get the data to deploy the counterfactual contract, and then perform
174
- // the call.
175
- if (counterfactual)
176
- return toCounterfactualData({ data: data_, factory, factoryData, to })
193
+ if (deploylessCallViaBytecode)
194
+ return toDeploylessCallViaBytecodeData({
195
+ code,
196
+ data: data_,
197
+ })
198
+ if (deploylessCallViaFactory)
199
+ return toDeploylessCallViaFactoryData({
200
+ data: data_,
201
+ factory,
202
+ factoryData,
203
+ to,
204
+ })
177
205
  return data_
178
206
  })()
179
207
 
@@ -201,7 +229,7 @@ export async function call<TChain extends Chain | undefined>(
201
229
  maxFeePerGas,
202
230
  maxPriorityFeePerGas,
203
231
  nonce,
204
- to: counterfactual ? undefined : to,
232
+ to: deploylessCall ? undefined : to,
205
233
  value,
206
234
  } as TransactionRequest) as TransactionRequest
207
235
 
@@ -248,7 +276,7 @@ export async function call<TChain extends Chain | undefined>(
248
276
  return { data: await offchainLookup(client, { data, to }) }
249
277
 
250
278
  // Check for counterfactual deployment error.
251
- if (counterfactual && data?.slice(0, 10) === '0x101bb98d')
279
+ if (deploylessCall && data?.slice(0, 10) === '0x101bb98d')
252
280
  throw new CounterfactualDeploymentFailedError({ factory })
253
281
 
254
282
  throw getCallError(err as ErrorType, {
@@ -374,9 +402,27 @@ async function scheduleMulticall<TChain extends Chain | undefined>(
374
402
  return { data: returnData }
375
403
  }
376
404
 
377
- type ToCounterfactualDataErrorType = EncodeDeployDataErrorType | ErrorType
405
+ type ToDeploylessCallViaBytecodeDataErrorType =
406
+ | EncodeDeployDataErrorType
407
+ | ErrorType
408
+
409
+ function toDeploylessCallViaBytecodeData(parameters: {
410
+ code: Hex
411
+ data: Hex
412
+ }) {
413
+ const { code, data } = parameters
414
+ return encodeDeployData({
415
+ abi: parseAbi(['constructor(bytes, bytes)']),
416
+ bytecode: deploylessCallViaBytecodeBytecode,
417
+ args: [code, data],
418
+ })
419
+ }
420
+
421
+ type ToDeploylessCallViaFactoryDataErrorType =
422
+ | EncodeDeployDataErrorType
423
+ | ErrorType
378
424
 
379
- function toCounterfactualData(parameters: {
425
+ function toDeploylessCallViaFactoryData(parameters: {
380
426
  data: Hex
381
427
  factory: Address
382
428
  factoryData: Hex
@@ -384,11 +430,8 @@ function toCounterfactualData(parameters: {
384
430
  }) {
385
431
  const { data, factory, factoryData, to } = parameters
386
432
  return encodeDeployData({
387
- abi: parseAbi([
388
- 'error CounterfactualDeployFailed(bytes)',
389
- 'constructor(address, bytes, address, bytes)',
390
- ]),
391
- bytecode: counterfactualContractCallByteCode,
433
+ abi: parseAbi(['constructor(address, bytes, address, bytes)']),
434
+ bytecode: deploylessCallViaFactoryBytecode,
392
435
  args: [to, data, factory, factoryData],
393
436
  })
394
437
  }
@@ -12,7 +12,7 @@ import {
12
12
  numberToHex,
13
13
  } from '../../utils/encoding/toHex.js'
14
14
 
15
- export type GetBytecodeParameters = {
15
+ export type GetCodeParameters = {
16
16
  address: Address
17
17
  } & (
18
18
  | {
@@ -25,9 +25,9 @@ export type GetBytecodeParameters = {
25
25
  }
26
26
  )
27
27
 
28
- export type GetBytecodeReturnType = Hex | undefined
28
+ export type GetCodeReturnType = Hex | undefined
29
29
 
30
- export type GetBytecodeErrorType =
30
+ export type GetCodeErrorType =
31
31
  | NumberToHexErrorType
32
32
  | RequestErrorType
33
33
  | ErrorType
@@ -35,30 +35,30 @@ export type GetBytecodeErrorType =
35
35
  /**
36
36
  * Retrieves the bytecode at an address.
37
37
  *
38
- * - Docs: https://viem.sh/docs/contract/getBytecode
38
+ * - Docs: https://viem.sh/docs/contract/getCode
39
39
  * - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)
40
40
  *
41
41
  * @param client - Client to use
42
- * @param parameters - {@link GetBytecodeParameters}
43
- * @returns The contract's bytecode. {@link GetBytecodeReturnType}
42
+ * @param parameters - {@link GetCodeParameters}
43
+ * @returns The contract's bytecode. {@link GetCodeReturnType}
44
44
  *
45
45
  * @example
46
46
  * import { createPublicClient, http } from 'viem'
47
47
  * import { mainnet } from 'viem/chains'
48
- * import { getBytecode } from 'viem/contract'
48
+ * import { getCode } from 'viem/contract'
49
49
  *
50
50
  * const client = createPublicClient({
51
51
  * chain: mainnet,
52
52
  * transport: http(),
53
53
  * })
54
- * const code = await getBytecode(client, {
54
+ * const code = await getCode(client, {
55
55
  * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
56
56
  * })
57
57
  */
58
- export async function getBytecode<TChain extends Chain | undefined>(
58
+ export async function getCode<TChain extends Chain | undefined>(
59
59
  client: Client<Transport, TChain>,
60
- { address, blockNumber, blockTag = 'latest' }: GetBytecodeParameters,
61
- ): Promise<GetBytecodeReturnType> {
60
+ { address, blockNumber, blockTag = 'latest' }: GetCodeParameters,
61
+ ): Promise<GetCodeReturnType> {
62
62
  const blockNumberHex =
63
63
  blockNumber !== undefined ? numberToHex(blockNumber) : undefined
64
64
  const hex = await client.request({
@@ -50,7 +50,7 @@ export type ReadContractParameters<
50
50
  | 'stateOverride'
51
51
  >
52
52
  > &
53
- ContractFunctionParameters<abi, 'pure' | 'view', functionName, args>
53
+ ContractFunctionParameters<abi, 'pure' | 'view', functionName, args, boolean>
54
54
 
55
55
  export type ReadContractReturnType<
56
56
  abi extends Abi | readonly unknown[] = Abi,
@@ -124,7 +124,7 @@ export async function readContract<
124
124
  )({
125
125
  ...(rest as CallParameters),
126
126
  data: calldata,
127
- to: address,
127
+ to: address!,
128
128
  })
129
129
  return decodeFunctionResult({
130
130
  abi,
@@ -66,7 +66,14 @@ export type SimulateContractParameters<
66
66
  > &
67
67
  UnionOmit<
68
68
  CallParameters<derivedChain>,
69
- 'account' | 'batch' | 'to' | 'data' | 'factory' | 'factoryData' | 'value'
69
+ | 'account'
70
+ | 'batch'
71
+ | 'code'
72
+ | 'to'
73
+ | 'data'
74
+ | 'factory'
75
+ | 'factoryData'
76
+ | 'value'
70
77
  > &
71
78
  GetValue<
72
79
  abi,
@@ -53,6 +53,7 @@ export type WriteContractParameters<
53
53
  'nonpayable' | 'payable',
54
54
  functionName,
55
55
  args,
56
+ false,
56
57
  allFunctionNames
57
58
  > &
58
59
  GetChainParameter<chain, chainOverride> &
@@ -22,6 +22,21 @@ export const mode = /*#__PURE__*/ defineChain({
22
22
  address: '0xca11bde05977b3631167028862be2a173976ca11',
23
23
  blockCreated: 2465882,
24
24
  },
25
+ l2OutputOracle: {
26
+ [sourceId]: {
27
+ address: '0x4317ba146D4933D889518a3e5E11Fe7a53199b04',
28
+ },
29
+ },
30
+ portal: {
31
+ [sourceId]: {
32
+ address: '0x8B34b14c7c7123459Cf3076b8Cb929BE097d0C07',
33
+ },
34
+ },
35
+ l1StandardBridge: {
36
+ [sourceId]: {
37
+ address: '0x735aDBbE72226BD52e818E7181953f42E3b0FF21',
38
+ },
39
+ },
25
40
  },
26
41
  sourceId,
27
42
  })
@@ -92,15 +92,15 @@ import {
92
92
  type GetBlockTransactionCountReturnType,
93
93
  getBlockTransactionCount,
94
94
  } from '../../actions/public/getBlockTransactionCount.js'
95
- import {
96
- type GetBytecodeParameters,
97
- type GetBytecodeReturnType,
98
- getBytecode,
99
- } from '../../actions/public/getBytecode.js'
100
95
  import {
101
96
  type GetChainIdReturnType,
102
97
  getChainId,
103
98
  } from '../../actions/public/getChainId.js'
99
+ import {
100
+ type GetCodeParameters,
101
+ type GetCodeReturnType,
102
+ getCode,
103
+ } from '../../actions/public/getCode.js'
104
104
  import {
105
105
  type GetContractEventsParameters,
106
106
  type GetContractEventsReturnType,
@@ -624,14 +624,15 @@ export type PublicActions<
624
624
  getBlockTransactionCount: (
625
625
  args?: GetBlockTransactionCountParameters | undefined,
626
626
  ) => Promise<GetBlockTransactionCountReturnType>
627
+ /** @deprecated Use `getCode` instead. */
628
+ getBytecode: (args: GetCodeParameters) => Promise<GetCodeReturnType>
627
629
  /**
628
- * Retrieves the bytecode at an address.
630
+ * Returns the chain ID associated with the current network.
629
631
  *
630
- * - Docs: https://viem.sh/docs/contract/getBytecode
631
- * - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)
632
+ * - Docs: https://viem.sh/docs/actions/public/getChainId
633
+ * - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid)
632
634
  *
633
- * @param args - {@link GetBytecodeParameters}
634
- * @returns The contract's bytecode. {@link GetBytecodeReturnType}
635
+ * @returns The current chain ID. {@link GetChainIdReturnType}
635
636
  *
636
637
  * @example
637
638
  * import { createPublicClient, http } from 'viem'
@@ -641,18 +642,18 @@ export type PublicActions<
641
642
  * chain: mainnet,
642
643
  * transport: http(),
643
644
  * })
644
- * const code = await client.getBytecode({
645
- * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
646
- * })
645
+ * const chainId = await client.getChainId()
646
+ * // 1
647
647
  */
648
- getBytecode: (args: GetBytecodeParameters) => Promise<GetBytecodeReturnType>
648
+ getChainId: () => Promise<GetChainIdReturnType>
649
649
  /**
650
- * Returns the chain ID associated with the current network.
650
+ * Retrieves the bytecode at an address.
651
651
  *
652
- * - Docs: https://viem.sh/docs/actions/public/getChainId
653
- * - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid)
652
+ * - Docs: https://viem.sh/docs/contract/getCode
653
+ * - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode)
654
654
  *
655
- * @returns The current chain ID. {@link GetChainIdReturnType}
655
+ * @param args - {@link GetBytecodeParameters}
656
+ * @returns The contract's bytecode. {@link GetBytecodeReturnType}
656
657
  *
657
658
  * @example
658
659
  * import { createPublicClient, http } from 'viem'
@@ -662,10 +663,11 @@ export type PublicActions<
662
663
  * chain: mainnet,
663
664
  * transport: http(),
664
665
  * })
665
- * const chainId = await client.getChainId()
666
- * // 1
666
+ * const code = await client.getCode({
667
+ * address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2',
668
+ * })
667
669
  */
668
- getChainId: () => Promise<GetChainIdReturnType>
670
+ getCode: (args: GetCodeParameters) => Promise<GetCodeReturnType>
669
671
  /**
670
672
  * Returns a list of event logs emitted by a contract.
671
673
  *
@@ -1853,8 +1855,9 @@ export function publicActions<
1853
1855
  getBlock: (args) => getBlock(client, args),
1854
1856
  getBlockNumber: (args) => getBlockNumber(client, args),
1855
1857
  getBlockTransactionCount: (args) => getBlockTransactionCount(client, args),
1856
- getBytecode: (args) => getBytecode(client, args),
1858
+ getBytecode: (args) => getCode(client, args),
1857
1859
  getChainId: () => getChainId(client),
1860
+ getCode: (args) => getCode(client, args),
1858
1861
  getContractEvents: (args) => getContractEvents(client, args),
1859
1862
  getEip712Domain: (args) => getEip712Domain(client, args),
1860
1863
  getEnsAddress: (args) => getEnsAddress(client, args),
@@ -1,4 +1,7 @@
1
- export const counterfactualContractCallByteCode =
1
+ export const deploylessCallViaBytecodeBytecode =
2
+ '0x608060405234801561001057600080fd5b5060405161018e38038061018e83398101604081905261002f91610124565b6000808351602085016000f59050803b61004857600080fd5b6000808351602085016000855af16040513d6000823e81610067573d81fd5b3d81f35b634e487b7160e01b600052604160045260246000fd5b600082601f83011261009257600080fd5b81516001600160401b038111156100ab576100ab61006b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d9576100d961006b565b6040528181528382016020018510156100f157600080fd5b60005b82811015610110576020818601810151838301820152016100f4565b506000918101602001919091529392505050565b6000806040838503121561013757600080fd5b82516001600160401b0381111561014d57600080fd5b61015985828601610081565b602085015190935090506001600160401b0381111561017757600080fd5b61018385828601610081565b915050925092905056fe'
3
+
4
+ export const deploylessCallViaFactoryBytecode =
2
5
  '0x608060405234801561001057600080fd5b506040516102c03803806102c083398101604081905261002f916101e6565b836001600160a01b03163b6000036100e457600080836001600160a01b03168360405161005c9190610270565b6000604051808303816000865af19150503d8060008114610099576040519150601f19603f3d011682016040523d82523d6000602084013e61009e565b606091505b50915091508115806100b857506001600160a01b0386163b155b156100e1578060405163101bb98d60e01b81526004016100d8919061028c565b60405180910390fd5b50505b6000808451602086016000885af16040513d6000823e81610103573d81fd5b3d81f35b80516001600160a01b038116811461011e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561015457818101518382015260200161013c565b50506000910152565b600082601f83011261016e57600080fd5b81516001600160401b0381111561018757610187610123565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101b5576101b5610123565b6040528181528382016020018510156101cd57600080fd5b6101de826020830160208701610139565b949350505050565b600080600080608085870312156101fc57600080fd5b61020585610107565b60208601519094506001600160401b0381111561022157600080fd5b61022d8782880161015d565b93505061023c60408601610107565b60608601519092506001600160401b0381111561025857600080fd5b6102648782880161015d565b91505092959194509250565b60008251610282818460208701610139565b9190910192915050565b60208152600082518060208401526102ab816040850160208701610139565b601f01601f1916919091016040019291505056fe'
3
6
 
4
7
  export const universalSignatureValidatorByteCode =
@@ -284,9 +284,11 @@ export type CounterfactualDeploymentFailedErrorType =
284
284
  }
285
285
  export class CounterfactualDeploymentFailedError extends BaseError {
286
286
  override name = 'CounterfactualDeploymentFailedError'
287
- constructor({ factory }: { factory: Address }) {
287
+ constructor({ factory }: { factory?: Address | undefined }) {
288
288
  super(
289
- `Deployment for counterfactual contract call failed for factory "${factory}".`,
289
+ `Deployment for counterfactual contract call failed${
290
+ factory ? ` for factory "${factory}".` : ''
291
+ }`,
290
292
  {
291
293
  metaMessages: [
292
294
  'Please ensure:',
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.14.0'
1
+ export const version = '2.14.2'
package/index.ts CHANGED
@@ -146,10 +146,16 @@ export type {
146
146
  GetBlockTransactionCountReturnType,
147
147
  } from './actions/public/getBlockTransactionCount.js'
148
148
  export type {
149
- GetBytecodeErrorType,
150
- GetBytecodeParameters,
151
- GetBytecodeReturnType,
152
- } from './actions/public/getBytecode.js'
149
+ /** @deprecated Use `GetCodeErrorType` instead */
150
+ GetCodeErrorType as GetBytecodeErrorType,
151
+ /** @deprecated Use `GetCodeParameters` instead */
152
+ GetCodeParameters as GetBytecodeParameters,
153
+ /** @deprecated Use `GetCodeReturnType` instead */
154
+ GetCodeReturnType as GetBytecodeReturnType,
155
+ GetCodeErrorType,
156
+ GetCodeParameters,
157
+ GetCodeReturnType,
158
+ } from './actions/public/getCode.js'
153
159
  export type {
154
160
  GetChainIdErrorType,
155
161
  GetChainIdReturnType,
@@ -923,6 +929,8 @@ export type {
923
929
  LogTopicType,
924
930
  MaybeAbiEventName,
925
931
  MaybeExtractEventArgsFromAbi,
932
+ UnionWiden,
933
+ Widen,
926
934
  } from './types/contract.js'
927
935
  export type {
928
936
  AccessList,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.14.0",
4
+ "version": "2.14.2",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",
package/types/contract.ts CHANGED
@@ -197,19 +197,22 @@ export type ContractFunctionParameters<
197
197
  mutability,
198
198
  functionName
199
199
  > = ContractFunctionArgs<abi, mutability, functionName>,
200
+ deployless extends boolean = false,
200
201
  ///
201
202
  allFunctionNames = ContractFunctionName<abi, mutability>,
202
203
  allArgs = ContractFunctionArgs<abi, mutability, functionName>,
203
204
  // when `args` is inferred to `readonly []` ("inputs": []) or `never` (`abi` declared as `Abi` or not inferrable), allow `args` to be optional.
204
205
  // important that both branches return same structural type
205
206
  > = {
206
- address: Address
207
207
  abi: abi
208
208
  functionName:
209
209
  | allFunctionNames // show all options
210
210
  | (functionName extends allFunctionNames ? functionName : never) // infer value
211
211
  args?: (abi extends Abi ? UnionWiden<args> : never) | allArgs | undefined
212
- } & (readonly [] extends allArgs ? {} : { args: Widen<args> })
212
+ } & (readonly [] extends allArgs ? {} : { args: Widen<args> }) &
213
+ (deployless extends true
214
+ ? { address?: undefined; code: Hex }
215
+ : { address: Address })
213
216
 
214
217
  export type ContractFunctionReturnType<
215
218
  abi extends Abi | readonly unknown[] = Abi,
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBytecode.js","sourceRoot":"","sources":["../../../actions/public/getBytecode.ts"],"names":[],"mappings":";;;AASA,4DAGsC;AA6C/B,KAAK,UAAU,WAAW,CAC/B,MAAiC,EACjC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAG,QAAQ,EAAyB;IAEpE,MAAM,cAAc,GAClB,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAA,sBAAW,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,IAAI,QAAQ,CAAC;KAC9C,CAAC,CAAA;IACF,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAClC,OAAO,GAAG,CAAA;AACZ,CAAC;AAZD,kCAYC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBytecode.js","sourceRoot":"","sources":["../../../actions/public/getBytecode.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,WAAW,GACZ,MAAM,+BAA+B,CAAA;AAsBtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAiC,EACjC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAG,QAAQ,EAAyB;IAEpE,MAAM,cAAc,GAClB,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClE,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,CAAC,OAAO,EAAE,cAAc,IAAI,QAAQ,CAAC;KAC9C,CAAC,CAAA;IACF,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAA;IAClC,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBytecode.d.ts","sourceRoot":"","sources":["../../../actions/public/getBytecode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,+BAA+B,CAAA;AAEtC,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,CACA;IACE,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAChC,GACD;IACE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CACJ,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,GAAG,GAAG,SAAS,CAAA;AAEnD,MAAM,MAAM,oBAAoB,GAC5B,oBAAoB,GACpB,gBAAgB,GAChB,SAAS,CAAA;AAEb;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,WAAW,CAAC,MAAM,SAAS,KAAK,GAAG,SAAS,EAChE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,EACjC,EAAE,OAAO,EAAE,WAAW,EAAE,QAAmB,EAAE,EAAE,qBAAqB,GACnE,OAAO,CAAC,qBAAqB,CAAC,CAShC"}