import { AfterViewInit, ChangeDetectorRef, QueryList, OnInit, OnDestroy } from '@angular/core';
import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { SdGridMaterialFilterRegister } from './services/grid-filter/grid-filter.model';
import { SdGridMaterialOption } from './models/grid-option.model';
import { ISdGridMaterialConfiguration } from './models/grid-configuration.model';
import { Observable } from 'rxjs';
import { SdNotifyService } from '@sd-angular/core/notify';
import { CdkDragDrop } from '@angular/cdk/drag-drop';
import { SdFilterOperator, SdGridMaterialColumn } from './models/grid-column.model';
import { SdMaterialCellDefDirective } from './directives/sd-material-cell-def.directive';
import { SdGridFilter } from './components/grid-filter/grid-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 { SdMaterialEmptyDataDefDirective } from './directives/sd-material-empty-data-def.directive';
import { SdPopupExport } from './components/popup-export/popup-export.component';
import { SdExportColumn, SdExportFile, SdExportService } from '@sd-angular/core/export';
import { SdGridConfiguration } from './models/grid-config.model';
import { SdGridConfigurationService } from './services/grid-configuration.service';
import { SdQuickAction } from '@sd-angular/core/quick-action';
import { SdGridMaterialItem, SdItem } from './models/grid.model';
import { SdColumnValuesPipe } from './pipes/column-values.pipe';
import { SdEditorHandlerColumnPipe } from './pipes/editor-handler-column.pipe';
import { SdScrollDirective } from '@sd-angular/core/common';
import { SdGridFilterService } from './services/grid-filter/grid-filter.service';
export declare class SdGridMaterial<T = any> implements OnInit, AfterViewInit, OnDestroy {
    #private;
    private ref;
    configuration: ISdGridMaterialConfiguration;
    private gridConfigurationService;
    private exportService;
    private notifyService;
    private columnValuesPipe;
    private gridFilterService;
    private editorHandlerColumnPipe;
    sdScroll: SdScrollDirective;
    filterRegister: SdGridMaterialFilterRegister;
    key: string;
    gridConfigurationObserver: Observable<SdGridConfiguration>;
    quickAction: SdQuickAction;
    gridFilter: SdGridFilter;
    set _gridFilter(gridFilter: SdGridFilter);
    set option(option: SdGridMaterialOption);
    gridOption: SdGridMaterialOption;
    items: SdGridMaterialItem<T>[];
    selectedItems: T[];
    total: number;
    isLoading: boolean;
    isHiddenPaginator: boolean;
    set paginator(paginator: MatPaginator);
    set sort(sort: MatSort);
    sdPopupExport: SdPopupExport;
    sdSubInformation: SdMaterialSubInformationDefDirective;
    sdEmptyData: SdMaterialEmptyDataDefDirective;
    sdCellDefs: QueryList<SdMaterialCellDefDirective>;
    cellDef: {
        [column: string]: SdMaterialCellDefDirective;
    };
    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;
    constructor(ref: ChangeDetectorRef, configuration: ISdGridMaterialConfiguration, gridConfigurationService: SdGridConfigurationService, exportService: SdExportService, notifyService: SdNotifyService, columnValuesPipe: SdColumnValuesPipe, gridFilterService: SdGridFilterService, editorHandlerColumnPipe: SdEditorHandlerColumnPipe);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    reload: (force?: boolean) => Promise<void>;
    drop(event: CdkDragDrop<string[]>, columns: string[]): void;
    onExport: (args: {
        file: SdExportFile;
        columns: SdExportColumn[];
        isCSV: boolean;
    }) => Promise<void>;
    onFilterChange: () => void;
    onExpand: (rowData: SdGridMaterialItem<T>) => Promise<void>;
    onSelect: (rowData: SdGridMaterialItem<T>) => void;
    onSelectAll: () => void;
    onClearSelection: (items?: SdGridMaterialItem<T>[]) => void;
    clearFilter: () => void;
    setFilter: (args: {
        columnFilter?: Record<string, any>;
        externalFilter?: Record<string, any>;
        filterDef?: Record<string, any>;
    }) => void;
    onCreate: () => void;
    onUpdate: (item: SdItem) => void;
    onSave: (item: SdGridMaterialItem<T>) => Promise<void>;
    onCancel: (item: SdGridMaterialItem<T>) => void;
    onRemove: (item: SdGridMaterialItem<T>) => Promise<void>;
    add: (idx: number, item: T) => void;
    update: (idx: number, item: T) => void;
    remove: (idx: number) => void;
    refreshItem: (idx: number) => void;
    get editedItems(): (T & {
        editorErrorMessage: string;
    })[];
    get gridItems(): T[];
    get localItems(): T[];
    get localGridItems(): T[];
    detectChanges: () => void;
    onOperatorChange: (column: SdGridMaterialColumn, operator: SdFilterOperator) => void;
    get isEditing(): boolean;
}
