/**
 * Sanitizes a note string by removing non-printable ASCII characters.
 *
 * @param {string} str - The note string to sanitize.
 * @return {string} - The sanitized note string.
 */
export declare function sanitizeNoteContent(str: string): string;
/**
 * Gets the border color for an avatar based on the user ID.
 *
 * @param {number} userId - The user ID.
 * @return {string} - The border color.
 */
export declare function getAvatarBorderColor(userId: number): string;
/**
 * Generates a note excerpt from text based on word count type and length.
 *
 * @param {string} text          - The note text to generate excerpt from.
 * @param {number} excerptLength - The maximum length for the note excerpt.
 * @return {string} - The generated note excerpt.
 */
export declare function getNoteExcerpt(text: string, excerptLength?: number): string;
/**
 * Calculate final top positions for all floating note threads in the
 * editor's content coordinate space. Adjusts positions to prevent overlapping
 * by pushing threads above the selected one upward and threads below it downward.
 *
 * @param {Object}                  params
 * @param {Array}                   params.threads        Ordered list of thread objects.
 * @param {string|number|undefined} params.selectedNoteId ID of the currently selected thread.
 * @param {Object<string,DOMRect>}  params.blockRects     Pre-read bounding rects keyed by thread ID.
 * @param {Object<string,number>}   params.heights        Rendered heights keyed by thread ID.
 * @param {number}                  params.scrollTop      Current scroll offset of the editor content.
 * @return {{ positions: Object<string,number> }} Computed top positions.
 */
export declare function calculateNotePositions({ threads, selectedNoteId, blockRects, heights, scrollTop }: {
    threads: any[];
    selectedNoteId: string | number | undefined;
    blockRects: Record<string, DOMRect>;
    heights: Record<string, number>;
    scrollTop: number;
}): {
    positions: Record<string, number>;
};
/**
 * Focus a note thread (or a descendant) and scroll it into view.
 *
 * @param {string}       noteId             Note thread ID.
 * @param {?HTMLElement} container          Container to search within.
 * @param {string}       additionalSelector Optional descendant selector.
 */
export declare function focusNoteThread(noteId: string, container: HTMLElement | null, additionalSelector: string): Promise<void>;
/**
 * Scroll a note thread into view without changing focus.
 *
 * @param {string}       noteId    Note thread ID.
 * @param {?HTMLElement} container Container to search within.
 */
export declare function scrollNoteThreadIntoView(noteId: string, container: HTMLElement | null): Promise<void>;
//# sourceMappingURL=utils.d.ts.map