import { AfterViewInit, ChangeDetectorRef, QueryList, OnInit, OnDestroy } from '@angular/core';
import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { MatTable } from '@angular/material/table';
import { SdTableFilterRegister } from './services/table-filter/table-filter.model';
import { SdTableOption } from './models/table-option.model';
import { ISdTableConfiguration } from './models/table-configuration.model';
import { SdNotifyService } from '@sd-angular/core/notify';
import { SdFilterOperator, SdTableColumn } from './models/table-column.model';
import { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';
import { SdTableFilter } from './components/table-filter/table-filter.component';
import { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';
import { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';
import { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';
import { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';
import { SdTableConfigurationResult } from './models/table-option-config.model';
import { SdTableConfigurationService } from './services/table-configuration.service';
import { SdQuickAction } from '@sd-angular/core/quick-action';
import { SdTableItem } from './models/table-item.model';
import { SdScrollDirective } from '@sd-angular/core/common';
import { SdTableFilterService } from './services/table-filter/table-filter.service';
import { SdPopupConfiguration } from './components/popup-configuration/popup-configuration.component';
import { SdLoadingService } from '@sd-angular/core/loading';
import { SdPopupExport } from './components/popup-export/popup-export.component';
export declare class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {
    #private;
    private ref;
    private loadingService;
    tableConfiguration: ISdTableConfiguration;
    private tableConfigurationService;
    private exportService;
    private notifyService;
    private gridFilterService;
    table: MatTable<any>;
    popupConfiguration: SdPopupConfiguration;
    sdPopupExport: SdPopupExport;
    sdScroll: SdScrollDirective;
    filterRegister: SdTableFilterRegister;
    key: string;
    quickAction: SdQuickAction;
    tableFilter: SdTableFilter;
    tableOption: SdTableOption<T>;
    configuration: SdTableConfigurationResult;
    set option(option: SdTableOption);
    items: SdTableItem<T>[];
    selectedTableItems: SdTableItem<T>[];
    total: number;
    isLoading: boolean;
    isHiddenPaginator: boolean;
    set paginator(paginator: MatPaginator);
    set sort(sort: MatSort);
    sdSubInformation: SdMaterialSubInformationDefDirective;
    sdCellDefs: QueryList<SdTabelCellDefDirective>;
    cellDef: {
        [column: string]: SdTabelCellDefDirective;
    };
    sdFooterDefs: QueryList<SdMaterialFooterDefDirective>;
    footerDef: {
        [column: string]: SdMaterialFooterDefDirective;
    };
    hasFooter: boolean;
    sdFilterDefs: QueryList<SdTableFilterDefDirective>;
    filterDefs: SdTableFilterDefDirective[];
    columnOperator: Record<string, SdFilterOperator>;
    columnFilter: Record<string, any>;
    isExporting: boolean;
    isSelectAll: boolean;
    exportTitle: string;
    cacheValues: Record<string, any[]>;
    constructor(ref: ChangeDetectorRef, loadingService: SdLoadingService, tableConfiguration: ISdTableConfiguration, tableConfigurationService: SdTableConfigurationService, exportService: SdExportService, notifyService: SdNotifyService, gridFilterService: SdTableFilterService);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    reload: (force?: boolean) => Promise<void>;
    onExport: (args?: {
        file?: SdExportFile;
        columns?: SdExportColumn[];
        isCSV?: boolean;
    }) => Promise<void>;
    exportExcel: () => void;
    exportCSV: () => void;
    onFilterChange: () => void;
    onExpand: (rowData: SdTableItem<T>) => Promise<void>;
    onSelect: (rowData: SdTableItem<T>) => void;
    onSelectAll: () => void;
    onClearSelection: (items?: SdTableItem<T>[]) => void;
    clearFilter: () => void;
    setFilter: (args: {
        columnFilter?: Record<string, any>;
        externalFilter?: Record<string, any>;
        filterDef?: Record<string, any>;
    }) => void;
    get dataItems(): T[];
    get selectedItems(): T[];
    detectChanges: () => void;
    onOperatorChange: (column: SdTableColumn, operator: SdFilterOperator) => void;
    trackBy: (index: number, item: SdTableItem) => string;
}
