@biconomy/modules
Version:
This package provides different validation modules/plugins for ERC4337 compatible modular account
86 lines (85 loc) • 2.72 kB
TypeScript
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;
}