import { SessionStore } from '../interfaces/session-store.interface';
import { NestAuthSession } from '../entities/session.entity';
import { NestAuthUser } from '../../user/entities/user.entity';
export declare const SESSION_STORE = "SESSION_STORE";
export declare const SESSION_REPOSITORY = "SESSION_REPOSITORY";
export declare class SessionManagerService {
    private readonly store;
    constructor(store: SessionStore);
    private get options();
    private get maxSessionsPerUser();
    private get slidingExpiration();
    createSession(payload: {
        userId: string;
        refreshToken?: string;
        data?: any;
        userAgent?: string;
        deviceName?: string;
        ipAddress?: string;
    }): Promise<NestAuthSession>;
    getSession(sessionId: string, refreshSession?: boolean): Promise<NestAuthSession>;
    getUserSessions(userId: string): Promise<NestAuthSession[]>;
    getActiveSessions(userId: string): Promise<NestAuthSession[]>;
    updateSession(sessionId: string, updates: Partial<NestAuthSession>): Promise<NestAuthSession>;
    revokeSession(sessionId: string): Promise<void>;
    deleteSession(sessionId: string): Promise<void>;
    revokeAllUserSessions(userId: string): Promise<void>;
    revokeOtherSessions(userId: string, currentSessionId: string): Promise<void>;
    cleanupExpiredSessions(): Promise<number>;
    extendSession(sessionId: string, duration?: string | number): Promise<NestAuthSession>;
    touchSession(sessionId: string, duration?: string | number): Promise<NestAuthSession>;
    rotateSession(sessionId: string): Promise<NestAuthSession>;
    validateSession(sessionId: string): Promise<NestAuthSession | null>;
    hasReachedMaxSessions(userId: string): Promise<boolean>;
    private enforceMaxSessions;
    private calculateExpiration;
    private isExpired;
    createSessionFromUser(user: NestAuthUser, extraData?: {
        isMfaVerified?: boolean;
    }): Promise<NestAuthSession>;
    refreshSession(session: NestAuthSession): Promise<NestAuthSession>;
    getCurrentSessions(userId: string): Promise<NestAuthSession[]>;
}
//# sourceMappingURL=session-manager.service.d.ts.map