UNPKG

@biconomy/modules

Version:

This package provides different validation modules/plugins for ERC4337 compatible modular account

86 lines (85 loc) 2.72 kB
import { ChainId, UserOperation } from "@biconomy/core-types"; import { Signer } from "ethers"; import { SessionKeyManagerModule } from "../SessionKeyManagerModule"; import { ISessionStorage } from "../interfaces/ISessionStorage"; import { WalletClientSigner } from "@alchemy/aa-core"; export type ModuleVersion = "V1_0_0"; export interface BaseValidationModuleConfig { entryPointAddress?: string; } export interface ECDSAOwnershipValidationModuleConfig extends BaseValidationModuleConfig { moduleAddress?: string; version?: ModuleVersion; signer: Signer | WalletClientSigner; } export interface SessionKeyManagerModuleConfig extends BaseValidationModuleConfig { moduleAddress?: string; version?: ModuleVersion; nodeClientUrl?: string; smartAccountAddress: string; storageType?: StorageType; sessionStorageClient?: ISessionStorage; } export interface BatchedSessionRouterModuleConfig extends BaseValidationModuleConfig { moduleAddress?: string; version?: ModuleVersion; sessionKeyManagerModule?: SessionKeyManagerModule; sessionManagerModuleAddress?: string; nodeClientUrl?: string; smartAccountAddress: string; storageType?: StorageType; } export declare enum StorageType { LOCAL_STORAGE = 0 } export type SessionParams = { sessionID?: string; sessionSigner: Signer; sessionValidationModule?: string; additionalSessionData?: string; }; export type ModuleInfo = { sessionID?: string; sessionSigner?: Signer; sessionValidationModule?: string; additionalSessionData?: string; batchSessionParams?: SessionParams[]; }; export interface SendUserOpParams extends ModuleInfo { simulationType?: SimulationType; } export type SimulationType = "validation" | "validation_and_execution"; export type CreateSessionDataResponse = { data: string; sessionIDInfo: Array<string>; }; export interface CreateSessionDataParams { validUntil: number; validAfter: number; sessionValidationModule: string; sessionPublicKey: string; sessionKeyData: string; preferredSessionId?: string; } export interface MultiChainValidationModuleConfig extends BaseValidationModuleConfig { moduleAddress?: string; version?: ModuleVersion; signer: Signer | WalletClientSigner; } export type MultiChainUserOpDto = { validUntil?: number; validAfter?: number; chainId: ChainId; userOp: Partial<UserOperation>; }; export interface BaseSessionKeyData { sessionKey: string; } export interface ERC20SessionKeyData extends BaseSessionKeyData { token: string; recipient: string; maxAmount: string; } export interface SessionValidationModuleConfig { moduleAddress: string; }