@zerodev/sdk
Version:
A utility library for working with ERC-4337
192 lines • 7.06 kB
TypeScript
import type { Address, CustomSource, Hex, LocalAccount, PartialBy } from "viem";
import type { EntryPointVersion, UserOperation, entryPoint06Abi, entryPoint07Abi } from "viem/account-abstraction";
import type { PLUGIN_TYPE, VALIDATOR_TYPE } from "../constants.js";
export type ZeroDevPaymasterRpcSchema<entryPointVersion extends EntryPointVersion> = [
{
Method: "zd_sponsorUserOperation";
Parameters: [
{
chainId: number;
userOp: entryPointVersion extends "0.6" ? PartialBy<UserOperation<"0.6">, "callGasLimit" | "preVerificationGas" | "verificationGasLimit"> : PartialBy<UserOperation<"0.7">, "callGasLimit" | "preVerificationGas" | "verificationGasLimit" | "paymasterVerificationGasLimit" | "paymasterPostOpGasLimit">;
entryPointAddress: Address;
gasTokenData?: {
tokenAddress: Hex;
};
shouldOverrideFee?: boolean;
manualGasEstimation?: boolean;
shouldConsume?: boolean;
}
];
ReturnType: entryPointVersion extends "0.6" ? {
paymasterAndData: Hex;
preVerificationGas: Hex;
verificationGasLimit: Hex;
callGasLimit: Hex;
maxFeePerGas?: Hex;
maxPriorityFeePerGas?: Hex;
paymaster?: never;
paymasterVerificationGasLimit?: never;
paymasterPostOpGasLimit?: never;
paymasterData?: never;
} : {
preVerificationGas: Hex;
verificationGasLimit: Hex;
callGasLimit: Hex;
paymaster: Address;
paymasterVerificationGasLimit: Hex;
paymasterPostOpGasLimit: Hex;
paymasterData: Hex;
maxFeePerGas?: Hex;
maxPriorityFeePerGas?: Hex;
paymasterAndData?: never;
};
},
{
Method: "zd_pm_accounts";
Parameters: [
{
chainId: number;
entryPointAddress: Address;
}
];
ReturnType: Address[];
},
{
Method: "stackup_getERC20TokenQuotes";
Parameters: [
{
chainId: number;
userOp: UserOperation<"0.6">;
entryPointAddress: Address;
tokenAddress: Address;
}
];
ReturnType: {
maxGasCostToken: string;
tokenDecimals: string;
};
}
];
export type ZeroDevUserOperationGasPriceWithBigIntAsHex = {
slow: {
maxFeePerGas: Hex;
maxPriorityFeePerGas: Hex;
};
standard: {
maxFeePerGas: Hex;
maxPriorityFeePerGas: Hex;
};
fast: {
maxFeePerGas: Hex;
maxPriorityFeePerGas: Hex;
};
};
export type ZeroDevAccountClientRpcSchema = [
{
Method: "zd_getUserOperationGasPrice";
Parameters: [];
ReturnType: ZeroDevUserOperationGasPriceWithBigIntAsHex;
}
];
export type ValidatorType = Extract<keyof typeof VALIDATOR_TYPE, "PERMISSION" | "SECONDARY" | "EIP7702">;
export type KernelValidator<Name extends string = string> = LocalAccount<Name> & {
validatorType: ValidatorType;
supportedKernelVersions: string;
getNonceKey: (accountAddress?: Address, customNonceKey?: bigint) => Promise<bigint>;
getStubSignature(userOperation: UserOperation, pluginEnableSignature?: Hex): Promise<Hex>;
signUserOperation: (userOperation: UserOperation & {
chainId?: number | undefined;
}, pluginEnableSignature?: Hex) => Promise<Hex>;
getEnableData(accountAddress?: Address): Promise<Hex>;
isEnabled(accountAddress: Address, selector: Hex): Promise<boolean>;
getIdentifier: () => Hex;
};
export type KernelValidatorHook = {
getEnableData(accountAddress?: Address): Promise<Hex>;
getIdentifier: () => Hex;
};
export type ValidatorInitData = {
validatorAddress: Address;
enableData: Hex;
identifier: Hex;
initConfig?: Hex[];
};
export type ActiveValidatorMode = "sudo" | "regular";
export type KernelPluginManager<entryPointVersion extends EntryPointVersion> = KernelValidator & {
sudoValidator?: KernelValidator;
regularValidator?: KernelValidator;
activeValidatorMode: ActiveValidatorMode;
hook?: KernelValidatorHook;
getPluginEnableSignature(accountAddress: Address): Promise<Hex>;
getValidatorInitData(): Promise<ValidatorInitData>;
getAction(): Action;
getValidityData(): PluginValidityData;
getIdentifier(isSudo?: boolean): Hex;
encodeModuleInstallCallData: (accountAddress: Address) => Promise<Hex>;
getPluginsEnableTypedData: (accountAddress: Address) => Promise<Parameters<CustomSource["signTypedData"]>[0]>;
signUserOperationWithActiveValidator: (userOperation: UserOperation<entryPointVersion>) => Promise<Hex>;
};
export type PluginInstallData<entryPointVersion extends EntryPointVersion> = entryPointVersion extends "0.6" ? {
selector: Hex;
executor: Address;
validator: Address;
validUntil: number;
validAfter: number;
enableData: Hex;
} : never;
export type KernelPluginManagerParams<entryPointVersion extends EntryPointVersion> = {
sudo?: KernelValidator;
regular?: KernelValidator;
hook?: KernelValidatorHook;
pluginEnableSignature?: Hex;
validatorInitData?: ValidatorInitData;
action?: Action;
entryPoint: EntryPointType<entryPointVersion>;
kernelVersion: KERNEL_VERSION_TYPE;
chainId?: number;
isPreInstalled?: boolean;
} & Partial<PluginValidityData>;
export type Hook = {
address: Address;
};
export type Action = {
address: Address;
selector: Hex;
hook?: Hook;
};
export type PluginValidityData = {
validUntil: number;
validAfter: number;
};
export declare enum ValidatorMode {
sudo = "0x00000000",
plugin = "0x00000001",
enable = "0x00000002"
}
export type PluginMigrationData = {
type: (typeof PLUGIN_TYPE)[keyof typeof PLUGIN_TYPE];
address: Address;
data: Hex;
};
export type CallType = "call" | "delegatecall";
export type KernelEncodeCallDataArgs = {
to: Address;
value: bigint;
data: Hex;
callType: CallType | undefined;
}[];
export type GetEntryPointAbi<entryPointVersion extends EntryPointVersion> = entryPointVersion extends "0.6" ? typeof entryPoint06Abi : typeof entryPoint07Abi;
export type Execution = {
target: Address;
value: bigint;
callData: Hex;
};
export type KERNEL_V2_VERSION_TYPE = "0.0.2" | "0.2.2" | "0.2.3" | "0.2.4";
export type KERNEL_V3_VERSION_TYPE = "0.3.0" | "0.3.1" | "0.3.2" | "0.3.3";
export type KERNEL_VERSION_TYPE = KERNEL_V2_VERSION_TYPE | KERNEL_V3_VERSION_TYPE;
export type GetKernelVersion<entryPointVersion extends EntryPointVersion> = entryPointVersion extends "0.6" ? KERNEL_V2_VERSION_TYPE : KERNEL_V3_VERSION_TYPE;
export type EntryPointType<entryPointVersion extends EntryPointVersion> = {
address: Address;
version: entryPointVersion;
};
//# sourceMappingURL=kernel.d.ts.map