import { IConfigStorage } from "@appglue/common/dist/Common/IConfigStorage";
import { ValidationIssue } from "@appglue/common/dist/Common/IDesignValidationProvider";
import { ExpressionConfiguration } from "@appglue/common/dist/Expressions/ExpressionConfiguration";
import { FormConfiguration } from "../FormConfiguration";
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: FormConfiguration): 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: FormConfiguration): ValidationIssue[];
}
export declare class FormRuleControlVisibilityData extends FormRuleData {
    controlId: string | string[];
    constructor(controlId: string | string[]);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: FormConfiguration): ValidationIssue[];
}
export declare class FormRuleControlEnabledData extends FormRuleData {
    controlId: string | string[];
    constructor(controlId: string | string[]);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: FormConfiguration): ValidationIssue[];
}
export declare class FormRuleChangeFocusData extends FormRuleData {
    controlId: string | string[];
    constructor(controlId: string | string[]);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: FormConfiguration): ValidationIssue[];
}
export declare class FormRuleChangeValueData extends FormRuleData {
    dataPath: string;
    value: ExpressionConfiguration;
    constructor(dataPath: string, value: ExpressionConfiguration);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: FormConfiguration): ValidationIssue[];
}
export declare class FormRuleExitFormData extends FormRuleData {
    exitOnPath: string;
    constructor(exitOnPath: string);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: FormConfiguration): ValidationIssue[];
}
export declare class FormRule implements IConfigStorage {
    enabled: boolean;
    expression: ExpressionConfiguration;
    watchingValues: string[];
    watchingValuesMode: string;
    data?: FormRuleData;
    constructor(expression: ExpressionConfiguration, watchingValues?: string[], watchingValuesMode?: string);
    private _ruleType;
    get ruleType(): FormRuleType;
    set ruleType(type: FormRuleType);
    getStorageData(): {};
    setStorageData(data: object): void;
    getDesignValidationIssues(form: FormConfiguration): ValidationIssue[];
}
export {};
