import { OnInit, EventEmitter, ElementRef, ChangeDetectorRef, OnDestroy, Injector } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { TableService } from '@ironsource/fusion-ui/components/table/common/services';
import { UniqueIdService } from '@ironsource/fusion-ui/services/unique-id';
import { TableRowsGrouped, TableColumn, TableOptions, TableRowExpandEmitter, TableIconsConfigByStyle, TableRow } from '@ironsource/fusion-ui/components/table/common/entities';
import { TableBasicComponent } from './components/table-basic/table-basic.component';
import { MenuDropItem } from '@ironsource/fusion-ui/components/menu-drop';
import { FormControl } from '@angular/forms';
import { TableTestIdModifiers } from '@ironsource/fusion-ui/entities';
import { TestIdsService } from '@ironsource/fusion-ui/services/test-ids';
import * as i0 from "@angular/core";
export declare class TableComponent implements OnInit, OnDestroy {
    /** @internal */
    tableService: TableService;
    private uniqueService;
    private cdr;
    private injector;
    /** @internal */
    id: string;
    /**
     * Table Options (configuration)
     * @param value: TableOptions
     */
    set options(value: TableOptions);
    get options(): TableOptions;
    /**
     * Table columns configuration
     * columns: TableColumn[]
     */
    set columns(value: TableColumn[]);
    /**
     * Table rows data
     * rows: {[key: string]: any}[]
     */
    set rows(value: any[] | TableRowsGrouped);
    loading: boolean;
    /** @internal */
    sortTableOnDataChanges: boolean;
    /** @internal */
    set expandedRows(value: {
        [key: string]: boolean;
    });
    /** @internal */
    testId: string;
    /**
     * On Sort changed
     */
    sortChanged: EventEmitter<any>;
    /**
     * On rows selection changed
     */
    selectionChanged: EventEmitter<any>;
    /**
     * On Row model (data) changed
     */
    rowModelChange: EventEmitter<import("@ironsource/fusion-ui/components/table/common/entities").TableRowChangedData>;
    /**
     * On Row clicked
     */
    rowClicked: EventEmitter<{
        $event: MouseEvent;
        rowIndex: string;
        rowEl: Element;
        rowData: any;
    }>;
    /**
     * On scroll down. Used for get new paged data portion
     */
    scrollDown: EventEmitter<any>;
    /**
     * On Row action clicked
     */
    rowActionClicked: EventEmitter<{
        action: MenuDropItem;
        rowIndex: string | number;
        row: TableRow;
    }>;
    /**
     * on expand icon clicked. No need in case static data and one expand level
     * @internal
     */
    expandRow: EventEmitter<TableRowExpandEmitter>;
    /**
     * two-way binding for expandedRows map used in case no expandRow subscription in host for sync this value
     * @internal
     */
    expandedRowsChange: EventEmitter<{
        [key: string]: boolean;
    }>;
    /** @internal */
    stringCell: any;
    /** @internal */
    checkboxCell: any;
    /** @internal */
    templateCell: any;
    /** @internal */
    tableElement: ElementRef;
    /** @internal */
    tableWrapperElement: ElementRef;
    /** @internal */
    tableBodyComponent: TableBasicComponent;
    get isFixedHeader(): boolean;
    get noTableFrame(): boolean;
    get noTableFooter(): boolean;
    get isEmpty(): boolean;
    get isLoading(): boolean;
    /** @internal */
    isScrollRight: boolean;
    get onVerticalScroll(): boolean;
    /** @internal */
    isRowsInit: boolean;
    /** @internal */
    noDataMessage: string;
    /** @internal */
    noDataSubMessage: string;
    /** @internal */
    hideHeaderOnEmpty: boolean;
    /** @internal */
    isAllRowsSelectable: boolean;
    /** @internal */
    configIconNames: TableIconsConfigByStyle;
    /** @internal */
    wrapperClasses: string[];
    /** @internal */
    tableMainError: boolean;
    /** @internal */
    shownGoTopButton$: BehaviorSubject<boolean>;
    /** @internal */
    subHeader: {
        name: string;
        colspan: number;
    }[];
    /** @internal */
    searchFormControl: FormControl<string>;
    /** @internal */
    tableTestIdModifiers: typeof TableTestIdModifiers;
    /** @internal */
    testIdsService: TestIdsService;
    get isCheckboxTitleShown(): boolean;
    get isLoadingOverlay(): boolean;
    get tableRows(): any[];
    get groupedTableRows(): TableRowsGrouped;
    get colsCount(): number;
    get expandedRows(): {
        [key: string]: boolean;
    };
    get scrollElement(): HTMLElement;
    get rows(): any[] | TableRowsGrouped;
    get columns(): TableColumn[];
    private lastScrollLeftValue;
    private _expandedRows;
    private currentExpandedMap;
    private ignoredParentSelectorsRowClickEvent;
    private onDestroy$;
    private _options;
    private _rows;
    private _columns;
    constructor(
    /** @internal */
    tableService: TableService, uniqueService: UniqueIdService, cdr: ChangeDetectorRef, injector: Injector);
    ngOnInit(): void;
    ngOnDestroy(): void;
    /** @internal */
    onHeaderClicked(col: any): void;
    /** @internal */
    filterColumn(column: any, filterIn: any): void;
    /** @internal */
    replaceSelectedRows({ selectedTableRows, iditicationFunc }: {
        selectedTableRows: any[];
        iditicationFunc: (row: any) => number;
    }): void;
    /** @internal */
    doExpandRow({ rowIndex, row, isExpanded, successCallback, failedCallback, updateMap }: TableRowExpandEmitter): void;
    /** @internal */
    trackByFunc(index: any, column: any): any;
    /** @internal */
    getTableClientWidth(): number;
    /** @internal */
    onTableBodyClicked($event: MouseEvent): void;
    /** @internal */
    onClickReturnTop(): void;
    private initRows;
    private getSubHeaders;
    private doLocalSorting;
    private isElementChildOfSuppressed;
    private updateExpandedRowsMap;
    private onExternalExpandRowChanged;
    private callOnExpandRow;
    private getRowsToExpandToggle;
    private getWrapperClasses;
    private scrollListeners;
    private localSorting;
    private onScroll;
    static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "fusion-table", never, { "id": { "alias": "id"; "required": false; }; "options": { "alias": "options"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "sortTableOnDataChanges": { "alias": "sortTableOnDataChanges"; "required": false; }; "expandedRows": { "alias": "expandedRows"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; }, { "sortChanged": "sortChanged"; "selectionChanged": "selectionChanged"; "rowModelChange": "rowModelChange"; "rowClicked": "rowClicked"; "scrollDown": "scrollDown"; "rowActionClicked": "rowActionClicked"; "expandRow": "expandRow"; "expandedRowsChange": "expandedRowsChange"; }, never, never, false, never>;
}
