supportsExecutionMode
Checks if a ERC-7579 execution mode is supported on the smart account. Check out this guide for a complete tutorial.
Usage
example.ts
import { erc7579Actions } from "permissionless/actions/erc7579"
const safeAccount = await signerToSafeSmartAccount(publicClient, {
signer,
safeVersion: "1.4.1",
entryPoint: ENTRYPOINT_ADDRESS_V07,
safe4337ModuleAddress: "0x7579EE8307284F293B1927136486880611F20002",
erc7579LaunchpadAddress: "0x7579011aB74c46090561ea277Ba79D510c6C00ff",
attesters: ["0x000000333034E9f539ce08819E12c1b8Cb29084d"],
attestersThreshold: 1
})
// Extend the client with the ERC7579 actions
const smartAccountClient = createSmartAccountClient({
account: safeAccount,
entryPoint: ENTRYPOINT_ADDRESS_V07,
chain: sepolia,
bundlerTransport: http(bundlerUrl),
middleware: {
gasPrice: async () => {
return (await pimlicoBundlerClient.getUserOperationGasPrice()).fast
},
sponsorUserOperation: pimlicoBundlerClient.sponsorUserOperation,
},
}).extend(erc7579Actions({ entryPoint: ENTRYPOINT_ADDRESS_V07 }))
const isExecutionModeSupported = await smartAccountClient.supportsExecutionMode({
type: "delegatecall",
revertOnError: true,
selector: "0x",
context: "0x",
})
Returns
- Type:
boolean
True if the execution mode is supported, false otherwise.
Parameters
type
- Type:
CallType
Type of the call. Accepted values are "call" | "delegatecall" | "staticcall"
.
revertOnError (optional)
- Type:
boolean
If true, the execution will revert if the call fails. Defaults to false.
selector (optional)
- Type:
Hex
The selector of the function to call. If not provided, 0x
will be used.
context (optional)
- Type:
Hex
Context bytes that will be passed to the module as part of modeContext
.