Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .changeset/proud-doors-cheat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"viem": minor
---

Added EntryPoint v0.9 support for Account Abstraction (ERC-4337).

**Features:**
- Added `entryPoint09Abi` and `entryPoint09Address` constants
- Added `'0.9'` to `EntryPointVersion` type
- Added `UserOperation<'0.9'>` with new `paymasterSignature` field for parallelizable paymaster signing
- Updated `getUserOperationHash` to support v0.9 (uses EIP-712 typed data like v0.8)
- Updated `toPackedUserOperation` to handle `paymasterSignature`
- Updated `prepareUserOperation` type definitions for v0.9
23 changes: 23 additions & 0 deletions src/account-abstraction/actions/bundler/prepareUserOperation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,12 @@ export type PrepareUserOperationParameterType =
type FactoryProperties<
entryPointVersion extends EntryPointVersion = EntryPointVersion,
> =
| (entryPointVersion extends '0.9'
? {
factory: UserOperation['factory']
factoryData: UserOperation['factoryData']
}
: never)
| (entryPointVersion extends '0.8'
? {
factory: UserOperation['factory']
Expand All @@ -101,6 +107,15 @@ type FactoryProperties<
type GasProperties<
entryPointVersion extends EntryPointVersion = EntryPointVersion,
> =
| (entryPointVersion extends '0.9'
? {
callGasLimit: UserOperation['callGasLimit']
preVerificationGas: UserOperation['preVerificationGas']
verificationGasLimit: UserOperation['verificationGasLimit']
paymasterPostOpGasLimit: UserOperation['paymasterPostOpGasLimit']
paymasterVerificationGasLimit: UserOperation['paymasterVerificationGasLimit']
}
: never)
| (entryPointVersion extends '0.8'
? {
callGasLimit: UserOperation['callGasLimit']
Expand Down Expand Up @@ -139,6 +154,14 @@ type NonceProperties = {
type PaymasterProperties<
entryPointVersion extends EntryPointVersion = EntryPointVersion,
> =
| (entryPointVersion extends '0.9'
? {
paymaster: UserOperation['paymaster']
paymasterData: UserOperation['paymasterData']
paymasterPostOpGasLimit: UserOperation['paymasterPostOpGasLimit']
paymasterVerificationGasLimit: UserOperation['paymasterVerificationGasLimit']
}
: never)
| (entryPointVersion extends '0.8'
? {
paymaster: UserOperation['paymaster']
Expand Down
Loading