import { ExpressionValueType } from "./ExpressionValueType";
import { BaseExpression } from "./BaseExpression";
import { IBaseExpressionElement } from "./Utilities/IBaseExpressionElement";
import { ExpressionEditContext } from "./Utilities/ExpressionEditContext";
import { ValidationIssue } from "../Common/IDesignValidationProvider";
import { XExecutionData } from "../Common/Data/ExecutionData/XExecutionData";
import { IConfigStorage } from "../Common/IConfigStorage";
import { IDataDefinition } from "../Common/Data/Definitions/IDataDefinition";
import { ITestingContext } from "../Common/Testing/ITestingContext";
export declare class ExpressionValue implements IBaseExpressionElement, IConfigStorage {
    readonly canSelect: boolean;
    _id: string;
    name?: string;
    private expectedTypeValue;
    private valueTypeValue;
    private subExpressionValue?;
    private expressionValue;
    private variableNameValue?;
    editContext?: ExpressionEditContext;
    static createExpressionValue(owner: BaseExpression, name: string, expectedType?: IDataDefinition): ExpressionValue;
    setEditContext(context: ExpressionEditContext, owner: IBaseExpressionElement): void;
    get variableName(): string | undefined;
    set variableName(value: string | undefined);
    get value(): any;
    set value(value: any);
    get subExpression(): BaseExpression | undefined;
    set subExpression(value: BaseExpression | undefined);
    clear(): void;
    get valueType(): ExpressionValueType;
    set valueType(value: ExpressionValueType);
    get expectedType(): IDataDefinition;
    set expectedType(value: IDataDefinition);
    static isExpressionValue(item: any): item is ExpressionValue;
    getValidationIssues(): ValidationIssue[];
    evaluate(data: XExecutionData, testContext: ITestingContext | undefined, undefinedAllowed?: boolean): any;
    getAllVariables(): string[];
    getStorageData(): object;
    setStorageData(data: object): void;
    getVariableNames(): string[] | undefined;
}
