import { CacheBindingInvalidation } from '../models/CacheBindingInvalidation';
import { GetPlanOptions } from '../models/GetPlanOptions';
import { NonCachedServiceNodeContext } from '../models/NonCachedServiceNodeContext';
import { PlanResult } from '../models/PlanResult';
import { PlanServiceNode } from '../models/PlanServiceNode';
/**
 * Service to cache plans.
 *
 * This class is used to cache plans and to notify PlanService subscribers when the cache is cleared.
 * The cache should be cleared when a new binding is registered or when a binding is unregistered.
 *
 * Subscribers are supposed to be plan services from child containers.
 *
 * Ancestor binding constraints are the reason to avoid reusing plans from plan children nodes.
 */
export declare class PlanResultCacheService {
    #private;
    constructor();
    clearCache(): void;
    get(options: GetPlanOptions): PlanResult | undefined;
    invalidateServiceBinding(invalidation: CacheBindingInvalidation): void;
    set(options: GetPlanOptions, planResult: PlanResult): void;
    setNonCachedServiceNode(node: PlanServiceNode, context: NonCachedServiceNodeContext): void;
    subscribe(subscriber: PlanResultCacheService): void;
}
//# sourceMappingURL=PlanResultCacheService.d.ts.map