import { StickyNotesSettings } from './../pdfviewer';
import { PdfViewerBase, PdfViewer, AllowedInteraction, IPoint, IAnnotation } from '../index';
/**
 * @hidden
 */
export interface IPopupAnnotation extends IAnnotation {
    pathData: string;
    bounds: any;
    color: any;
    state: string;
    stateModel: string;
    pageNumber: number;
    customData: object;
    allowedInteractions: AllowedInteraction;
    isPrint: boolean;
    id?: any;
}
/**
 * @hidden
 */
export interface ICommentsCollection {
    author: string;
    modifiedDate: string;
    annotName: string;
    subject: string;
    parentId: string;
    note: string;
    state: string;
    stateModel: string;
    comments: ICommentsCollection[];
    review: IReviewCollection;
    shapeAnnotationType: string;
    position?: number;
    isLock: boolean;
}
/**
 * @hidden
 */
export interface IReviewCollection {
    author: string;
    state: string;
    stateModel: string;
    modifiedDate: string;
    annotId?: string;
}
/**
 * StickyNotes module
 */
export declare class StickyNotesAnnotation {
    private pdfViewer;
    private pdfViewerBase;
    private accordionContent;
    private accordionPageContainer;
    private accordionContentContainer;
    private commentsContainer;
    private commentMenuObj;
    private moreButtonId;
    private commentsCount;
    private commentsreplyCount;
    private commentContextMenu;
    private isAccordionContainer;
    private isSetAnnotationType;
    private isNewcommentAdded;
    private isCreateContextMenu;
    private commentsRequestHandler;
    private selectAnnotationObj;
    /**
     * @private
     */
    isCommentsSelected: boolean;
    /**
     * @private
     */
    isAddAnnotationProgramatically: boolean;
    /**
     * @private
     */
    isEditableElement: boolean;
    /**
     * @private
     */
    accordionContainer: HTMLElement;
    /**
     * @private
     */
    mainContainer: HTMLElement;
    /**
     * @private
     */
    opacity: number;
    private isPageCommentsRendered;
    private isCommentsRendered;
    /**
     * @private
     */
    isAnnotationRendered: boolean;
    private globalize;
    /**
     * @private
     */
    textFromCommentPanel: boolean;
    /**
     * @param {PdfViewer} pdfViewer - It describes about the pdfviewer
     * @param {PdfViewerBase} pdfViewerBase - It describes about the pdfviewer base
     * @private
     */
    constructor(pdfViewer: PdfViewer, pdfViewerBase: PdfViewerBase);
    /**
     * @param {any} stickyAnnotations - It describes about the sticky annotations
     * @param {number} pageNumber - It describes about the page number
     * @param {any} canvas - It describes about the canvas
     * @param {boolean} isImport - It describes about the isImport
     * @param {boolean} isLastAnnot - It describes about the isLastAnnot
     * @private
     * @returns {void}
     */
    renderStickyNotesAnnotations(stickyAnnotations: any, pageNumber: number, canvas?: any, isImport?: boolean, isLastAnnot?: boolean): void;
    /**
     * @param {any} annotation - It describes about the annotation
     * @private
     * @returns {any} - any
     */
    getSettings(annotation: any): any;
    /**
     * @param {number} X - It describes about the X
     * @param {number} Y - It describes about the Y
     * @param {number} width - It describes about the width
     * @param {number} height - It describes about the height
     * @param {number} pageIndex - It describes about the page index
     * @param {any} annotation - It describes about the annotation
     * @param {any} canvas - It describes about the canvas
     * @param {any} isNeedToRender - It describes about the isNeedToRender
     * @private
     * @returns {void}
     */
    drawStickyNotes(X: number, Y: number, width: number, height: number, pageIndex: number, annotation: any, canvas?: any, isNeedToRender?: boolean): void;
    private setImageSource;
    /**
     * @private
     * @returns {void}
     */
    createRequestForComments(): void;
    private renderCommentsOnSuccess;
    /**
     * @param {any} excistingAnnotation - It describes about the existing annotation
     * @param {any} newAnnotation - It describes about the new annotation
     * @private
     * @returns {any} - any
     */
    updateAnnotationsInDocumentCollections(excistingAnnotation: any, newAnnotation: any): any;
    private updateDocumentAnnotationCollections;
    private renderAnnotationCollections;
    /**
     * @param {any} annotation - It describes about the annotation
     * @param {boolean} isSignature - It describes about the issignature
     * @private
     * @returns {void}
     */
    updateCollections(annotation: any, isSignature?: boolean): void;
    /**
     * @param {any} data - It describes about the data
     * @param {number} pageIndex - It describes about the page index
     * @private
     * @returns {void}
     */
    renderAnnotationComments(data: any, pageIndex: number): void;
    /**
     * @private
     * @returns {void}
     */
    initializeAcccordionContainer(): void;
    /**
     * @private
     * @returns {void}
     */
    updateCommentPanelTextTop(): void;
    /**
     * @param {number} pageIndex - It describes about the page index
     * @private
     * @returns {any} - any
     */
    createPageAccordion(pageIndex: number): any;
    private alignAccordionContainer;
    /**
     * @param {number} pageNumber - It describes about the page number
     * @private
     * @returns {void}
     */
    updateCommentPanelScrollTop(pageNumber: number): void;
    private getButtonState;
    /**
     * @param {any} data - It describes about the data
     * @param {number} pageIndex - It describes about the page index
     * @param {string} type - It describes about the type
     * @param {string} annotationSubType - It describes about the annotation sub type
     * @param {boolean} isReRender - It describes about the isRenderer
     * @private
     * @returns {string} - string
     */
    createCommentControlPanel(data: any, pageIndex: number, type?: string, annotationSubType?: string, isReRender?: boolean): string;
    private commentDivFocus;
    private updateScrollPosition;
    private updateCommentsScrollTop;
    /**
     * @param {any} args - It describes about the args
     * @private
     * @returns {void}
     */
    createCommentDiv(args: any): void;
    /**
     * @param {string} type - It describes about type of annotation
     * @param {string} annotType - It describes about subType of annotation
     * @param {string} updatedAuthor - It gets the current annotation author
     * @param {string} subject - It describes about the subject
     * @private
     * @returns {string} - string
     */
    updatedAuthor(type: string, annotType: string, updatedAuthor: string, subject?: string): string;
    /**
     * @param {any} args - It describes about the args
     * @param {any} comment - It describes about the comment
     * @private
     * @returns {void}
     */
    saveCommentDiv(args: any, comment: any): void;
    private renderComments;
    /**
     * @param {any} data - It describes about the data
     * @param {number} pageIndex - It describes about the page index
     * @param {boolean} isCopy - It describes about the isCopy
     * @private
     * @returns {string} - string
     */
    createCommentsContainer(data: any, pageIndex: number, isCopy?: boolean): string;
    private modifyProperty;
    private createTitleContainer;
    private createReplyDivTitleContainer;
    private updateCommentIcon;
    private updateStatusContainer;
    /**
     * @param {HTMLElement} removeDiv -  It describes about the removeDiv
     * @private
     * @returns {void}
     */
    updateAccordionContainer(removeDiv: HTMLElement): void;
    /**
     * @private
     * @returns {void}
     */
    createCommentContextMenu(): void;
    private contextMenuBeforeOpen;
    /**
     * @param {any} args - It describes the argument for this method
     * @private
     * @returns {void}
     */
    commentMenuItemSelect(args: any): void;
    private handleCommentDeletion;
    private getAnnotationById;
    private moreOptionsClick;
    private openTextEditor;
    /**
     * @param {any} commentEvent - It describes about the selected reply
     * @private
     * @returns {boolean} - boolean
     */
    checkIslockProperty(commentEvent: any): boolean;
    private openEditorElement;
    private commentsDivClickEvent;
    private commentsDivDoubleClickEvent;
    private commentDivOnSelect;
    private commentDivMouseOver;
    private commentDivMouseLeave;
    /**
     * @param {any} event -  It describes about the event
     * @private
     * @returns {void}
     */
    drawIcons(event: any): void;
    /**
     * @param {string} annotationType - It describes about the annotation type
     * @param {number} pageNumber - It describes about the page number
     * @param {string} annotationSubType - It describes about the annotation sub type
     * @private
     * @returns {string} - string
     */
    addComments(annotationType: string, pageNumber: number, annotationSubType?: string): string;
    private commentsAnnotationSelect;
    private findAnnotationObject;
    private checkAnnotationSettings;
    private updateCommentsContainerWidth;
    /**
     * @param {number} pageIndex - It describes about the page index
     * @private
     * @returns {void}
     */
    selectCommentsAnnotation(pageIndex: number): void;
    private setAnnotationType;
    private modifyTextProperty;
    /**
     * @param {any} date - It describes about the date
     * @private
     * @returns {string} - string
     */
    getDateAndTime(date?: any): string;
    getDateAndTimeFormat(date?: any): string;
    private modifyCommentsProperty;
    private modifyStatusProperty;
    /**
     * @param {any} commentsElement - It describes about the comments element
     * @param {any} replyElement - It describes about the reply element
     * @private
     * @returns {void}
     */
    modifyCommentDeleteProperty(commentsElement: any, replyElement: any): void;
    /**
     * @param {any} annotation - It describes about the annotation
     * @private
     * @returns {void}
     */
    updateOpacityValue(annotation: any): void;
    /**
     * @param {any} annotation - It describes about the annotation
     * @param {string} isAction - It describes about the isAction
     * @param {any} undoAnnotation - It describes about the undo annotation
     * @private
     * @returns {any} - any
     */
    undoAction(annotation: any, isAction: string, undoAnnotation?: any): any;
    /**
     * @param {any} annotation - It describes about the annotation
     * @param {string} isAction - It describes about the isAction
     * @param {any} undoAnnotation - It describes about the undo annotation
     * @private
     * @returns {any} - any
     */
    redoAction(annotation: any, isAction: string, undoAnnotation?: any): any;
    private updateUndoRedoCollections;
    /**
     * @param {any} pageIndex - It describes about the page index
     * @param {string} type - It describes about the type
     * @param {boolean} action - It describes about the action
     * @private
     * @returns {void}
     */
    addAnnotationComments(pageIndex: any, type: string, action?: boolean): void;
    /**
     * @param {any} annotation - It describes about the annotation
     * @param {string} type - It describes about the type
     * @param {string} action - It describes about the action
     * @param {boolean} isUndoAction - Ensures whether undo action is true or not
     * @private
     * @returns {void}
     */
    findPosition(annotation: any, type: string, action?: string, isUndoAction?: boolean): any;
    private getAnnotations;
    private manageAnnotations;
    updateStickyNotes(annotation: any, id: any): void;
    saveStickyAnnotations(): string;
    private deleteStickyNotesAnnotations;
    addStickyNotesAnnotations(pageNumber: number, annotationBase: any): void;
    /**
     * @param {string} annotName - It describes about the annotName
     * @param {string} text - It describes about the text
     * @private
     * @returns {void}
     */
    addTextToComments(annotName: string, text: string): void;
    /**
     * @param {any} newAnnotation - It describes about the new annotation
     * @param {any} annotation - It describes about the annotation
     * @param {boolean} isCut - It describes about the isCut
     * @private
     * @returns {void}
     */
    updateAnnotationCollection(newAnnotation: any, annotation: any, isCut: boolean): void;
    private findAnnotationType;
    private setExistingAnnotationModifiedDate;
    private updateModifiedTime;
    private setModifiedDate;
    private convertUTCDateToLocalDate;
    private updateModifiedDate;
    /**
     * @param {any} annotation - It describes about the annotation
     * @param {boolean} isBounds - It describes about the isBoolean
     * @param {boolean} isUndoRedoAction - It describes about the isUndoRedoAction
     * @private
     * @returns {void}
     */
    updateAnnotationModifiedDate(annotation: any, isBounds?: boolean, isUndoRedoAction?: boolean): void;
    /**
     * @param {any} annotation - It describes about the annotation
     * @param {number} pageNumber - It describes about the page number
     * @private
     * @returns {void}
     */
    saveImportedStickyNotesAnnotations(annotation: any, pageNumber: number): void;
    /**
     * @param {any} annotation - It describes about the annotation
     * @param {number} pageNumber - It describes about the page number
     * @private
     * @returns {any} - any
     */
    updateStickyNotesAnnotationCollections(annotation: any, pageNumber: number): any;
    /**
     * @private
     * @returns {void}
     */
    clear(): void;
    /**
     * @private
     * @returns {string} - string
     */
    getModuleName(): string;
    /**
     * This method used to add annotations with using program.
     *
     * @param {StickyNotesSettings} annotationObject - It describes type of annotation object
     * @param {IPoint} offset - It describes about the annotation bounds or location
     * @returns {object} - object
     * @private
     */
    updateAddAnnotationDetails(annotationObject: StickyNotesSettings, offset: IPoint): Object;
    /**
     * @param {any} type - It describes about the type
     * @private
     * @returns {any} - any
     */
    private getAnnotationType;
    /**
     * @param {any} annotation - It describes about the annotation
     * @param {any} commonDiv - It describes about the commonDiv
     * @private
     * @returns {string} - string
     */
    private getAuthorName;
}
