import { EventEmitter } from "../../../stencil-public-runtime";
import { ControlValidation } from "../../../common/form-validation";
import { FormSubmitResult } from "../../../common/types";
import { GXServerConnectionData } from "../connect-gx-server/connect-gx-server";
import { KBVersion } from "../version-control/common/types";
export declare class GxIdeShareKb {
    #private;
    [key: string]: any;
    el: HTMLGxIdeShareKbElement;
    /**
     * State to enable/disable the select versions button
     */
    enableSelectVersionsButton: boolean;
    validatableControls: Map<string, ControlValidation>;
    /**
     * The version selected type
     */
    versionSelectedType: VersionOption;
    /**
     * String value to show the number of versions selected ("N versions selected")
     */
    versionsValueInput: string;
    /**
     * Set of data required when executing any of the callbacks that require a connection to the server.
     */
    readonly connectionData: GXServerConnectionData;
    /**
     * Callback that is invoked when the dialog is closed
     */
    readonly cancelCallback: () => Promise<void>;
    /**
     * The host reopens the gx-ide-connect-server login modal with the previous data, and closes the current modal
     */
    readonly changeConnectionCallback: (data: GXServerConnectionData) => Promise<void>;
    /**
     * The name of the KB.
     */
    kbName: string;
    /**
     * Callback that must be invoked when the Share button is pressed.
     */
    readonly shareKBCallback: (data: ShareKBData) => Promise<FormSubmitResult>;
    /**
     *  Callback invoked by pressing the ellipsis in the version selector. Receives the KB selected by the user, and displays the version selector dialog. Returns a list of versions chosen by the user.
     */
    readonly selectKBVersionsCallback: (selectedKB: string) => Promise<KBVersion[]>;
    /**
     * Emitted once just after the component is fully loaded and the first render() occurs
     */
    componentDidRenderFirstTime: EventEmitter<boolean>;
    componentDidLoad(): void;
    componentDidRender(): void;
    componentWillLoad(): Promise<void>;
    /**
     * Suspends or reactivates the shortcuts
     */
    suspendShortcuts(suspendShortcuts: boolean): Promise<void>;
    render(): void;
}
export type KBData = {
    id: string;
    name: string;
};
export type ConnectionResultData = {
    formResult: FormSubmitResult;
    kbs: KBData[];
};
export type ShareKBData = {
    name: string;
    serverUrl: string;
    versionList: KBVersion[];
    allVersions: boolean;
};
export type VersionOption = "Trunk" | "All" | "Select";
