viem 2.27.1-canary-20250417045626 → 2.27.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.
- package/CHANGELOG.md +1 -1
- package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -1
- package/_cjs/account-abstraction/accounts/implementations/toSimple7702SmartAccount.js +313 -0
- package/_cjs/account-abstraction/accounts/implementations/toSimple7702SmartAccount.js.map +1 -0
- package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -1
- package/_cjs/account-abstraction/accounts/toSmartAccount.js +2 -2
- package/_cjs/account-abstraction/accounts/toSmartAccount.js.map +1 -1
- package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js +7 -1
- package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -1
- package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js +21 -1
- package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -1
- package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js +2 -2
- package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
- package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -1
- package/_cjs/account-abstraction/constants/abis.js +691 -1
- package/_cjs/account-abstraction/constants/abis.js.map +1 -1
- package/_cjs/account-abstraction/constants/address.js +2 -1
- package/_cjs/account-abstraction/constants/address.js.map +1 -1
- package/_cjs/account-abstraction/index.js +6 -2
- package/_cjs/account-abstraction/index.js.map +1 -1
- package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js +19 -0
- package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -1
- package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js +70 -0
- package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -1
- package/_cjs/constants/address.js +2 -1
- package/_cjs/constants/address.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/errors/version.js.map +1 -1
- package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -1
- package/_esm/account-abstraction/accounts/implementations/toSimple7702SmartAccount.js +327 -0
- package/_esm/account-abstraction/accounts/implementations/toSimple7702SmartAccount.js.map +1 -0
- package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -1
- package/_esm/account-abstraction/accounts/toSmartAccount.js +2 -2
- package/_esm/account-abstraction/accounts/toSmartAccount.js.map +1 -1
- package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js +7 -1
- package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -1
- package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js +21 -1
- package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -1
- package/_esm/account-abstraction/actions/bundler/sendUserOperation.js +2 -2
- package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
- package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -1
- package/_esm/account-abstraction/constants/abis.js +690 -0
- package/_esm/account-abstraction/constants/abis.js.map +1 -1
- package/_esm/account-abstraction/constants/address.js +1 -0
- package/_esm/account-abstraction/constants/address.js.map +1 -1
- package/_esm/account-abstraction/index.js +3 -2
- package/_esm/account-abstraction/index.js.map +1 -1
- package/_esm/account-abstraction/utils/formatters/userOperationRequest.js +19 -0
- package/_esm/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -1
- package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js +70 -0
- package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -1
- package/_esm/constants/address.js +1 -0
- package/_esm/constants/address.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/errors/version.js.map +1 -1
- package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts +1 -2
- package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts.map +1 -1
- package/_types/account-abstraction/accounts/implementations/toSimple7702SmartAccount.d.ts +311 -0
- package/_types/account-abstraction/accounts/implementations/toSimple7702SmartAccount.d.ts.map +1 -0
- package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts +1 -2
- package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts.map +1 -1
- package/_types/account-abstraction/accounts/types.d.ts +16 -3
- package/_types/account-abstraction/accounts/types.d.ts.map +1 -1
- package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts.map +1 -1
- package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts +23 -6
- package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts.map +1 -1
- package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts +1 -1
- package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts.map +1 -1
- package/_types/account-abstraction/constants/abis.d.ts +830 -0
- package/_types/account-abstraction/constants/abis.d.ts.map +1 -1
- package/_types/account-abstraction/constants/address.d.ts +1 -0
- package/_types/account-abstraction/constants/address.d.ts.map +1 -1
- package/_types/account-abstraction/index.d.ts +3 -2
- package/_types/account-abstraction/index.d.ts.map +1 -1
- package/_types/account-abstraction/types/entryPointVersion.d.ts +1 -1
- package/_types/account-abstraction/types/entryPointVersion.d.ts.map +1 -1
- package/_types/account-abstraction/types/rpc.d.ts +6 -3
- package/_types/account-abstraction/types/rpc.d.ts.map +1 -1
- package/_types/account-abstraction/types/userOperation.d.ts +49 -5
- package/_types/account-abstraction/types/userOperation.d.ts.map +1 -1
- package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts.map +1 -1
- package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts.map +1 -1
- package/_types/celo/chainConfig.d.ts +14 -14
- package/_types/celo/formatters.d.ts +7 -7
- package/_types/chains/definitions/abstract.d.ts +3 -3
- package/_types/chains/definitions/abstractTestnet.d.ts +3 -3
- package/_types/chains/definitions/celo.d.ts +14 -14
- package/_types/chains/definitions/celoAlfajores.d.ts +14 -14
- package/_types/chains/definitions/playfiAlbireo.d.ts +3 -3
- package/_types/chains/definitions/sophon.d.ts +3 -3
- package/_types/chains/definitions/sophonTestnet.d.ts +3 -3
- package/_types/chains/definitions/treasure.d.ts +3 -3
- package/_types/chains/definitions/treasureTopaz.d.ts +3 -3
- package/_types/chains/definitions/zksync.d.ts +3 -3
- package/_types/chains/definitions/zksyncInMemoryNode.d.ts +3 -3
- package/_types/chains/definitions/zksyncLocalCustomHyperchain.d.ts +3 -3
- package/_types/chains/definitions/zksyncLocalHyperchain.d.ts +3 -3
- package/_types/chains/definitions/zksyncLocalNode.d.ts +3 -3
- package/_types/chains/definitions/zksyncSepoliaTestnet.d.ts +3 -3
- package/_types/constants/address.d.ts +1 -0
- package/_types/constants/address.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/errors/version.d.ts.map +1 -1
- package/_types/types/authorization.d.ts +1 -1
- package/_types/types/authorization.d.ts.map +1 -1
- package/_types/types/misc.d.ts +7 -7
- package/_types/types/misc.d.ts.map +1 -1
- package/_types/utils/formatters/transaction.d.ts +1 -1
- package/_types/utils/formatters/transactionRequest.d.ts +1 -1
- package/_types/zksync/chainConfig.d.ts +3 -3
- package/_types/zksync/formatters.d.ts +3 -3
- package/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.ts +1 -2
- package/account-abstraction/accounts/implementations/toSimple7702SmartAccount.ts +382 -0
- package/account-abstraction/accounts/implementations/toSoladySmartAccount.ts +1 -2
- package/account-abstraction/accounts/toSmartAccount.ts +2 -2
- package/account-abstraction/accounts/types.ts +26 -2
- package/account-abstraction/actions/bundler/estimateUserOperationGas.ts +8 -1
- package/account-abstraction/actions/bundler/prepareUserOperation.ts +56 -2
- package/account-abstraction/actions/bundler/sendUserOperation.ts +2 -2
- package/account-abstraction/actions/paymaster/getPaymasterData.ts +24 -0
- package/account-abstraction/constants/abis.ts +691 -0
- package/account-abstraction/constants/address.ts +2 -0
- package/account-abstraction/index.ts +12 -1
- package/account-abstraction/types/entryPointVersion.ts +1 -1
- package/account-abstraction/types/rpc.ts +6 -3
- package/account-abstraction/types/userOperation.ts +69 -3
- package/account-abstraction/utils/formatters/userOperationRequest.ts +21 -0
- package/account-abstraction/utils/userOperation/getUserOperationHash.ts +79 -0
- package/constants/address.ts +2 -0
- package/errors/version.ts +1 -1
- package/package.json +1 -1
- package/types/authorization.ts +1 -1
- package/types/misc.ts +7 -7
@@ -1,7 +1,14 @@
|
|
1
1
|
import type { Abi, Address, TypedData } from 'abitype'
|
2
2
|
import type * as WebAuthnP256 from 'ox/WebAuthnP256'
|
3
3
|
|
4
|
+
import type {
|
5
|
+
JsonRpcAccount,
|
6
|
+
LocalAccount,
|
7
|
+
PrivateKeyAccount,
|
8
|
+
} from '../../accounts/types.js'
|
4
9
|
import type { Client } from '../../clients/createClient.js'
|
10
|
+
import type { Transport } from '../../clients/transports/createTransport.js'
|
11
|
+
import type { Chain } from '../../types/chain.js'
|
5
12
|
import type { Hash, Hex, SignableMessage } from '../../types/misc.js'
|
6
13
|
import type { TypedDataDefinition } from '../../types/typedData.js'
|
7
14
|
import type { Assign, ExactPartial, UnionPartialBy } from '../../types/utils.js'
|
@@ -23,9 +30,14 @@ export type SmartAccountImplementation<
|
|
23
30
|
entryPointAbi extends Abi | readonly unknown[] = Abi,
|
24
31
|
entryPointVersion extends EntryPointVersion = EntryPointVersion,
|
25
32
|
extend extends object = object,
|
33
|
+
eip7702 extends boolean = boolean,
|
26
34
|
> = {
|
27
35
|
/** Client used to retrieve Smart Account data, and perform signing (if owner is a JSON-RPC Account). */
|
28
|
-
client: Client
|
36
|
+
client: Client<
|
37
|
+
Transport,
|
38
|
+
Chain | undefined,
|
39
|
+
JsonRpcAccount | LocalAccount | undefined
|
40
|
+
>
|
29
41
|
/** Compatible EntryPoint of the Smart Account. */
|
30
42
|
entryPoint: {
|
31
43
|
/** Compatible EntryPoint ABI. */
|
@@ -189,7 +201,19 @@ export type SmartAccountImplementation<
|
|
189
201
|
| undefined
|
190
202
|
}
|
191
203
|
| undefined
|
192
|
-
}
|
204
|
+
} & (eip7702 extends true
|
205
|
+
? {
|
206
|
+
/** EIP-7702 authorization properties, if applicable. */
|
207
|
+
authorization: {
|
208
|
+
/** EOA to delegate to. */
|
209
|
+
account: PrivateKeyAccount
|
210
|
+
/** Delegation address. */
|
211
|
+
address: Address
|
212
|
+
}
|
213
|
+
}
|
214
|
+
: {
|
215
|
+
authorization?: undefined
|
216
|
+
})
|
193
217
|
|
194
218
|
export type SmartAccount<
|
195
219
|
implementation extends
|
@@ -174,7 +174,13 @@ export async function estimateUserOperationGas<
|
|
174
174
|
'prepareUserOperation',
|
175
175
|
)({
|
176
176
|
...parameters,
|
177
|
-
parameters: [
|
177
|
+
parameters: [
|
178
|
+
'authorization',
|
179
|
+
'factory',
|
180
|
+
'nonce',
|
181
|
+
'paymaster',
|
182
|
+
'signature',
|
183
|
+
],
|
178
184
|
} as unknown as PrepareUserOperationParameters)
|
179
185
|
: parameters
|
180
186
|
|
@@ -183,6 +189,7 @@ export async function estimateUserOperationGas<
|
|
183
189
|
formatUserOperationRequest(request as UserOperation),
|
184
190
|
(entryPointAddress ?? account?.entryPoint?.address)!,
|
185
191
|
] as const
|
192
|
+
|
186
193
|
const result = await client.request({
|
187
194
|
method: 'eth_estimateUserOperationGas',
|
188
195
|
params: rpcStateOverride ? [...params, rpcStateOverride] : [...params],
|
@@ -3,6 +3,7 @@ import {
|
|
3
3
|
type ParseAccountErrorType,
|
4
4
|
parseAccount,
|
5
5
|
} from '../../../accounts/utils/parseAccount.js'
|
6
|
+
import { prepareAuthorization } from '../../../actions/index.js'
|
6
7
|
import {
|
7
8
|
type EstimateFeesPerGasErrorType,
|
8
9
|
estimateFeesPerGas,
|
@@ -12,6 +13,7 @@ import type { Client } from '../../../clients/createClient.js'
|
|
12
13
|
import type { Transport } from '../../../clients/transports/createTransport.js'
|
13
14
|
import { AccountNotFoundError } from '../../../errors/account.js'
|
14
15
|
import type { ErrorType } from '../../../errors/utils.js'
|
16
|
+
import type { SignedAuthorization } from '../../../types/authorization.js'
|
15
17
|
import type { Call, Calls } from '../../../types/calls.js'
|
16
18
|
import type { Chain } from '../../../types/chain.js'
|
17
19
|
import type { Hex } from '../../../types/misc.js'
|
@@ -63,6 +65,7 @@ const defaultParameters = [
|
|
63
65
|
'paymaster',
|
64
66
|
'nonce',
|
65
67
|
'signature',
|
68
|
+
'authorization',
|
66
69
|
] as const
|
67
70
|
|
68
71
|
export type PrepareUserOperationParameterType =
|
@@ -72,10 +75,17 @@ export type PrepareUserOperationParameterType =
|
|
72
75
|
| 'paymaster'
|
73
76
|
| 'nonce'
|
74
77
|
| 'signature'
|
78
|
+
| 'authorization'
|
75
79
|
|
76
80
|
type FactoryProperties<
|
77
81
|
entryPointVersion extends EntryPointVersion = EntryPointVersion,
|
78
82
|
> =
|
83
|
+
| (entryPointVersion extends '0.8'
|
84
|
+
? {
|
85
|
+
factory: UserOperation['factory']
|
86
|
+
factoryData: UserOperation['factoryData']
|
87
|
+
}
|
88
|
+
: never)
|
79
89
|
| (entryPointVersion extends '0.7'
|
80
90
|
? {
|
81
91
|
factory: UserOperation['factory']
|
@@ -91,6 +101,15 @@ type FactoryProperties<
|
|
91
101
|
type GasProperties<
|
92
102
|
entryPointVersion extends EntryPointVersion = EntryPointVersion,
|
93
103
|
> =
|
104
|
+
| (entryPointVersion extends '0.8'
|
105
|
+
? {
|
106
|
+
callGasLimit: UserOperation['callGasLimit']
|
107
|
+
preVerificationGas: UserOperation['preVerificationGas']
|
108
|
+
verificationGasLimit: UserOperation['verificationGasLimit']
|
109
|
+
paymasterPostOpGasLimit: UserOperation['paymasterPostOpGasLimit']
|
110
|
+
paymasterVerificationGasLimit: UserOperation['paymasterVerificationGasLimit']
|
111
|
+
}
|
112
|
+
: never)
|
94
113
|
| (entryPointVersion extends '0.7'
|
95
114
|
? {
|
96
115
|
callGasLimit: UserOperation['callGasLimit']
|
@@ -120,6 +139,14 @@ type NonceProperties = {
|
|
120
139
|
type PaymasterProperties<
|
121
140
|
entryPointVersion extends EntryPointVersion = EntryPointVersion,
|
122
141
|
> =
|
142
|
+
| (entryPointVersion extends '0.8'
|
143
|
+
? {
|
144
|
+
paymaster: UserOperation['paymaster']
|
145
|
+
paymasterData: UserOperation['paymasterData']
|
146
|
+
paymasterPostOpGasLimit: UserOperation['paymasterPostOpGasLimit']
|
147
|
+
paymasterVerificationGasLimit: UserOperation['paymasterVerificationGasLimit']
|
148
|
+
}
|
149
|
+
: never)
|
123
150
|
| (entryPointVersion extends '0.7'
|
124
151
|
? {
|
125
152
|
paymaster: UserOperation['paymaster']
|
@@ -138,6 +165,10 @@ type SignatureProperties = {
|
|
138
165
|
signature: UserOperation['signature']
|
139
166
|
}
|
140
167
|
|
168
|
+
type AuthorizationProperties = {
|
169
|
+
authorization: UserOperation['authorization']
|
170
|
+
}
|
171
|
+
|
141
172
|
export type PrepareUserOperationRequest<
|
142
173
|
account extends SmartAccount | undefined = SmartAccount | undefined,
|
143
174
|
accountOverride extends SmartAccount | undefined = SmartAccount | undefined,
|
@@ -208,7 +239,10 @@ export type PrepareUserOperationReturnType<
|
|
208
239
|
callData: Hex
|
209
240
|
paymasterAndData: _derivedVersion extends '0.6' ? Hex : undefined
|
210
241
|
sender: UserOperation['sender']
|
211
|
-
} & (Extract<_parameters, '
|
242
|
+
} & (Extract<_parameters, 'authorization'> extends never
|
243
|
+
? {}
|
244
|
+
: AuthorizationProperties) &
|
245
|
+
(Extract<_parameters, 'factory'> extends never
|
212
246
|
? {}
|
213
247
|
: FactoryProperties<_derivedVersion>) &
|
214
248
|
(Extract<_parameters, 'nonce'> extends never ? {} : NonceProperties) &
|
@@ -359,7 +393,7 @@ export async function prepareUserOperation<
|
|
359
393
|
// Concurrently prepare properties required to fill the User Operation.
|
360
394
|
////////////////////////////////////////////////////////////////////////////////
|
361
395
|
|
362
|
-
const [callData, factory, fees, nonce] = await Promise.all([
|
396
|
+
const [callData, factory, fees, nonce, authorization] = await Promise.all([
|
363
397
|
(async () => {
|
364
398
|
if (parameters.calls)
|
365
399
|
return account.encodeCalls(
|
@@ -457,6 +491,24 @@ export async function prepareUserOperation<
|
|
457
491
|
if (typeof parameters.nonce === 'bigint') return parameters.nonce
|
458
492
|
return account.getNonce()
|
459
493
|
})(),
|
494
|
+
(async () => {
|
495
|
+
if (!properties.includes('authorization')) return undefined
|
496
|
+
if (typeof parameters.authorization === 'object')
|
497
|
+
return parameters.authorization
|
498
|
+
if (account.authorization && !(await account.isDeployed())) {
|
499
|
+
const authorization = await prepareAuthorization(
|
500
|
+
account.client,
|
501
|
+
account.authorization,
|
502
|
+
)
|
503
|
+
return {
|
504
|
+
...authorization,
|
505
|
+
r: '0xfffffffffffffffffffffffffffffff000000000000000000000000000000000',
|
506
|
+
s: '0x7aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
|
507
|
+
yParity: 1,
|
508
|
+
} satisfies SignedAuthorization
|
509
|
+
}
|
510
|
+
return undefined
|
511
|
+
})(),
|
460
512
|
])
|
461
513
|
|
462
514
|
////////////////////////////////////////////////////////////////////////////////
|
@@ -468,6 +520,8 @@ export async function prepareUserOperation<
|
|
468
520
|
request = { ...request, ...(factory as any) }
|
469
521
|
if (typeof fees !== 'undefined') request = { ...request, ...(fees as any) }
|
470
522
|
if (typeof nonce !== 'undefined') request.nonce = nonce
|
523
|
+
if (typeof authorization !== 'undefined')
|
524
|
+
request.authorization = authorization
|
471
525
|
|
472
526
|
////////////////////////////////////////////////////////////////////////////////
|
473
527
|
// Fill User Operation with the `signature` property.
|
@@ -135,7 +135,7 @@ export async function sendUserOperation<
|
|
135
135
|
: parameters
|
136
136
|
|
137
137
|
const signature = (parameters.signature ||
|
138
|
-
(await account?.signUserOperation(request as UserOperation)))!
|
138
|
+
(await account?.signUserOperation?.(request as UserOperation)))!
|
139
139
|
|
140
140
|
const rpcParameters = formatUserOperationRequest({
|
141
141
|
...request,
|
@@ -148,7 +148,7 @@ export async function sendUserOperation<
|
|
148
148
|
method: 'eth_sendUserOperation',
|
149
149
|
params: [
|
150
150
|
rpcParameters,
|
151
|
-
(entryPointAddress ?? account?.entryPoint
|
151
|
+
(entryPointAddress ?? account?.entryPoint?.address)!,
|
152
152
|
],
|
153
153
|
},
|
154
154
|
{ retryCount: 0 },
|
@@ -57,6 +57,30 @@ export type GetPaymasterDataParameters = OneOf<
|
|
57
57
|
| 'preVerificationGas'
|
58
58
|
| 'verificationGasLimit'
|
59
59
|
>
|
60
|
+
| PartialBy<
|
61
|
+
Pick<
|
62
|
+
UserOperation<'0.8'>,
|
63
|
+
| 'callData'
|
64
|
+
| 'callGasLimit'
|
65
|
+
| 'factory'
|
66
|
+
| 'factoryData'
|
67
|
+
| 'maxFeePerGas'
|
68
|
+
| 'maxPriorityFeePerGas'
|
69
|
+
| 'nonce'
|
70
|
+
| 'sender'
|
71
|
+
| 'preVerificationGas'
|
72
|
+
| 'verificationGasLimit'
|
73
|
+
| 'paymasterPostOpGasLimit'
|
74
|
+
| 'paymasterVerificationGasLimit'
|
75
|
+
>,
|
76
|
+
| 'callGasLimit'
|
77
|
+
| 'factory'
|
78
|
+
| 'factoryData'
|
79
|
+
| 'maxFeePerGas'
|
80
|
+
| 'maxPriorityFeePerGas'
|
81
|
+
| 'preVerificationGas'
|
82
|
+
| 'verificationGasLimit'
|
83
|
+
>
|
60
84
|
> & {
|
61
85
|
context?: unknown | undefined
|
62
86
|
chainId: number
|