export type SessionData = Record<string, unknown>;
export interface ISession {
    id: string;
    get<T = unknown>(key: string): T | undefined;
    set(key: string, value: unknown): void;
    has(key: string): boolean;
    forget(key: string): void;
    all(): SessionData;
    clear(): void;
}
export interface ISessionManager {
    getIdFromCookieHeader(cookieHeader: string | undefined): string | undefined;
    getIdFromRequest(req: {
        getHeader: (name: string) => unknown;
        sessionId?: unknown;
        context?: Record<string, unknown>;
    }): string | undefined;
    ensureSessionId(req: {
        getHeader: (name: string) => unknown;
        sessionId?: unknown;
        context: Record<string, unknown>;
    }, res: {
        getHeader: (name: string) => unknown;
        setHeader: (name: string, value: string | string[]) => unknown;
    }): Promise<string>;
    get(sessionId: string): ISession;
    destroy(sessionId: string): void;
    cleanup(): number;
    dispose(): void;
}
export interface SessionManagerOptions {
    cookieName?: string;
    headerName?: string;
    ttlMs?: number;
    maxSessions?: number;
    cleanupIntervalMs?: number;
}
export declare const SessionManager: Readonly<{
    create(options?: SessionManagerOptions): ISessionManager;
}>;
export default SessionManager;
//# sourceMappingURL=SessionManager.d.ts.map