/// <reference types="react" />
import { IConfigStorage } from "../Common/IConfigStorage";
import { XBaseControl } from "./Controls/XBaseControl";
import { XBaseContainer } from "./Containers/XBaseContainer";
import { BorderStyle, ButtonControlSize, FormMode, LinkControlType, LinkControlUnderline, TextControlSize, TextControlStyle } from "./FormDesignConstants";
import { IEditable } from "../CommonUI/IEditable";
import { FormContext } from "./Utilities/FormContext";
import { MultiExecutable, MultiExecutableOutputDefinition, XPromise } from "../Common/Execution/MultiExecutable";
import { XExecutionData } from "../Common/Data/ExecutionData/XExecutionData";
import { FormRule } from "./FormRule";
import { ITestingContext } from "../Common/Testing/ITestingContext";
import { IDataDefinition } from "../Common/Data/Definitions/IDataDefinition";
import { XDataDefinition } from "../Common/Data/XDataDefinition";
import { ValidationIssue } from "../Common/IDesignValidationProvider";
export declare const PinnedNotifyDiv: import("styled-components").StyledComponent<"div", any, {
    color?: string | undefined;
    moveRightPX?: number | undefined;
    borderWidth?: number | undefined;
}, never>;
export declare const ContainerSectionDiv: import("styled-components").StyledComponent<"div", any, {
    pinned?: boolean | undefined;
}, never>;
export declare class XFormConfiguration extends MultiExecutable implements IConfigStorage, IEditable {
    private containers;
    title?: string;
    designFormWidth: number;
    runtimeWidth?: number | null;
    gapBetweenContainers: number;
    formMargin: number;
    defaultInnerContainerMargin: number;
    defaultInnerColumnMargin?: number;
    defaultInterControlSpacing: number;
    doNotScrollLastContainerOnForm: boolean;
    doNotScrollFirstContainerOnForm: boolean;
    defaultShowContainerBorder?: boolean;
    defaultContainerBorderRadius: number;
    defaultContainerBorderWidth: number;
    defaultContainerBorderColor: string;
    defaultContainerBorderStyle: BorderStyle;
    showLinesBetweenContainers?: boolean;
    defaultLineBetweenContainerWidth: number;
    defaultLineBetweenContainerColor: string;
    defaultLineBetweenContainerStyle: BorderStyle;
    formBackgroundColor: string | null;
    defaultContainerBackgroundColor: string | null;
    defaultTextStyle: TextControlStyle;
    defaultTextSize: TextControlSize;
    defaultButtonSize: ButtonControlSize;
    defaultLinkUnderline: LinkControlUnderline;
    defaultLinkType: LinkControlType;
    private _formContext;
    private _rules;
    constructor(container?: XBaseContainer[]);
    getFormContext(): FormContext | null;
    setFormContext(value: FormContext | null): void;
    add(container: XBaseContainer, index?: number): void;
    remove(control: XBaseControl): void;
    setOrder(id: string, order: number): void;
    getContainers(): XBaseContainer[];
    getMode(): FormMode | string;
    getWidth(): number;
    getContentWidth(): number;
    isDevice(): boolean;
    getFormDatDefinition(): XDataDefinition;
    set rules(rules: FormRule[]);
    get rules(): FormRule[];
    render(): JSX.Element;
    find(id: string): XBaseControl | null;
    getAllControls(): XBaseControl[];
    getStorageData(): object;
    setStorageData(data: object): void;
    refreshDesigner: () => void;
    renderEditUI(): JSX.Element | null;
    getAllFormData(): IDataDefinition[];
    getOutcomes(): MultiExecutableOutputDefinition[];
    getRuleValidationIssues(fieldName: string): ValidationIssue[];
    dataChangeByRule(fieldName: string): void;
    hideControlByRule(): void;
    disableControlByRule(): void;
    focusControlByRule(): void;
    getRunableRules(fieldName: string): FormRule[];
    run(data: XExecutionData, testContext: ITestingContext | undefined): XPromise;
    toString(): string;
}
