/// <reference types="react" />
import { BaseExpression } from "./BaseExpression";
import { ExpressionValueType } from "./ExpressionValueType";
import { IBaseExpressionElement } from "./Utilities/IBaseExpressionElement";
import { ExpressionEditContext } from "./Utilities/ExpressionEditContext";
import { RuleExecutable } from "../Common/Execution/RuleExecutable";
import { XExecutionData } from "../Common/Data/ExecutionData/XExecutionData";
import { IDataDefinition } from "../Common/Data/Definitions/IDataDefinition";
import { ITestingContext } from "../Common/Testing/ITestingContext";
import { IDesignValidationProvider, ValidationIssue } from "../Common/IDesignValidationProvider";
export declare class XExpressionDefinition extends RuleExecutable implements IBaseExpressionElement, IDesignValidationProvider {
    readonly canSelect: boolean;
    _id: string;
    private rootExpression;
    editContext: ExpressionEditContext;
    requiredVariable: IDataDefinition | undefined;
    constructor();
    run(data: XExecutionData, testContext?: ITestingContext): any;
    getAllVariables(): string[];
    get executionResult(): IDataDefinition | (() => IDataDefinition);
    set executionResult(value: IDataDefinition | (() => IDataDefinition));
    setEditContext(selection: ExpressionEditContext, owner: IBaseExpressionElement): void;
    render(): JSX.Element | undefined;
    get expression(): BaseExpression | undefined;
    set expression(value: BaseExpression | undefined);
    get variableName(): string | undefined;
    set variableName(value: string | undefined);
    get value(): any;
    set value(value: any);
    get valueType(): ExpressionValueType;
    set valueType(value: ExpressionValueType);
    get expressionRoot(): import("./ExpressionValue").ExpressionValue;
    getStorageData(): object;
    setStorageData(data: object): void;
    getDesignValidationIssues(): ValidationIssue[];
    getUsedVariables(): string[];
    getVariableName(): string | null;
}
