import { IDataDefinition } from "../Data/Definitions/IDataDefinition";
import { BaseExecutable } from "./BaseExecutable";
import { ITestingContext } from "../Testing/ITestingContext";
import { XExecutionData } from "../Data/ExecutionData/XExecutionData";
export declare abstract class RuleExecutable extends BaseExecutable {
    protected _executionResult?: IDataDefinition | (() => IDataDefinition);
    private _executionResultCache?;
    abstract run(data: XExecutionData, testContext: ITestingContext | undefined): any;
    get executionResult(): IDataDefinition | (() => IDataDefinition);
    set executionResult(value: IDataDefinition | (() => IDataDefinition));
    getRuleResult(): IDataDefinition;
    get canChangeOutputs(): boolean;
    getStorageData(): object;
    setStorageData(data: object): void;
}
