import { EntityData } from "../../common/types";
export declare class GxIdeDataSelector {
    #private;
    el: HTMLGxIdeDataSelectorElement;
    /**
     * True if loadItemsCallback has been called and has not been resolved yet.
     */
    loading: boolean;
    /**
     * The objects rendered in the table
     */
    objects: ItemData[];
    /**
     * The selected objects in the table of objects
     */
    selectedObjectsIds: string[];
    /**
     * Callback invoked when the user wishes to cancel the selection of objects.
     */
    readonly cancelCallback: CancelCallback;
    /**
     * Callback invoked when the user presses the 'OK' button
     */
    readonly confirmCallback: ConfirmCallback;
    /**
     * The default value for the module/folder filter
     */
    readonly defaultModule: EntityData;
    /**
     * If true it displays the component title on the header
     */
    readonly displayTitle = false;
    /**
     * Callback invoked when user presses the edit button. Receives the first
     * selected element id as a parameter.
     */
    readonly editCallback: EditCallback;
    /**
     * Callback invoked when the component needs to reload the list of attributes.
     */
    readonly loadItemsCallback: LoadItemsCallback;
    /**
     * If true, it will display a loader when needed.
     */
    readonly loader = false;
    /**
     * Callback invoked when the user presses the 'New' button.
     */
    readonly newVariableCallback: NewVariableCallback;
    /**
     * Callback invoked when the action is executed in the Object filter. It returns
     * the information of the selected object (id and name) or 'undefined' if it was
     * canceled.
     */
    readonly selectObjectCallback: SelectObjectCallback;
    /**
     * Single if multiple object selection is not allowed. Default is multiple
     */
    readonly selectionType: "single" | "multiple";
    componentWillLoad(): Promise<void>;
    connectedCallback(): void;
    componentDidLoad(): void;
    componentDidRender(): void;
    /**
     * Suspends or reactivates the shortcuts
     */
    suspendShortcuts(suspendShortcuts: boolean): Promise<void>;
    /**
     * Validate necessary data input
     */
    validate(): Promise<boolean>;
    render(): any;
}
export type NewVariableCallback = () => Promise<boolean> | undefined;
export type CancelCallback = () => Promise<void>;
export type SelectObjectCallback = () => Promise<EntityData | undefined>;
export type EditCallback = (id: string) => Promise<boolean> | undefined;
export type ConfirmCallback = (ids: string[]) => Promise<void>;
export type LoadItemsCallback = (filters: FiltersData) => Promise<ItemData[]>;
export type FiltersData = {
    pattern?: string;
    object?: string;
};
export type ItemData = {
    type: ItemType;
    id: string;
    name: string;
    dataType: string;
    description: string;
};
export type ItemType = "variable" | "attribute";
