/// <reference types="react" />
import { IConfigStorage } from "@appglue/common/dist/Common/IConfigStorage";
import { FormControl } from "./Controls/FormControl";
import { XBaseContainer } from "./Containers/XBaseContainer";
import { BorderStyle, ButtonControlSize, FormMode, LinkControlType, LinkControlUnderline, TextControlSize, TextControlStyle } from "./Utilities/FormDesignConstants";
import { IEditable } from "../CommonUI/IEditable";
import { FormContext } from "./Utilities/FormContext";
import { MultiExecutableOutputDefinition } from "@appglue/common/dist/Common/Execution/MultiExecutable";
import { ExecutionData } from "@appglue/common/dist/Common/Data/ExecutionData/ExecutionData";
import { FormRule } from "./Structure/FormRule";
import { ITestingContext } from "@appglue/common/dist/Common/Testing/ITestingContext";
import { IDataDefinition } from "@appglue/common/dist/Common/Data/Definitions/IDataDefinition";
import { DataDefinition } from "@appglue/common/dist/Common/Data/DataDefinition";
import { ValidationIssue } from "@appglue/common/dist/Common/IDesignValidationProvider";
import { ExecutableReturnPromise } from "@appglue/common/dist/Common/Execution/ExecutableReturnPromise";
import { MultiExecutableWithFormHost } from "@appglue/common/dist/Common/Execution/MultiExecutableWithFormHost";
import { IFormHost } from "@appglue/common/dist/Common/Execution/IFormHost";
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 FormConfiguration extends MultiExecutableWithFormHost implements IConfigStorage, IEditable {
    _id: string;
    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 containers;
    private _formContext;
    constructor(container?: XBaseContainer[]);
    private _rules;
    get rules(): FormRule[];
    set rules(rules: FormRule[]);
    getFormContext(): FormContext | null;
    setFormContext(value: FormContext | null): void;
    add(container: XBaseContainer, index?: number): void;
    remove(control: FormControl): void;
    setOrder(id: string, order: number): void;
    getContainers(): XBaseContainer[];
    getMode(): FormMode | string;
    getWidth(): number;
    getContentWidth(): number;
    isDevice(): boolean;
    getFormDatDefinition(): DataDefinition;
    render(): JSX.Element;
    find(id: string): FormControl | null;
    getAllControls(): FormControl[];
    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[];
    toString(): string;
    run(data: ExecutionData, testContext?: ITestingContext): ExecutableReturnPromise;
    runWithFormHost(data: ExecutionData, formHost: IFormHost | undefined, testContext: ITestingContext | undefined): ExecutableReturnPromise;
}
