import { CookieOptions as ExpressCookieOptions } from 'express';
import { NestAuthUser } from '../../user/entities/user.entity';
import { SessionDataPayload, SessionPayload, JWTTokenPayload } from './token-payload.interface';
export declare enum SessionStorageType {
    REDIS = "redis",
    DATABASE = "database",
    MEMORY = "memory"
}
export interface SessionOptions {
    storageType: SessionStorageType;
    redisUrl?: string;
    sessionExpiry?: number | string;
    refreshTokenExpiry?: number | string;
    maxSessionsPerUser?: number;
    slidingExpiration?: boolean;
    customizeSessionData?: (defaultData: SessionDataPayload, user: NestAuthUser) => Promise<SessionDataPayload> | SessionDataPayload;
    customizeTokenPayload?: (defaultPayload: JWTTokenPayload, session: SessionPayload) => Promise<JWTTokenPayload> | JWTTokenPayload;
    onCreated?: (session: SessionPayload, user: any) => Promise<void> | void;
    onRefreshed?: (oldSession: SessionPayload, newSession: SessionPayload) => Promise<void> | void;
    onRevoked?: (session: SessionPayload, reason: 'logout' | 'expired' | 'admin' | 'security' | 'password_change') => Promise<void> | void;
}
export type CookieOptions = Omit<ExpressCookieOptions, 'maxAge'>;
//# sourceMappingURL=session-options.interface.d.ts.map