Skip to main content

Bundler Client actions reference

These actions extend the Viem Bundler Client to support ERC-7710 utilities.

sendUserOperationWithDelegation

Sends a user operationUser operation A signed instruction package that tells a smart account what executions to perform. with redeem permissions according to the ERC-7710 specifications.

info

To use sendUserOperationWithDelegation, the Viem Bundler Client must be extended with erc7710BundlerActions.

Parameters

See the Viem sendUserOperation parameters. This function has the same parameters, except it does not accept callData.

Objects in the calls array also require the following parameters:

NameTypeRequiredDescription
delegationManagerAddressYesThe address of the Delegation ManagerDelegation Manager The component that validates and redeems delegations, including signature checks and caveat enforcer hooks..
permissionContextPermissionContextYesAn encoded delegation chain (Hex) or a decoded delegation chain (Delegation[]) for redeeming permissions.

Example

import { sessionAccount, bundlerClient, publicClient } from "./client.ts";

// These properties must be extracted from the permission response.
const permissionContext = permissionsResponse[0].context;
const delegationManager = permissionsResponse[0].signerMeta.delegationManager;

// Calls without permissionContext and delegationManager will be executed
// as a normal user operation.
const userOperationHash = await bundlerClient.sendUserOperationWithDelegation({
publicClient,
account: sessionAccount,
calls: [
{
to: sessionAccount.address,
data: "0x",
value: 1n,
permissionContext,
delegationManager,
},
],
// Appropriate values must be used for fee-per-gas.
maxFeePerGas: 1n,
maxPriorityFeePerGas: 1n
});