import { Ref } from 'vue';
import TableManager from '../manager';
import Store from '../store';
import type { ScrollbarInstance } from '../../../scrollbar/src/props';
import type { getRowKeyType, IColumn, IDerivedRowKey, IFieldAuthItem, InsertMode, IRecord, IRowKey, ITableProps } from '../table/types';
import type { Nullable } from '../../../_utils/types';
export type ITableRef = {
    uid: string;
    tableManager: typeof TableManager;
    elementStore: Record<string, Nullable<HTMLElement>>;
    originColumns: IColumn[];
    tableFullData: IRecord[];
    tableOriginData: IRecord[];
    tableFlatData: IRecord[];
    allTableData: IRecord[];
    allRowKeys: IRowKey[];
    allParentRowKeys: IRowKey[];
    deriveRowKeys: IDerivedRowKey[];
    fieldAuth: Record<string, IFieldAuthItem>;
    columnsDefined: boolean;
    scrollBarRef: Ref<ScrollbarInstance | undefined>;
    scrollXStore: {
        startIndex: number;
        endIndex: number;
        offsetSize: number;
        visibleSize: number;
    };
    scrollYStore: {
        startIndex: number;
        endIndex: number;
        offsetSize: number;
        visibleSize: number;
        rowHeight: number;
    };
    store: Store;
    resizeState: {
        width: number;
        height: number;
        winHeight: number;
    };
    handleState: {
        insert: InsertMode | null;
        remove: boolean;
    };
    summaries: Record<string, number>;
    treeTable: boolean;
    scrollXLoad: boolean;
    scrollYLoad: boolean;
    shouldToTop: boolean;
    selectionRows: IRecord[];
    recordsMap: Map<IRowKey, IRecord>;
    unMounted: boolean;
    isIE: boolean;
};
type IExtra = {
    getRowKey: getRowKeyType;
};
declare const useTableVar: <T extends ITableProps>(props: T, { getRowKey }: IExtra) => {
    setElementStore: (key: string, value: HTMLElement) => void;
    setOriginColumns: (columns: IColumn[]) => void;
    setTableFullData: (records: IRecord[]) => void;
    setTableFlatData: (records: IRecord[]) => void;
    setTableOriginData: (records: IRecord[]) => void;
    setAllTableData: (records: IRecord[]) => void;
    setDeriveRowKeys: (records: IRecord[]) => void;
    setFieldAuth: (key: string, value: IFieldAuthItem) => void;
    setColumnsDefined: (value: boolean) => void;
    setScrollXStore: (option: ITableRef['scrollXStore']) => void;
    setScrollYStore: (option: ITableRef['scrollYStore']) => void;
    setResizeState: (option: ITableRef['resizeState']) => void;
    setHandleState: (option: ITableRef['handleState']) => void;
    setSummaries: (option: ITableRef['summaries']) => void;
    setScrollXLoad: (value: boolean) => void;
    setScrollYLoad: (value: boolean) => void;
    setShouldToTop: (value: boolean) => void;
    setSelectionRows: (selectKeys: IRecord[]) => void;
    setRecordsMap: (key: IRowKey, value: IRecord) => void;
    setUnMounted: (value: boolean) => void;
    clearElementStore: () => void;
    clearRecordsMap: () => void;
    uid: string;
    tableManager: typeof TableManager;
    elementStore: Record<string, Nullable<HTMLElement>>;
    originColumns: IColumn[];
    tableFullData: IRecord[];
    tableOriginData: IRecord[];
    tableFlatData: IRecord[];
    allTableData: IRecord[];
    allRowKeys: IRowKey[];
    allParentRowKeys: IRowKey[];
    deriveRowKeys: IDerivedRowKey[];
    fieldAuth: Record<string, IFieldAuthItem>;
    columnsDefined: boolean;
    scrollBarRef: Ref<ScrollbarInstance | undefined>;
    scrollXStore: {
        startIndex: number;
        endIndex: number;
        offsetSize: number;
        visibleSize: number;
    };
    scrollYStore: {
        startIndex: number;
        endIndex: number;
        offsetSize: number;
        visibleSize: number;
        rowHeight: number;
    };
    store: Store;
    resizeState: {
        width: number;
        height: number;
        winHeight: number;
    };
    handleState: {
        insert: InsertMode | null;
        remove: boolean;
    };
    summaries: Record<string, number>;
    treeTable: boolean;
    scrollXLoad: boolean;
    scrollYLoad: boolean;
    shouldToTop: boolean;
    selectionRows: IRecord[];
    recordsMap: Map<IRowKey, IRecord>;
    unMounted: boolean;
    isIE: boolean;
    tableVar: ITableRef;
};
export default useTableVar;
