/**
 * Auth0 Custom Session Store
 *
 * セッションストアの抽象化とカスタム実装
 * Database、Redis、Memory、File system対応
 */
/**
 * セッションデータ
 */
export interface SessionData {
    sessionId: string;
    userId: string;
    accessToken: string;
    idToken: string;
    refreshToken?: string;
    expiresAt: number;
    createdAt: number;
    lastAccessedAt: number;
    user: {
        sub: string;
        email?: string;
        name?: string;
        picture?: string;
        [key: string]: any;
    };
    metadata?: Record<string, any>;
}
/**
 * セッションストア抽象インターフェース
 */
export interface SessionStore {
    /**
     * セッションを保存
     */
    save(sessionId: string, session: SessionData): Promise<void>;
    /**
     * セッションを取得
     */
    get(sessionId: string): Promise<SessionData | null>;
    /**
     * セッションを削除
     */
    delete(sessionId: string): Promise<void>;
    /**
     * セッションを更新
     */
    update(sessionId: string, updates: Partial<SessionData>): Promise<void>;
    /**
     * ユーザーの全セッションを取得
     */
    getByUserId(userId: string): Promise<SessionData[]>;
    /**
     * ユーザーの全セッションを削除
     */
    deleteByUserId(userId: string): Promise<void>;
    /**
     * 期限切れセッションを削除
     */
    cleanup(): Promise<void>;
    /**
     * ストアのヘルスチェック
     */
    health(): Promise<{
        status: 'ok' | 'error';
        message?: string;
    }>;
}
/**
 * 🗄️ Memory Session Store
 * 開発・テスト用のインメモリストア
 */
export declare class MemorySessionStore implements SessionStore {
    private options;
    private sessions;
    private userSessions;
    private cleanupInterval;
    constructor(options?: {
        cleanupIntervalMs?: number;
    });
    save(sessionId: string, session: SessionData): Promise<void>;
    get(sessionId: string): Promise<SessionData | null>;
    delete(sessionId: string): Promise<void>;
    update(sessionId: string, updates: Partial<SessionData>): Promise<void>;
    getByUserId(userId: string): Promise<SessionData[]>;
    deleteByUserId(userId: string): Promise<void>;
    cleanup(): Promise<void>;
    health(): Promise<{
        status: 'ok' | 'error';
        message?: string;
    }>;
    private startCleanup;
    /**
     * ストアを終了
     */
    destroy(): void;
}
/**
 * 🗃️ Database Session Store
 * PostgreSQL、MySQL、SQLite対応
 */
export declare class DatabaseSessionStore implements SessionStore {
    private db;
    private options;
    constructor(db: any, // Database connection
    options?: {
        tableName?: string;
        schemaName?: string;
    });
    private get tableName();
    save(sessionId: string, session: SessionData): Promise<void>;
    get(sessionId: string): Promise<SessionData | null>;
    delete(sessionId: string): Promise<void>;
    update(sessionId: string, updates: Partial<SessionData>): Promise<void>;
    getByUserId(userId: string): Promise<SessionData[]>;
    deleteByUserId(userId: string): Promise<void>;
    cleanup(): Promise<void>;
    health(): Promise<{
        status: 'ok' | 'error';
        message?: string;
    }>;
    private updateLastAccessed;
    /**
     * Database schema creation
     */
    createSchema(): Promise<void>;
}
/**
 * 🔴 Redis Session Store
 * Redis対応のセッションストア
 */
export declare class RedisSessionStore implements SessionStore {
    private redis;
    private options;
    constructor(redis: any, // Redis client
    options?: {
        keyPrefix?: string;
        defaultTtl?: number;
    });
    private sessionKey;
    private userSessionsKey;
    save(sessionId: string, session: SessionData): Promise<void>;
    get(sessionId: string): Promise<SessionData | null>;
    delete(sessionId: string): Promise<void>;
    update(sessionId: string, updates: Partial<SessionData>): Promise<void>;
    getByUserId(userId: string): Promise<SessionData[]>;
    deleteByUserId(userId: string): Promise<void>;
    cleanup(): Promise<void>;
    health(): Promise<{
        status: 'ok' | 'error';
        message?: string;
    }>;
}
/**
 * 🔧 Session Store Factory
 */
export declare class SessionStoreFactory {
    /**
     * Memory store を作成
     */
    static createMemoryStore(options?: {
        cleanupIntervalMs?: number;
    }): MemorySessionStore;
    /**
     * Database store を作成
     */
    static createDatabaseStore(db: any, options?: {
        tableName?: string;
        schemaName?: string;
    }): DatabaseSessionStore;
    /**
     * Redis store を作成
     */
    static createRedisStore(redis: any, options?: {
        keyPrefix?: string;
        defaultTtl?: number;
    }): RedisSessionStore;
    /**
     * 設定から適切なストアを作成
     */
    static createFromConfig(config: {
        type: 'memory' | 'database' | 'redis';
        connection?: any;
        options?: any;
    }): SessionStore;
}
/**
 * 🎯 Session Store 使用例
 */
export declare const sessionStoreExamples: {
    memory: string;
    database: string;
    redis: string;
};
//# sourceMappingURL=auth0-session-store.d.ts.map