import { HttpRequest, HttpResponse } from '@angular/common/http';
import { Dictionary } from '@jscrpt/common';
import { AdvancedCacheItem, RestDateApi } from '../../interfaces';
import { AdvancedCacheItemOptions } from '../../misc/types';
import * as i0 from "@angular/core";
/**
 * Allows advanced caching of http responses
 */
export declare class AdvancedCacheService<TDate = unknown> {
    protected restDateApi: RestDateApi;
    /**
     * Instance of cache and its data
     */
    protected cache: Dictionary<Dictionary<AdvancedCacheItem<TDate>>>;
    constructor(restDateApi: RestDateApi);
    /**
     * Clears cache either for specified key, or whole cache
     * @param key - Name of cache to be cleared, if not provided all cached items will be cleared
     */
    clearCache(key?: string): void;
    /**
     * Adds response to advanced cache
     * @param key - Key under which will be cached item stored
     * @param request - Request for which will be response added
     * @param response - Response to be cached
     * @param config - Configuration for cached response
     */
    add(key: string, request: HttpRequest<unknown>, response: HttpResponse<unknown>, config: AdvancedCacheItemOptions<TDate>): HttpResponse<unknown>;
    /**
     * Gets http response from cache, or null if it does not exists
     * @param key - Key which represents cached item
     * @param request - Request for which will be response returned
     */
    get(key: string, request: HttpRequest<unknown>): HttpResponse<unknown> | null;
    /**
     * Updates existing cache items, if not exists it does nothing
     * @param key - Key which represents cached items
     * @param config - Config to be applied to existing cache items
     */
    updateCache(key: string, config: AdvancedCacheItemOptions<TDate>): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AdvancedCacheService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AdvancedCacheService<any>>;
}
//# sourceMappingURL=advancedCache.service.d.ts.map