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

import { i18n } from 'i18next';
import { PdfOrganizerDialogProps, PdfOrganizerModel, RangeInfo } from './types';
import { SaveSettings } from '../Models/ViewerTypes';
import { ExternalPdfManager } from '../Core/ExternalPdfManager';
import { RangeDragDropHelper } from './RangeDragDropHelper';
/**
 * PDF Organizer dialog.
 **/
export declare class PdfOrganizerDialog extends Component<PdfOrganizerDialogProps, PdfOrganizerModel> {
    /**
     * 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 _thumbsPromiseQueue;
    private _viewer;
    state: {
        enabled: boolean;
        showModal: boolean;
        isChanged: boolean;
        ranges: RangeInfo[];
        workInProgress: boolean;
    };
    private _fileInput?;
    private _externalPdfManager;
    private _dialogContentElem;
    private _addRangeDropdown;
    private _mounted;
    private _rangeDragDropHelper;
    componentDidMount(): void;
    componentWillUnmount(): void;
    get externalPdfManager(): ExternalPdfManager;
    get fileInput(): HTMLInputElement;
    get ranges(): RangeInfo[];
    selectPdfFileForMerge(): void;
    addRange(startIndex: number, endIndex: number, fileId: string, fileName: string, filePagesCount: number, angle?: number): void;
    removeRange(rangeIndex: number): void;
    cloneRange(rangeIndex: number): void;
    splitRangeByPages(rangeIndex: number): void;
    movePagesRange(sourceRangeIndex: number, moveIndex: number): void;
    rotateRange(rangeIndex: number, angleDeg: number): void;
    getSaveSettings(downloadOnly?: boolean): SaveSettings;
    /**
     * Shows the 'PDF Organizer' dialog box.
     * @param viewer
     */
    show(viewer: GcPdfViewer): Promise<void>;
    fillRangesByPageSizeOrOrient(ranges: RangeInfo[], startIndex?: number): RangeInfo[];
    /**
     * Apply changes, reload document and close dialog.
     **/
    applyChanges(closeDialog?: boolean): Promise<boolean>;
    downloadChangedDocument(): Promise<void>;
    /**
     * Hides the dialog
     * */
    hide(): void;
    setDirtyValue(rangeIndex: number, dirtyValue: string): void;
    resetDirtyValue(rangeIndex: number): void;
    applyDirtyValue(rangeIndex: number, resetOnError?: boolean): void;
//@ts-ignore
//@ts-ignore
    render(): React.JSX.Element | null;
    get isDirty(): boolean;
    getRangeInfoTitle(range: RangeInfo): string;
    get rangeDragDropHelper(): RangeDragDropHelper;
//@ts-ignore
    renderRanges(): JSX.Element | null;
    confirmRanges(ranges: RangeInfo[], newRangesCount: number): boolean;
    addRanges(type: "PageSizeOrOrient" | "AllPages" | "SinglePages" | "EmptyPage" | "Odd" | "Even" | "Custom", customPages?: string): void;
    getAddRangeDDItems(): any[];
    findCustomRangeInput(event: any): HTMLInputElement;
    onCustomRangeInputKeyDown(event: KeyboardEvent<HTMLInputElement>): void;
    onRangeInputKeyDown(event: KeyboardEvent<HTMLInputElement>, rangeIndex: number): void;
    applyCustomRangeValue(event: any): void;
//@ts-ignore
    renderRangeActions(): JSX.Element | null;
    clearRanges(): void;
    private _onPdfPicked;
    private loadThumbImages;
    clearThumbsQueue(): void;
    enqueueThumbImage(div: HTMLElement, fileId: string, pageIndex: number, rangeAngle: number): void;
    private _resolveHidePromise;
    get in17n(): i18n;
}
