viem 2.10.8 → 2.10.11

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 (82) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/_cjs/actions/public/call.js +3 -60
  3. package/_cjs/actions/public/call.js.map +1 -1
  4. package/_cjs/actions/public/estimateGas.js +8 -2
  5. package/_cjs/actions/public/estimateGas.js.map +1 -1
  6. package/_cjs/chains/definitions/bob.js +33 -0
  7. package/_cjs/chains/definitions/bob.js.map +1 -0
  8. package/_cjs/chains/definitions/funkiSepolia.js +34 -0
  9. package/_cjs/chains/definitions/funkiSepolia.js.map +1 -0
  10. package/_cjs/chains/definitions/lisk.js +34 -0
  11. package/_cjs/chains/definitions/lisk.js.map +1 -0
  12. package/_cjs/chains/definitions/metalL2.js +53 -0
  13. package/_cjs/chains/definitions/metalL2.js.map +1 -0
  14. package/_cjs/chains/definitions/nautilus.js +21 -0
  15. package/_cjs/chains/definitions/nautilus.js.map +1 -0
  16. package/_cjs/chains/index.js +16 -6
  17. package/_cjs/chains/index.js.map +1 -1
  18. package/_cjs/errors/version.js +1 -1
  19. package/_cjs/errors/version.js.map +1 -1
  20. package/_cjs/op-stack/chains.js +3 -1
  21. package/_cjs/op-stack/chains.js.map +1 -1
  22. package/_cjs/utils/stateOverride.js +63 -0
  23. package/_cjs/utils/stateOverride.js.map +1 -0
  24. package/_esm/actions/public/call.js +2 -56
  25. package/_esm/actions/public/call.js.map +1 -1
  26. package/_esm/actions/public/estimateGas.js +8 -2
  27. package/_esm/actions/public/estimateGas.js.map +1 -1
  28. package/_esm/chains/definitions/bob.js +30 -0
  29. package/_esm/chains/definitions/bob.js.map +1 -0
  30. package/_esm/chains/definitions/funkiSepolia.js +31 -0
  31. package/_esm/chains/definitions/funkiSepolia.js.map +1 -0
  32. package/_esm/chains/definitions/lisk.js +31 -0
  33. package/_esm/chains/definitions/lisk.js.map +1 -0
  34. package/_esm/chains/definitions/metalL2.js +50 -0
  35. package/_esm/chains/definitions/metalL2.js.map +1 -0
  36. package/_esm/chains/definitions/nautilus.js +18 -0
  37. package/_esm/chains/definitions/nautilus.js.map +1 -0
  38. package/_esm/chains/index.js +5 -0
  39. package/_esm/chains/index.js.map +1 -1
  40. package/_esm/errors/version.js +1 -1
  41. package/_esm/errors/version.js.map +1 -1
  42. package/_esm/op-stack/chains.js +1 -0
  43. package/_esm/op-stack/chains.js.map +1 -1
  44. package/_esm/utils/stateOverride.js +57 -0
  45. package/_esm/utils/stateOverride.js.map +1 -0
  46. package/_types/actions/public/call.d.ts +3 -12
  47. package/_types/actions/public/call.d.ts.map +1 -1
  48. package/_types/actions/public/estimateGas.d.ts +2 -0
  49. package/_types/actions/public/estimateGas.d.ts.map +1 -1
  50. package/_types/chains/definitions/bob.d.ts +34 -0
  51. package/_types/chains/definitions/bob.d.ts.map +1 -0
  52. package/_types/chains/definitions/funkiSepolia.d.ts +1064 -0
  53. package/_types/chains/definitions/funkiSepolia.d.ts.map +1 -0
  54. package/_types/chains/definitions/lisk.d.ts +1453 -0
  55. package/_types/chains/definitions/lisk.d.ts.map +1 -0
  56. package/_types/chains/definitions/metalL2.d.ts +1080 -0
  57. package/_types/chains/definitions/metalL2.d.ts.map +1 -0
  58. package/_types/chains/definitions/nautilus.d.ts +35 -0
  59. package/_types/chains/definitions/nautilus.d.ts.map +1 -0
  60. package/_types/chains/index.d.ts +5 -0
  61. package/_types/chains/index.d.ts.map +1 -1
  62. package/_types/errors/version.d.ts +1 -1
  63. package/_types/errors/version.d.ts.map +1 -1
  64. package/_types/op-stack/chains.d.ts +1 -0
  65. package/_types/op-stack/chains.d.ts.map +1 -1
  66. package/_types/types/eip1193.d.ts +10 -2
  67. package/_types/types/eip1193.d.ts.map +1 -1
  68. package/_types/utils/stateOverride.d.ts +16 -0
  69. package/_types/utils/stateOverride.d.ts.map +1 -0
  70. package/actions/public/call.ts +8 -91
  71. package/actions/public/estimateGas.ts +11 -1
  72. package/chains/definitions/bob.ts +30 -0
  73. package/chains/definitions/funkiSepolia.ts +32 -0
  74. package/chains/definitions/lisk.ts +31 -0
  75. package/chains/definitions/metalL2.ts +51 -0
  76. package/chains/definitions/nautilus.ts +18 -0
  77. package/chains/index.ts +5 -0
  78. package/errors/version.ts +1 -1
  79. package/op-stack/chains.ts +1 -0
  80. package/package.json +1 -1
  81. package/types/eip1193.ts +10 -0
  82. package/utils/stateOverride.ts +98 -0
@@ -0,0 +1,51 @@
1
+ import { chainConfig } from '../../op-stack/chainConfig.js'
2
+ import { defineChain } from '../../utils/chain/defineChain.js'
3
+
4
+ const sourceId = 1 // mainnet
5
+
6
+ export const metalL2 = /*#__PURE__*/ defineChain({
7
+ ...chainConfig,
8
+ id: 1750,
9
+ name: 'Metal L2',
10
+ nativeCurrency: {
11
+ decimals: 18,
12
+ name: 'Ether',
13
+ symbol: 'ETH',
14
+ },
15
+ rpcUrls: {
16
+ default: {
17
+ http: ['https://rpc.metall2.com'],
18
+ webSocket: ['wss://rpc.metall2.com'],
19
+ },
20
+ },
21
+ blockExplorers: {
22
+ default: {
23
+ name: 'Explorer',
24
+ url: 'https://explorer.metall2.com',
25
+ apiUrl: 'https://explorer.metall2.com/api',
26
+ },
27
+ },
28
+ contracts: {
29
+ ...chainConfig.contracts,
30
+ l2OutputOracle: {
31
+ [sourceId]: {
32
+ address: '0x3B1F7aDa0Fcc26B13515af752Dd07fB1CAc11426',
33
+ },
34
+ },
35
+ multicall3: {
36
+ address: '0xcA11bde05977b3631167028862bE2a173976CA11',
37
+ blockCreated: 0,
38
+ },
39
+ portal: {
40
+ [sourceId]: {
41
+ address: '0x3F37aBdE2C6b5B2ed6F8045787Df1ED1E3753956',
42
+ },
43
+ },
44
+ l1StandardBridge: {
45
+ [sourceId]: {
46
+ address: '0x6d0f65D59b55B0FEC5d2d15365154DcADC140BF3',
47
+ },
48
+ },
49
+ },
50
+ sourceId,
51
+ })
@@ -0,0 +1,18 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const nautilus = /*#__PURE__*/ defineChain({
4
+ id: 22222,
5
+ name: 'Nautilus Mainnet',
6
+ nativeCurrency: { name: 'ZBC', symbol: 'ZBC', decimals: 9 },
7
+ rpcUrls: {
8
+ default: {
9
+ http: ['https://api.nautilus.nautchain.xyz'],
10
+ },
11
+ },
12
+ blockExplorers: {
13
+ default: {
14
+ name: 'NautScan',
15
+ url: 'https://nautscan.com',
16
+ },
17
+ },
18
+ })
package/chains/index.ts CHANGED
@@ -33,6 +33,7 @@ export { bitTorrent } from './definitions/bitTorrent.js'
33
33
  export { bitTorrentTestnet } from './definitions/bitTorrentTestnet.js'
34
34
  export { blast } from './definitions/blast.js'
35
35
  export { blastSepolia } from './definitions/blastSepolia.js'
36
+ export { bob } from './definitions/bob.js'
36
37
  export { boba } from './definitions/boba.js'
37
38
  export { bronos } from './definitions/bronos.js'
38
39
  export { bronosTestnet } from './definitions/bronosTestnet.js'
@@ -92,6 +93,7 @@ export { flowTestnet } from './definitions/flowTestnet.js'
92
93
  export { foundry } from './definitions/foundry.js'
93
94
  export { fraxtal } from './definitions/fraxtal.js'
94
95
  export { fraxtalTestnet } from './definitions/fraxtalTestnet.js'
96
+ export { funkiSepolia } from './definitions/funkiSepolia.js'
95
97
  export { fuse } from './definitions/fuse.js'
96
98
  export { fuseSparknet } from './definitions/fuseSparknet.js'
97
99
  export { iotex } from './definitions/iotex.js'
@@ -129,6 +131,7 @@ export { lineaGoerli } from './definitions/lineaGoerli.js'
129
131
  export { lineaSepolia } from './definitions/lineaSepolia.js'
130
132
  /** @deprecated Use `lineaGoerli` instead. */
131
133
  export { lineaTestnet } from './definitions/lineaTestnet.js'
134
+ export { lisk } from './definitions/lisk.js'
132
135
  export { liskSepolia } from './definitions/liskSepolia.js'
133
136
  export { localhost } from './definitions/localhost.js'
134
137
  export { lukso } from './definitions/lukso.js'
@@ -144,6 +147,7 @@ export { mantleTestnet } from './definitions/mantleTestnet.js'
144
147
  export { merlin } from './definitions/merlin.js'
145
148
  export { metachain } from './definitions/metachain.js'
146
149
  export { metachainIstanbul } from './definitions/metachainIstanbul.js'
150
+ export { metalL2 } from './definitions/metalL2.js'
147
151
  export { meter } from './definitions/meter.js'
148
152
  export { meterTestnet } from './definitions/meterTestnet.js'
149
153
  export { metis } from './definitions/metis.js'
@@ -158,6 +162,7 @@ export { moonbeam } from './definitions/moonbeam.js'
158
162
  export { moonbeamDev } from './definitions/moonbeamDev.js'
159
163
  export { moonriver } from './definitions/moonriver.js'
160
164
  export { morphSepolia } from './definitions/morphSepolia.js'
165
+ export { nautilus } from './definitions/nautilus.js'
161
166
  export { neonDevnet } from './definitions/neonDevnet.js'
162
167
  export { neonMainnet } from './definitions/neonMainnet.js'
163
168
  export { nexi } from './definitions/nexi.js'
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.10.8'
1
+ export const version = '2.10.11'
@@ -5,6 +5,7 @@ export { baseGoerli } from '../chains/definitions/baseGoerli.js'
5
5
  export { baseSepolia } from '../chains/definitions/baseSepolia.js'
6
6
  export { fraxtal } from '../chains/definitions/fraxtal.js'
7
7
  export { fraxtalTestnet } from '../chains/definitions/fraxtalTestnet.js'
8
+ export { metalL2 } from '../chains/definitions/metalL2.js'
8
9
  export { optimism } from '../chains/definitions/optimism.js'
9
10
  export { optimismGoerli } from '../chains/definitions/optimismGoerli.js'
10
11
  export { optimismSepolia } from '../chains/definitions/optimismSepolia.js'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.10.8",
4
+ "version": "2.10.11",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",
package/types/eip1193.ts CHANGED
@@ -331,6 +331,11 @@ export type PublicRpcSchema = [
331
331
  Parameters:
332
332
  | [transaction: TransactionRequest]
333
333
  | [transaction: TransactionRequest, block: BlockNumber | BlockTag]
334
+ | [
335
+ transaction: TransactionRequest,
336
+ block: BlockNumber | BlockTag,
337
+ RpcStateOverride,
338
+ ]
334
339
  ReturnType: Quantity
335
340
  },
336
341
  /**
@@ -1197,6 +1202,11 @@ export type WalletRpcSchema = [
1197
1202
  Parameters:
1198
1203
  | [transaction: TransactionRequest]
1199
1204
  | [transaction: TransactionRequest, block: BlockNumber | BlockTag]
1205
+ | [
1206
+ transaction: TransactionRequest,
1207
+ block: BlockNumber | BlockTag,
1208
+ RpcStateOverride,
1209
+ ]
1200
1210
  ReturnType: Quantity
1201
1211
  },
1202
1212
  /**
@@ -0,0 +1,98 @@
1
+ import {
2
+ InvalidAddressError,
3
+ type InvalidAddressErrorType,
4
+ } from '../errors/address.js'
5
+ import {
6
+ InvalidBytesLengthError,
7
+ type InvalidBytesLengthErrorType,
8
+ } from '../errors/data.js'
9
+ import {
10
+ AccountStateConflictError,
11
+ type AccountStateConflictErrorType,
12
+ StateAssignmentConflictError,
13
+ type StateAssignmentConflictErrorType,
14
+ } from '../errors/stateOverride.js'
15
+ import type {
16
+ RpcAccountStateOverride,
17
+ RpcStateMapping,
18
+ RpcStateOverride,
19
+ } from '../types/rpc.js'
20
+ import type { StateMapping, StateOverride } from '../types/stateOverride.js'
21
+ import { isAddress } from './address/isAddress.js'
22
+ import { type NumberToHexErrorType, numberToHex } from './encoding/toHex.js'
23
+
24
+ export type SerializeStateMappingParameters = StateMapping | undefined
25
+
26
+ export type SerializeStateMappingErrorType = InvalidBytesLengthErrorType
27
+
28
+ export function serializeStateMapping(
29
+ stateMapping: SerializeStateMappingParameters,
30
+ ): RpcStateMapping | undefined {
31
+ if (!stateMapping || stateMapping.length === 0) return undefined
32
+ return stateMapping.reduce((acc, { slot, value }) => {
33
+ if (slot.length !== 66)
34
+ throw new InvalidBytesLengthError({
35
+ size: slot.length,
36
+ targetSize: 66,
37
+ type: 'hex',
38
+ })
39
+ if (value.length !== 66)
40
+ throw new InvalidBytesLengthError({
41
+ size: value.length,
42
+ targetSize: 66,
43
+ type: 'hex',
44
+ })
45
+ acc[slot] = value
46
+ return acc
47
+ }, {} as RpcStateMapping)
48
+ }
49
+
50
+ export type SerializeAccountStateOverrideParameters = Omit<
51
+ StateOverride[number],
52
+ 'address'
53
+ >
54
+
55
+ export type SerializeAccountStateOverrideErrorType =
56
+ | NumberToHexErrorType
57
+ | StateAssignmentConflictErrorType
58
+ | SerializeStateMappingErrorType
59
+
60
+ export function serializeAccountStateOverride(
61
+ parameters: SerializeAccountStateOverrideParameters,
62
+ ): RpcAccountStateOverride {
63
+ const { balance, nonce, state, stateDiff, code } = parameters
64
+ const rpcAccountStateOverride: RpcAccountStateOverride = {}
65
+ if (code !== undefined) rpcAccountStateOverride.code = code
66
+ if (balance !== undefined)
67
+ rpcAccountStateOverride.balance = numberToHex(balance)
68
+ if (nonce !== undefined) rpcAccountStateOverride.nonce = numberToHex(nonce)
69
+ if (state !== undefined)
70
+ rpcAccountStateOverride.state = serializeStateMapping(state)
71
+ if (stateDiff !== undefined) {
72
+ if (rpcAccountStateOverride.state) throw new StateAssignmentConflictError()
73
+ rpcAccountStateOverride.stateDiff = serializeStateMapping(stateDiff)
74
+ }
75
+ return rpcAccountStateOverride
76
+ }
77
+
78
+ export type SerializeStateOverrideParameters = StateOverride | undefined
79
+
80
+ export type SerializeStateOverrideErrorType =
81
+ | InvalidAddressErrorType
82
+ | AccountStateConflictErrorType
83
+ | SerializeAccountStateOverrideErrorType
84
+
85
+ export function serializeStateOverride(
86
+ parameters?: SerializeStateOverrideParameters,
87
+ ): RpcStateOverride | undefined {
88
+ if (!parameters) return undefined
89
+ const rpcStateOverride: RpcStateOverride = {}
90
+ for (const { address, ...accountState } of parameters) {
91
+ if (!isAddress(address, { strict: false }))
92
+ throw new InvalidAddressError({ address })
93
+ if (rpcStateOverride[address])
94
+ throw new AccountStateConflictError({ address: address })
95
+ rpcStateOverride[address] = serializeAccountStateOverride(accountState)
96
+ }
97
+ return rpcStateOverride
98
+ }