import { NamespacedCache } from './namespaced-cache';
import type { CacheProvider } from './types';

/**
 * Factory function to create namespaced caches
 * Provides a clean API for services to get their own namespaced cache
 */
export function createNamespacedCache(
  cache: CacheProvider | null | undefined,
  namespace: string
): CacheProvider | null {
  if (!cache) {
    return null;
  }
  return new NamespacedCache(cache, namespace);
}

/**
 * Type guard to check if cache is available
 */
export function isCacheAvailable(cache: any): cache is CacheProvider {
  return cache !== null && cache !== undefined && typeof cache.get === 'function';
}