/// <reference path="../vendor/react/react.d.ts" />
//@ts-ignore
import React, { Component, KeyboardEvent } from 'react';
import GcPdfViewer from "..";/// <reference path="../vendor/i18next.d.ts" />
//@ts-ignore

import { i18n } from 'i18next';
import { TableDataExtractionDialogProps, TableDataExtractionDialogModel, TableDataExtractionDialogMode, ClientTableExtractOptions } from './types';
import { TableDataExtractionModel } from '../Models/ViewerTypes';
import { ISupportApi } from '../SupportApi/ISupportApi';
import { ExtractedTableData, TableDataExportFormat } from '../SupportApi/types';
/**
 * Extract table data dialog.
 **/
export declare class TableDataExtractionDialog extends Component<TableDataExtractionDialogProps, TableDataExtractionDialogModel> {
    /**
     * The root DOM element identifier prefix.
     * The resulting DOM element ID will be `#${ROOT_ID_PREFIX}_${viewer.instanceId}`.
     **/
    static readonly ROOT_ID_PREFIX: string;
    static readonly MAX_RANGE_EMPTY_PAGES_COUNT: number;
    private _hidePromise?;
    private _resolve?;
    private _viewer;
    state: {
        activatedEditorIndex: number;
        enabled: boolean;
        emptyResult: boolean;
        showModal: boolean;
        mode: TableDataExtractionDialogMode;
        pages: string;
        tablesData: ExtractedTableData[];
        workInProgress: boolean;
    };
    _dialogContentElem: HTMLDivElement | null;
    _mounted: boolean;
    componentDidMount(): void;
    componentWillUnmount(): void;
    get tablesData(): ExtractedTableData[];
    removeItem(replaceTextItemIndex: number): Promise<void>;
    createTableDataExtractionModelFromSelection(): Promise<any | null>;
    /**
     * Shows the 'Extract table data' dialog box.
     * @param viewer
     */
    show(viewer: GcPdfViewer): Promise<void>;
    /**
 * Exports the extracted table data to the specified format and triggers a download of the file.
 * This method handles the process of exporting the table data in various formats such as CSV, JSON, XLSX, XML, or HTML.
 * It ensures the proper error handling and updates the UI state (such as disabling buttons or showing a loading indicator).
 *
 * @param exportFormat - The format to which the table data should be exported. This can be one of the following:
 *   - `"csv"`: Exports the data as a CSV file.
 *   - `"json"`: Exports the data as a JSON file.
 *   - `"xlsx"`: Exports the data as an XLSX (Excel) file.
 *   - `"xml"`: Exports the data as an XML file.
 *   - `"html"`: Exports the data as an HTML file.
 *
 * @throws {Error} Throws an error if the export process encounters any issues.
 */
    exportToFormatAndDownload(exportFormat: TableDataExportFormat): Promise<void>;
    /**
     * Hides the dialog
     * */
    hide(): void;
    render(): React.JSX.Element | null;
    renderSelectTextModeContent(): (JSX.Element | null)[];
    renderNormalModeContent(): (JSX.Element | null)[];
    renderTableDataExtractionItems(): JSX.Element | null;
    confirmTableDataExtractionItems(tablesData: TableDataExtractionModel[], newTableDataExtractionItemsCount: number): boolean;
    addTableDataExtractionItem(model: any, activateEditor?: boolean): void;
    onRangeInputKeyDown(event: KeyboardEvent<HTMLInputElement>, replaceTextItemIndex: number): void;
    get pages(): string;
    set pages(pages: string);
    renderTableDataExtractionActions(): JSX.Element | null;
    setInProgress(inProgress: boolean): void;
    get tableExtractOptions(): ClientTableExtractOptions;
    get isEmptyResult(): boolean;
    get supportApi(): ISupportApi;
    selectTextToReplace(): void;
    get mode(): TableDataExtractionDialogMode;
    set mode(val: TableDataExtractionDialogMode);
    clearTableDataExtractionItems(): void;
    private _resolveHidePromise;
    get in17n(): i18n;
}
