export interface CommentType {
    id?: string | number;
    description?: string;
    createdBy?: string;
    modifiedBy?: string;
    createdByUname?: string;
    modifiedByUname?: string;
    createdOn?: string;
    modifiedOn?: string;
    name?: string;
    emailId?: string[];
    commentParentId?: string;
    comments: CommentType[];
    profileImage?: string | null;
}
export type HandleAddComment = (newComment: CommentType, parentCommentId?: string) => void;
export type HandleEditComment = (commentId: string, updatedDescription: string) => void;
export type HandleDeleteComment = (commentId: string) => void;
export type HandleNodeFunction = (commentId: string, value: string, mentionedUsersEmail: string[]) => void;
export interface CommentsProps {
    commentsData: CommentType[];
    handleAddComment: any;
    handleEditComment: any;
    handleDeleteComment: any;
    onCommentsDataChange?: (data: any) => void;
    currentUser?: {
        createdBy: string;
        modifiedBy: string;
        createdByUname: string;
        modifiedByUname: string;
    };
    isDisable?: boolean;
    userDetails?: any;
    createdByID?: string;
    createdBy?: string;
    rowBreakCharCount?: number;
    isVewMode?: boolean;
    showTextarea?: boolean;
    deleteEnable?: boolean;
    autoFocus?: boolean;
}
export interface CommentProps {
    handleInsertNode: any;
    handleEditNode: any;
    handleDeleteNode: (_commentId: string) => void;
    comment: CommentType;
    depth?: number;
    commentedData?: CommentType[];
    isDisable?: boolean;
    userDetails?: any;
    isEditDeleteActionAllowed?: boolean;
    createdByID?: string;
    rowBreakCharCount?: number;
    isVewMode?: boolean;
    deleteEnable?: boolean;
}
export interface MentionUsers {
    hasAtSymbol: boolean;
    usersObj: {
        id: string;
        name: string;
        emailId: string;
    }[];
    optionClicked: (_name: string, _emailId: string) => void;
    charsAfterAt?: string;
    mentionUserRef?: React.RefObject<HTMLDivElement>;
}
