import { EventEmitter } from "../../../stencil-public-runtime";
import { ComboBoxModel } from "@genexus/chameleon-controls-library";
export declare class GxIdeBpmAppDeclaration {
    #private;
    el: HTMLGxIdeBpmAppDeclarationElement;
    /**
     * The application ComoBoxModel. When the component renders for the first time, it is required
     * to display the application typeIcon. Later, it is required to display the suggested application
     * options with the combo suggest.
     */
    applicationComboBoxModel: ComboBoxModel;
    /**
     * Current value of the application declaration. Keep in mind that this property will be used by
     * the host to initialize the component, meaning it will assign the current declaration value.
     */
    application: ApplicationDeclarationData;
    /**
     * Callback invoked when user cancels application declaration
     */
    readonly cancelCallback: CancelCallback;
    /**
     * Callback invoked when user confirms application declaration
     */
    readonly confirmCallback: ConfirmCallback;
    /**
     * Callback invoked when user select one of the options provided by the suggest
     */
    readonly getDataMappingCallback: GetDataMappingCallback;
    /**
     * Callback invoked to get access to selection application dialog
     */
    readonly selectApplicationCallback: SelectApplicationCallback;
    /**
     * Callback invoked when user press mapping auto-def button
     */
    readonly selectMappingCallback: SelectMappingCallback;
    /**
     * Callback invoked to get options for application input suggest
     */
    readonly suggestApplicationsCallback: SuggestApplicationsCallback;
    /**
     * @description Gets fired when the component has rendered for the first time.
     */
    componentDidRenderFirstTime: EventEmitter<string>;
    componentWillLoad(): Promise<void>;
    render(): any;
}
export type ApplicationDeclarationData = {
    application?: ApplicationData;
    mappings: DataMappingData[];
};
export type ApplicationData = {
    name: string;
    typeIcon: string;
};
type DataMappingAccess = "in" | "out" | "inout";
export type DataMappingData = {
    parameter: string;
    access: DataMappingAccess;
    relevantDataOptions: string[];
    relevantData?: string;
};
export type SuggestApplicationsCallback = (prefix: string) => Promise<string[] | undefined>;
export type SelectApplicationCallback = () => Promise<ApplicationDeclarationData | undefined>;
export type SelectMappingCallback = (parameter: string) => Promise<string>;
export type ConfirmCallback = (data: ApplicationDeclarationData) => Promise<void>;
export type CancelCallback = () => Promise<void>;
export type GetDataMappingCallback = (applicationName: string) => Promise<DataMappingData[]>;
export {};
