import { CustomContextMenuContext, AdaptableSystemContextMenuItem, AdaptableContextMenuItemName, MenuCategory, AdaptableIcon, CustomContextMenuItem, CustomGroupContextMenuItem } from '../types';
/**
 * Provides run-time access to Context Menu
 */
export interface ContextMenuApi {
    /**
     * Hide the Context Menu
     */
    hideContextMenu(): void;
    /**
     * Creates default menu structure; useful as final line in custom implementation
     * @param context Current Menu Context
     */
    createDefaultMenuStructure(context: CustomContextMenuContext): any;
    /**
     * Gets all Menu Items in a given category
     * @param category Category to filter on
     * @param context Current Menu Context
     */
    getContextMenuItemsByCategory(category: MenuCategory, context: CustomContextMenuContext): AdaptableSystemContextMenuItem<AdaptableContextMenuItemName>[];
    /**
     * Gets all Menu Items in given categories
     * @param categories Categories to filter on
     * @param context Current Menu Context
     */
    getContextMenuItemsByCategories(categories: MenuCategory[], context: CustomContextMenuContext): AdaptableSystemContextMenuItem<AdaptableContextMenuItemName>[];
    /**
     * Returns the Menu Item with given name
     * @param menuItemName Menu Item to filter on
     * @param context Current Menu Context
     */
    getContextMenuItemByName(menuItemName: AdaptableContextMenuItemName, context: CustomContextMenuContext): AdaptableSystemContextMenuItem<AdaptableContextMenuItemName>;
    /**
     * Returns the Menu Items with given names
     * @param menuItemNames Menu Items to filter on
     * @param context Current Menu Context
     */
    getContextMenuItemsByNames(menuItemNames: AdaptableContextMenuItemName[], context: CustomContextMenuContext): AdaptableSystemContextMenuItem<AdaptableContextMenuItemName>[];
    /**
     * Returns Menu Item with given label
     * @param label Label to filter on
     * @param context Current Menu Context
     */
    getContextMenuItemByLabel(label: string, context: CustomContextMenuContext): AdaptableSystemContextMenuItem<AdaptableContextMenuItemName>;
    /**
     * Returns Menu Items with given labels
     * @param labels Labels to filter on
     * @param context Current Menu Context
     */
    getContextMenuItemsByLabels(labels: string[], context: CustomContextMenuContext): AdaptableSystemContextMenuItem<AdaptableContextMenuItemName>[];
    /**
     * Removes Menu Item with given name
     * @param menuItemName name of Menu Item to remove
     * @param context Current Menu Context
     */
    removeAdaptableContextMenuItemByName(menuItemName: AdaptableContextMenuItemName, context: CustomContextMenuContext): any;
    /**
     * Removes Menu Items with given names
     * @param menuItemNames names of Menu Items to remove
     * @param context Current Menu Context
     */
    removeAdaptableContextMenuItemsByNames(menuItemNames: AdaptableContextMenuItemName[], context: CustomContextMenuContext): any;
    /**
     * Creates a Group Menu Item
     * @param label Label for Group
     * @param subMenuItems Menu Items to place in Group
     * @param disabled whether group is disabled
     * @param icon icon for the Group Menu Item
     */
    createGroupMenu(label: string, subMenuItems: CustomContextMenuItem[], disabled?: boolean, icon?: AdaptableIcon): CustomGroupContextMenuItem;
}
