import type { CellRangeRef } from '@bilig/protocol';
export type WorkbookRangeRecord = {
    range: CellRangeRef;
};
export type NormalizedWorkbookRangeRef = CellRangeRef & {
    startRow: number;
    endRow: number;
    startCol: number;
    endCol: number;
};
export declare function cloneWorkbookRangeRecords<RecordType extends WorkbookRangeRecord>(records: readonly RecordType[], cloneRecord: (range: CellRangeRef, record: RecordType) => RecordType): RecordType[];
export declare function overlayWorkbookRangeRecords<RecordType extends WorkbookRangeRecord>(records: readonly RecordType[], nextRecord: RecordType, cloneRecord: (range: CellRangeRef, record: RecordType) => RecordType, isDefaultRecord: (record: RecordType) => boolean): RecordType[];
export declare function replaceWorkbookRangeRecords<RecordType extends WorkbookRangeRecord>(records: readonly RecordType[], cloneRecord: (range: CellRangeRef, record: RecordType) => RecordType, validateRecord: (record: RecordType) => void): RecordType[];
export declare function findWorkbookRangeRecord<RecordType extends WorkbookRangeRecord>(records: readonly RecordType[], row: number, col: number): RecordType | undefined;
export declare function canonicalWorkbookRangeRef(range: CellRangeRef): CellRangeRef;
export declare function canonicalWorkbookAddress(sheetName: string, address: string): string;
