import { IDataDefinition } from "../Data/Definitions/IDataDefinition";
import { XDataDefinition } from "../Data/XDataDefinition";
import { XExecutionData } from "../Data/ExecutionData/XExecutionData";
import { IConfigStorage } from "../IConfigStorage";
import { ITestingContext } from "../Testing/ITestingContext";
export declare class MultiExecutableOutputDefinition {
    name: string;
    dataOutput: IDataDefinition[];
    constructor(name?: string, dataOutput?: IDataDefinition[]);
}
export declare abstract class MultiExecutable implements IConfigStorage {
    inputData?: XDataDefinition | (() => XDataDefinition);
    inputDataCache?: XDataDefinition;
    getInputDefinition(): XDataDefinition;
    get canChangeInputs(): boolean;
    getStorageData(): object;
    setStorageData(data: object): void;
    abstract run(data: XExecutionData, testContext: ITestingContext | undefined): XPromise;
    abstract getOutcomes(): MultiExecutableOutputDefinition[];
}
export declare class XPromise extends Promise<XPromiseReturn> {
}
export declare class XPromiseReturn {
    result?: string;
    data: XExecutionData;
    constructor(result: string | undefined, data: XExecutionData);
}
