import { AfterViewInit, ChangeDetectorRef, QueryList, OnInit, OnDestroy } from '@angular/core';
import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
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 } from './models/table-column.model';
import { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';
import { SdTableFilter } from './components/table-filter/table-filter.component';
import { SdMaterialFilterDefDirective } from './directives/sd-material-filter-def.directive';
import { SdMaterialSubInformationDefDirective } from './directives/sd-material-sub-information-def.directive';
import { SdMaterialFooterDefDirective } from './directives/sd-material-footer-def.directive';
import { 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';
export declare class SdTable<T = any> implements OnInit, AfterViewInit, OnDestroy {
    #private;
    private ref;
    tableConfiguration: ISdTableConfiguration;
    private gridConfigurationService;
    private exportService;
    private notifyService;
    private gridFilterService;
    popupConfiguration: SdPopupConfiguration;
    sdScroll: SdScrollDirective;
    filterRegister: SdTableFilterRegister;
    key: string;
    quickAction: SdQuickAction;
    tableFilter: SdTableFilter;
    gridOption: SdTableOption<T>;
    configuration: SdTableConfigurationResult;
    set option(option: SdTableOption);
    items: SdTableItem<T>[];
    selectedItems: 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<SdMaterialFilterDefDirective>;
    filterDefs: SdMaterialFilterDefDirective[];
    columnOperator: Record<string, SdFilterOperator>;
    columnFilter: Record<string, any>;
    isExporting: boolean;
    isSelectAll: boolean;
    exportTitle: string;
    cacheValues: Record<string, any[]>;
    constructor(ref: ChangeDetectorRef, tableConfiguration: ISdTableConfiguration, gridConfigurationService: SdTableConfigurationService, exportService: SdExportService, notifyService: SdNotifyService, gridFilterService: SdTableFilterService);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    reload: (force?: 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 gridItems(): T[];
    detectChanges: () => void;
}
