import { CellRange } from './Cell'; /** What a merge manager can ask about the grid while deciding a cell's span. */ export interface MergeQuery { row: number; col: number; rowCount: number; colCount: number; /** The raw value of any cell, for comparing neighbours. */ value(row: number, col: number): unknown; /** Whether a column opts into merging. */ mergeableCol(col: number): boolean; } /** * Returns the range a cell belongs to, or null when it stands alone. Return the * same range for every cell inside it. Only spans larger than a single cell are * meaningful — return null for singletons. */ export type MergeManager = (q: MergeQuery) => CellRange | null; /** * The default, content-driven manager: in a mergeable column, a run of adjacent * rows with equal values merges into one vertical span. */ export declare const contentMerge: MergeManager;