import { Context } from '../context'; import { Cell, GlobalCache, HyperlinkEntry } from '../types'; export declare function getCellRowColumn(ctx: Context, e: MouseEvent, container: HTMLDivElement, scrollX: HTMLDivElement, scrollY: HTMLDivElement): { r: number; c: number; } | undefined; export declare function getCellHyperlinks(ctx: Context, r: number, c: number): HyperlinkEntry[]; export declare function getCellHyperlink(ctx: Context, r: number, c: number): HyperlinkEntry; /** Join display text for all inline segments that use this link. */ export declare function getHyperlinkDisplayTextInCell(cell: Cell | null | undefined, link: HyperlinkEntry): string; /** Plain-text [start, end) of consecutive inline segments that carry `target`. */ export declare function getInlineLinkPlainRange(cell: Cell | null | undefined, target: HyperlinkEntry): { start: number; end: number; } | undefined; /** * If every plain character in [start, end) lies in inline segments that share the same * `link`, returns that link; otherwise undefined (mixed/unlinked text in range). */ export declare function getUniformLinkCoveringPlainRange(cell: Cell | null | undefined, start: number, end: number): HyperlinkEntry | undefined; /** Plain caret offset `pos` lies strictly inside a linked segment (before that segment's end). */ export declare function getUniformLinkAtPlainOffset(cell: Cell | null | undefined, pos: number): HyperlinkEntry | undefined; /** After changing hyperlinks on (r,c), update or close `ctx.linkCard` if it matches. */ export declare function syncLinkCardAfterHyperlinkChange(ctx: Context, r: number, c: number): void; export declare function saveHyperlink(ctx: Context, r: number, c: number, linkText: string, linkType: string, linkAddress: string, options?: { applyToSelection?: boolean; cellInput?: HTMLDivElement | null; /** When true, apply range from ctx.linkCard using cell data only (no active editor). */ applySelectionFromModel?: boolean; }): void; export declare function removeHyperlink(ctx: Context, r: number, c: number): void; /** Remove one distinct hyperlink (inline segment link or sheet map entry). */ export declare function removeHyperlinkForLink(ctx: Context, r: number, c: number, target: HyperlinkEntry): void; /** Update URL/type (and display text when a single segment carries this link). */ export declare function updateHyperlinkForLink(ctx: Context, r: number, c: number, target: HyperlinkEntry, linkText: string, linkType: string, linkAddress: string): void; export declare function showLinkCard(ctx: Context, r: number, c: number, options?: { applyToSelection?: boolean; originText?: string; selectionOffsets?: { start: number; end: number; }; linkInsertOffset?: number; /** URL/type defaults when inserting but selection (or cell) already maps to one link */ prefillLink?: HyperlinkEntry; /** * In-cell edit: show view-only card for this hyperlink (caret / selection inside that * linked run in the contenteditable). Suppresses whole-cell hover list. */ caretViewLink?: HyperlinkEntry; }, isEditing?: boolean, isMouseDown?: boolean): void; export declare function goToLink(ctx: Context, r: number, c: number, linkType: string, linkAddress: string, scrollbarX: HTMLDivElement, scrollbarY: HTMLDivElement): void; export declare function isLinkValid(ctx: Context, linkType: string, linkAddress: string): { isValid: boolean; tooltip: any; }; export declare function onRangeSelectionModalMoveStart(ctx: Context, globalCache: GlobalCache, e: MouseEvent): void; export declare function onRangeSelectionModalMove(globalCache: GlobalCache, e: MouseEvent): void; export declare function onRangeSelectionModalMoveEnd(globalCache: GlobalCache): void;