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<void>;
    getSessionData(_param: SessionSearchParam): Promise<SessionLeafNode>;
    updateSessionStatus(_param: SessionSearchParam, _status: SessionStatus): Promise<void>;
    clearPendingSessions(): Promise<void>;
    addSigner(_signer?: SignerData): Promise<SmartAccountSigner>;
    getSignerByKey(_signerPublicKey: string): Promise<SmartAccountSigner>;
    getSignerBySession(_param: SessionSearchParam): Promise<SmartAccountSigner>;
    getAllSessionData(_param?: SessionSearchParam): Promise<SessionLeafNode[]>;
    getMerkleRoot(): Promise<string>;
    setMerkleRoot(_merkleRoot: string): Promise<void>;
}
