Skip to main content

Invalid delegator

The Delegation Manager reverts with InvalidDelegator() when the caller is not the delegator 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 operation 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