import { ContextMenuInfo, EntityData, GxOption } from "../../common/types";
export declare class GxIdeWWAttributes {
    #private;
    el: HTMLGxIdeWwAttributesElement;
    /**
     * Attributes rendered in the table
     */
    attributes: AttributeData[];
    /**
     * Selected attributes in the table of attributes
     */
    selectedAttributesIds: string[];
    /**
     * Show or hide advanced filters
     */
    filterMore: boolean;
    /**
     * The attribute filter name
     */
    name: string;
    /**
     * True if loadCallback hasn't been resolved yet
     */
    loading: boolean;
    /**
     * The attribute object value
     */
    object: EntityData;
    /**
     * The attribute filter type value
     */
    type: string;
    /**
     * Callback invoked when user right-clicks on the grid
     */
    readonly contextMenuCallback: ContextMenuCallback;
    /**
     * Callback invoked when user deletes an object
     */
    readonly deleteSelectionCallback: DeleteSelectionCallback;
    /**
     * Callback invoked when user filters the objects
     */
    readonly loadCallback: LoadCallback;
    /**
     * Callback invoked when user executes filter action
     */
    readonly objectActionCallback: ObjectActionCallback;
    /**
     * Objects rendered in the object selector
     */
    readonly objects: GxOption[];
    /**
     * Callback invoked when user opens the selection dialog
     */
    readonly openSelectionCallback: OpenSelectionCallback;
    /**
     * Callback invoked when user selects or deselects an object
     */
    readonly selectionChangeCallback: SelectionChangeCallback;
    /**
     * Types rendered in the filter type selector
     */
    readonly types: GxOption[];
    componentWillLoad(): Promise<void>;
    componentDidLoad(): void;
    keyDownHandler(eventInfo: KeyboardEvent): void;
    /**
     * Reloads the view, refreshing the filters and attributes table.
     */
    reload(): Promise<void>;
    /**
     * Validate necessary data input
     */
    validate(): Promise<boolean>;
    render(): void;
}
export type ContextMenuCallback = (contextMenuInfo: ContextMenuInfo) => Promise<void>;
export type DeleteSelectionCallback = (ids: string[]) => Promise<void>;
export type LoadCallback = (filters: AttributeFiltersData) => Promise<AttributeData[]>;
export type ObjectActionCallback = () => Promise<EntityData | undefined>;
export type OpenSelectionCallback = (ids: string[]) => Promise<void>;
export type SelectionChangeCallback = (ids: string[]) => Promise<void>;
export interface AttributeData {
    id: string;
    icon: string;
    name: string;
    type: string;
    description: string;
}
export interface AttributeFiltersData {
    name?: string;
    type?: string;
    object?: string;
}
