import { FormSubmitResult } from "../../common/types";
import { ControlValidation } from "../../common/form-validation";
export declare class GxIdeJsonImport {
    #private;
    el: HTMLGxIdeJsonImportElement;
    fileName: string;
    radioGroupValue: string;
    isFormValid: boolean;
    jsonContent: string;
    validatableControls: Map<string, ControlValidation>;
    /**
     * Callback that must be invoked when the user want to cancel the operation
     */
    readonly cancelCallback: () => Promise<void>;
    /**
     * Callback that must be invoked when the user confirms the creation of the SDT. It receives as parameters the data necessary to create the SDT.
     */
    readonly confirmCallback: (data: JsonImportData) => Promise<FormSubmitResult>;
    /**
     * Default value for Module/Folder field
     */
    readonly defaultParent: EntityData;
    /**
     * Default value for Module/Folder field
     */
    readonly defaultRadioValue: string;
    /**
     * Actual value for Module/Folder field
     */
    readonly parent: EntityData;
    /**
     * Callback invoked when the action is executed in the Module/Folder filter. It returns the information of the selected object (id and name) or 'undefined' if it was canceled.
     */
    readonly selectModuleCallback: SelectModuleCallback;
    /**
     * Callback invoked when the input mode changes between file and text.
     */
    readonly modeChangeCallback?: (mode: "file" | "text") => Promise<void>;
    /**
     * Callback invoked when a file is selected or removed.
     */
    readonly fileChangeCallback?: (file: File | null) => Promise<void>;
    /**
     * Callback para validar el nombre del objeto. Debe retornar true si el nombre es válido, false en caso contrario.
     */
    readonly validateNameCallback?: (name: string) => boolean;
    /**
     * Callback para validar el JSON. Debe retornar true si el JSON es válido, false en caso contrario.
     */
    readonly validateJSONCallback?: (json: string) => boolean;
    /**
     * Callback invocado cuando el contenido del JSON cambia
     */
    readonly onJsonContentChange?: (content: string) => void;
    componentWillLoad(): Promise<void>;
    componentDidLoad(): void;
    /**
     * Suspends or reactivates the shortcuts
     */
    suspendShortcuts(suspendShortcuts: boolean): Promise<void>;
    render(): void;
}
export type JsonImportData = {
    name: string;
    description: string;
    parentId: string;
    json: File | string;
    assumeVarcharForNull: boolean;
};
export type EntityData = {
    id: string;
    name: string;
    iconSrc?: string;
};
export type SelectModuleCallback = () => Promise<EntityData | undefined>;
