import { AdaptableColumnMenuItemName, AdaptableIcon, AdaptableSystemColumnMenuItem, CustomColumnMenuContext, CustomColumnMenuItem, CustomGroupColumnMenuItem, MenuCategory } from '../types';
/**
 * Provides run-time access to Column Menu
 */
export interface ColumnMenuApi {
    /**
     * Show the Column Menu
     */
    showColumnMenu(columnKey: string): void;
    /**
     * Hide the Column Menu
     */
    hideColumnMenu(columnKey: string): void;
    /**
     * Creates default menu structure; useful as final line in custom implementation
     * @param context Current Menu Context
     */
    createDefaultMenuStructure(context: CustomColumnMenuContext): any;
    /**
     * Gets all Menu Items in a given category
     * @param category Category to filter on
     * @param context Current Menu Context
     */
    getColumnMenuItemsByCategory(category: MenuCategory, context: CustomColumnMenuContext): AdaptableSystemColumnMenuItem<AdaptableColumnMenuItemName>[];
    /**
     * Gets all Menu Items in given categories
     * @param categories Categories to filter on
     * @param context Current Menu Context
     */
    getColumnMenuItemsByCategories(categories: MenuCategory[], context: CustomColumnMenuContext): AdaptableSystemColumnMenuItem<AdaptableColumnMenuItemName>[];
    /**
     * Returns the Menu Item with given name
     * @param menuItemName Menu Item to filter on
     * @param context Current Menu Context
     */
    getColumnMenuItemByName(menuItemName: AdaptableColumnMenuItemName, context: CustomColumnMenuContext): AdaptableSystemColumnMenuItem<AdaptableColumnMenuItemName>;
    /**
     * Returns the Menu Items with given names
     * @param menuItemNames Menu Items to filter on
     * @param context Current Menu Context
     */
    getColumnMenuItemsByNames(menuItemNames: AdaptableColumnMenuItemName[], context: CustomColumnMenuContext): AdaptableSystemColumnMenuItem<AdaptableColumnMenuItemName>[];
    /**
     * Returns Menu Item with given label
     * @param label Label to filter on
     * @param context Current Menu Context
     */
    getColumnMenuItemByLabel(label: string, context: CustomColumnMenuContext): AdaptableSystemColumnMenuItem<AdaptableColumnMenuItemName>;
    /**
     * Returns Menu Items with given labels
     * @param labels Labels to filter on
     * @param context Current Menu Context
     */
    getColumnMenuItemsByLabels(labels: string[], context: CustomColumnMenuContext): AdaptableSystemColumnMenuItem<AdaptableColumnMenuItemName>[];
    /**
     * Removes Menu Item with given name
     * @param menuItemName name of Menu Item to remove
     * @param context Current Menu Context
     */
    removeAdaptableColumnMenuItemByName(menuItemName: AdaptableColumnMenuItemName, context: CustomColumnMenuContext): any;
    /**
     * Removes Menu Items with given names
     * @param menuItemNames names of Menu Items to remove
     * @param context Current Menu Context
     */
    removeAdaptableColumnMenuItemsByNames(menuItemNames: AdaptableColumnMenuItemName[], context: CustomColumnMenuContext): 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: CustomColumnMenuItem[], disabled?: boolean, icon?: AdaptableIcon): CustomGroupColumnMenuItem;
}
