/**
 * CSRF Token Manager
 * Generate, validate, and bind CSRF tokens to sessions
 */
import type { Redis } from 'ioredis';
export interface CsrfTokenData {
    token: string;
    sessionId: string;
    createdAt: Date;
    expiresAt: Date;
}
export interface ICsrfTokenManager {
    generateToken(sessionId: string): Promise<string>;
    validateToken(sessionId: string, token: string): Promise<boolean>;
    invalidateToken(sessionId: string): Promise<void>;
    getTokenData(sessionId: string): Promise<CsrfTokenData | null>;
    refreshToken(sessionId: string): Promise<string | null>;
    cleanup(): Promise<number>;
    clear(): Promise<void>;
    getTokenCount(): Promise<number>;
}
export interface CsrfTokenManagerType {
    create(options?: CsrfTokenManagerOptions): ICsrfTokenManager;
}
export type CsrfStoreName = 'memory' | 'redis';
export type CsrfTokenManagerOptions = {
    store?: CsrfStoreName;
    redis?: Redis;
    keyPrefix?: string;
    tokenLength?: number;
    tokenTtlMs?: number;
};
/**
 * CsrfTokenManager namespace - sealed for immutability
 */
export declare const CsrfTokenManager: CsrfTokenManagerType;
//# sourceMappingURL=CsrfTokenManager.d.ts.map