type StoreRecord = { expiresAt: number; metadata?: Record | undefined; }; type MarkUsedResult = { /** * true if this call stamped usedAt (was null before) */ swapped: boolean; /** * the record after the operation */ record: StoreRecord; }; type Store$1 = { add: (key: string, expiresAt: number, metadata?: Record) => Promise; has: (key: string) => Promise; get: (key: string) => Promise; delete: (key: string) => Promise; deleteAll: (filter: Record) => Promise; markUsed?: ((key: string, nowSec: number) => Promise) | undefined; size: () => number; _stop: () => void; }; /** * @overload * @param {'memory'} kind * @param {MemoryConfig} [options] * @returns {Store} * * @overload * @param {'redis'} kind * @param {RedisConfig} options * @returns {Store} * * @overload * @param {'custom'} kind * @param {CustomConfig} options * @returns {Store} * * @param {'memory' | 'redis' | 'custom'} kind * @param {MemoryConfig | RedisConfig | CustomConfig} [options] * @returns {Store} */ declare function createStore(kind: "memory", options?: MemoryConfig | undefined): Store; /** * @overload * @param {'memory'} kind * @param {MemoryConfig} [options] * @returns {Store} * * @overload * @param {'redis'} kind * @param {RedisConfig} options * @returns {Store} * * @overload * @param {'custom'} kind * @param {CustomConfig} options * @returns {Store} * * @param {'memory' | 'redis' | 'custom'} kind * @param {MemoryConfig | RedisConfig | CustomConfig} [options] * @returns {Store} */ declare function createStore(kind: "redis", options: RedisConfig): Store; /** * @overload * @param {'memory'} kind * @param {MemoryConfig} [options] * @returns {Store} * * @overload * @param {'redis'} kind * @param {RedisConfig} options * @returns {Store} * * @overload * @param {'custom'} kind * @param {CustomConfig} options * @returns {Store} * * @param {'memory' | 'redis' | 'custom'} kind * @param {MemoryConfig | RedisConfig | CustomConfig} [options] * @returns {Store} */ declare function createStore(kind: "custom", options: CustomConfig): Store; type Store = Store$1; type MemoryConfig = { maxSize?: number | undefined; gc?: { strategy?: "interval" | "lazy" | "lru"; interval?: string | number; maxSize?: number; } | undefined; }; type RedisConfig = { /** * ioredis or `redis@4` client */ client: unknown; keyPrefix?: string | undefined; }; type CustomConfig = { /** * caller's own store implementation */ impl: Store; }; export { createStore }; export type { CustomConfig, MemoryConfig, RedisConfig, Store };