import { XFormConfiguration } from "../XFormConfiguration";
import { FormMode, IDesignPanelConfig } from "../FormDesignConstants";
import { IDesignValidationProvider, IRuntimeValidationProvider, ValidationIssue } from "../../Common/IDesignValidationProvider";
import { XFormDesigner } from "../XFormDesigner";
import { UserFormData } from "../UserFormData";
import { ISampleDataProvider } from "../../Common/ISampleDataProvider";
import { IAction } from "../../CommonUI/IAction";
import { XBaseControl } from "../Controls/XBaseControl";
import { IContextForControl } from "../../Common/IContextForControl";
import { IContext } from "../../Common/IContext";
import { ControlRenderContext } from "./ControlRenderContext";
import { ElementFactory } from "../../CommonUI/ElementFactory";
import { RuntimeContext } from "./RuntimeContext";
export declare class FormContextStore {
    editContext: FormContext;
    controlRenderContexts: {
        [controlId: string]: ControlRenderContext;
    };
    otherRuntimeIssues: ValidationIssue[];
    otherDesignIssues: ValidationIssue[];
    constructor(editContext: FormContext);
    getAllRuntimeIssues(): ValidationIssue[];
    getAllDesignIssues(): ValidationIssue[];
    getControlRenderContext(control: XBaseControl): ControlRenderContext;
    getControlRenderContextById(controlId: string, controls: XBaseControl[]): ControlRenderContext;
    updateValidationIssues(validations: ValidationIssue[], controls: XBaseControl[], isRuntimeIssues: boolean): void;
}
export declare class FormContext implements IContext {
    form: XFormConfiguration;
    runtimeValidationProvider?: IRuntimeValidationProvider;
    data: UserFormData;
    controlContexts: FormContextStore;
    runtimeContext: RuntimeContext;
    onFormDataChange?: (data: UserFormData) => void;
    onFormButtonClick?: (buttonName: string, data: UserFormData) => void;
    onFormCancelButton?: () => void;
    formTitle?: string;
    onFormClose?: (data: UserFormData) => void;
    constructor(form: XFormConfiguration);
    getControlContext(control: XBaseControl): ControlRenderContext;
    setFormDataValue(fieldName: string, value: any): void;
    getFormDataValue(fieldName: string): any;
    setFormData(data: UserFormData): void;
    getFormData(): UserFormData;
    outcomeTriggered(name: string): void;
    cancelOutcomeTriggered(name: string): void;
    designer?: XFormDesigner;
    formName?: string;
    showControlBorders: boolean;
    expandedConfigPanel: boolean;
    isMovingConfigPanel: boolean;
    isShowEditLayer: boolean;
    private _mode;
    selectedId: string | null;
    contextControl: IContextForControl | null;
    designValidationProvider?: IDesignValidationProvider;
    onFormSave?: (data: any) => void;
    sampleDataProvider?: ISampleDataProvider;
    designConfig?: IDesignPanelConfig;
    clipboardElement: XBaseControl | null;
    deleteControl: XBaseControl | null;
    cloneControl(control: XBaseControl): XBaseControl;
    onCopy(id?: string): void;
    onCut(id?: string): void;
    onDelete(id?: string): void;
    onPaste(id?: string): void;
    onDesignerUpdate?: () => void;
    topDesignerExtensions?: IAction[];
    bottomDesignerExtensions?: IAction[];
    private eventLog;
    get mode(): FormMode | string;
    set mode(value: FormMode | string);
    addToEventLog(event: {} | string): void;
    getEventLog(): ({} | string)[];
    computeDesignValidationIssues(): ValidationIssue[];
    refreshDesigner(): void;
    getEditUI(defaultId?: string): ElementFactory<any> | undefined;
    getSelectedId(): string | null;
    getSelectedControl(defaultControlId?: string): XBaseControl | null;
    private _lastSelectionElement;
    set lastSelectionElement(id: string | null);
    get lastSelectionElement(): string | null;
    selectControl(selectedId: string): void;
    unSelectControl(): void;
    hideEditLayer(): void;
    showEditLayer(): void;
    toggleEditLayer(): void;
    selectContextControl(control: IContextForControl): void;
    unselectContextControl(): void;
    refreshUserForm(): void;
}
