import { ClassType } from '@deepkit/core';
import { HttpRequest, RouteParameterResolverContext } from '@deepkit/http';
type CacheKey = string | symbol | object;
/**
 * Key generator
 */
export declare function getCompositeCacheKey(target: ClassType, key: symbol): any;
/**
 * Cache implementation
 */
type ValueResolver<T> = (request: HttpRequest) => Promise<T>;
export declare function getOrCacheValue<T>(request: HttpRequest, key: CacheKey, resolver: ValueResolver<T>): Promise<T>;
export declare function getCachedValue<T>(request: HttpRequest, key: CacheKey): T | undefined;
export declare function getCachedValueOrThrow<T>(request: HttpRequest, key: CacheKey): T;
/**
 * Generic store value resolver
 * Requires a previous listener to have attached data to the store
 */
export declare function createCachedValueResolver<T>(key: string | symbol | object, isRequired?: boolean): {
    new (): {
        resolve(context: RouteParameterResolverContext): Promise<T | undefined>;
    };
};
/**
 * Generic store value resolver with cache miss lookup
 */
export declare function createCachingParameterResolver<T>(key: string | symbol | object, lookupFn: (context: RouteParameterResolverContext) => Promise<T>): {
    new (): {
        resolve(context: RouteParameterResolverContext): Promise<T | undefined>;
    };
};
export {};
//# sourceMappingURL=store.d.ts.map