/**
 * Sandbox ephemeral session management.
 *
 * Each visitor to sandbox.neotoma.io gets a fresh, isolated user_id with a
 * time-limited bearer token. Data is hard-ephemeral: purged completely when
 * the session expires or is terminated. The session cookie
 * (`neotoma_sandbox_session`) carries the bearer token so the Inspector SPA
 * (served at /inspector on the same origin) can authenticate without manual
 * token copy-paste.
 */
import type { Request } from "express";
export declare const SESSION_COOKIE_NAME = "neotoma_sandbox_session";
export interface SandboxSession {
    userId: string;
    bearerToken: string;
    oneTimeCode: string;
    packId: string;
    createdAt: string;
    expiresAt: string;
}
export interface SessionInfo {
    userId: string;
    packId: string;
    createdAt: string;
    expiresAt: string;
}
export declare function createSandboxSession(packId?: string): SandboxSession;
export interface RedeemResult {
    bearerToken: string;
    userId: string;
    packId: string;
    expiresAt: string;
}
export declare function redeemOneTimeCode(code: string): RedeemResult | null;
export declare function resolveSessionFromRequest(req: Request): SessionInfo | null;
export declare function revokeSession(userId: string): void;
export declare function purgeSessionUserData(userId: string): void;
export declare function sweepExpiredSessions(): number;
export declare function resetSandboxSession(userId: string, packId?: string): SandboxSession | null;
//# sourceMappingURL=sessions.d.ts.map