/// <reference types="jquery" />
import { AbstractLayout, Column, ColumnUserFilter, ColumnUserFilterValues, EnumObject, Event, EventHandler, FilterFieldsGroupBox, InitModelOf, Popup, SomeRequired, Table, TableHeader, TableHeaderMenuButton, TableHeaderMenuEventMap, TableHeaderMenuGroup, TableHeaderMenuModel, TableRow, TableRowsCheckedEvent } from '../index';
export declare class TableHeaderMenu extends Popup implements TableHeaderMenuModel {
    model: TableHeaderMenuModel;
    initModel: SomeRequired<this['model'], 'parent' | 'column' | 'tableHeader'>;
    eventMap: TableHeaderMenuEventMap;
    self: TableHeaderMenu;
    column: Column<any>;
    tableHeader: TableHeader;
    compact: boolean;
    table: Table;
    filterTable: Table;
    filter: ColumnUserFilter;
    filterCheckedMode: TableHeaderMenuCheckedMode;
    filterSortMode: TableHeaderMenuSortMode;
    hasFilterTable: boolean;
    hasFilterFields: boolean;
    leftGroups: TableHeaderMenuGroup[];
    moveGroup: TableHeaderMenuGroup;
    hierarchyGroup: TableHeaderMenuGroup;
    toBeginButton: TableHeaderMenuButton;
    forwardButton: TableHeaderMenuButton;
    backwardButton: TableHeaderMenuButton;
    toEndButton: TableHeaderMenuButton;
    sortingGroup: TableHeaderMenuGroup;
    sortAscButton: TableHeaderMenuButton;
    sortDescButton: TableHeaderMenuButton;
    sortAscAddButton: TableHeaderMenuButton;
    sortDescAddButton: TableHeaderMenuButton;
    columnActionsGroup: TableHeaderMenuGroup;
    addColumnButton: TableHeaderMenuButton;
    removeColumnButton: TableHeaderMenuButton;
    modifyColumnButton: TableHeaderMenuButton;
    groupButton: TableHeaderMenuButton;
    groupAddButton: TableHeaderMenuButton;
    barChartButton: TableHeaderMenuButton;
    colorGradient1Button: TableHeaderMenuButton;
    colorGradient2Button: TableHeaderMenuButton;
    collapseAllButton: TableHeaderMenuButton;
    expandAllButton: TableHeaderMenuButton;
    sumButton: TableHeaderMenuButton;
    averageButton: TableHeaderMenuButton;
    minimumButton: TableHeaderMenuButton;
    maximumButton: TableHeaderMenuButton;
    filterFieldsGroupBox: FilterFieldsGroupBox;
    $rightGroups: JQuery[];
    $headerItem: JQuery;
    $columnActions: JQuery;
    $columnFilters: JQuery;
    $filterTableGroup: JQuery;
    $filterToggleChecked: JQuery;
    $filterTableGroupTitle: JQuery;
    $filterSortOrder: JQuery;
    $filterFieldsGroup: JQuery;
    $body: JQuery;
    protected _onColumnMovedHandler: () => void;
    protected _tableFilterHandler: () => void;
    protected _tableHeaderScrollHandler: (event: JQuery.ScrollEvent) => void;
    protected _filterTableRowsCheckedHandler: EventHandler<TableRowsCheckedEvent>;
    constructor();
    static CheckedMode: {
        readonly ALL: {
            readonly checkAll: true;
            readonly text: "ui.SelectAllFilter";
        };
        readonly NONE: {
            readonly checkAll: false;
            readonly text: "ui.SelectNoneFilter";
        };
    };
    static SortMode: {
        readonly ALPHABETICALLY: {
            readonly text: "ui.SortAlphabeticallyFilter";
            readonly cssClass: "table-header-menu-toggle-sort-order-alphabetically";
        };
        readonly AMOUNT: {
            readonly text: "ui.SortByAmountFilter";
            readonly cssClass: "table-header-menu-toggle-sort-order-amount";
        };
    };
    protected _init(options: InitModelOf<this>): void;
    protected _createLayout(): AbstractLayout;
    protected _render(): void;
    validateFocus(): void;
    get$Scrollable(): JQuery;
    protected _updateFirstLast(): void;
    protected _remove(): void;
    protected _renderMovingGroup(): TableHeaderMenuGroup;
    protected _onColumnMoved(): void;
    protected _isColumnActionsGroupVisible(): boolean;
    protected _renderColumnActionsGroup(): TableHeaderMenuGroup;
    protected _renderSortingGroup(): TableHeaderMenuGroup;
    protected _updateSortingSelectedState(): void;
    protected _renderGroupingGroup(): TableHeaderMenuGroup;
    protected _renderHierarchyGroup(): TableHeaderMenuGroup;
    protected _renderAggregationGroup(): TableHeaderMenuGroup;
    protected _renderColoringGroup(): TableHeaderMenuGroup;
    protected _renderFilterTable(): JQuery;
    protected _createFilterTable(): Table;
    /**
     * @returns the title-text used for the filter-table
     */
    protected _filterByText(): string;
    protected _onFilterCheckedModeClick(): void;
    protected _onSortModeClick(): void;
    protected _updateFilterTable(): void;
    protected _updateFilterTableActions(): void;
    protected _renderFilterFields(): JQuery;
    isOpenFor($headerItem: JQuery): boolean;
    protected _countColumns(propertyName: string): number;
    protected _sortColumnCount(): number;
    protected _groupColumnCount(): number;
    protected _renderCompact(): void;
    setCompact(compact: boolean): void;
    protected _onLocationChange(event: Event<Popup>): void;
    protected _onAnchorScroll(event: JQuery.ScrollEvent): void;
    protected _onFilterTableRowsChecked(event: TableRowsCheckedEvent): void;
    protected _onFilterTableChanged(): void;
    protected _updateFilterTableCheckedMode(): void;
    protected _onMouseDownOutside(event: MouseEvent): void;
}
export type TableHeaderMenuCheckedMode = EnumObject<typeof TableHeaderMenu.CheckedMode>;
export type TableHeaderMenuSortMode = EnumObject<typeof TableHeaderMenu.SortMode>;
export type TableHeaderMenuTableRow = TableRow & {
    dataMap: Record<string, ColumnUserFilterValues>;
};
//# sourceMappingURL=TableHeaderMenu.d.ts.map