import { ActionListModel } from "@genexus/chameleon-controls-library";
export declare class GxIdePluginManager {
    #private;
    el: HTMLGxIdePluginExplorerElement;
    /**
     * If true it will hide the content, and display a loader
     */
    loading: boolean;
    /**
     * The plugins model as ActionListModel, which is the model the ch-action-list expects
     */
    pluginsActionListModel: ActionListModel;
    /**
     * List of plugins to display. Usually used to initialize the component.
     */
    plugins: PluginData[];
    pluginsChangedHandler(newPlugins: PluginData[]): void;
    /**
     * Callback that should be invoked when the user updates the filter.
     * A debounce should be applied before invoking this function.
     */
    readonly filterCallback: (text: string) => Promise<PluginData[]>;
    /**
     * Callback that should be invoked when the user clicks or presses Enter
     * on a selected plugin item.
     */
    readonly showDetailsCallback: (pluginId: string) => Promise<void>;
    /**
     * Callback that should be invoked when the user clicks on a plugin's action button.
     */
    readonly executeActionCallback: (pluginId: string, action: PluginAction) => Promise<void>;
    componentWillLoad(): Promise<void>;
    render(): any;
}
export type PluginData = {
    id: string;
    iconUrl: string;
    name: string;
    description: string;
    publisher: string;
    action?: PluginAction;
};
export type PluginAction = "install" | "update";
