import { AfterViewInit, ChangeDetectorRef, OnDestroy, OnInit, QueryList } from '@angular/core';
import { MatPaginator, MatPaginatorIntl } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { MatTable } from '@angular/material/table';
import { SdExcelColumn, SdExcelService, SdNotifyService } from '@sd-angular/core/services';
import { SdTabelCellDefDirective } from './directives/sd-table-cell-def.directive';
import { SdMaterialSubInformationDefDirective } from './directives/sd-table-expand-def.directive';
import { SdTableFilterDefDirective } from './directives/sd-table-filter-def.directive';
import { SdMaterialFooterDefDirective } from './directives/sd-table-footer-def.directive';
import { SdTableColumn } from './models/table-column.model';
import { SdTableOption } from './models/table-option.model';
import { TableFilterRegister } from './services/table-filter/table-filter.model';
import { SdBaseSecureComponent } from '@sd-angular/core/components/base';
import { SdQuickAction } from '@sd-angular/core/components/quick-action';
import { SdScrollDirective } from '@sd-angular/core/directives';
import { SdFormatNumberPipe } from '@sd-angular/core/pipes';
import { SdOperator } from '@sd-angular/core/utilities';
import { ExternalFilterComponent } from './components';
import { ConfigComponent } from './components/config/config.component';
import { SdPopupExport } from './components/popup-export/popup-export.component';
import { ISdTableConfiguration } from './configurations';
import { SdTableItem } from './models/table-item.model';
import { ConfiguredTableResult } from './models/table-option-config.model';
import { ConfigService } from './services/config.service';
import { SdTableFilterService } from './services/table-filter/table-filter.service';
import * as i0 from "@angular/core";
export declare class MatPaginatorIntlCro extends MatPaginatorIntl {
    firstPageLabel: string;
    lastPageLabel: string;
    itemsPerPageLabel: string;
    nextPageLabel: string;
    previousPageLabel: string;
    getRangeLabel: (page: number, pageSize: number, length: number) => string;
    static ɵfac: i0.ɵɵFactoryDeclaration<MatPaginatorIntlCro, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<MatPaginatorIntlCro>;
}
export declare class SdTable<T = unknown> extends SdBaseSecureComponent implements OnInit, AfterViewInit, OnDestroy {
    #private;
    private ref;
    private formatNumberPipe;
    tableConfiguration: ISdTableConfiguration | undefined;
    private configService;
    private excelService;
    private notifyService;
    private gridFilterService;
    autoId?: string;
    set _autoId(val: string | undefined | null);
    table?: MatTable<any>;
    configComponent?: ConfigComponent;
    sdPopupExport?: SdPopupExport;
    scroll?: SdScrollDirective;
    filterRegister: TableFilterRegister;
    key: string;
    quickAction?: SdQuickAction;
    externalFilter?: ExternalFilterComponent;
    tableOption: SdTableOption<T>;
    configuration?: ConfiguredTableResult;
    set option(option: SdTableOption);
    items: SdTableItem<T>[];
    selectedTableItems: SdTableItem<T>[];
    total?: number;
    loading: boolean;
    isHiddenPaginator: boolean;
    set paginator(paginator: MatPaginator);
    set sort(sort: MatSort);
    sdSubInformation?: SdMaterialSubInformationDefDirective;
    sdCellDefs: QueryList<SdTabelCellDefDirective>;
    cellDef: Record<string, SdTabelCellDefDirective>;
    sdFooterDefs: QueryList<SdMaterialFooterDefDirective>;
    footerDef: Record<string, SdMaterialFooterDefDirective>;
    hasFooter: boolean;
    sdFilterDefs: QueryList<SdTableFilterDefDirective>;
    filterDefs: SdTableFilterDefDirective[];
    columnOperator: Record<string, SdOperator>;
    columnFilter?: Record<string, any>;
    exporting: boolean;
    isSelectAll: boolean;
    exportTitle: string;
    cacheValues: Record<string, any[]>;
    constructor(ref: ChangeDetectorRef, formatNumberPipe: SdFormatNumberPipe, tableConfiguration: ISdTableConfiguration | undefined, configService: ConfigService, excelService: SdExcelService, notifyService: SdNotifyService, gridFilterService: SdTableFilterService);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    isFiltered: boolean;
    requireFiltered: boolean;
    reload: (force?: boolean, scrollTop?: boolean) => Promise<void>;
    onExport: (args?: {
        columns?: SdExcelColumn[];
        isCSV?: boolean;
    }) => Promise<void>;
    exportExcel: () => void;
    exportCSV: () => void;
    exportCustom: () => 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>;
    }) => void;
    get dataItems(): T[];
    get selectedItems(): T[];
    detectChanges: () => void;
    onOperatorChange: (column: SdTableColumn, operator: SdOperator) => void;
    trackBy: (index: number, item: SdTableItem) => string;
    static ɵfac: i0.ɵɵFactoryDeclaration<SdTable<any>, [null, null, { optional: true; }, null, null, null, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SdTable<any>, "sd-table", never, { "_autoId": { "alias": "autoId"; "required": false; }; "option": { "alias": "option"; "required": false; }; }, {}, ["sdSubInformation", "sdCellDefs", "sdFooterDefs", "sdFilterDefs"], ["[sdTableTop]"], true, never>;
}
