import { SessionUser } from './session-schema';
export interface SessionConfig {
    /** URL refresh-эндпоинта, например '/api-auth/v1/refresh' или '/api-rest/auth/v1/refresh' */
    refreshUrl: string;
    /** Домен куки (для шаринга сессии между поддоменами, например '.project.ru') */
    cookieDomain?: string;
    /** Не ставить Secure (для dev по http) */
    isNotSecure?: boolean;
    sessionCookieName?: string;
    sessionTempCookieName?: string;
    accessTokenCookieName?: string;
    refreshTokenCookieName?: string;
}
export type InternalSessionConfig = Required<Omit<SessionConfig, 'cookieDomain' | 'isNotSecure'>> & {
    cookieDomain?: string;
    isNotSecure?: boolean;
};
/**
 * Конфигурация сессии. Вызывается один раз при инициализации приложения:
 * configureSession({ refreshUrl: '/api-rest/auth/v1/refresh' })
 */
export declare const configureSession: (config: Partial<SessionConfig>) => void;
export interface CookieOptions {
    maxAgeSeconds?: number;
    domain?: string;
    isNotSecure?: boolean;
}
export declare const getCookieValue: (name: string) => string | null;
export declare const setCookieValue: (name: string, value: string, options?: CookieOptions) => void;
export declare const deleteCookieValue: (name: string, options?: CookieOptions) => void;
/**
 * Удаляет все cookies сессии и токенов и оповещает слушателей о логауте.
 */
export declare const clearSessionCookies: (options?: CookieOptions) => void;
/**
 * Полная сессия из куки с указанием имени куки (session или session-temp).
 */
export declare const getFullSessionFromCookie: () => {
    cookieName: string;
    data: SessionUser;
} | null;
/**
 * Пользователь сессии из куки (без токенов-фолбэков).
 */
export declare const getSessionFromCookie: () => SessionUser | null;
/**
 * Обновление пары токенов. Single-flight: параллельные вызовы разделяют один запрос.
 */
export declare const refreshSessionTokens: () => Promise<string | null>;
/**
 * Возвращает валидный access-токен: актуальный — сразу, протухший — через refresh.
 */
export declare const getValidAccessToken: () => Promise<string | null>;
