import { type ServiceIdentifier } from '@inversifyjs/common';
import { type PlanBindingNode } from './PlanBindingNode.js';
import { type PlanServiceNode } from './PlanServiceNode.js';
declare const isLazyPlanServiceNodeSymbol: symbol;
export declare abstract class LazyPlanServiceNode implements PlanServiceNode {
    [isLazyPlanServiceNodeSymbol]: true;
    protected readonly _serviceIdentifier: ServiceIdentifier;
    protected _serviceNode: PlanServiceNode | undefined;
    constructor(serviceNode: PlanServiceNode | undefined, serviceIdentifier: ServiceIdentifier);
    get bindings(): PlanBindingNode | PlanBindingNode[] | undefined;
    get isContextFree(): boolean;
    get serviceIdentifier(): ServiceIdentifier;
    set bindings(bindings: PlanBindingNode | PlanBindingNode[] | undefined);
    set isContextFree(isContextFree: boolean);
    static is(value: unknown): value is LazyPlanServiceNode;
    invalidate(): void;
    isExpanded(): boolean;
    protected _getNode(): PlanServiceNode;
    protected abstract _buildPlanServiceNode(): PlanServiceNode;
}
export {};
//# sourceMappingURL=LazyPlanServiceNode.d.ts.map