import { ThreadData } from '@liveblocks/client';
import { ID, ZeniDate } from '@zeniai/client-epic-state';
import { ThreadMetadata } from '../../commentsAndNotes/utils/CollaborationTypes';
import { MonthAndYear } from '../../formElements/monthCalendarField/MonthCalendar';
export type SelectionData = {
    endNodeId: ID;
    endOffset: number;
    endPath: number[];
    startNodeId: ID;
    startOffset: number;
    startPath: number[];
};
export declare const FORM_MINIMUM_WIDTH = 726;
export declare const COMMENTS_DRAWER_MAXIMUM_WIDTH = 450;
export declare const COMMENTS_SECTION_MINIMUM_WIDTH = 360;
export declare const MONTH_END_EDITOR_PLACEHOLDER = "<!--editorComesHere-->";
export declare const EDITOR_CLASS_NAME = "editor-input";
export declare const MONTH_END_EMAIL_HEADER_SECTION = "month-end-email-header-section";
export declare const MONTH_END_EMAIL_EDITOR_SECTION = "month-end-email-editor-section";
export declare const MONTH_END_EMAIL_BODY_SECTION = "month-end-email-body-section";
export declare const MONTH_END_REPORT_CANVAS = "monthEndReportCanvas";
export declare const THREADS_LEFT: number;
export declare const OPEN_THREADS_INDENT: number;
export type Coordinates = {
    left: number;
    top: number;
};
export declare const getHistoricMonthsList: (fiscalMonth: number, datesList: ZeniDate[]) => MonthAndYear[];
/**
 * Given ThreadMetadata, build a Range. This is very useful to
 * render the highlight over the text, by leveraging native browser
 * APIs.
 */
export declare const getRange: (metadata: ThreadMetadata, editorMode: boolean) => Range | null;
export declare const getTopPxFromMetadata: (metadata: ThreadMetadata, editorMode: boolean) => number;
export declare const getElement: (node: Node) => HTMLElement | null;
export declare const getSelectionData: () => SelectionData | null;
export declare const useFloatingThreads: (filterMetaData: Partial<ThreadMetadata>, canvasContainerRef: React.RefObject<HTMLDivElement>, editorMode: boolean, isLoading: boolean, isZeniUser?: boolean) => {
    observer: ResizeObserver;
    setThreadsPositions: React.Dispatch<React.SetStateAction<Coordinates[]>>;
    sheetContainerBoundingClientRect: React.MutableRefObject<DOMRect | undefined>;
    sortedThreads: [ID, ThreadData<ThreadMetadata>][];
    threadsPositions: Coordinates[];
    threadsReady: Set<ID>;
    threadsRefs: React.MutableRefObject<(HTMLDivElement | undefined)[]>;
    unresolvedThreadsMap: ReadonlyMap<string, ThreadData<ThreadMetadata>>;
    handleRemoveFloatingThread: (threadId: ID) => void;
};
export declare const useHandleSelection: (canvasId: ID, isCrossSectionSelectionAllowed: boolean, editorMode: boolean) => {
    alignment: "top" | "left";
    coords: Coordinates | undefined;
};
/**
 * Month End Email Content - Helpers
 */
export declare const getHTMLWithCommentingSections: (concatenatedHtml?: string) => string;
