import { EventEmitter, OnInit, DoCheck, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { TabularColumn } from './tabular';
import { ITabularConfig } from './tabular-config.interface';
import { ActionConfigRouteType, IActionsConfig } from './actions-config.interface';
import { TabularSortByService, SortByDirection, ISortByProperty } from './tabular-sort-by.service';
import { TabularConfig } from './tabular.config';
import { TabularSize } from './tabular-size.enum';
import { ITabularColumnBadgeType, ITabularColumnIconType, TabularColumnTypes } from './tabular-column.interface';
import { ITabularRow } from './tabular-row.interface';
import { Context } from '../enums';
import { IWithTooltip } from './tabular-tooltip.interface';
import { TabularContentService } from './tabular-content.service';
import { TabularTheme } from './tabular-theme.enum';
import { ScrollDispatcher } from '@angular/cdk/scrolling';
import { BehaviorSubject } from 'rxjs';
import * as i0 from "@angular/core";
export declare class TabularComponent implements OnInit, DoCheck, OnDestroy {
    private conf;
    private sortByService;
    private contentService;
    scroll: ScrollDispatcher;
    private cdr;
    private table;
    private scrollable;
    /**
     * Collection of column models
     */
    columns: TabularColumn[];
    /**
     * Collection of data rows
     */
    rows: ITabularRow[];
    /**
     * Tabular configuration
     * IPaginationInstance, ISearchConfig
     */
    get config(): ITabularConfig;
    set config(c: ITabularConfig);
    /** The function to call when a action item is clicked **/
    get callback(): Function;
    set callback(Fn: Function);
    /**
     * Search term is used in the simple search pipe
     * Array of objects: *ngFor="#row of rows | simpleSearch : 'the search term'"
     */
    get searchTerm(): string;
    set searchTerm(term: string);
    /**
     * Event fired when refresh is called.
     * Host should refresh data of input.
     */
    refresh: EventEmitter<boolean>;
    /**
     * Event fired when a row is clicked.
     */
    rowClick: EventEmitter<any>;
    /**
     * Event fired when a column is sorted
     */
    onSort: EventEmitter<ISortByProperty[]>;
    /**
     * Event fired when selecting a checkbox on a tabular row
     */
    onCheck: EventEmitter<ITabularRow>;
    /**
     * Event fired when selecting a group checkbox on a tabular column
     */
    onCheckAll: EventEmitter<boolean>;
    oldRows: ITabularRow[];
    pagedItems: any[];
    TabularColumnTypes: typeof TabularColumnTypes;
    TabularSize: typeof TabularSize;
    TabularTheme: typeof TabularTheme;
    ActionConfigRouteType: typeof ActionConfigRouteType;
    selectAll: boolean;
    Context: typeof Context;
    SortByDirection: typeof SortByDirection;
    isStickyLeft$: BehaviorSubject<boolean>;
    isStickyRight$: BehaviorSubject<boolean>;
    protected _callback: Function;
    protected _config: ITabularConfig;
    protected _searchTerm: string;
    private _isMutatingInternally;
    private _initialLoad;
    private subscriptions;
    selectAllValue: Boolean;
    selectAllDisabled: Boolean;
    constructor(conf: TabularConfig, sortByService: TabularSortByService, contentService: TabularContentService, scroll: ScrollDispatcher, cdr: ChangeDetectorRef);
    ngOnInit(): void;
    ngDoCheck(): void;
    ngAfterViewChecked(): void;
    ngOnDestroy(): void;
    /**
     * Calls the parsed callback with optional arguments
     */
    executeCallback(event: Event, cb: any[]): void;
    toggleSelectAll: ($event: any) => void;
    toggleIndividualSelect: ($event: ITabularRow) => void;
    private checkSelectAllState;
    setPage($event?: {
        page: number;
        itemsPerPage: number;
    }): void;
    /**
     * Get the action tooltip if it exists
     */
    getActionTooltip(action: IActionsConfig): string;
    getActionDisabledState(action: IActionsConfig): boolean;
    /**
     * Handles the column header click event for sorting.
     * Sort order is Descending, Ascending followed by None.
     */
    onSortClickHandler(key: string, type: TabularColumnTypes): boolean;
    isColumnSorted(key: string, direction: SortByDirection): boolean;
    /**
     * Handles the row click event.
     */
    onRowClickHandler($event: any, data: any): void;
    private orderByData;
    get totalItemCount(): number;
    /**
     * Helper to determine if tabular instance is in small mode
     */
    isSmall(): boolean;
    hasValidBadgeTypeParams(colData: ITabularColumnBadgeType): boolean;
    hasValidIconTypeParams(colData: ITabularColumnIconType): boolean;
    getTooltipContext(colData: ITabularColumnIconType): Context;
    hasChildren(action: IActionsConfig): boolean;
    trackByFn(index: any, item: any): any;
    getCellValue(cellContent: any | IWithTooltip): any;
    getTooltipInfo(cellContent: any | IWithTooltip): any;
    private scrolling;
    static ɵfac: i0.ɵɵFactoryDeclaration<TabularComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TabularComponent, "hxa-tabular", never, { "columns": "columns"; "rows": "rows"; "config": "config"; "callback": "callback"; "searchTerm": "searchTerm"; }, { "refresh": "refresh"; "rowClick": "rowClick"; "onSort": "onSort"; "onCheck": "onCheck"; "onCheckAll": "onCheckAll"; }, never, never>;
}
