viem 2.27.3 → 2.28.0-canary-20250421235327

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 (163) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/_cjs/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -1
  3. package/_cjs/account-abstraction/accounts/implementations/toSimple7702SmartAccount.js +257 -0
  4. package/_cjs/account-abstraction/accounts/implementations/toSimple7702SmartAccount.js.map +1 -0
  5. package/_cjs/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -1
  6. package/_cjs/account-abstraction/accounts/toSmartAccount.js +2 -2
  7. package/_cjs/account-abstraction/accounts/toSmartAccount.js.map +1 -1
  8. package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js +7 -1
  9. package/_cjs/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -1
  10. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js +21 -1
  11. package/_cjs/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -1
  12. package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js +2 -2
  13. package/_cjs/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
  14. package/_cjs/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -1
  15. package/_cjs/account-abstraction/constants/abis.js +691 -1
  16. package/_cjs/account-abstraction/constants/abis.js.map +1 -1
  17. package/_cjs/account-abstraction/constants/address.js +2 -1
  18. package/_cjs/account-abstraction/constants/address.js.map +1 -1
  19. package/_cjs/account-abstraction/index.js +6 -2
  20. package/_cjs/account-abstraction/index.js.map +1 -1
  21. package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js +19 -0
  22. package/_cjs/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -1
  23. package/_cjs/account-abstraction/utils/userOperation/getInitCode.js +18 -0
  24. package/_cjs/account-abstraction/utils/userOperation/getInitCode.js.map +1 -0
  25. package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js +30 -39
  26. package/_cjs/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -1
  27. package/_cjs/account-abstraction/utils/userOperation/getUserOperationTypedData.js +31 -0
  28. package/_cjs/account-abstraction/utils/userOperation/getUserOperationTypedData.js.map +1 -0
  29. package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js +3 -2
  30. package/_cjs/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -1
  31. package/_cjs/constants/address.js +2 -1
  32. package/_cjs/constants/address.js.map +1 -1
  33. package/_cjs/errors/version.js +1 -1
  34. package/_cjs/errors/version.js.map +1 -1
  35. package/_cjs/experimental/eip5792/actions/getCallsStatus.js +1 -1
  36. package/_cjs/experimental/eip5792/actions/getCallsStatus.js.map +1 -1
  37. package/_cjs/experimental/eip5792/actions/sendCalls.js +1 -1
  38. package/_cjs/experimental/eip5792/actions/sendCalls.js.map +1 -1
  39. package/_esm/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.js.map +1 -1
  40. package/_esm/account-abstraction/accounts/implementations/toSimple7702SmartAccount.js +271 -0
  41. package/_esm/account-abstraction/accounts/implementations/toSimple7702SmartAccount.js.map +1 -0
  42. package/_esm/account-abstraction/accounts/implementations/toSoladySmartAccount.js.map +1 -1
  43. package/_esm/account-abstraction/accounts/toSmartAccount.js +2 -2
  44. package/_esm/account-abstraction/accounts/toSmartAccount.js.map +1 -1
  45. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js +7 -1
  46. package/_esm/account-abstraction/actions/bundler/estimateUserOperationGas.js.map +1 -1
  47. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js +21 -1
  48. package/_esm/account-abstraction/actions/bundler/prepareUserOperation.js.map +1 -1
  49. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js +2 -2
  50. package/_esm/account-abstraction/actions/bundler/sendUserOperation.js.map +1 -1
  51. package/_esm/account-abstraction/actions/paymaster/getPaymasterData.js.map +1 -1
  52. package/_esm/account-abstraction/constants/abis.js +690 -0
  53. package/_esm/account-abstraction/constants/abis.js.map +1 -1
  54. package/_esm/account-abstraction/constants/address.js +1 -0
  55. package/_esm/account-abstraction/constants/address.js.map +1 -1
  56. package/_esm/account-abstraction/index.js +3 -2
  57. package/_esm/account-abstraction/index.js.map +1 -1
  58. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js +19 -0
  59. package/_esm/account-abstraction/utils/formatters/userOperationRequest.js.map +1 -1
  60. package/_esm/account-abstraction/utils/userOperation/getInitCode.js +15 -0
  61. package/_esm/account-abstraction/utils/userOperation/getInitCode.js.map +1 -0
  62. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js +30 -39
  63. package/_esm/account-abstraction/utils/userOperation/getUserOperationHash.js.map +1 -1
  64. package/_esm/account-abstraction/utils/userOperation/getUserOperationTypedData.js +28 -0
  65. package/_esm/account-abstraction/utils/userOperation/getUserOperationTypedData.js.map +1 -0
  66. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js +3 -2
  67. package/_esm/account-abstraction/utils/userOperation/toPackedUserOperation.js.map +1 -1
  68. package/_esm/constants/address.js +1 -0
  69. package/_esm/constants/address.js.map +1 -1
  70. package/_esm/errors/version.js +1 -1
  71. package/_esm/errors/version.js.map +1 -1
  72. package/_esm/experimental/eip5792/actions/getCallsStatus.js +1 -1
  73. package/_esm/experimental/eip5792/actions/getCallsStatus.js.map +1 -1
  74. package/_esm/experimental/eip5792/actions/sendCalls.js +1 -1
  75. package/_esm/experimental/eip5792/actions/sendCalls.js.map +1 -1
  76. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts +1 -2
  77. package/_types/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.d.ts.map +1 -1
  78. package/_types/account-abstraction/accounts/implementations/toSimple7702SmartAccount.d.ts +311 -0
  79. package/_types/account-abstraction/accounts/implementations/toSimple7702SmartAccount.d.ts.map +1 -0
  80. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts +1 -2
  81. package/_types/account-abstraction/accounts/implementations/toSoladySmartAccount.d.ts.map +1 -1
  82. package/_types/account-abstraction/accounts/types.d.ts +16 -3
  83. package/_types/account-abstraction/accounts/types.d.ts.map +1 -1
  84. package/_types/account-abstraction/actions/bundler/estimateUserOperationGas.d.ts.map +1 -1
  85. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts +23 -6
  86. package/_types/account-abstraction/actions/bundler/prepareUserOperation.d.ts.map +1 -1
  87. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts +1 -1
  88. package/_types/account-abstraction/actions/paymaster/getPaymasterData.d.ts.map +1 -1
  89. package/_types/account-abstraction/constants/abis.d.ts +830 -0
  90. package/_types/account-abstraction/constants/abis.d.ts.map +1 -1
  91. package/_types/account-abstraction/constants/address.d.ts +1 -0
  92. package/_types/account-abstraction/constants/address.d.ts.map +1 -1
  93. package/_types/account-abstraction/index.d.ts +3 -2
  94. package/_types/account-abstraction/index.d.ts.map +1 -1
  95. package/_types/account-abstraction/types/entryPointVersion.d.ts +1 -1
  96. package/_types/account-abstraction/types/entryPointVersion.d.ts.map +1 -1
  97. package/_types/account-abstraction/types/rpc.d.ts +6 -3
  98. package/_types/account-abstraction/types/rpc.d.ts.map +1 -1
  99. package/_types/account-abstraction/types/userOperation.d.ts +49 -5
  100. package/_types/account-abstraction/types/userOperation.d.ts.map +1 -1
  101. package/_types/account-abstraction/utils/formatters/userOperationRequest.d.ts.map +1 -1
  102. package/_types/account-abstraction/utils/userOperation/getInitCode.d.ts +3 -0
  103. package/_types/account-abstraction/utils/userOperation/getInitCode.d.ts.map +1 -0
  104. package/_types/account-abstraction/utils/userOperation/getUserOperationHash.d.ts.map +1 -1
  105. package/_types/account-abstraction/utils/userOperation/getUserOperationTypedData.d.ts +45 -0
  106. package/_types/account-abstraction/utils/userOperation/getUserOperationTypedData.d.ts.map +1 -0
  107. package/_types/account-abstraction/utils/userOperation/toPackedUserOperation.d.ts.map +1 -1
  108. package/_types/celo/chainConfig.d.ts +14 -14
  109. package/_types/celo/formatters.d.ts +7 -7
  110. package/_types/chains/definitions/abstract.d.ts +3 -3
  111. package/_types/chains/definitions/abstractTestnet.d.ts +3 -3
  112. package/_types/chains/definitions/celo.d.ts +14 -14
  113. package/_types/chains/definitions/celoAlfajores.d.ts +14 -14
  114. package/_types/chains/definitions/playfiAlbireo.d.ts +3 -3
  115. package/_types/chains/definitions/sophon.d.ts +3 -3
  116. package/_types/chains/definitions/sophonTestnet.d.ts +3 -3
  117. package/_types/chains/definitions/treasure.d.ts +3 -3
  118. package/_types/chains/definitions/treasureTopaz.d.ts +3 -3
  119. package/_types/chains/definitions/zksync.d.ts +3 -3
  120. package/_types/chains/definitions/zksyncInMemoryNode.d.ts +3 -3
  121. package/_types/chains/definitions/zksyncLocalCustomHyperchain.d.ts +3 -3
  122. package/_types/chains/definitions/zksyncLocalHyperchain.d.ts +3 -3
  123. package/_types/chains/definitions/zksyncLocalNode.d.ts +3 -3
  124. package/_types/chains/definitions/zksyncSepoliaTestnet.d.ts +3 -3
  125. package/_types/constants/address.d.ts +1 -0
  126. package/_types/constants/address.d.ts.map +1 -1
  127. package/_types/errors/version.d.ts +1 -1
  128. package/_types/errors/version.d.ts.map +1 -1
  129. package/_types/types/authorization.d.ts +1 -1
  130. package/_types/types/authorization.d.ts.map +1 -1
  131. package/_types/types/misc.d.ts +7 -7
  132. package/_types/types/misc.d.ts.map +1 -1
  133. package/_types/utils/formatters/transaction.d.ts +1 -1
  134. package/_types/utils/formatters/transactionRequest.d.ts +1 -1
  135. package/_types/zksync/chainConfig.d.ts +3 -3
  136. package/_types/zksync/formatters.d.ts +3 -3
  137. package/account-abstraction/accounts/implementations/toCoinbaseSmartAccount.ts +1 -2
  138. package/account-abstraction/accounts/implementations/toSimple7702SmartAccount.ts +317 -0
  139. package/account-abstraction/accounts/implementations/toSoladySmartAccount.ts +1 -2
  140. package/account-abstraction/accounts/toSmartAccount.ts +2 -2
  141. package/account-abstraction/accounts/types.ts +26 -2
  142. package/account-abstraction/actions/bundler/estimateUserOperationGas.ts +8 -1
  143. package/account-abstraction/actions/bundler/prepareUserOperation.ts +56 -2
  144. package/account-abstraction/actions/bundler/sendUserOperation.ts +2 -2
  145. package/account-abstraction/actions/paymaster/getPaymasterData.ts +24 -0
  146. package/account-abstraction/constants/abis.ts +691 -0
  147. package/account-abstraction/constants/address.ts +2 -0
  148. package/account-abstraction/index.ts +12 -1
  149. package/account-abstraction/types/entryPointVersion.ts +1 -1
  150. package/account-abstraction/types/rpc.ts +6 -3
  151. package/account-abstraction/types/userOperation.ts +69 -3
  152. package/account-abstraction/utils/formatters/userOperationRequest.ts +21 -0
  153. package/account-abstraction/utils/userOperation/getInitCode.ts +21 -0
  154. package/account-abstraction/utils/userOperation/getUserOperationHash.ts +37 -50
  155. package/account-abstraction/utils/userOperation/getUserOperationTypedData.ts +42 -0
  156. package/account-abstraction/utils/userOperation/toPackedUserOperation.ts +2 -4
  157. package/constants/address.ts +2 -0
  158. package/errors/version.ts +1 -1
  159. package/experimental/eip5792/actions/getCallsStatus.ts +1 -1
  160. package/experimental/eip5792/actions/sendCalls.ts +1 -1
  161. package/package.json +1 -1
  162. package/types/authorization.ts +1 -1
  163. package/types/misc.ts +7 -7
@@ -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, 'factory'> extends never
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.address)!,
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