import { XExpressionDefinition } from "../../Expressions/XExpressionDefinition";
import { XExecutionData } from "../../Common/Data/ExecutionData/XExecutionData";
import { IDataDefinition } from "../../Common/Data/Definitions/IDataDefinition";
import { ISameResultTypeRule } from "../Common/ISameResultTypeRule";
import { ITestingContext } from "../../Common/Testing/ITestingContext";
import { IDesignValidationProvider, ValidationIssue } from "../../Common/IDesignValidationProvider";
import { IConfigStorage } from "../../Common/IConfigStorage";
import { RuleExecutable } from "../../Common/Execution/RuleExecutable";
export declare class IntersectionResult implements IConfigStorage, IConfigStorage {
    x: string;
    y: string;
    resultExpression: XExpressionDefinition;
    setValue(newValue: XExpressionDefinition | any): void;
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(): ValidationIssue[];
}
export declare class IntersectionRuleDefinition extends RuleExecutable implements IConfigStorage, ISameResultTypeRule, IDesignValidationProvider {
    private _xaxisExpressions;
    private _yaxisExpressions;
    private _results;
    private _resultType;
    _id: string;
    get results(): IntersectionResult[];
    get resultType(): IDataDefinition;
    get xaxisExpressions(): XExpressionDefinition[];
    get yaxisExpressions(): XExpressionDefinition[];
    removeExpression(exp: XExpressionDefinition, direction?: "x" | "y"): void;
    removeXAxisExpression(exp: XExpressionDefinition): void;
    removeYAxisExpression(exp: XExpressionDefinition): void;
    addYAxisExpression(exp?: XExpressionDefinition): void;
    addXAxisExpression(exp?: XExpressionDefinition): void;
    createResultCell(x: XExpressionDefinition, y: XExpressionDefinition): IntersectionResult;
    validateResultCells(): void;
    purgeResultCells(): void;
    run(data: XExecutionData, testContext?: ITestingContext): any;
    constructor();
    findResultCellByXY(x: string, y: string): IntersectionResult | undefined;
    setTypeResults(newType: IDataDefinition): void;
    getDesignValidationIssues(): ValidationIssue[];
    getStorageData(): {};
    setStorageData(data: object): void;
}
