import { EventEmitter } from '@angular/core';
import { Observable } from 'rxjs';
import { ExportType } from './export-type';
import { ExcelOptions, Options, TxtOptions } from './options';
import { DataExtractorService } from './services/data-extractor.service';
import { Exporter } from './services/exporters/exporter';
import { ServiceLocatorService } from './services/service-locator.service';
import * as i0 from "@angular/core";
/**
 * Exporter class for CdkTable. Abstracts the varying behaviors among different CdkTable implementations.
 */
export declare abstract class CdkTableExporter {
    private serviceLocator;
    private dataExtractor;
    protected _cdkTable: any;
    private _exporterService;
    hiddenColumns?: Array<number>;
    exporter?: Exporter<Options>;
    exportCompleted: EventEmitter<void>;
    exportStarted: EventEmitter<void>;
    /**
     * Data array which is extracted from nativeTable
     */
    private _data;
    private _isIterating;
    private _initialPageIndex;
    private _isExporting;
    private _subscription;
    private _options?;
    private _selectedRows;
    constructor(serviceLocator: ServiceLocatorService, dataExtractor: DataExtractorService, _cdkTable: any);
    /**
     * Must return the number of pages of the table
     */
    abstract getPageCount(): number;
    /**
     * Must return the number of items to display on a page
     */
    abstract getPageSize(): number;
    /**
     * Must return the index of the current page that's displayed
     */
    abstract getCurrentPageIndex(): number;
    /**
     * Must return the total number of items in the table
     */
    abstract getTotalItemsCount(): number;
    /**
     * When called, the CdkTable should render the rows inside the page whose index given as parameter
     * @param index page index
     */
    abstract goToPage(index: number): void;
    /**
     * Must return an observable that notifies the subscribers about page changes
     */
    abstract getPageChangeObservable(): Observable<any> | undefined;
    /**
     * Triggers page event chain thus extracting and exporting all the rows in nativetables in pages
     */
    exportTable(exportType?: ExportType | 'xls' | 'xlsx' | 'csv' | 'txt' | 'json' | 'other', options?: Options | ExcelOptions | TxtOptions): void;
    toggleRow(index: number): void;
    /**
     * This event will clear rows selection done using toggleRow functionality
     */
    resetToggleRows(): void;
    private toggleOn;
    private toggleOff;
    private isToggleOn;
    private loadExporter;
    private exportWithPagination;
    private exportSinglePage;
    private extractDataOnCurrentPage;
    private getSelectedRows;
    private isSelectiveExport;
    private isMasterToggleOn;
    private isMasterToggleOff;
    private compareSelectedRowCount;
    private initPageHandler;
    private exportExtractedData;
    private extractSpecialRows;
    private extractTableHeader;
    private extractTableFooter;
    private hasNextPage;
    private nextPage;
    private getPaginatedRowIndex;
    static ɵfac: i0.ɵɵFactoryDeclaration<CdkTableExporter, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<CdkTableExporter, never, never, { "hiddenColumns": { "alias": "hiddenColumns"; "required": false; }; "exporter": { "alias": "exporter"; "required": false; }; }, { "exportCompleted": "exportCompleted"; "exportStarted": "exportStarted"; }, never, never, false, never>;
}
