viem 2.19.4 → 2.19.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +0 -13
  3. package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -1
  4. package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js +2 -14
  5. package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -1
  6. package/_cjs/account-abstraction/accounts/toSmartAccount.js +13 -1
  7. package/_cjs/account-abstraction/accounts/toSmartAccount.js.map +1 -1
  8. package/_cjs/chains/definitions/assetChainTestnet.js +31 -0
  9. package/_cjs/chains/definitions/assetChainTestnet.js.map +1 -0
  10. package/_cjs/chains/definitions/atletaOlympia.js +33 -0
  11. package/_cjs/chains/definitions/atletaOlympia.js.map +1 -0
  12. package/_cjs/chains/definitions/chips.js +22 -0
  13. package/_cjs/chains/definitions/chips.js.map +1 -0
  14. package/_cjs/chains/definitions/curtis.js +22 -0
  15. package/_cjs/chains/definitions/curtis.js.map +1 -0
  16. package/_cjs/chains/definitions/flowTestnet.js +6 -0
  17. package/_cjs/chains/definitions/flowTestnet.js.map +1 -1
  18. package/_cjs/chains/definitions/iota.js +28 -0
  19. package/_cjs/chains/definitions/iota.js.map +1 -0
  20. package/_cjs/chains/definitions/iotaTestnet.js +29 -0
  21. package/_cjs/chains/definitions/iotaTestnet.js.map +1 -0
  22. package/_cjs/chains/index.js +19 -7
  23. package/_cjs/chains/index.js.map +1 -1
  24. package/_cjs/errors/version.js +1 -1
  25. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js +0 -13
  26. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -1
  27. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js +2 -14
  28. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -1
  29. package/_esm/account-abstraction/accounts/toSmartAccount.js +13 -1
  30. package/_esm/account-abstraction/accounts/toSmartAccount.js.map +1 -1
  31. package/_esm/chains/definitions/assetChainTestnet.js +28 -0
  32. package/_esm/chains/definitions/assetChainTestnet.js.map +1 -0
  33. package/_esm/chains/definitions/atletaOlympia.js +30 -0
  34. package/_esm/chains/definitions/atletaOlympia.js.map +1 -0
  35. package/_esm/chains/definitions/chips.js +19 -0
  36. package/_esm/chains/definitions/chips.js.map +1 -0
  37. package/_esm/chains/definitions/curtis.js +19 -0
  38. package/_esm/chains/definitions/curtis.js.map +1 -0
  39. package/_esm/chains/definitions/flowTestnet.js +6 -0
  40. package/_esm/chains/definitions/flowTestnet.js.map +1 -1
  41. package/_esm/chains/definitions/iota.js +25 -0
  42. package/_esm/chains/definitions/iota.js.map +1 -0
  43. package/_esm/chains/definitions/iotaTestnet.js +26 -0
  44. package/_esm/chains/definitions/iotaTestnet.js.map +1 -0
  45. package/_esm/chains/index.js +6 -0
  46. package/_esm/chains/index.js.map +1 -1
  47. package/_esm/errors/version.js +1 -1
  48. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts +1 -1
  49. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts.map +1 -1
  50. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts +2 -1
  51. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts.map +1 -1
  52. package/_types/account-abstraction/accounts/toSmartAccount.d.ts +1 -1
  53. package/_types/account-abstraction/accounts/toSmartAccount.d.ts.map +1 -1
  54. package/_types/account-abstraction/accounts/types.d.ts +12 -2
  55. package/_types/account-abstraction/accounts/types.d.ts.map +1 -1
  56. package/_types/chains/definitions/assetChainTestnet.d.ts +34 -0
  57. package/_types/chains/definitions/assetChainTestnet.d.ts.map +1 -0
  58. package/_types/chains/definitions/atletaOlympia.d.ts +35 -0
  59. package/_types/chains/definitions/atletaOlympia.d.ts.map +1 -0
  60. package/_types/chains/definitions/chips.d.ts +42 -0
  61. package/_types/chains/definitions/chips.d.ts.map +1 -0
  62. package/_types/chains/definitions/curtis.d.ts +35 -0
  63. package/_types/chains/definitions/curtis.d.ts.map +1 -0
  64. package/_types/chains/definitions/flowTestnet.d.ts +6 -8
  65. package/_types/chains/definitions/flowTestnet.d.ts.map +1 -1
  66. package/_types/chains/definitions/iota.d.ts +38 -0
  67. package/_types/chains/definitions/iota.d.ts.map +1 -0
  68. package/_types/chains/definitions/iotaTestnet.d.ts +38 -0
  69. package/_types/chains/definitions/iotaTestnet.d.ts.map +1 -0
  70. package/_types/chains/index.d.ts +6 -0
  71. package/_types/chains/index.d.ts.map +1 -1
  72. package/_types/errors/version.d.ts +1 -1
  73. package/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.ts +1 -14
  74. package/account-abstraction/accounts/implementations/toSoladySmartAccount.ts +4 -14
  75. package/account-abstraction/accounts/toSmartAccount.ts +15 -2
  76. package/account-abstraction/accounts/types.ts +15 -3
  77. package/chains/definitions/assetChainTestnet.ts +28 -0
  78. package/chains/definitions/atletaOlympia.ts +30 -0
  79. package/chains/definitions/chips.ts +19 -0
  80. package/chains/definitions/curtis.ts +19 -0
  81. package/chains/definitions/flowTestnet.ts +6 -0
  82. package/chains/definitions/iota.ts +25 -0
  83. package/chains/definitions/iotaTestnet.ts +26 -0
  84. package/chains/index.ts +6 -0
  85. package/errors/version.ts +1 -1
  86. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { type Abi, type Address, type TypedData, parseAbi } from 'abitype'
1
+ import type { Abi, Address, TypedData } from 'abitype'
2
2
 
3
3
  import { parseAccount } from '../../../accounts/utils/parseAccount.js'
4
4
  import { readContract } from '../../../actions/public/readContract.js'
@@ -34,6 +34,7 @@ export type ToSoladySmartAccountParameters<
34
34
  }
35
35
  | undefined
36
36
  factoryAddress?: Address | undefined
37
+ getNonce?: SmartAccountImplementation['getNonce'] | undefined
37
38
  owner: Address | Account
38
39
  salt?: Hex | undefined
39
40
  }
@@ -86,6 +87,7 @@ export async function toSoladySmartAccount<
86
87
  version: '0.7',
87
88
  },
88
89
  factoryAddress = '0x5d82735936c6Cd5DE57cC3c1A799f6B2E6F933Df',
90
+ getNonce,
89
91
  salt = '0x0',
90
92
  } = parameters
91
93
 
@@ -103,6 +105,7 @@ export async function toSoladySmartAccount<
103
105
  return toSmartAccount({
104
106
  client,
105
107
  entryPoint,
108
+ getNonce,
106
109
 
107
110
  extend: { abi, factory },
108
111
 
@@ -144,19 +147,6 @@ export async function toSoladySmartAccount<
144
147
  return { factory: factory.address, factoryData }
145
148
  },
146
149
 
147
- async getNonce({ key = 0n } = {}) {
148
- const address = await this.getAddress()
149
- const nonce = await readContract(client, {
150
- abi: parseAbi([
151
- 'function getNonce(address, uint192) pure returns (uint256)',
152
- ]),
153
- address: entryPoint.address,
154
- functionName: 'getNonce',
155
- args: [address, key],
156
- })
157
- return nonce
158
- },
159
-
160
150
  async getStubSignature() {
161
151
  return '0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c'
162
152
  },
@@ -1,6 +1,7 @@
1
- import type { Abi } from 'abitype'
1
+ import { type Abi, parseAbi } from 'abitype'
2
2
 
3
3
  import { getCode } from '../../actions/public/getCode.js'
4
+ import { readContract } from '../../actions/public/readContract.js'
4
5
  import type { Prettify } from '../../types/utils.js'
5
6
  import { getAction } from '../../utils/getAction.js'
6
7
  import { createNonceManager } from '../../utils/nonceManager.js'
@@ -64,7 +65,19 @@ export async function toSmartAccount<
64
65
  client: implementation.client,
65
66
  }),
66
67
  )
67
- return await implementation.getNonce({ ...parameters, key })
68
+
69
+ if (implementation.getNonce)
70
+ return await implementation.getNonce({ ...parameters, key })
71
+
72
+ const nonce = await readContract(implementation.client, {
73
+ abi: parseAbi([
74
+ 'function getNonce(address, uint192) pure returns (uint256)',
75
+ ]),
76
+ address: implementation.entryPoint.address,
77
+ functionName: 'getNonce',
78
+ args: [address, key],
79
+ })
80
+ return nonce
68
81
  },
69
82
  async isDeployed() {
70
83
  if (deployed) return true
@@ -88,9 +88,11 @@ export type SmartAccountImplementation<
88
88
  * // 1n
89
89
  * ```
90
90
  */
91
- getNonce: (
92
- parameters?: { key?: bigint | undefined } | undefined,
93
- ) => Promise<bigint>
91
+ getNonce?:
92
+ | ((
93
+ parameters?: { key?: bigint | undefined } | undefined,
94
+ ) => Promise<bigint>)
95
+ | undefined
94
96
  /**
95
97
  * Retrieves the User Operation "stub" signature for gas estimation.
96
98
  *
@@ -184,6 +186,16 @@ export type SmartAccount<
184
186
  {
185
187
  /** Address of the Smart Account. */
186
188
  address: Address
189
+ /**
190
+ * Retrieves the nonce of the Account.
191
+ *
192
+ * @example
193
+ * ```ts
194
+ * const nonce = await account.getNonce()
195
+ * // 1n
196
+ * ```
197
+ */
198
+ getNonce: NonNullable<SmartAccountImplementation['getNonce']>
187
199
  /** Whether or not the Smart Account has been deployed. */
188
200
  isDeployed: () => Promise<boolean>
189
201
  /** Type of account. */
@@ -0,0 +1,28 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const assetChainTestnet = /*#__PURE__*/ defineChain({
4
+ id: 42_421,
5
+ name: 'AssetChain Testnet',
6
+ nativeCurrency: {
7
+ decimals: 18,
8
+ name: 'Real World Asset',
9
+ symbol: 'RWA',
10
+ },
11
+ rpcUrls: {
12
+ default: { http: ['https://enugu-rpc.assetchain.org'] },
13
+ },
14
+ blockExplorers: {
15
+ default: {
16
+ name: 'Asset Chain Testnet Explorer',
17
+ url: 'https://scan-testnet.assetchain.org',
18
+ apiUrl: 'https://scan-testnet.assetchain.org/api',
19
+ },
20
+ },
21
+ testnet: true,
22
+ contracts: {
23
+ multicall3: {
24
+ address: '0x989F832D35988cb5e3eB001Fa2Fe789469EC31Ea',
25
+ blockCreated: 17177,
26
+ },
27
+ },
28
+ })
@@ -0,0 +1,30 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const atletaOlympia = /*#__PURE__*/ defineChain({
4
+ id: 2340,
5
+ name: 'Atleta Olympia',
6
+ nativeCurrency: { decimals: 18, name: 'Atla', symbol: 'ATLA' },
7
+ rpcUrls: {
8
+ default: {
9
+ http: [
10
+ 'https://testnet-rpc.atleta.network:9944',
11
+ 'https://testnet-rpc.atleta.network',
12
+ ],
13
+ ws: ['wss://testnet-rpc.atleta.network:9944'],
14
+ },
15
+ },
16
+ blockExplorers: {
17
+ default: {
18
+ name: 'Atleta Olympia Explorer',
19
+ url: 'https://blockscout.atleta.network',
20
+ apiUrl: 'https://blockscout.atleta.network/api',
21
+ },
22
+ },
23
+ contracts: {
24
+ multicall3: {
25
+ address: '0x1472ec6392180fb84F345d2455bCC75B26577115',
26
+ blockCreated: 1076473,
27
+ },
28
+ },
29
+ testnet: true,
30
+ })
@@ -0,0 +1,19 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const chips = /*#__PURE__*/ defineChain({
4
+ id: 2882,
5
+ name: 'Chips Network',
6
+ network: 'CHIPS',
7
+ nativeCurrency: {
8
+ decimals: 18,
9
+ name: 'IOTA',
10
+ symbol: 'IOTA',
11
+ },
12
+ rpcUrls: {
13
+ default: {
14
+ http: [
15
+ 'https://node.chips.ooo/wasp/api/v1/chains/iota1pp3d3mnap3ufmgqnjsnw344sqmf5svjh26y2khnmc89sv6788y3r207a8fn/evm',
16
+ ],
17
+ },
18
+ },
19
+ })
@@ -0,0 +1,19 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const curtis = /*#__PURE__*/ defineChain({
4
+ id: 33_111,
5
+ name: 'Curtis',
6
+ nativeCurrency: { name: 'ApeCoin', symbol: 'APE', decimals: 18 },
7
+ rpcUrls: {
8
+ default: {
9
+ http: ['https://rpc.curtis.apechain.com'],
10
+ },
11
+ },
12
+ blockExplorers: {
13
+ default: {
14
+ name: 'Curtis Explorer',
15
+ url: 'https://explorer.curtis.apechain.com',
16
+ },
17
+ },
18
+ testnet: true,
19
+ })
@@ -19,4 +19,10 @@ export const flowTestnet = /*#__PURE__*/ defineChain({
19
19
  url: 'https://testnet.flowdiver.io',
20
20
  },
21
21
  },
22
+ contracts: {
23
+ multicall3: {
24
+ address: '0xca11bde05977b3631167028862be2a173976ca11',
25
+ blockCreated: 137518,
26
+ },
27
+ },
22
28
  })
@@ -0,0 +1,25 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const iota = /*#__PURE__*/ defineChain({
4
+ id: 8822,
5
+ name: 'IOTA EVM',
6
+ network: 'iotaevm',
7
+ nativeCurrency: {
8
+ decimals: 18,
9
+ name: 'IOTA',
10
+ symbol: 'IOTA',
11
+ },
12
+ rpcUrls: {
13
+ default: {
14
+ http: ['https://json-rpc.evm.iotaledger.net'],
15
+ webSocket: ['wss://ws.json-rpc.evm.iotaledger.net'],
16
+ },
17
+ },
18
+ blockExplorers: {
19
+ default: {
20
+ name: 'Explorer',
21
+ url: 'https://explorer.evm.iota.org',
22
+ apiUrl: 'https://explorer.evm.iota.org/api',
23
+ },
24
+ },
25
+ })
@@ -0,0 +1,26 @@
1
+ import { defineChain } from '../../utils/chain/defineChain.js'
2
+
3
+ export const iotaTestnet = /*#__PURE__*/ defineChain({
4
+ id: 1075,
5
+ name: 'IOTA EVM Testnet',
6
+ network: 'iotaevm-testnet',
7
+ nativeCurrency: {
8
+ decimals: 18,
9
+ name: 'IOTA',
10
+ symbol: 'IOTA',
11
+ },
12
+ rpcUrls: {
13
+ default: {
14
+ http: ['https://json-rpc.evm.testnet.iotaledger.net'],
15
+ webSocket: ['wss://ws.json-rpc.evm.testnet.iotaledger.net'],
16
+ },
17
+ },
18
+ blockExplorers: {
19
+ default: {
20
+ name: 'Explorer',
21
+ url: 'https://explorer.evm.testnet.iotaledger.net',
22
+ apiUrl: 'https://explorer.evm.testnet.iotaledger.net/api',
23
+ },
24
+ },
25
+ testnet: true,
26
+ })
package/chains/index.ts CHANGED
@@ -10,6 +10,7 @@ export { apexTestnet } from './definitions/apexTestnet.js'
10
10
  export { arbitrum } from './definitions/arbitrum.js'
11
11
  export { arbitrumGoerli } from './definitions/arbitrumGoerli.js'
12
12
  export { arbitrumNova } from './definitions/arbitrumNova.js'
13
+ export { assetChainTestnet } from './definitions/assetChainTestnet.js'
13
14
  export { astar } from './definitions/astar.js'
14
15
  export { astarZkEVM } from './definitions/astarZkEVM.js'
15
16
  export { astarZkyoto } from './definitions/astarZkyoto.js'
@@ -17,6 +18,7 @@ export { arbitrumSepolia } from './definitions/arbitrumSepolia.js'
17
18
  export { areonNetwork } from './definitions/areonNetwork.js'
18
19
  export { areonNetworkTestnet } from './definitions/areonNetworkTestnet.js'
19
20
  export { artelaTestnet } from './definitions/artelaTestnet.js'
21
+ export { atletaOlympia } from './definitions/atletaOlympia.js'
20
22
  export { aurora } from './definitions/aurora.js'
21
23
  export { auroraTestnet } from './definitions/auroraTestnet.js'
22
24
  export { auroria } from './definitions/auroria.js'
@@ -57,6 +59,7 @@ export { canto } from './definitions/canto.js'
57
59
  export { celo } from './definitions/celo.js'
58
60
  export { celoAlfajores } from './definitions/celoAlfajores.js'
59
61
  export { chiliz } from './definitions/chiliz.js'
62
+ export { chips } from './definitions/chips.js'
60
63
  export { classic } from './definitions/classic.js'
61
64
  export { confluxESpace } from './definitions/confluxESpace.js'
62
65
  export { confluxESpaceTestnet } from './definitions/confluxESpaceTestnet.js'
@@ -66,6 +69,7 @@ export { cronos } from './definitions/cronos.js'
66
69
  export { cronoszkEVMTestnet } from './definitions/cronoszkEVMTestnet.js'
67
70
  export { cronosTestnet } from './definitions/cronosTestnet.js'
68
71
  export { crossbell } from './definitions/crossbell.js'
72
+ export { curtis } from './definitions/curtis.js'
69
73
  export { cyber } from './definitions/cyber.js'
70
74
  export { cyberTestnet } from './definitions/cyberTestnet.js'
71
75
  export { darwinia } from './definitions/darwinia.js'
@@ -135,6 +139,8 @@ export { holesky } from './definitions/holesky.js'
135
139
  export { immutableZkEvm } from './definitions/immutableZkEvm.js'
136
140
  export { immutableZkEvmTestnet } from './definitions/immutableZkEvmTestnet.js'
137
141
  export { inEVM } from './definitions/inEVM.js'
142
+ export { iota } from './definitions/iota.js'
143
+ export { iotaTestnet } from './definitions/iotaTestnet.js'
138
144
  export { kakarotSepolia } from './definitions/kakarotSepolia.js'
139
145
  export { kava } from './definitions/kava.js'
140
146
  export { kavaTestnet } from './definitions/kavaTestnet.js'
package/errors/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '2.19.4'
1
+ export const version = '2.19.6'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "viem",
3
3
  "description": "TypeScript Interface for Ethereum",
4
- "version": "2.19.4",
4
+ "version": "2.19.6",
5
5
  "main": "./_cjs/index.js",
6
6
  "module": "./_esm/index.js",
7
7
  "types": "./_types/index.d.ts",