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,
}],
});