import type { Keypair } from "@solana/web3.js"; import { type SessionMintConfig } from "./auth-api"; /** * Server-side SessionManager * -------------------------- * • No process-global signer. * • Per-keypair instances via `ServerSessionManager.forKeypair(kp)`. * • Keeps session data in-memory for the life of the instance * • If `getSession()` finds no cached session it calls `createSession()` * to obtain fresh tokens. */ export interface ServerSession { address: string; accessToken: string; idToken: string; refreshToken: string; } export declare class ServerSessionManager { static readonly instance: ServerSessionManager; private session; private pendingSession; private generation; private readonly keypair; private readonly sessionFactory; private readonly sessionConfig; private constructor(); /** * Create a session manager for a specific keypair. * Each instance has its own independent session cache. * * `sessionConfig` (optional) pins the app+issuer the keypair signs/mints * against, so re-signing after expiry never follows a later global init(). */ static forKeypair(keypair: Keypair, sessionConfig?: SessionMintConfig): ServerSessionManager; /** * Create an isolated server session manager for a non-Solana signer (currently * EVM/SIWE). The factory must perform the signature exchange and return the * canonical signer address with its tokens; no signer state becomes global. */ static forSessionFactory(factory: () => Promise): ServerSessionManager; private createSession; getSession(): Promise; setSession(session: ServerSession): void; clearSession(): void; isAuthenticated(): boolean; getIdToken(): string | null; getRefreshToken(): string | null; }