import { OnInit, OnChanges, SimpleChanges, EventEmitter, AfterViewInit, ElementRef, QueryList, OnDestroy } from '@angular/core';
import { BsDatepickerConfig, BsDaterangepickerConfig } from 'ngx-bootstrap/datepicker';
import { MatPaginator, PageEvent } from '@angular/material/paginator';
import { MatTableDataSource } from '@angular/material/table';
import { MatDialog } from '@angular/material/dialog';
import { Observable } from 'rxjs';
import { HttpParams } from '@angular/common/http';
import { TableAction } from '../../Interfaces/TableAction';
import { ConfiguracionParametros, ParametrosGenerales } from '../../Models/ParametrosGenerales';
import { ExportTableExcelService } from '../../Services/ExportTableExcel.service';
import { LoadingService } from '../../Services/loading.service';
import { ExportNotificationService } from '../../Services/exportNotification.service';
import { ColumnConfig } from '../../Interfaces/ColumnConfig';
import * as i0 from "@angular/core";
export declare class CustomTableComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {
    private excelService;
    dialog: MatDialog;
    private configParams;
    loadingService: LoadingService;
    private exportNotificationService;
    [x: string]: any;
    private destroy$;
    private exportSubscription;
    isExportInProgress: boolean;
    bsConfigGeneral: Partial<BsDatepickerConfig> | undefined;
    maxDate: Date;
    minDate: Date;
    rowSeleccionada: any;
    totalRecords: number;
    formularioModificado: boolean;
    isSelectAll: boolean;
    originalData: any[];
    dataActives: any[];
    filters: {
        [key: string]: string | boolean | null;
    };
    dataSource: MatTableDataSource<any>;
    displayedColumns: string[];
    styleRow: {
        [clave: string]: string;
    };
    isToggleChecked: boolean;
    filterInputs: QueryList<ElementRef>;
    paginator: MatPaginator;
    matTableWrapper: ElementRef;
    get columnKeys(): string[];
    data: any[];
    dataSelect: any[][];
    columnConfigs: any;
    withHeader: boolean;
    tableConfigs: any;
    nombreMenu: string;
    nombreTabla: string;
    crearRoute: string;
    showCreateButton: boolean;
    showCreateButtonModal: boolean;
    showExportarButton: boolean;
    excelFileName: string;
    isLoading: boolean;
    showCreateButtonDetGral: boolean;
    showRefreshButton: boolean;
    showAddButton: boolean;
    showConfColumnsButton: boolean;
    showFilterInactivos: boolean;
    actions: TableAction[];
    resaltarSeleccion: boolean;
    mostrarFiltroGeneralFechas: boolean;
    showSelectAll: boolean;
    columnsReqMin: number;
    isReport: boolean;
    fetchDataFunction: (params: HttpParams, extraParam?: any) => Observable<any>;
    parametros: ParametrosGenerales;
    extraParams: {
        [key: string]: any;
    };
    centerTable: boolean;
    tableHeight: string;
    showGranTotal: boolean;
    widthColumn: string;
    onSelectAll: EventEmitter<void>;
    cambiarEstatusEvent: EventEmitter<any>;
    createEvent: EventEmitter<void>;
    refreshEvent: EventEmitter<void>;
    AddEvent: EventEmitter<void>;
    onCreate: EventEmitter<void>;
    enviarItemEvent: EventEmitter<void>;
    filtroFechaGeneralEvent: EventEmitter<(Date | undefined)[]>;
    changeData: EventEmitter<any>;
    filtroFechaReportEvent: EventEmitter<Date | undefined>;
    constructor(excelService: ExportTableExcelService, dialog: MatDialog, configParams: ConfiguracionParametros, loadingService: LoadingService, exportNotificationService: ExportNotificationService);
    getColumnConfigWithDefault(columnKey: string): ColumnConfig;
    shouldBlockRow(element: any): boolean;
    predefinedRanges: BsCustomDates[];
    bsConfig: Partial<BsDaterangepickerConfig>;
    openColumnVisibilityDialog(): void;
    updateDisplayedColumns(): void;
    onValueChangeDateGeneral(value?: (Date | undefined)[]): void;
    onValueChangeDate(value?: (Date | undefined)[], column?: string): void;
    ngAfterViewInit(): void;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    applyFilter: (event: any, column: string) => void;
    columnMatches(row: any): boolean;
    applyDateFilter(startDate: Date, endDate: Date, column: string): void;
    resetDateFilter(column: string): void;
    fechaToString(fecha: Date): string;
    applyBooleanFilter(value: boolean | null, column: string): void;
    applyFilterActives: (value: boolean) => void;
    updateData: () => void;
    enviarItem(item: any): void;
    refreshTable: () => void;
    agregarRegistro(): void;
    cambiarEstatus(item: any): void;
    exportTable(): void;
    onValueChangeDateReport(value?: Date | undefined): void;
    create(): void;
    get isDataEmpty(): boolean;
    shouldHideText(row: any): boolean;
    loadData: () => void;
    onPageChange(event: PageEvent): void;
    onCheckSelectAll(event: any): void;
    /** Opciones de tamaño de página transformadas */
    transformedPageSizeOptions(options: number[]): number[];
    /**
     * Verifica si hay overflow horizontal en la tabla y aplica clase correspondiente
     */
    private checkForHorizontalOverflow;
    private adjustTableHeight;
    /**
     * Verifica si hay espacio vacío después del último registro y aplica la clase correspondiente
     */
    private checkEmptySpace;
    /**
     * Calcula la altura del contenido de la tabla (filas)
     */
    private calculateContentHeight;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<CustomTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CustomTableComponent, "custom-table", never, { "data": { "alias": "data"; "required": false; }; "dataSelect": { "alias": "dataSelect"; "required": false; }; "columnConfigs": { "alias": "columnConfigs"; "required": false; }; "withHeader": { "alias": "withHeader"; "required": false; }; "tableConfigs": { "alias": "tableConfigs"; "required": false; }; "nombreMenu": { "alias": "nombreMenu"; "required": false; }; "nombreTabla": { "alias": "nombreTabla"; "required": false; }; "crearRoute": { "alias": "crearRoute"; "required": false; }; "showCreateButton": { "alias": "showCreateButton"; "required": false; }; "showCreateButtonModal": { "alias": "showCreateButtonModal"; "required": false; }; "showExportarButton": { "alias": "showExportarButton"; "required": false; }; "excelFileName": { "alias": "excelFileName"; "required": false; }; "showCreateButtonDetGral": { "alias": "showCreateButtonDetGral"; "required": false; }; "showRefreshButton": { "alias": "showRefreshButton"; "required": false; }; "showAddButton": { "alias": "showAddButton"; "required": false; }; "showConfColumnsButton": { "alias": "showConfColumnsButton"; "required": false; }; "showFilterInactivos": { "alias": "showFilterInactivos"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "resaltarSeleccion": { "alias": "resaltarSeleccion"; "required": false; }; "mostrarFiltroGeneralFechas": { "alias": "mostrarFiltroGeneralFechas"; "required": false; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; }; "columnsReqMin": { "alias": "columnsReqMin"; "required": false; }; "isReport": { "alias": "isReport"; "required": false; }; "fetchDataFunction": { "alias": "fetchDataFunction"; "required": false; }; "parametros": { "alias": "parametros"; "required": false; }; "extraParams": { "alias": "extraParams"; "required": false; }; "centerTable": { "alias": "centerTable"; "required": false; }; "tableHeight": { "alias": "tableHeight"; "required": false; }; "showGranTotal": { "alias": "showGranTotal"; "required": false; }; "widthColumn": { "alias": "widthColumn"; "required": false; }; }, { "onSelectAll": "onSelectAll"; "cambiarEstatusEvent": "cambiarEstatusEvent"; "createEvent": "createEvent"; "refreshEvent": "refreshEvent"; "AddEvent": "AddEvent"; "onCreate": "onCreate"; "enviarItemEvent": "enviarItemEvent"; "filtroFechaGeneralEvent": "filtroFechaGeneralEvent"; "changeData": "changeData"; "filtroFechaReportEvent": "filtroFechaReportEvent"; }, never, never, false, never>;
}
interface BsCustomDates {
    label: string;
    value: Date[];
}
export {};
