import { EventEmitter, ChangeDetectorRef } from '@angular/core';
import { FormGroup, FormBuilder, FormControl } from '@angular/forms';
import { BehaviorSubject } from 'rxjs';
import { ConfigTable, FunctionList, FormConfig, ValueList, FILTER_STATUSES_ENUM } from './table.types';
import { SpinnerService } from '../spinners';
import { StorageService } from '../storage-service';
import { PopupServiceClass } from '../popup';
import { Select } from '../custom-select';
import { ChangePageEventType } from '../paginator/paginator.types';
import * as i0 from "@angular/core";
export declare class TableComponent {
    private spinner;
    private formBuilder;
    private storageService;
    private popupService;
    private cdr;
    incomingData: BehaviorSubject<Array<any>>;
    userConfig: any;
    actionList: FunctionList;
    valueList: ValueList;
    useDefaultSpinner: boolean;
    checkboxesVisible: boolean;
    sortTimeout: number;
    tablePlaceholderConfig: any;
    showCheckboxes: boolean;
    pushedBulkList: EventEmitter<any>;
    allCheckboxesSelected: EventEmitter<any>;
    sortKey: {
        key: string;
        directionASC: boolean;
    };
    showDefaultNoDataSpinner: boolean;
    searchString: string;
    paginatorOptionsRows: Array<Select>;
    changeSortKey: EventEmitter<any>;
    changePaginatorSettings: EventEmitter<any>;
    private defaultConfig;
    private defaultColumnConfig;
    tableConfig: ConfigTable;
    private incomingDataSubscription;
    dataArray$: BehaviorSubject<any[]>;
    paginatedArray$: BehaviorSubject<any[]>;
    private dataArray;
    private logger;
    columnsForm: FormGroup;
    visibleColumns: Array<FormConfig>;
    protected tableConfigFromStorage: {};
    currentFilterStatus: FILTER_STATUSES_ENUM;
    dropDownState: {
        visible: boolean;
        readyToClose: boolean;
    };
    private currentSortColumn;
    private directionASC;
    private bulkList;
    oneItemSelected: boolean;
    allItemsSelected: boolean;
    private sortedItems;
    private readonly destroy$;
    constructor(spinner: SpinnerService, formBuilder: FormBuilder, storageService: StorageService, popupService: PopupServiceClass, cdr: ChangeDetectorRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    selectAll(event: any): void;
    updateAllComplete(): void;
    fillBulkList(item: any): void;
    sort(array: Array<any>, prop: string, changeDirection?: boolean): Array<any>;
    compare(a: any, b: any): any;
    compareString(a: string, b: string): 0 | 1 | -1;
    sortWithTimeout(column: any): void;
    sortItems(column: any): void;
    getTdClass(column: any): string;
    getThClass(column: any): string;
    setThClassForLast(isLast: boolean): boolean;
    getMacrosedLink(row: any, linkArr: Array<any>): Array<any>;
    applyAction(row: any, alias: string): void;
    selectFormControl(values: Select[], row: any, alias: string): FormControl<string[]>;
    /**
     * Handling form submit, show columns by config and set to local storage
     * @param form
     */
    columnsFormSubmit(): void;
    closeDropDownEvent(): void;
    cancelSelection(): void;
    /**
     * Set all controls (checkbox) value false
     */
    clearAllOptionsForColumns(): void;
    /**
     * Set all controls (checkbox) value true
     */
    selectAllOptionsForColumns(): void;
    /**
     * Check all controls from form and set selected value from visibleColumns array
     */
    setDefaultControlsState(): void;
    /**
     * Check in template is visible this column or not
     * @param columnName: string
     */
    isVisibleCurrentColumn(columnName: string): boolean;
    /**
     * Init all columns (show all columns) in table
     */
    private initAndSelectAllColumns;
    /**
     * Check data from local storage and set this data to our model
     */
    private setBaseColumnsConfig;
    private initAndFormingData;
    /**
     * Initialize form with dynamically count of controls
     */
    private createForm;
    /**
     * If data in local storage is exist - init controls with selected state
     * If data is not exist - init defauld control
     */
    private getColumnsArray;
    /**
     * Set values to local storage
     * @param data Array<FormConfig>
     */
    private formingAndSetDataToStorage;
    createVideoPopup(title: string, url: string): number;
    getLabelTextColor(hex: string): string;
    private hexToRgb;
    private sortArray;
    private updateBulkList;
    private clearBulkList;
    changePerPageEmitter(event: ChangePageEventType): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "ng2-table", never, { "incomingData": "incoming"; "userConfig": "tableConfig"; "actionList": "actionList"; "valueList": "valueList"; "useDefaultSpinner": "useDefaultSpinner"; "checkboxesVisible": "checkboxesVisible"; "sortTimeout": "sortTimeout"; "tablePlaceholderConfig": "tablePlaceholderConfig"; "showCheckboxes": "showCheckboxes"; "sortKey": "sortKey"; "showDefaultNoDataSpinner": "showDefaultNoDataSpinner"; "searchString": "searchString"; "paginatorOptionsRows": "paginatorOptionsRows"; }, { "pushedBulkList": "pushedBulkList"; "allCheckboxesSelected": "allCheckboxesSelected"; "changeSortKey": "changeSortKey"; "changePaginatorSettings": "changePaginatorSettings"; }, never, never, false>;
}
