import type { Context } from 'koa';
import type { Modules } from '@strapi/types';
export declare const REFRESH_COOKIE_NAME = "strapi_admin_refresh";
export declare const getAccessCookieName: () => string;
export declare const getAccessCookiePath: () => string;
export declare const getAccessCookieDomain: () => string | undefined;
export declare const DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN: number;
export declare const DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN: number;
export declare const DEFAULT_MAX_SESSION_LIFESPAN: number;
export declare const DEFAULT_IDLE_SESSION_LIFESPAN: number;
export declare const getRefreshCookieOptions: (secureRequest?: boolean) => {
    httpOnly: boolean;
    secure: boolean;
    overwrite: boolean;
    domain: string | undefined;
    path: string;
    sameSite: boolean | "none" | "strict" | "lax";
    maxAge: undefined;
};
export declare const buildCookieOptionsWithExpiry: (type: "refresh" | "session", absoluteExpiresAtISO?: string, secureRequest?: boolean) => {
    httpOnly: boolean;
    secure: boolean;
    overwrite: boolean;
    domain: string | undefined;
    path: string;
    sameSite: boolean | "none" | "strict" | "lax";
    maxAge: undefined;
} | {
    expires: Date;
    maxAge: number;
    httpOnly: boolean;
    secure: boolean;
    overwrite: boolean;
    domain: string | undefined;
    path: string;
    sameSite: boolean | "none" | "strict" | "lax";
};
export declare const getSessionManager: () => Modules.SessionManager.SessionManagerService | null;
export declare const generateDeviceId: () => string;
export declare const extractDeviceParams: (requestBody: unknown) => {
    deviceId: string;
    rememberMe: boolean;
};
export declare const buildSessionMetadataFromContext: (ctx: Context) => Record<string, unknown>;
/**
 * Resolves the device id to use when revoking sessions on logout.
 * SSO assigns deviceId server-side, so the client-provided value may not match
 * the active session row. Prefer the deviceId stored on the session backing
 * the current access token when available.
 *
 * Callers should pass `ctx.state.session.id` from the admin auth strategy and
 * the already-parsed body `deviceId` — the logout route requires authentication,
 * so sessionId is expected to be present.
 */
export declare const resolveLogoutDeviceId: (userId: string, sessionId: string | undefined, clientDeviceId: string | undefined) => Promise<string | undefined>;
