/** * Session Store Factory * * Factory functions for creating session stores based on configuration. * Supports Redis, Vercel KV, and SQLite providers. * Uses @frontmcp/utils storage adapters internally. */ import type { SessionStore } from '@frontmcp/auth'; import { type StorageAdapter } from '@frontmcp/utils'; import { type FrontMcpLogger, type PubsubOptions, type RedisOptions, type SqliteOptionsInput } from '../../common'; /** * Discriminated input for `createSessionStore`. A SQLite-backed session * store is requested with `{ sqlite: SqliteOptionsInput, ... }`; any * other shape is treated as a Redis/Vercel KV configuration. */ export type SessionStoreFactoryOptions = RedisOptions | { sqlite: SqliteOptionsInput; keyPrefix?: string; defaultTtlMs?: number; }; /** * Create a session store based on configuration * * @param options - Storage configuration (Redis, Vercel KV, or SQLite) * @param logger - Optional logger instance * @returns A session store instance * * @example Redis * ```typescript * const store = await createSessionStore({ * provider: 'redis', * host: 'localhost', * port: 6379, * }); * ``` * * @example Vercel KV * ```typescript * const store = await createSessionStore({ * provider: 'vercel-kv', * }); * ``` * * @example SQLite * ```typescript * const store = await createSessionStore({ * sqlite: { path: '~/.frontmcp/data/sessions.sqlite' }, * }); * ``` */ export declare function createSessionStore(options: SessionStoreFactoryOptions, logger?: FrontMcpLogger): Promise; /** * Create a session store synchronously (for backwards compatibility) * Note: For Vercel KV, use createSessionStore() instead as it requires async connect * * @param options - Storage configuration (Redis only) * @param logger - Optional logger instance * @returns A session store instance */ export declare function createSessionStoreSync(options: RedisOptions, logger?: FrontMcpLogger): SessionStore; /** * Create a pub/sub store for resource subscriptions * * Pub/Sub requires Redis - Vercel KV does not support pub/sub operations. * Use this when you need resource subscriptions with Vercel KV for sessions. * * @param options - Pub/sub configuration (Redis only) * @returns A Redis storage adapter with pub/sub support * * @example Hybrid config * ```typescript * // Use Vercel KV for sessions, Redis for pub/sub * const sessionStore = await createSessionStore({ provider: 'vercel-kv' }); * const pubsubStore = createPubsubStore({ host: 'localhost', port: 6379 }); * ``` */ /** * Create a SQLite session store for local-only deployments. * * @param options - SQLite storage configuration * @param logger - Optional logger instance * @returns A SQLite-backed session store * * @example * ```typescript * const store = createSqliteSessionStore({ * path: '~/.frontmcp/data/sessions.sqlite', * encryption: { secret: 'my-secret' }, * }); * ``` */ export declare function createSqliteSessionStore(options: SqliteOptionsInput & { keyPrefix?: string; defaultTtlMs?: number; }, logger?: FrontMcpLogger): SessionStore; export declare function createPubsubStore(options: PubsubOptions): StorageAdapter; //# sourceMappingURL=session-store.factory.d.ts.map