import { DocumentEditor } from '../../document-editor';
import { Toolbar } from '@syncfusion/ej2-navigations';
import { Revision } from './track-changes';
import { CommentReviewPane } from '../comments';
import { TableWidget } from '../viewer/page';
import { WRowFormat } from '../index';
import { Dictionary } from '../../base/index';
/**
 * Track changes pane
 */
export declare class TrackChangesPane {
    /***
     * @private
     */
    isChangesTabVisible: boolean;
    private owner;
    private trackChangeDiv;
    private toolbarElement;
    closeButton: HTMLElement;
    private noChangeDivElement;
    /**
     * @private
     */
    toolbar: Toolbar;
    changesInfoDiv: HTMLElement;
    private locale;
    private commentReviewPane;
    private userDropDownitems;
    private userDropDownButton;
    private viewTypeDropDownButton;
    private userDropDown;
    private selectedUser;
    private selectedType;
    private users;
    private menuoptionEle;
    private menuDropDownButton;
    private currentSelectedRevisionInternal;
    private viewTypeitems;
    changes: Dictionary<Revision, ChangesSingleView>;
    /**
     * @private
     */
    sortedRevisions: Revision[];
    private noChangesVisibleInternal;
    enableButtons: boolean;
    renderedChanges: Dictionary<Revision, ChangesSingleView>;
    setNoChangesVisibility: boolean;
    currentSelectedRevision: Revision;
    constructor(owner: DocumentEditor, commentReviewPane: CommentReviewPane);
    private initTrackChangePane;
    /**
     * @private
     * @returns {void}
     */
    showHiddenParaMark(): void;
    private initPaneHeader;
    private beforeDropDownItemRender;
    private onUserOpen;
    private enableDisableToolbarItem;
    private getSpanView;
    private onMenuSelect;
    onSelection(revision: Revision): void;
    private onUserSelect;
    private onTypeSelect;
    private updateMenuOptions;
    private sortCollectionToDisplay;
    enableDisableButton(enableButton: boolean, isProtection?: boolean): void;
    isUpdateTrackChanges(revisionCount: number): boolean;
    updatePendingChangesToView(): void;
    updateCurrentTrackChanges(revision: Revision, updateChangeView?: boolean): void;
    updateTrackChanges(show?: boolean): void;
    updateUsers(): void;
    updateHeight(): void;
    private removeAllChanges;
    /**
     * @private
     * Updates the date value for the revision
     */
    setDateInternal(revision: Revision): void;
    /**
     * @private
     */
    clear(): void;
    /**
     * @private
     * @returns {void}
     */
    destroy(): void;
    private addChanges;
    private layoutGroupedRange;
    /**
     * @private
     * @returns {void}
     */
    navigatePreviousChanges(): void;
    /**
     * @private
     * @returns {void}
     */
    navigateNextChanges(): void;
    private revisionNavigateInternal;
}
export declare class ChangesSingleView {
    private trackChangesPane;
    private locale;
    private owner;
    outerSingleDiv: HTMLElement;
    user: string;
    revisionType: string;
    revision: Revision;
    singleInnerDiv: HTMLElement;
    acceptButtonElement: HTMLButtonElement;
    rejectButtonElement: HTMLButtonElement;
    private acceptButton;
    private rejectButton;
    changesCount: HTMLElement;
    private selectRevisionHandler;
    private acceptButtonClickHandler;
    private rejectButtonClickHandler;
    /***
     * @private
     */
    tableElement: HTMLTableElement;
    /**
     * @private
     */
    tableWidget: TableWidget;
    constructor(owner: DocumentEditor, trackChangesPane: TrackChangesPane);
    updateRevisionIndexAndCount(currentIndex: number, totalCount: number): void;
    createSingleChangesDiv(revision: Revision): HTMLElement;
    /**
     * @private
     */
    appendRowToTable(rowFormat: WRowFormat, insertIndex: number): void;
    private selectRevision;
    private compareAndGetSameTypeRevision;
    layoutElementText(revision: Revision, range: object[], changesText: HTMLElement, skipUpdate?: boolean): void;
    private addSpan;
    private acceptButtonClick;
    private rejectButtonClick;
    private removeFromParentCollec;
    /**
     * @private
     */
    removeInnerChilds(element: HTMLElement): void;
    /**
     * @private
     */
    removeEvents(): void;
    /**
     *
     * @private
     */
    clear(): void;
    /**
     * Disposes the internal objects which are maintained.
     * @private
     */
    destroy(): void;
}
