import type { Ref } from 'vue'; import type { FlatRecord, Key, SurelyTableProps } from '../components/interface'; import type { KeyEntities } from './useFlattenRecords'; export interface CalType { rowPosition: Ref; rowHeights: Ref>; mergedRowHeights: Ref>; viewportHeight: Ref; addHeight: (rowKey: Key, subKey: Key, colUniKey: string, height: number) => void; addRowHeight: (rowUniKey: string, rowKey: Key, height: number) => void; removeRowHeight: (rowUniKey: string) => void; startIndex: Ref; endIndex: Ref; getRowHeight: (fromIndex: number, rowSpan?: number) => number; getRowPositionByKey: (key: Key) => number | undefined; preserveRows: Ref>; } export default function useCal(props: SurelyTableProps, flattenData: Ref, scrollHeight: Ref, scrollTop: Ref, virtual: Ref, keyEntities: Ref): CalType;