//@ts-ignore
import React, { Component, KeyboardEvent } from 'react';
import { AnnotationBase, TextAnnotation } from "../Annotations/AnnotationTypes";
import PdfReportPlugin from '../plugin';
/// <reference path="../vendor/i18next.d.ts" />
//@ts-ignore

import { i18n } from 'i18next';
import { ReplyToolModel } from './types';
import { GcEditableTextBehavior } from '../Utils/GcEditableTextBehavior';
export type ReplyToolProps = {
    coordinatesOrigin: 'TopLeft' | 'BottomLeft';
    plugin: PdfReportPlugin;
    navigatePage: (pageIndex: number) => void;
    navigateAnnotation: (pageIndex: number, annotation: AnnotationBase, params?: {
        preserveExpanded?: boolean;
        preserveFocused?: boolean;
        toggle?: boolean;
    }) => void;
    addAnnotation: (pageIndex: number, annotation: AnnotationBase) => Promise<{
        pageIndex: number;
        annotation: AnnotationBase;
    }>;
    updateAnnotation: (pageIndex: number, annotation: AnnotationBase, skipExpand: boolean) => Promise<{
        pageIndex: number;
        annotation: AnnotationBase;
    }>;
    updateAnnotations: (pageIndex: number, annotations: AnnotationBase[]) => Promise<{
        pageIndex: number;
        annotations: AnnotationBase[];
    }>;
    removeAnnotation: (pageIndex: number, id: string) => void;
};
export declare class ReplyTool extends Component<ReplyToolProps, ReplyToolModel> {
    _outerElement: HTMLElement;
    in17n: i18n;
    _editableTextBehavior?: GcEditableTextBehavior;
    private _initialized;
    private _mounted;
    private _onAfterAddAnnotationUnreg;
    private _activateInlineEditorAnnotationId?;
    private _clientAreaPointerDownHandler?;
    constructor(props: any);
    componentDidMount(): void;
    componentWillUnmount(): void;
    get viewer(): import("..").GcPdfViewer;
    get eventBus(): import("../Models/ViewerTypes").IGCEventBus;
    initialize(): void;
    uninitialize(): void;
    scrollItemContentIntoView(annotationId: string | HTMLElement, focus?: boolean): void;
    focusAndClickNoteContent(elem: HTMLElement): void;
//@ts-ignore
//@ts-ignore
    render(): React.JSX.Element;
    private _hideReplyEditor;
    canEditAuthor(node: TextAnnotation): boolean;
    canAddReply(node: TextAnnotation): boolean;
    canDeleteReply(node: TextAnnotation): boolean;
    canStatusReply(node: TextAnnotation): boolean;
    canEditText(node: AnnotationBase): boolean;
    private get replyToolSettings();
//@ts-ignore
    protected _renderComments(pageIndex: number, annotations: AnnotationBase[], expandedPageIndex: number, selectedAnnotationId: string): JSX.Element | null;
    onTextLabelRendered(text: string, safeText: string, placeholder: string, isRichContents: boolean, span: HTMLSpanElement | null | undefined, pageIndex: number, node: TextAnnotation): void;
    getNodeContents(node: TextAnnotation, annotations: AnnotationBase[]): {
        text: string;
        safeText: string;
        isRichContents: boolean;
        isEmpty: boolean;
        emptyLabel: string;
        placeholder: string;
    };
//@ts-ignore
    renderNoteItemMenu(pageIndex: number, node: TextAnnotation): JSX.Element;
//@ts-ignore
    onAuthorLabelClick(event: React.MouseEvent, pageIndex: number, node: TextAnnotation, isSelected: boolean): void;
//@ts-ignore
    _onNoteTextLabelClick(event: React.MouseEvent, pageIndex: number, node: TextAnnotation, isSelected: boolean): void;
    _showInlineTextEditor(textLabel: HTMLElement, pageIndex: number, node: TextAnnotation, propertyKey: 'contents' | 'title'): void;
    forceUpdateInternal(): void;
    _disposeEditableTextBehavior(): void;
//@ts-ignore
    _onNoteItemClick(event: React.MouseEvent, pageIndex: number, node: AnnotationBase, isReply: boolean): boolean;
    selectItemInternal(pageIndex: number, node: AnnotationBase | string, args?: {
        showFocusOutline: boolean;
        skipPropertiesExpand: boolean;
    }): Promise<void>;
    unselectItemInternal(pageIndex: number, node: AnnotationBase): void;
    _onPageButtonClick(pageIndex: number): void;
//@ts-ignore
    _onReplyPlaceholderActivate(event: React.MouseEvent | React.KeyboardEvent, pageIndex: number, node: AnnotationBase): true | undefined;
    _onCancelReplyClick(): boolean;
    _onPostReplyClick(pageIndex: number, node: TextAnnotation): boolean;
    getSelectedNode(): {
        pageIndex: number;
        annotation: AnnotationBase;
    } | null;
    _onItemKeyDown(event: KeyboardEvent<any>, pageIndex: number, node: AnnotationBase, isReply: boolean): Promise<void>;
    findNextSibling(forward: boolean, fallbackToFirst?: boolean): void;
    selectNextItem(forward: boolean, fallbackToFirst?: boolean): boolean;
    activateElement(firstChildToFocus: HTMLElement): void;
    execDeleteAction(pageIndex: number, node: AnnotationBase): Promise<boolean>;
    private _cancelReplyInternal;
    private _postReplyInternal;
}
