Invalid delegator
The Delegation ManagerDelegation Manager The ERC-7710 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 pseudo-transaction object defined by ERC-4337 that describes what a smart account should execute. User operations are submitted to the alternate mempool managed by bundlers. 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,
}],
});