import { EventEmitter } from '../../stencil-public-runtime';
import { Groups } from "../../store/index";
import { HeaderRenderProps } from './header-renderer';
import { ResizeProps } from './resizable.directive';
import type { ColumnRegular, DimensionSettingsState, InitialHeaderClick, ViewportState, ViewSettingSizeProp, DimensionCols, SelectionStoreState, ProvidersColumns } from "../../types/index";
import type { Observable } from '../../utils';
import { HeaderGroupRendererProps } from './header-group-renderer';
export declare class RevogrHeaderComponent {
    /**
     * Stores
     */
    /** Viewport X */
    viewportCol: Observable<ViewportState>;
    /** Dimension settings X */
    dimensionCol: Observable<DimensionSettingsState>;
    /** Selection, range, focus */
    selectionStore: Observable<SelectionStoreState>;
    /**
     * Column groups
     */
    groups: Groups;
    /**
     * Grouping depth, how many levels of grouping
     */
    groupingDepth: number;
    /**
     * Readonly mode
     */
    readonly: boolean;
    /**
     * If columns can be resized
     */
    canResize: boolean;
    /**
     * Defines resize position
     */
    resizeHandler: ResizeProps['active'];
    /**
     * Columns - defines an array of grid columns.
     */
    colData: ColumnRegular[];
    /**
     * Column filter
     */
    columnFilter: boolean;
    /**
     * Column type
     */
    type: DimensionCols | 'rowHeaders';
    /**
     * Extra properties to pass into header renderer, such as vue or react components to handle parent
     */
    additionalData: any;
    /**
     * On initial header click
     */
    initialHeaderClick: EventEmitter<InitialHeaderClick>;
    /**
     * On header resize
     */
    headerresize: EventEmitter<ViewSettingSizeProp>;
    /**
     * On before header resize
     */
    beforeResize: EventEmitter<ColumnRegular[]>;
    /**
     * On header double click
     */
    headerdblClick: EventEmitter<InitialHeaderClick>;
    /**
     * Before each header cell render function. Allows to override cell properties
     */
    beforeHeaderRender: EventEmitter<HeaderRenderProps>;
    /**
     * Before each group header cell render function. Allows to override group header cell properties
     */
    beforeGroupHeaderRender: EventEmitter<HeaderGroupRendererProps>;
    /**
     * After all header cells rendered. Finalizes cell rendering.
     */
    afterHeaderRender: EventEmitter<ProvidersColumns>;
    element: HTMLElement;
    private onResize;
    private onResizeGroup;
    componentDidRender(): void;
    render(): any[];
    private renderHeaderColumns;
    private renderGroupingColumns;
    private renderGroupRow;
    private renderGroupColumn;
    private getGroupIndexRange;
    private getGroupBounds;
    private getVisibleGroupRange;
    private getHeaderCellKey;
    private getDuplicateHeaderProps;
    private getGroupHeaderCellKey;
    get providers(): ProvidersColumns<DimensionCols | 'rowHeaders'>;
}
