UNPKG

@zerodev/sdk

Version:

A utility library for working with ERC-4337

48 lines 1.84 kB
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