import { EventEmitter } from "../../stencil-public-runtime";
import { EntityData } from "../../common/types";
import { ActionListModel } from "@genexus/chameleon-controls-library";
export declare class GxIdeNewObject {
    #private;
    el: HTMLGxIdeNewObjectElement;
    /**
     * Description of the new object
     */
    description: string;
    /**
     * Name of the new object
     */
    name: string;
    nameValidationErrorMessage: string;
    selectedCategory: TypeCategoryData | null;
    selectedType: TypeData | null;
    typeCategoriesActionListModel: ActionListModel;
    typesActionListModel: ActionListModel;
    selectedTypeMap: Map<string, string>;
    /**
     * Allows you to define the type selected by default when instantiating the dialog.
     * Represented by the type identifier.
     */
    readonly defaultTypeId: string;
    /**
     * Default value for the Module/Folder field.
     */
    readonly defaultParent: EntityData;
    /**
     * If true it displays the component title on the header
     */
    readonly displayTitle = false;
    /**
     * Callback invoked when user wants to cancel object creation
     */
    readonly cancelCallback: CancelCallback;
    /**
     * Callback invoked when user wants to confirm object creation
     */
    readonly createCallback: CreateCallback;
    /**
     * Applies a shadow all around
     */
    readonly shadow = false;
    /**
     * Array containing category list and its corresponding types
     */
    typeCategories: TypeCategoryData[];
    typeCategoriesChanged(newValue: TypeCategoryData[]): void;
    /**
     * Current value for Module/Folder
     */
    readonly parent: EntityData;
    /**
     * Callback invoked when the action is executed on the Module/Folder filter
     * (button '...'). It returns the information of the selected object (id and
     * name) or 'undefined' if it was canceled.
     */
    readonly selectModuleCallback: SelectModuleCallback;
    /**
     * Callback invoked when you must validate a name. Returns an error message or
     * 'undefined' if the name is not valid.
     */
    readonly validateNameCallback: ValidateNameCallback;
    /**
     * Callback to suggest name and description based on the given type.
     * Returns the suggested data or undefined if not applicable.
     */
    readonly suggestCallback?: SuggestCallback;
    /**
     * This event emits the 'cancel' event
     */
    cancel: EventEmitter<boolean>;
    /**
     * This event emm=its the data needed to create a new object
     */
    create: EventEmitter<NewObjectData>;
    /**
     * This event is triggered after a validation of the object name is made.
     * Returns 'undefined' if it's valid, otherwise an error message.
     */
    validateName: EventEmitter<string | undefined>;
    connectedCallback(): void;
    componentWillLoad(): Promise<void>;
    componentDidLoad(): void;
    /**
     * Suspends or reactivates the shortcuts
     */
    suspendShortcuts(suspendShortcuts: boolean): Promise<void>;
    render(): any;
}
export interface NewObjectData {
    typeId: string;
    name: string;
    description: string | undefined;
    moduleId: string;
}
export type ValidateNameCallback = (name: string) => Promise<string | undefined>;
export type SelectModuleCallback = () => Promise<EntityData | undefined>;
export type CreateCallback = (data: NewObjectData) => Promise<string | undefined>;
export type CancelCallback = () => Promise<void>;
export type TypeCategoryData = {
    id: string;
    name: string;
    icon: string;
    types: TypeData[];
};
export type TypeData = {
    id: string;
    name: string;
    icon: string;
    hasModule: boolean;
    hasFolder: boolean;
    description: string;
};
export type SuggestData = {
    name: string | undefined;
    description: string | undefined;
};
export type SuggestCallback = (typeId: string) => Promise<SuggestData | undefined>;
