import { ExpressionValue } from "../ExpressionValue";
import { IBaseExpressionElement } from "./IBaseExpressionElement";
import { XExpressionEditor } from "../XExpressionEditor";
import { XExpressionDefinition } from "../XExpressionDefinition";
import { IDataDefinition } from "../../Common/Data/Definitions/IDataDefinition";
export declare class ExpressionEditContext {
    private ownership;
    private selected?;
    emptyExpressionText: string | null;
    expressionEditor?: XExpressionEditor;
    definition?: XExpressionDefinition;
    onSelection?: (selectedId: string) => void;
    expression: XExpressionDefinition;
    requiredVariable?: IDataDefinition;
    constructor(expression: XExpressionDefinition);
    onExpressionUpdate?: () => void;
    clearSelection(): void;
    setSelection(id: string): void;
    getSelection(): string | null | undefined;
    register(owned: IBaseExpressionElement, owner: IBaseExpressionElement): void;
    getParent(id: string): IBaseExpressionElement | null;
    getParents(id: string): IBaseExpressionElement[];
    getElement(id: string): IBaseExpressionElement | null;
    canSelectParent(id: string): boolean;
    selectParent(id: string): void;
    refresh(): void;
    getParentExpressionValue(id: string): ExpressionValue | null;
    checkVariableUsed(variable: IDataDefinition): boolean;
}
