UNPKG

@biconomy-devx/modules

Version:

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

101 lines (100 loc) 3.17 kB
import { Chain, Hex } from "viem"; import { UserOperationStruct, SmartAccountSigner } from "@alchemy/aa-core"; import { SessionKeyManagerModule } from "../SessionKeyManagerModule"; import { ISessionStorage } from "../interfaces/ISessionStorage.js"; import { SupportedSigner } from "@biconomy-devx/common"; export type ModuleVersion = "V1_0_0"; export interface BaseValidationModuleConfig { entryPointAddress?: Hex; } export interface ECDSAOwnershipValidationModuleConfig extends BaseValidationModuleConfig { moduleAddress?: Hex; version?: ModuleVersion; signer: SupportedSigner; } export interface ECDSAOwnershipValidationModuleConfigConstructorProps extends BaseValidationModuleConfig { moduleAddress?: Hex; version?: ModuleVersion; signer: SmartAccountSigner; } export interface SessionKeyManagerModuleConfig extends BaseValidationModuleConfig { moduleAddress?: Hex; version?: ModuleVersion; nodeClientUrl?: string; smartAccountAddress: string; storageType?: StorageType; sessionStorageClient?: ISessionStorage; } export interface BatchedSessionRouterModuleConfig extends BaseValidationModuleConfig { moduleAddress?: Hex; version?: ModuleVersion; sessionKeyManagerModule?: SessionKeyManagerModule; sessionManagerModuleAddress?: Hex; nodeClientUrl?: string; smartAccountAddress: string; storageType?: StorageType; } export declare enum StorageType { LOCAL_STORAGE = 0 } export type SessionParams = { sessionID?: string; sessionSigner: SupportedSigner; sessionValidationModule?: Hex; additionalSessionData?: string; }; export type ModuleInfo = { sessionID?: string; sessionSigner?: SupportedSigner; sessionValidationModule?: Hex; additionalSessionData?: string; batchSessionParams?: SessionParams[]; }; export interface SendUserOpParams extends ModuleInfo { simulationType?: SimulationType; } export type SimulationType = "validation" | "validation_and_execution"; export type SignerData = { pbKey: string; pvKey: `0x${string}`; chainId?: Chain; }; export type CreateSessionDataResponse = { data: string; sessionIDInfo: Array<string>; }; export interface CreateSessionDataParams { validUntil: number; validAfter: number; sessionValidationModule: Hex; sessionPublicKey: Hex; sessionKeyData: Hex; preferredSessionId?: string; } export interface MultiChainValidationModuleConfig extends BaseValidationModuleConfig { moduleAddress?: Hex; version?: ModuleVersion; signer: SupportedSigner; } export interface MultiChainValidationModuleConfigConstructorProps extends BaseValidationModuleConfig { moduleAddress?: Hex; version?: ModuleVersion; signer: SmartAccountSigner; } export type MultiChainUserOpDto = { validUntil?: number; validAfter?: number; chainId: number; userOp: Partial<UserOperationStruct>; }; export interface BaseSessionKeyData { sessionKey: Hex; } export interface ERC20SessionKeyData extends BaseSessionKeyData { token: Hex; recipient: Hex; maxAmount: bigint; } export interface SessionValidationModuleConfig { moduleAddress: string; }