import { Hex } from "viem"; import { SmartAccountSigner } from "@alchemy/aa-core"; import { SignerData } from "../utils/Types"; export type SessionStatus = "PENDING" | "ACTIVE" | "INACTIVE" | "EXPIRED"; export type SessionLeafNode = { validUntil: number; validAfter: number; sessionValidationModule: Hex; sessionKeyData: Hex; sessionPublicKey: Hex; sessionID?: string; status: SessionStatus; }; export type SessionSearchParam = { sessionID?: string; sessionPublicKey?: Hex; sessionValidationModule?: Hex; status?: SessionStatus; }; export interface ISessionStorage { addSessionData(_leaf: SessionLeafNode): Promise; getSessionData(_param: SessionSearchParam): Promise; updateSessionStatus(_param: SessionSearchParam, _status: SessionStatus): Promise; clearPendingSessions(): Promise; addSigner(_signer?: SignerData): Promise; getSignerByKey(_signerPublicKey: string): Promise; getSignerBySession(_param: SessionSearchParam): Promise; getAllSessionData(_param?: SessionSearchParam): Promise; getMerkleRoot(): Promise; setMerkleRoot(_merkleRoot: string): Promise; }