/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { IListDropdownOption, IListDropdownOptionGroup } from '../list-dropdown';
export declare const MENU_CONSTANTS: {
    elementName: "forge-menu";
    classes: {
        POPUP: string;
        MENU: string;
    };
    selectors: {
        TOGGLE: string;
        MENU_LIST: string;
    };
    attributes: {
        OPEN: string;
        PLACEMENT: string;
        SELECTED_INDEX: string;
        SELECTED_VALUE: string;
        DENSE: string;
        ICON_CLASS: string;
        PERSIST_SELECTION: string;
        MODE: string;
        SYNC_POPUP_WIDTH: string;
        POPUP_CLASSES: string;
        OPTION_LIMIT: string;
        OBSERVE_SCROLL: string;
        OBSERVE_SCROLL_THRESHOLD: string;
    };
    events: {
        SELECT: string;
        OPEN: string;
        CLOSE: string;
        ACTIVE_CHANGE: string;
    };
    numbers: {
        CHILD_MOUSE_LEAVE_TIMEOUT: number;
        POPUP_MOUSE_LEAVE_TIMEOUT: number;
    };
};
export interface IMenuSelectEventData<T = any, K = any> {
    index: number;
    value?: T;
    parentValue?: K;
}
export interface IMenuActiveChangeEventData {
    id: string;
}
export interface IMenuOption<T = any> extends IListDropdownOption<T> {
    icon?: string;
    selected?: boolean;
}
export interface IMenuOptionGroup extends IListDropdownOptionGroup {
}
export declare type MenuOptionBuilder = (option: IMenuOption, parentElement: HTMLElement) => HTMLElement | string | void;
export declare type MenuOptionFactory = (() => Array<IMenuOption | IMenuOptionGroup>) | (() => Promise<Array<IMenuOption | IMenuOptionGroup>>);
export declare type MenuMode = 'click' | 'cascade';
