Skip to main content

Invalid delegator

The Delegation ManagerDelegation Manager The component that validates and redeems delegations, including signature checks and caveat enforcer hooks. reverts with InvalidDelegator() when the caller is not the delegatorDelegator account The account that creates and signs a delegation to grant limited authority to another account. specified in the delegation.

This error is thrown by the disableDelegation and enableDelegation contract functions. Only the account that created the delegation can disable or enable it.

Solution

Verify that you're sending the transaction from the delegator's account. If the delegator is a smart account, submit a user operationUser operation A signed instruction package that tells a smart account what executions to perform. through the smart account.

import { DelegationManager } from "@metamask/smart-accounts-kit/contracts";

// Generate calldata to disable the delegation.
const disableCalldata = DelegationManager.encode.disableDelegation({
delegation: signedDelegation, // Signed by delegatorSmartAccount
});

const userOpHash = await bundlerClient.sendUserOperation({
account: delegatorSmartAccount,
calls: [{
to: delegatorSmartAccount.environment.DelegationManager,
data: disableCalldata,
}],
});
On this page