import { ICache } from "../caching/i-cache.interface";
declare class EagerInMemoryCache<TKey = any, TData = any> implements ICache<TKey, TData> {
    private _cache;
    private _promiseToBuildTheCache;
    private get cache();
    private get promiseToBuildTheCache();
    constructor();
    get(key: TKey): Promise<TData>;
    protected obtainCache(): Promise<Map<TKey, TData>>;
    protected isCacheBuilt(): boolean;
    protected acquireCache(): Promise<Map<TKey, TData>>;
    protected isCacheBeingBuilt(): boolean;
    protected buildCache(): Promise<Map<TKey, TData>>;
    protected retrieveData(): Promise<TData[]>;
    protected createCacheFromData(data: TData[]): Map<TKey, TData>;
    protected extractKey(dataItem: TData): TKey;
}
export { EagerInMemoryCache };
