import { BaseSessionRepository } from './base-session.repository';
import { NestAuthSession } from '../entities/session.entity';
import { SessionPayload } from '../../core/interfaces/token-payload.interface';
export interface RedisSessionStoreOptions {
    keyPrefix?: string;
    ttlSeconds?: number;
}
export declare class RedisSessionStore extends BaseSessionRepository {
    private readonly keyPrefix;
    private readonly userSessionsPrefix;
    private readonly defaultTtlSeconds?;
    private readonly redis;
    constructor(redisClient: any, options?: RedisSessionStoreOptions);
    private normalizePrefix;
    private getSessionKey;
    private getUserSessionsKey;
    private getTtlSeconds;
    private serializeSessionPartial;
    create(session: SessionPayload): Promise<NestAuthSession>;
    findById(sessionId: string): Promise<NestAuthSession | null>;
    findByUserId(userId: string): Promise<NestAuthSession[]>;
    findActiveByUserId(userId: string): Promise<NestAuthSession[]>;
    update(sessionId: string, updates: Partial<NestAuthSession>): Promise<NestAuthSession>;
    delete(sessionId: string): Promise<void>;
    deleteByUserId(userId: string): Promise<void>;
    deleteExpired(): Promise<number>;
    countActiveByUserId(userId: string): Promise<number>;
    updateLastActive(sessionId: string): Promise<void>;
    healthCheck(): Promise<boolean>;
}
export { RedisSessionStore as RedisSessionRepository };
//# sourceMappingURL=redis-session.repository.d.ts.map