UNPKG

@zerodev/sdk

Version:

A utility library for working with ERC-4337

43 lines (36 loc) 1.36 kB
import type { EntryPointVersion } from "viem/account-abstraction" import type { CallType } from "../../../../../types/kernel.js" import type { KernelSmartAccountImplementation } from "../../../createKernelAccount.js" import { encodeExecuteBatchCall } from "../../ep0_6/encodeExecuteBatchCall.js" import { encodeExecuteDelegateCall } from "../../ep0_6/encodeExecuteDelegateCall.js" import { encodeExecuteSingleCall } from "../../ep0_6/encodeExecuteSingleCall.js" export const encodeCallData = async < entryPointVersion extends EntryPointVersion = EntryPointVersion >( calls: Parameters< KernelSmartAccountImplementation<entryPointVersion>["encodeCalls"] >[0], callType?: CallType | undefined ) => { if (calls.length > 1) { if (callType === "delegatecall") { throw new Error("Cannot batch delegatecall") } return encodeExecuteBatchCall(calls) } const call = calls.length === 0 ? undefined : calls[0] if (!call) { throw new Error("No calls to encode") } // Default to `call` if (!callType || callType === "call") { return encodeExecuteSingleCall(call) } if (callType === "delegatecall") { return encodeExecuteDelegateCall({ to: call.to, data: call.data }) } throw new Error("Invalid call type") }