import { AfterContentInit, ChangeDetectorRef, EventEmitter, OnChanges, OnInit, QueryList, SimpleChanges, TemplateRef, OnDestroy, AfterViewInit } from '@angular/core';
import { PrimeTemplate } from 'primeng/api';
import { SmzContentType } from '../../models/content-types';
import { SmzFilterType } from '../../models/filter-types';
import { SmzTableState, SmzTableContext, SmzTableViewportStateData } from '../../models/table-state';
import { SmzTableColumn } from '../../models/table-column';
import { SmzEditableType } from '../../models/editable-types';
import { TableEditableService } from '../../services/table-editable.service';
import { TableFormsService } from '../../services/table-forms.service';
import { Table } from '../../../prime/table/table';
import { TableHelperService } from '../../services/table-helper.service';
import { Store } from '@ngxs/store';
import { SmzExcelService } from '../../../smz-excels/services/smz-excel-service';
import * as i0 from "@angular/core";
export declare class SmzTableComponent implements OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy {
    cdr: ChangeDetectorRef;
    editableService: TableEditableService;
    formsService: TableFormsService;
    private tableHelper;
    private store;
    private smzExcelService;
    uiConfig: import("ngx-smz-ui").NgxSmzUiConfig;
    tableKey: string;
    templates: QueryList<PrimeTemplate>;
    table: Table;
    columnMultiselect: any;
    state: SmzTableState;
    items: any[];
    loading: boolean;
    selectionChange: EventEmitter<any>;
    filterChange: EventEmitter<any>;
    columnVisibilityChange: EventEmitter<string[]>;
    create: EventEmitter<any>;
    update: EventEmitter<any>;
    delete: EventEmitter<any>;
    globalSearchInput: string;
    contentTemplate: TemplateRef<any>;
    editableTemplate: TemplateRef<any>;
    actionsTemplate: TemplateRef<any>;
    captionTemplate: TemplateRef<any>;
    toolbarTemplate: TemplateRef<any>;
    emptyActionsTemplate: TemplateRef<any>;
    emptyStateTemplate: TemplateRef<any>;
    rowContentTemplate: TemplateRef<any>;
    selectedItems: any[];
    selectedColumns: SmzTableColumn[];
    showSkeleton: boolean;
    documentClickListener: any;
    private isViewInit;
    private isRestoringViewport;
    isViewportInitializing: boolean;
    contentTypes: {
        currency: SmzContentType;
        calendar: SmzContentType;
        icon: SmzContentType;
        text: SmzContentType;
        custom: SmzContentType;
        dataTransform: SmzContentType;
    };
    editableTypes: {
        none: SmzEditableType;
        custom: SmzEditableType;
        calendar: SmzEditableType;
        text: SmzEditableType;
        area: SmzEditableType;
        dropdown: SmzEditableType;
        switch: SmzEditableType;
        number: SmzEditableType;
    };
    filterTypes: {
        boolean: SmzFilterType;
        date: SmzFilterType;
        numeric: SmzFilterType;
        text: SmzFilterType;
        currency: SmzFilterType;
        dropdown: SmzFilterType;
        multiselect: SmzFilterType;
        multiselect_array: SmzFilterType;
        multiselect_string: SmzFilterType;
    };
    constructor(cdr: ChangeDetectorRef, editableService: TableEditableService, formsService: TableFormsService, tableHelper: TableHelperService, store: Store, smzExcelService: SmzExcelService);
    ngOnInit(): void;
    private shouldRestorePersistedViewport;
    private hydratePersistedViewportPreview;
    hasFilters(): boolean;
    InitCreation(): void;
    updateGlobalFilter(value: string): void;
    updateColumnsVisibility(triggerViewport: boolean): void;
    hideColumn(column: SmzTableColumn, context: SmzTableContext): void;
    ngAfterViewInit(): void;
    initializeState(): void;
    extractViewportStateData(): SmzTableViewportStateData;
    initViewportState(): void;
    private applyPersistedPagination;
    private syncPaginationToTable;
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterContentInit(): void;
    populateColumnVisibility(newState: SmzTableState): void;
    clear(dt: any, context: SmzTableContext): void;
    exportToPdf(context: SmzTableContext, items: any[]): void;
    exportToExcel(table: Table, context: SmzTableContext, items: any[]): void;
    private getExportableData;
    private resolveData;
    onRowSelection(context: SmzTableContext): void;
    onPage(event: {
        first: number;
        rows: number;
    }): void;
    emitSelection(event: any[]): void;
    onFilter(event: any): void;
    viewportChange(): void;
    saveViewportOnLocalStorage(data: SmzTableViewportStateData): void;
    loadViewportFromLocalStorage(): void;
    loadViewportFromManualCallback(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SmzTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SmzTableComponent, "smz-ui-table", never, { "state": { "alias": "state"; "required": false; }; "items": { "alias": "items"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; }, { "selectionChange": "selectionChange"; "filterChange": "filterChange"; "columnVisibilityChange": "columnVisibilityChange"; "create": "create"; "update": "update"; "delete": "delete"; }, ["templates"], never, false, never>;
}
