typedef CacheScopeProvider = String? Function(); class CacheScope { CacheScope._(); static CacheScopeProvider? _provider; static void configureProvider(CacheScopeProvider provider) { _provider = provider; } static void resetProvider() { _provider = null; } static String token() { final value = maybeToken(); if (value == null) { throw StateError('CacheScope not configured - user must be logged in'); } return value; } static String? maybeToken() { final raw = _provider?.call()?.trim(); if (raw == null || raw.isEmpty) { return null; } return raw; } static String scopedKey(String key, {String? scopeToken}) { final scope = scopeToken ?? token(); return 'cache:$scope:$key'; } }