import { Ref, ComputedRef, CSSProperties } from 'vue';
import { getRowKeyType } from '../table/types';
import type { IColumn, IMergeCellItem, IRecord, IRowKey, ITableProps } from '../table/types';
import type { ITableState } from './useTableRef';
import type { ITableRef } from './useTableVar';
import type { ComponentSize } from '../../../_utils/types';
type IExtra = {
    getRowKey: getRowKeyType;
    tableVar: ITableRef;
    topElementRef: Ref<HTMLDivElement | undefined>;
    tableElementRef: Ref<HTMLDivElement | undefined>;
    $size: ComputedRef<ComponentSize>;
    tableColumns: ComputedRef<IColumn[]>;
    flattenColumns: ComputedRef<IColumn[]>;
    leftFixedColumns: ComputedRef<IColumn[]>;
    derivedMergeCells: ComputedRef<IMergeCellItem[]>;
    layout: Ref<ITableState['layout']>;
    scrollX: Ref<boolean>;
    scrollY: Ref<boolean>;
    showFooter: ComputedRef<boolean>;
    showPagination: ComputedRef<boolean>;
    isFullScreen: Ref<boolean>;
    setLayout: (layout: ITableState['layout']) => void;
    setScrollX: (scrollX: boolean) => void;
    setScrollY: (scrollY: boolean) => void;
    setElementStore: (key: string, value: HTMLElement) => void;
    setScrollXStore: (option: ITableRef['scrollXStore']) => void;
    setScrollYStore: (option: ITableRef['scrollYStore']) => void;
    setShouldToTop: (value: boolean) => void;
};
declare const useTableLayout: <T extends ITableProps>(props: T, extra: IExtra) => {
    createElementStore: () => void;
    tableStyles: ComputedRef<CSSProperties>;
    getSpan: (row: IRecord, column: IColumn, rowIndex: number, columnIndex: number, tableData: IRecord[]) => {
        rowSpan: number;
        colSpan: number;
    };
    getStickyLeft: (dataIndex: string) => number;
    getStickyRight: (dataIndex: string, part?: string) => number;
    scrollXToColumn: (dataIndex: string, index?: number) => void;
    scrollYToRecord: (rowKey: IRowKey, index?: number) => void;
    rowInViewport: (index: number) => boolean;
    calcTableHeight: () => void;
    resetTableScroll: () => void;
    computeVirtualX: (sl: number, tableWidth: number) => {
        toVisibleIndex: number;
        visibleSize: number;
    };
    computeVirtualY: (st: number, rowHeight: number) => {
        toVisibleIndex: number;
    };
    doLayout: () => void;
};
export default useTableLayout;
