import { XExecutionData } from "../../../../Common/Data/ExecutionData/XExecutionData";
import { TableColumn } from "../../Shared/TableColumn";
import { RuleTableCell } from "./RuleTableCell";
import { RuleTableRow } from "./RuleTableRow";
import { ITestingContext } from "../../../../Common/Testing/ITestingContext";
import { IConfigStorage } from "../../../../Common/IConfigStorage";
import { IDesignValidationProvider, ValidationIssue } from "../../../../Common/IDesignValidationProvider";
import { IDataDefinition } from "../../../../Common/Data/Definitions/IDataDefinition";
import { ResultCell } from "../../Common/ResultCell";
import { BaseRuleTableDefinition } from "../../Common/BaseRuleTableDefinition";
import { RuleTableColumn } from "./RuleTableRuleColumn";
export declare class RuleTableDefinition extends BaseRuleTableDefinition implements IConfigStorage, IDesignValidationProvider {
    _id: string;
    private _ruleColumns;
    private _rows;
    constructor();
    run(data: XExecutionData, testContext: ITestingContext | undefined): any;
    getDefaultResultByOrder(order: number): ResultCell | undefined;
    get defaultResult(): {
        [id: string]: ResultCell;
    };
    get rows(): RuleTableRow[];
    get resultColumns(): TableColumn[];
    get ruleColumns(): RuleTableColumn[];
    syncAllRows(): void;
    syncRow(row: RuleTableRow): void;
    addRow(row?: RuleTableRow): RuleTableRow;
    removeRow(row: RuleTableRow): void;
    private getColumnByName;
    addRuleColumn(name?: string): RuleTableColumn;
    removeRuleColumn(id: string): void;
    getResultColumnType(resultcol: TableColumn): IDataDefinition | undefined;
    setResultColumnType(rule: TableColumn, dataType: IDataDefinition): void;
    syncDefaultResults(): void;
    removeResultColumn(id: string): void;
    getResultColumnValidationIssues(rescol: TableColumn): ValidationIssue[];
    getRuleCellValidationIssues(rulecell: RuleTableCell): ValidationIssue[];
    getRuleColumnValidationIssues(rulecol: RuleTableColumn): ValidationIssue[];
    getDesignValidationIssues(): ValidationIssue[];
    getStorageData(): object;
    setStorageData(data: object): void;
    getRuleColumnData(rule: RuleTableColumn): IDataDefinition | undefined;
    setRuleColumn(rule: RuleTableColumn, path: string): void;
    getNextCell(cell: ResultCell): null | ResultCell;
    getPrevCell(cell: ResultCell): null | ResultCell;
    getNextRowCell(cell: ResultCell): null | ResultCell;
    getPrevRowCell(cell: ResultCell): null | ResultCell;
}
