interface StyleObject { [key: string]: any; } type BorderEdge = { style?: string; color?: Record; } | undefined; /** * Borders collected from the perimeter of a merge range. * Stored as flat arrays indexed by row/column offset for O(1) lookup. */ export interface CollectedBorders { /** top edge border for each column (index = col - left) */ topEdges: BorderEdge[]; /** bottom edge border for each column (index = col - left) */ bottomEdges: BorderEdge[]; /** left edge border for each row (index = row - top) */ leftEdges: BorderEdge[]; /** right edge border for each row (index = row - top) */ rightEdges: BorderEdge[]; diagonal?: any; color?: any; } /** * Collect perimeter borders from cells before a merge is applied. * Must be called BEFORE cell.merge() overwrites slave styles. * * Only iterates the four edges of the range, not the full rectangle. * For perimeter edges where the cell has no border, falls back to the master's border. */ export declare function collectMergeBorders(top: number, left: number, bottom: number, right: number, findCell: (r: number, c: number) => { style: StyleObject; } | undefined): CollectedBorders | undefined; /** * Apply position-aware borders to a merged cell range. * Must be called AFTER cell.merge() so that the master style is available. * * Each cell receives a deep-copied style from the master so that * later mutations to one cell do not leak to others. */ export declare function applyMergeBorders(top: number, left: number, bottom: number, right: number, collected: CollectedBorders, getCell: (r: number, c: number) => { style: StyleObject; }): void; export {};