import type { AuthSession, SessionRefreshInfo } from './types/session'; interface SessionManagerConfig { /** * Callback to refresh an expiring session */ onRefresh?: (session: AuthSession) => Promise; /** * Time before expiry to trigger refresh (milliseconds) * @default 60000 (1 minute) */ refreshSkewMs?: number; } type SessionEventMap = { session: (session: AuthSession | null) => void; sessionExpired: (session: AuthSession) => void; sessionRefreshed: (session: AuthSession) => void; sessionWillRefresh: (info: SessionRefreshInfo) => void; }; type SessionEventKey = keyof SessionEventMap; type SessionEventHandler = SessionEventMap[K]; export declare class SessionManager { private session; private timer; private readonly onRefresh?; private readonly events; private readonly refreshSkewMs; private consecutiveFailures; private readonly maxBackoffMs; private readonly baseBackoffMs; constructor(config?: SessionManagerConfig); /** * Set the current session and schedule refresh */ setSession(session: AuthSession | null): void; /** * Get the current session */ getSession(): AuthSession | null; /** * Clear the current session */ clear(): void; /** * Subscribe to session events */ on(event: K, handler: SessionEventHandler): void; /** * Unsubscribe from session events */ off(event: K, handler: SessionEventHandler): void; /** * Destroy the session manager */ destroy(): void; private emit; private cancel; /** * Calculate backoff delay with exponential increase, capped at maxBackoffMs */ private getBackoffDelay; /** * Schedule a retry after a failed refresh attempt */ private scheduleRetry; private schedule; } export {}; //# sourceMappingURL=SessionManager.d.ts.map