@zerodev/sdk
Version:
A utility library for working with ERC-4337
48 lines • 1.84 kB
JavaScript
import { sendUserOperation } from "viem/account-abstraction";
import { concatHex, encodeFunctionData, getAction, pad, parseAccount } from "viem/utils";
import { KernelV3AccountAbi } from "../../accounts/kernel/abi/kernel_v_3_0_0/KernelAccountAbi.js";
import { VALIDATOR_TYPE } from "../../constants.js";
import { AccountNotFoundError } from "../../errors/index.js";
export async function uninstallPlugin(client, args) {
const { account: account_ = client.account, plugin, hook, ...restArgs } = args;
if (!account_)
throw new AccountNotFoundError({
docsPath: "/docs/actions/wallet/sendTransaction"
});
const account = parseAccount(account_);
let validatorId;
if ([
VALIDATOR_TYPE.PERMISSION,
VALIDATOR_TYPE.SECONDARY,
VALIDATOR_TYPE.EIP7702
].includes(VALIDATOR_TYPE[plugin.validatorType])) {
validatorId = concatHex([
VALIDATOR_TYPE[plugin.validatorType],
pad(plugin.getIdentifier(), {
size: 20,
dir: "right"
})
]);
}
else {
throw new Error(`Cannot uninstall ${plugin.validatorType} plugin`);
}
const validatorData = await plugin.getEnableData(account.address);
const hookData = (await hook?.getEnableData(account.address)) ?? "0x";
return await getAction(client, sendUserOperation, "sendUserOperation")({
...restArgs,
calls: [
{
to: account.address,
data: encodeFunctionData({
abi: KernelV3AccountAbi,
functionName: "uninstallValidation",
args: [validatorId, validatorData, hookData]
}),
value: 0n
}
],
account
});
}
//# sourceMappingURL=uninstallPlugin.js.map