import { FormSubmitResult, GxOption } from "../../common/types";
import { ControlValidation } from "../../common/form-validation";
import { ComboBoxModel, RadioGroupModel } from "@genexus/chameleon-controls-library";
export declare class GxIdeNewEnvironment {
    #private;
    el: HTMLGxIdeNewEnvironmentElement;
    advancedTabIsVisible: boolean;
    /**
     * Allows selecting multiple generators for the front end
     * TODO: Check if this property can be deleted, since we can call getFrontEndsCallback.
     */
    frontEnds: GxOption[];
    validatableControls: Map<string, ControlValidation>;
    dataStoresComboBoxModel: ComboBoxModel;
    languageComboBoxModel: ComboBoxModel;
    runtimesRadioGroupModel: RadioGroupModel;
    /**
     * Callback invoked when user wants to cancel
     */
    readonly cancelCallback: CancelCallback;
    /**
     * Callback invoked when user confirms the KB creation
     */
    readonly createCallback: CreateCallback;
    /**
     * Allows defining the DBMS to be used in the solution
     */
    dataStores: GxOption[];
    dataStoresChanged(newValue: GxOption[]): void;
    /**
     * Name of the new environment
     */
    environmentName: string;
    /**
     * Callback invoked when user changes the language or the runtime
     */
    readonly getDataSourcesCallback: GetDataSourcesCallback;
    /**
     * Callback invoked when user changes the language or data source
     */
    readonly getEnvironmentNameCallback: GetEnvironmentNameCallback;
    /**
     * Callback invoked when user changes the language
     */
    readonly getFrontEndsCallback: GetFrontEndsCallback;
    /**
     * Define if the Advanced tab should be displayed
     */
    readonly isAdvanced: boolean;
    /**
     * Possible values for 'Language' combo
     */
    languages: GxOption[];
    languagesChanged(newValue: GxOption[]): void;
    /**
     * Callback invoked when selected runtime is changed
     */
    readonly getLanguagesCallback: GetLanguagesCallback;
    /**
     * Possible values for 'Runtime Environment' radio button
     */
    readonly runtimes: GxOption[];
    runtimesChanged(newValue: GxOption[]): void;
    /**
     * Belongs to checkbox 'Set as current environment' @default true
     *
     */
    readonly setAsTarget?: boolean;
    connectedCallback(): void;
    componentDidLoad(): void;
    componentDidRender(): void;
    componentWillLoad(): Promise<void>;
    /**
     * Suspends or reactivates the shortcuts
     */
    suspendShortcuts(suspendShortcuts: boolean): Promise<void>;
    render(): any;
}
export type CancelCallback = () => Promise<void>;
export type CreateCallback = (data: NewEnvironmentData) => Promise<FormSubmitResult>;
export type GetDataSourcesCallback = (selectedLanguageId: string, selectedRuntimeId: string) => Promise<GxOption[]>;
export type GetEnvironmentNameCallback = (selectedLanguageId: string, selectedDataSourceId: string, selectedRuntimeId: string) => Promise<string | undefined>;
export type GetFrontEndsCallback = (selectedLanguageId: string) => Promise<GxOption[]>;
export type GetLanguagesCallback = (selectedRuntimeId: string) => Promise<GxOption[]>;
export interface NewEnvironmentData {
    setAsCurrent: boolean;
    name: string;
    runtime: string;
    language: string;
    dataStores: string;
    frontEnds: string[];
}
