/// <reference types="jquery" />
import { AbstractLayout, Action, ContextMenuPopupModel, Event, InitModelOf, Menu, MenuFilter, Popup, PopupLayout, PropertyChangeEvent, Rectangle, ScrollbarInstallOptions } from '../index';
export declare class ContextMenuPopup extends Popup implements ContextMenuPopupModel {
    model: ContextMenuPopupModel;
    menuItems: Menu[];
    cloneMenuItems: boolean;
    bodyAnimating: boolean;
    animationDuration: number;
    $body: JQuery;
    initialSubMenusToRender: {
        parentMenu: Menu;
        menus: Menu[];
    };
    menuFilter: MenuFilter;
    /** @internal */
    _toggleSubMenuQueue: (() => void)[];
    constructor();
    protected _init(options: InitModelOf<this>): void;
    protected _initKeyStrokeContext(): void;
    protected _createLayout(): PopupLayout;
    protected _createBodyLayout(): AbstractLayout;
    protected _render(): void;
    protected _remove(): void;
    protected _renderBody(): void;
    protected _installScrollbars(options?: ScrollbarInstallOptions): void;
    protected _checkRemoveSubMenuItemsPossible(parentMenu: Menu, animated: boolean): boolean;
    removeSubMenuItems(parentMenu: Menu, animated: boolean): void;
    protected _animateRemoveSubmenuItems(parentMenu: Menu, popupBounds: Rectangle): void;
    protected _completeAnimateRemoveSubMenuItems(parentMenu: Menu): void;
    /** @internal */
    _processSubMenuQueue(): void;
    protected _checkRenderSubMenuItemsPossible(parentMenu: Menu, menus: Menu[], animated: any, initialSubMenuRendering: any): boolean;
    renderSubMenuItems(parentMenu: Menu, menus: Menu[], animated: boolean, initialSubMenuRendering?: boolean): boolean | undefined;
    protected _animateRenderSubMenuItems(parentMenu: Menu, popupBounds: Rectangle, parentMenuPosition: JQuery.Coordinates): void;
    protected _completeAnimateRenderSubMenuItems($oldBody: JQuery): void;
    protected _animateResizePopup($comp: JQuery, popupBounds: Rectangle, targetBounds: Rectangle): void;
    /** @internal */
    _animateTextOffset($body: JQuery, textOffset: number, targetOffset?: number): void;
    protected _renderMenuItems(menus?: Menu[], initialSubMenuRendering?: boolean): void;
    protected _attachCloneMenuListeners(menu: Menu): void;
    protected _onCloneMenuPropertyChange(event: PropertyChangeEvent): void;
    protected _handleInitialSubMenus(initialSubMenuRendering?: boolean): void;
    protected _attachMenuListeners(menu: Menu): void;
    updateMenuItems(menuItems: Menu[]): void;
    /**
     * Override this method to return menu items or actions used to render menu items.
     */
    protected _getMenuItems(): Menu[];
    /**
     * Currently rendered $menuItems
     */
    $menuItems(): JQuery;
    $visibleMenuItems($body?: JQuery): JQuery;
    /**
     * Updates the first and last visible menu items with the according css classes.
     * Necessary because invisible menu-items are rendered.
     */
    protected _updateFirstLastClass(): void;
    updateNextToSelected(menuItemClass?: string, $selectedItem?: JQuery): void;
    protected _onMenuItemAction(event: Event<Action>): void;
    protected _onMenuItemPropertyChange(event: PropertyChangeEvent): void;
    /**
     * Deselects the visible siblings of the given menu item. It just removes the CSS class and does not modify the selected property.
     */
    protected _deselectSiblings(menuItem: Menu): void;
    /** @internal */
    _adjustTextAlignment($body?: JQuery): void;
    protected _calcTextOffset($menuItems: JQuery): number;
    protected _updateTextOffset(textOffset: number, $menuItems?: JQuery): void;
    protected _calcTextPaddingLeft($menuItem: JQuery, textOffset: number): number;
}
//# sourceMappingURL=ContextMenuPopup.d.ts.map