import { FormConfiguration } from "../FormConfiguration";
import { FormMode } from "./FormDesignConstants";
import { IDesignValidationProvider, IRuntimeValidationProvider, ValidationIssue } from "@appglue/common/dist/Common/IDesignValidationProvider";
import { FormBuilder } from "../FormBuilder";
import { ISampleDataProvider } from "@appglue/common/dist/Common/ISampleDataProvider";
import { IAction } from "../../CommonUI/IAction";
import { FormControl } from "../Controls/FormControl";
import { IContextForControl } from "@appglue/common/dist/Common/IContextForControl";
import { IContext } from "@appglue/common/dist/Common/IContext";
import { ControlRenderContext } from "./ControlRenderContext";
import { ElementFactory } from "../../CommonUI/ElementFactory";
import { ExecutionData } from "@appglue/common/dist/Common/Data/ExecutionData/ExecutionData";
import { IDesignPanelConfig } from "@appglue/common/dist/Common/IDesignPanelConfig";
export declare class FormContextStore {
    editContext: FormContext;
    controlRenderContexts: {
        [controlId: string]: ControlRenderContext;
    };
    otherRuntimeIssues: ValidationIssue[];
    otherDesignIssues: ValidationIssue[];
    constructor(editContext: FormContext);
    getAllRuntimeIssues(): ValidationIssue[];
    getAllDesignIssues(): ValidationIssue[];
    getControlRenderContext(control: FormControl): ControlRenderContext;
    getControlRenderContextById(controlId: string, controls: FormControl[]): ControlRenderContext;
    updateValidationIssues(validations: ValidationIssue[], controls: FormControl[], isRuntimeIssues: boolean): void;
}
export declare class FormContext implements IContext {
    form: FormConfiguration;
    runtimeValidationProvider?: IRuntimeValidationProvider;
    data: ExecutionData;
    controlContexts: FormContextStore;
    onFormDataChange?: (data: ExecutionData) => void;
    onFormButtonClick?: (buttonName: string, data: ExecutionData) => void;
    onFormCancelButton?: () => void;
    onFormClose?: (data: ExecutionData) => void;
    completeOutcomeName: string | undefined;
    resultPromiseResolve?: (result: string) => void;
    resultPromiseReject?: (error: any) => void;
    resultPromise: Promise<string>;
    formTitle?: string;
    designer?: FormBuilder;
    formName?: string;
    showControlBorders: boolean;
    expandedConfigPanel: boolean;
    isMovingConfigPanel: boolean;
    isShowEditLayer: boolean;
    selectedId: string | null;
    contextControl: IContextForControl | null;
    designValidationProvider?: IDesignValidationProvider;
    onFormSave?: (data: any) => void;
    sampleDataProvider?: ISampleDataProvider;
    designConfig?: IDesignPanelConfig;
    clipboardElement: FormControl | null;
    deleteControl: FormControl | null;
    onDesignerUpdate?: () => void;
    topDesignerExtensions?: IAction[];
    bottomDesignerExtensions?: IAction[];
    private eventLog;
    constructor(form: FormConfiguration);
    private _runtimeHideControls;
    get runtimeHideControls(): string[];
    set runtimeHideControls(hideControlIds: string[]);
    private _runtimeDisabledControls;
    get runtimeDisabledControls(): string[];
    set runtimeDisabledControls(disabledControlIds: string[]);
    private _mode;
    get mode(): FormMode | string;
    set mode(value: FormMode | string);
    private _lastSelectionElement;
    get lastSelectionElement(): string | null;
    set lastSelectionElement(id: string | null);
    completeFormWithOutcome(outcomename: string): void;
    outcomeTriggered(name: string): void;
    onClose(): void;
    onCancel(): void;
    getControlContext(control: FormControl): ControlRenderContext;
    computeRuntimeValidations(fieldName?: string): ValidationIssue[];
    setFormDataValue(fieldName: string, value: any): void;
    getFormDataValue(fieldName: string): any;
    setFormData(data: ExecutionData | object): void;
    getFormData(): ExecutionData;
    cloneControl(control: FormControl): FormControl;
    onCopy(id?: string): void;
    onCut(id?: string): void;
    onDelete(id?: string): void;
    onPaste(id?: string): void;
    addToEventLog(event: {} | string): void;
    getEventLog(): ({} | string)[];
    computeDesignValidationIssues(): ValidationIssue[];
    refreshDesigner(): void;
    getEditUI(defaultId?: string): ElementFactory<any> | undefined;
    getSelectedId(): string | null;
    getSelectedControl(defaultControlId?: string): FormControl | null;
    selectControl(selectedId: string): void;
    unSelectControl(): void;
    hideEditLayer(): void;
    showEditLayer(): void;
    toggleEditLayer(): void;
    selectContextControl(control: IContextForControl): void;
    unselectContextControl(): void;
    refreshUserForm(): void;
}
