export interface AutoLogoutContext { /** Idle threshold (in minutes) that triggered the auto-logout. */ idleTimeoutMinutes: number | null; } /** Called from the auto-logout flow before navigating to /signin/auth. */ export declare function setAutoLogoutContext(ctx: { idleTimeoutMinutes: number; }): void; /** * Reads the auto-logout context. Returns `null` if no context is present * (e.g., user manually signed out, or this is a fresh visit) or if the * context has expired (older than CONTEXT_TTL_MS). * * Important: does NOT clear the context on first read. Some logout flows * cause a page reload between the navigation to /signin/auth and the first * SignIn render (chunk-load handler firing on a stale chunk, a new service * worker activating, etc.). Clearing on read would mean the second SignIn * mount after a reload sees empty storage and skips the banner. * * To avoid the inverse leak (auto-logout → sign back in → manual logout * within the TTL window shows the banner again), the manual-logout path * calls `clearAutoLogoutContext` proactively. The TTL stays as a safety * net for any other cases — context older than CONTEXT_TTL_MS is * considered stale and ignored, and we clear once we see expired storage. * * Memoized via the module-scoped `cachedConsumed` so callers can invoke * this from a `useState` lazy initializer — React 18 StrictMode runs * initializers twice in dev. Reset by `setAutoLogoutContext` and gets a * fresh module instance after page reload. */ export declare function consumeAutoLogoutContext(): AutoLogoutContext | null; /** * Clear any auto-logout context. Call from the manual-logout path so a * manual sign-out that happens within the TTL window of a prior auto-logout * doesn't carry the banner into the next SignIn render. */ export declare function clearAutoLogoutContext(): void; /** * Format the auto-logout subtitle's idle-threshold portion using shared * time strings (`hour` / `hours` / `minutes`). */ export declare function formatIdleDurationLabel(idleTimeoutMinutes: number): string;