import React from "react";
import { FormMode, IDesignPanelConfig } from "./FormDesignConstants";
import { XFormConfiguration } from "./XFormConfiguration";
import { IAction } from "../CommonUI/IAction";
import { ISampleDataProvider } from "../Common/ISampleDataProvider";
import { IDesignValidationProvider } from "../Common/IDesignValidationProvider";
import { FormContext } from "./Utilities/FormContext";
import { UserFormData } from "./UserFormData";
import { XDataDefinition } from "../Common/Data/XDataDefinition";
import { SidebarItem } from "../CommonUI/BuildUI/Sidebar";
import "./XFormDesigner.css";
export declare const StyledTab: import("styled-components").StyledComponent<import("@material-ui/core").ExtendButtonBase<import("@material-ui/core").TabTypeMap<{}, "div">>, any, {}, never>;
interface XFormDesignerProps {
    form: XFormConfiguration;
    formData?: UserFormData;
    formName?: string;
    dataDefinition?: XDataDefinition | (() => XDataDefinition);
    onFormClose?: () => void;
    onFormSave?: (data: any) => void;
    onFormNameUpdate?: (title: string) => void;
    sampleDataProvider?: ISampleDataProvider;
    topDesignerExtensions?: IAction[];
    bottomDesignerExtensions?: IAction[];
    designConfig?: IDesignPanelConfig;
    designValidationProvider?: IDesignValidationProvider;
    initialMode?: FormMode;
}
export declare class XFormDesigner extends React.Component<XFormDesignerProps, {
    mode: FormMode | string;
    isJsonEditing: boolean;
    nextMode: FormMode | string;
}> {
    formName: string;
    editContext: FormContext;
    tabs: SidebarItem[];
    constructor(props: XFormDesignerProps);
    componentDidUpdate(prevProps: XFormDesignerProps): void;
    setupProps(props: XFormDesignerProps): FormContext;
    getDefaultTabs(): SidebarItem[];
    onFormSave(): void;
    onFormClose(): void;
    onCopy(): void;
    onCut(): void;
    onDelete(): void;
    getDefaultDesignConfig(): IDesignPanelConfig;
    designConfig: IDesignPanelConfig;
    getDefaultRuntimeConfig(): IDesignPanelConfig;
    runtimeConfig: IDesignPanelConfig;
    getDefaultData(form: XFormConfiguration): {
        [p: string]: any;
    };
    handleModeChange(mode: string): void;
    onJsonEditing: (isJsonEditing: boolean) => void;
    onNextMode: (isLeaving: boolean) => void;
    onChangeSampleData(value: string): void;
    onUpdateDisplayMode(value: string): void;
    onChangeFormName(event: React.ChangeEvent<HTMLInputElement>): void;
    render(): JSX.Element;
}
export {};
