import { IConfigStorage } from "../Common/IConfigStorage";
import { ValidationIssue } from "../Common/IDesignValidationProvider";
import { XExpressionDefinition } from "../Expressions/XExpressionDefinition";
import { XFormConfiguration } from "./XFormConfiguration";
export declare enum FormRuleType {
    VALIDATION = "Data Validation",
    CONTROL_ENABLED = "Control Enabled",
    CONTROL_VISIBILITY = "Control Visibility",
    CHANGE_VALUE = "Change Value",
    EXIT_FORM = "Exit Form",
    CHANGE_FOCUS = "Change Focus"
}
declare abstract class FormRuleData implements IConfigStorage {
    type: FormRuleType;
    constructor(type: FormRuleType);
    abstract getDesignValidationIssues(form: XFormConfiguration): ValidationIssue[];
    getStorageData(): {};
    setStorageData(data: object): void;
}
export declare class FormRuleValidationData extends FormRuleData {
    validationMessage: string;
    controlId: string;
    constructor(validationMessage: string, controlId: string);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: XFormConfiguration): ValidationIssue[];
}
export declare class FormRuleControlVisibilityData extends FormRuleData {
    controlId: string | string[];
    constructor(controlId: string | string[]);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: XFormConfiguration): ValidationIssue[];
}
export declare class FormRuleControlEnabledData extends FormRuleData {
    controlId: string | string[];
    constructor(controlId: string | string[]);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: XFormConfiguration): ValidationIssue[];
}
export declare class FormRuleChangeFocusData extends FormRuleData {
    controlId: string | string[];
    constructor(controlId: string | string[]);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: XFormConfiguration): ValidationIssue[];
}
export declare class FormRuleChangeValueData extends FormRuleData {
    dataPath: string;
    value: XExpressionDefinition;
    constructor(dataPath: string, value: XExpressionDefinition);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: XFormConfiguration): ValidationIssue[];
}
export declare class FormRuleExitFormData extends FormRuleData {
    exitOnPath: string;
    constructor(exitOnPath: string);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: XFormConfiguration): ValidationIssue[];
}
export declare class FormRule implements IConfigStorage {
    enabled: boolean;
    private _ruleType;
    expression: XExpressionDefinition;
    watchingValues: string[];
    watchingValuesMode: string;
    data?: FormRuleData;
    constructor(expression: XExpressionDefinition, watchingValues?: string[], watchingValuesMode?: string);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: XFormConfiguration): ValidationIssue[];
    set ruleType(type: FormRuleType);
    get ruleType(): FormRuleType;
}
export {};
