import { NestAuthSession } from '../entities/session.entity';
import { SessionPayload } from '../../core/interfaces/token-payload.interface';
import { ISessionRepository } from '../interfaces/session-repository.interface';
export declare abstract class BaseSessionRepository implements ISessionRepository {
    abstract create(session: SessionPayload): Promise<NestAuthSession>;
    abstract findById(sessionId: string): Promise<NestAuthSession | null>;
    abstract findByUserId(userId: string): Promise<NestAuthSession[]>;
    abstract findActiveByUserId(userId: string): Promise<NestAuthSession[]>;
    abstract update(sessionId: string, updates: Partial<NestAuthSession>): Promise<NestAuthSession>;
    abstract delete(sessionId: string): Promise<void>;
    abstract deleteByUserId(userId: string): Promise<void>;
    abstract deleteExpired(): Promise<number>;
    abstract countActiveByUserId(userId: string): Promise<number>;
    abstract updateLastActive(sessionId: string): Promise<void>;
    protected isExpired(session: NestAuthSession): boolean;
    protected calculateExpiresAt(duration: string | number): Date;
    protected serializeSession(session: SessionPayload | NestAuthSession): Record<string, any>;
    protected deserializeSession(data: Record<string, any>): NestAuthSession;
    protected filterActive(sessions: NestAuthSession[]): NestAuthSession[];
}
//# sourceMappingURL=base-session.repository.d.ts.map