/// <reference types="react" />
import { ExpressionValue } from "./ExpressionValue";
import { IBaseExpressionElement } from "./Utilities/IBaseExpressionElement";
import { ExpressionEditContext } from "./Utilities/ExpressionEditContext";
import { XExecutionData } from "../Common/Data/ExecutionData/XExecutionData";
import { IConfigStorage } from "../Common/IConfigStorage";
import { IDataDefinition } from "../Common/Data/Definitions/IDataDefinition";
import { ValidationIssue } from "../Common/IDesignValidationProvider";
import { ITestingContext } from "../Common/Testing/ITestingContext";
export declare abstract class BaseExpression implements IBaseExpressionElement, IConfigStorage {
    abstract readonly __type: string;
    readonly canSelect: boolean;
    protected _expressionValueType: IDataDefinition;
    _id: string;
    private values;
    editContext?: ExpressionEditContext;
    get expressionValueType(): IDataDefinition;
    set expressionValueType(expressionValueType: IDataDefinition);
    setEditContext(editContext: ExpressionEditContext, owner: IBaseExpressionElement): void;
    setEditContextWithoutRegister(editContext: ExpressionEditContext): void;
    getExpressionValues(): ExpressionValue[];
    getAllExpressionValues(): ExpressionValue[];
    createExpressionValue(name: string, createValueType: IDataDefinition): void;
    getExpressionValue(name: string, createIfMissing?: boolean, createValueType?: IDataDefinition | null): ExpressionValue | null;
    registerExpressionValue(expressionValue: ExpressionValue): void;
    abstract evaluate(data: XExecutionData, testContext: ITestingContext | undefined): any;
    getAllVariables(): string[];
    getStorageData(): object;
    setStorageData(data: object): void;
    abstract render(): JSX.Element;
    getValidationIssues(): ValidationIssue[];
    getVarialbleNames(): string[];
}
