/// <reference types="jquery" />
import { Column, ColumnModel, EventHandler, InitModelOf, MenuBar, PropertyChangeEvent, Rectangle, SomeRequired, Table, TableColumnMovedEvent, TableColumnResizedEvent, TableFilterAddedEvent, TableFilterRemovedEvent, TableHeaderEventMap, TableHeaderMenu, TableHeaderModel, Widget } from '../index';
export declare class TableHeader extends Widget implements TableHeaderModel {
    model: TableHeaderModel;
    initModel: SomeRequired<this['model'], 'parent' | 'table'>;
    eventMap: TableHeaderEventMap;
    self: TableHeader;
    headerMenusEnabled: boolean;
    table: Table;
    dragging: boolean;
    columnMoved: boolean;
    menuBar: MenuBar;
    tableHeaderMenu: TableHeaderMenu;
    headerLabelId: string;
    $menuBarContainer: JQuery;
    $filler: JQuery;
    protected _tableDataScrollHandler: () => void;
    protected _tableAddFilterRemovedHandler: EventHandler<TableFilterAddedEvent | TableFilterRemovedEvent>;
    protected _tableColumnResizedHandler: EventHandler<TableColumnResizedEvent>;
    protected _tableColumnMovedHandler: EventHandler<TableColumnMovedEvent>;
    protected _renderedColumns: Column<any>[];
    protected _$window: JQuery<Window>;
    protected _$body: JQuery<Body>;
    protected _fixTimeout: number;
    constructor();
    protected _init(options: InitModelOf<this>): void;
    protected _render(): void;
    protected _remove(): void;
    rerenderColumns(): void;
    protected _renderColumns(): void;
    protected _renderColumn(column: Column<any>, index: number): void;
    protected _removeColumns(): void;
    protected _removeColumn(column: Column<any>): void;
    resizeHeaderItem(column: Column<any>): void;
    /**
     * Resizes all header items to theirs desired widths.
     */
    resizeHeaderItems(): void;
    protected _reconcileScrollPos(): void;
    protected _arrangeHeaderItems($headers: JQuery): void;
    protected _installHeaderItemTooltip(column: Column<any>): void;
    protected _installHeaderItemTooltips(): void;
    protected _uninstallHeaderItemTooltip(column: Column<any>): void;
    protected _uninstallHeaderItemTooltips(): void;
    protected _headerItemTooltipText($col: JQuery): string;
    protected _textInView($text: JQuery): boolean;
    /**
     * @returns the part of the header item that is visible in the current viewport of the table so the tooltip won't point to an invisible part of the header item
     */
    protected _headerItemTooltipOrigin($col: JQuery): Rectangle;
    protected _offsetBoundsWithoutMenuBar(): Rectangle;
    protected _headerItemTooltipHtmlEnabled($col: JQuery): boolean;
    setHeaderMenusEnabled(headerMenusEnabled: boolean): void;
    protected _renderHeaderMenusEnabled(): void;
    openHeaderMenu(column: Column<any>): void;
    closeHeaderMenu(): void;
    findHeaderItems(): JQuery;
    /**
     * Updates the column headers visualization of the text, sorting and styling state
     * @param oldColumnState only necessary when the css class was updated
     */
    updateHeader(column: Column<any>, oldColumnState?: ColumnModel<any>): void;
    protected _decorateHeader(column: Column<any>, oldColumnState?: ColumnModel<any>): void;
    protected _renderColumnCssClass(column: Column<any>, oldColumnState?: ColumnModel<any>): void;
    protected _renderColumnText(column: Column<any>): void;
    protected _renderColumnTooltipText(column: Column<any>): void;
    protected _renderColumnIconId(column: Column<any>): void;
    protected _renderColumnHorizontalAlignment(column: Column<any>): void;
    protected _updateColumnIconAndTextStyle(column: Column<any>): void;
    protected _renderColumnLegacyStyle(column: Column<any>): void;
    protected _renderColumnHeaderMenuEnabled(column: Column<any>): void;
    protected _renderColumnState(column: Column<any>): void;
    /**
     * Makes sure state is fully visible by adjusting width (happens if column.minWidth is < DEFAULT_MIN_WIDTH)
     */
    protected _adjustColumnMinWidth(column: Column<any> & {
        __minWidthWithoutState?: number;
        __widthWithoutState?: number;
    }): void;
    updateMenuBar(): void;
    protected _onTableColumnResized(event: TableColumnResizedEvent): void;
    onSortingChanged(): void;
    protected _onTableColumnMoved(event: TableColumnMovedEvent): void;
    protected _visibleColumns(): Column<any>[];
    protected _lastVisibleColumn(): Column<any>;
    onOrderChanged(oldColumnOrder: Column<any>[]): void;
    /**
     * Header menus are enabled when property is enabled on the header itself and on the column too.
     */
    protected _isHeaderMenuEnabled(column: Column<any>): boolean;
    protected _onHeaderItemClick(event: JQuery.ClickEvent): boolean;
    protected _onHeaderItemMouseDown(event: JQuery.MouseDownEvent): void;
    protected _onSeparatorDblclick(event: JQuery.DoubleClickEvent): void;
    protected _onSeparatorMouseDown(event: JQuery.MouseDownEvent): void;
    protected _onTableDataScroll(): void;
    protected _onMenuBarPropertyChange(event: PropertyChangeEvent<any, MenuBar>): void;
    protected _onTableAddFilterRemoved(event: TableFilterAddedEvent | TableFilterRemovedEvent): void;
}
//# sourceMappingURL=TableHeader.d.ts.map