import { ControlValidation } from "../../../common/form-validation";
import { FormSubmitResult } from "../../../common/types";
export declare class GxIdeServerSelector {
    #private;
    el: HTMLGxIdeServerSelectorElement;
    /**
     * State to enable/disable confirm button.
     */
    enableConfirmButton: boolean;
    /**
     * The current server URL input value.
     */
    serverUrlInputValue: string;
    /**
     * The current server URL input value.
     */
    serverNameInputValue: string;
    /**
     * The selected server URI.
     */
    selectedServerUri: string | undefined;
    /**
     * The selected server name.
     */
    selectedServerName: string | undefined;
    /**
     * The user name of the selected server.
     */
    userName: string;
    /**
     * State to store the filter input value to filter the list-box
     */
    filterValue: string;
    /**
     * Servers filtered
     */
    filteredServersData: ServerData[];
    validatableControls: Map<string, ControlValidation>;
    /**
     * The selected connection type
     */
    selectedConnectionType: ConnectionOption;
    /**
     * The selected recently used server ID
     */
    selectedRecentlyUsedId: string;
    /**
     * The list of all GX servers.
     */
    serversData: ServerData[];
    serversDataChanged(newValue: ServerData[]): void;
    /**
     * The list of recently used servers.
     */
    readonly recentlyUsedServersData: ServerData[];
    /**
     * Callback that is invoked when the dialog is closed
     */
    readonly cancelCallback: () => Promise<void>;
    /**
     * Callback that must be invoked when the 'Confirm' button is pressed and the Select Server option is checked.
     */
    readonly selectServerCallback: (authenticationSessionOrigin: AuthenticationSessionOrigin, connectionOption: ConnectionOption) => Promise<FormSubmitResult>;
    /**
     * Invoked to delete a server
     */
    readonly deleteServerCallback: (serverData: ServerData) => Promise<boolean>;
    /**
     * Invoked to update a server
     */
    readonly updateServerCallback: (serverData: ServerData) => Promise<FormSubmitResult>;
    componentWillLoad(): Promise<void>;
    componentDidRender(): void;
    render(): void;
}
export type ConnectionResultData = {
    formResult: FormSubmitResult;
};
export type ConnectionOption = "select" | "new";
export type ServerAccessLevel = "public" | "private";
export type AuthenticationSessionOrigin = {
    uri: string;
    name: string;
};
export type ServerData = {
    id: string;
    serverUrl: string;
    accessLevel: ServerAccessLevel;
    masterSessionUsername: string;
    serverName?: string;
    sessionId?: string;
    gxServerUsername: string;
    isConnected: boolean;
};
export type NewServerConnectionData = {
    serverUrl: string;
    serverName: string;
};
