import { EventEmitter, ElementRef, Renderer2, ChangeDetectorRef, OnInit, OnDestroy, AfterViewInit } from '@angular/core';
import { TableComponent, SortParam } from './table';
import { OverlayComponent } from '../overlay';
import { OverlayOriginDirective } from '../overlay/overlay-origin.directive';
/** table filter param interface */
export interface FilterParam {
    /** filter field */
    field: string;
    /** filter table header item component */
    target: TableHeaderItemComponent;
}
/** table field setting */
export interface Field {
    /** field name */
    name: string;
    /** field title */
    title: string;
    /** whether the field can be sortted */
    sortable?: boolean;
    /** whether the field can be filtered */
    filterable?: boolean;
    /** whether the field can be tipable */
    tipable?: boolean;
    /** any other props */
    [key: string]: any;
}
/**
 * table header item component
 */
export declare class TableHeaderItemComponent implements OnInit, OnDestroy, AfterViewInit {
    private _table;
    private _cd;
    private _el;
    private _render;
    /**
     * table filter event, emits a `FilterParam` Object
     */
    filter: EventEmitter<FilterParam>;
    filterReset: EventEmitter<FilterParam>;
    filterHide: EventEmitter<any>;
    /**
     * table sort event, emits a `SortParam` Object
     */
    sort: EventEmitter<SortParam>;
    /**
     * Whether the column can be sortable
     */
    sortable: boolean;
    /**
     * Whether the column can be tipable（has tip icon with tip information）
     */
    tipable: boolean;
    /**
     * Whether the column can be filterable（has filter icon and custom filter panel）
     */
    filterable: boolean;
    /**
     * Whether the filter panel should show filter buttons, e.g. when a single select filter, there
     * no need filter button to trigger the filter event
     */
    showFilterButton: boolean;
    /**
     * table cell align position
     * @default left
     */
    align: 'left' | 'center' | 'right';
    origin: OverlayOriginDirective;
    overlay: OverlayComponent;
    /**
     * column order(sort) type, can be 'asc' or 'desc' or ''
     */
    private _order;
    /**
     * table field order type
     */
    order: any;
    /**
     * column related data field
     */
    field: string;
    /**
     * Whether the column can be resizable
     * @default false
     */
    resizable: boolean;
    /**
     * the index in the table columns
     * @docs-private
     */
    _columnIndex: number;
    /**
     * Whether show the filter panel
     * @docs-private
     */
    showFilter: any;
    private _showFilter;
    /**
     * Whether the column is in filtered mode
     * @docs-private
     */
    filtered: boolean;
    /**
     * cache table position
     * @docs-private
     */
    _tablePos: any;
    constructor(_table: TableComponent, _cd: ChangeDetectorRef, _el: ElementRef, _render: Renderer2);
    ngOnInit(): void;
    toggleOverlay(): void;
    show(): void;
    hide(): void;
    ngAfterViewInit(): void;
    /**
     * toggle filter panel
     * @docs-private
     */
    onToggleFilter(): void;
    ngOnDestroy(): void;
    /**
     * get the column width
     * @return {number} column width
     * @docs-private
     */
    getElementWidth(): number;
    /**
     * set the column width
     * @param {number} width - column width
     * @docs-private
     */
    setElementWidth(width: number): void;
    /**
     * on column filter
     * @docs-private
     */
    onFilter(): void;
    /**
     * hide filter
     * @docs-private
     */
    onCancel(): void;
    /**
     * on column sort
     * @docs-private
     */
    onSort(): void;
    /**
     * column resize begin
     * @param {MouseEvent} event - mouse event
     * @docs-private
     */
    onColumnResizeBegin(event: MouseEvent): boolean;
    onFilterPanelHide(event: any): void;
}
