import { JinjaVariable, VariableChangeListener } from './JinjaVariable.js';
export declare abstract class ContextValue {
    readonly name?: string;
    readonly abstract parent?: ContextValue;
    private changeVariableSetupListeners;
    constructor(name?: string);
    protected abstract findVariableByKey(name: string): JinjaVariable | undefined;
    protected createKey(key: string): string;
    has(key: string): boolean;
    getVariable(path: string, ignore?: string[]): JinjaVariable | undefined;
    get(key: string, ignore?: string[]): any;
    abstract getVariableInContext(key: string): JinjaVariable | undefined;
    abstract getAllInContext(): any;
    getInContext(key: string): any;
    getAll(ignore?: string[]): Record<string, any>;
    set(key: string, value: any): void;
    onChange(key: string, listener: VariableChangeListener): () => void;
    closest(name: string): ContextValue | undefined;
    abstract forEachVariable(iteratee: (v: JinjaVariable) => void): void;
    protected addVariablesToContext(_variables: JinjaVariable[]): void;
    onChangeVariableSetup(listener: () => void): () => void;
    addVariables(variables: JinjaVariable[]): void;
}
//# sourceMappingURL=ContextValue.d.ts.map