import { Ref } from 'vue';
import type { IFilter, IMergedCell, IPagination, IRecord, IRowKey, ISorter, ISuperFilter, ITableProps } from '../table/types';
export type ITableState = {
    tableFlatData: IRecord[];
    filters: IFilter;
    sorter: ISorter;
    superFilters: ISuperFilter[];
    pagination: IPagination;
    selectionKeys: IRowKey[];
    invalidRowKeys: IRowKey[];
    rowExpandedKeys: IRowKey[];
    highlightKey: IRowKey;
    mergedTdCells: IMergedCell[];
    layout: {
        gutterWidth: number;
        tableWidth: number;
        tableBodyWidth: number;
        tableBodyHeight: number;
        viewportHeight: number;
        headerHeight: number;
        footerHeight: number;
        tableAutoHeight: number;
        tableFullHeight: number;
    };
    permission: {
        export: boolean;
        import: boolean;
        print: boolean;
    };
    spinning: boolean;
    isPingLeft: boolean;
    isPingRight: boolean;
    isFullScreen: boolean;
};
declare const useTableRef: <T extends ITableProps>(props: T) => {
    tableFlatData: Ref<IRecord<any>[], IRecord<any>[]>;
    setTableFlatData: (val: IRecord[]) => void;
    filters: Ref<IFilter, IFilter>;
    setFilters: (val: IFilter, forceUpdate?: boolean) => void;
    sorter: Ref<ISorter, ISorter>;
    setSorter: (val: ISorter, forceUpdate?: boolean) => void;
    superFilters: Ref<{
        type: string;
        bracketLeft: string;
        fieldName: string;
        expression: string;
        value: any;
        bracketRight: string;
        logic: string;
    }[], ISuperFilter[] | {
        type: string;
        bracketLeft: string;
        fieldName: string;
        expression: string;
        value: any;
        bracketRight: string;
        logic: string;
    }[]>;
    setSuperFilters: (val: ISuperFilter[]) => void;
    pagination: Ref<{
        total: number;
        current: number;
        pageSize: number;
    }, Required<Pick<import("../table/types").IPaginationConfig, "total" | "current" | "pageSize">> | {
        total: number;
        current: number;
        pageSize: number;
    }>;
    setPagination: (val: ITableState['pagination']) => void;
    selectionKeys: Ref<(string | number)[], (string | number)[]>;
    setSelectionKeys: (val: IRowKey[]) => void;
    rowExpandedKeys: Ref<(string | number)[], (string | number)[]>;
    setRowExpandedKeys: (val: IRowKey[]) => void;
    highlightKey: Ref<string | number, string | number>;
    setHighlightKey: (val: IRowKey) => void;
    invalidRowKeys: Ref<(string | number)[], (string | number)[]>;
    setInvalidRowKeys: (rowKeys: IRowKey[]) => void;
    mergedTdCells: Ref<IMergedCell[], IMergedCell[]>;
    setMergedCells: (val: IMergedCell[] | undefined) => void;
    layout: Ref<{
        gutterWidth: number;
        tableWidth: number;
        tableBodyWidth: number;
        tableBodyHeight: number;
        viewportHeight: number;
        headerHeight: number;
        footerHeight: number;
        tableAutoHeight: number;
        tableFullHeight: number;
    }, {
        gutterWidth: number;
        tableWidth: number;
        tableBodyWidth: number;
        tableBodyHeight: number;
        viewportHeight: number;
        headerHeight: number;
        footerHeight: number;
        tableAutoHeight: number;
        tableFullHeight: number;
    } | {
        gutterWidth: number;
        tableWidth: number;
        tableBodyWidth: number;
        tableBodyHeight: number;
        viewportHeight: number;
        headerHeight: number;
        footerHeight: number;
        tableAutoHeight: number;
        tableFullHeight: number;
    }>;
    permission: Ref<{
        export: boolean;
        import: boolean;
        print: boolean;
    }, {
        export: boolean;
        import: boolean;
        print: boolean;
    } | {
        export: boolean;
        import: boolean;
        print: boolean;
    }>;
    setPermission: <T_1 extends {
        export: boolean;
        import: boolean;
        print: boolean;
    }>(payload: T_1 | ((val: T_1) => T_1)) => T_1 | undefined;
    setLayout: (val: ITableState['layout']) => void;
    spinning: Ref<boolean, boolean>;
    setSpinning: (val: ITableState['spinning']) => void;
    isPingLeft: Ref<boolean, boolean>;
    setPingLeft: (val: ITableState['isPingLeft']) => void;
    isPingRight: Ref<boolean, boolean>;
    setPingRight: (val: ITableState['isPingRight']) => void;
    isFullScreen: Ref<boolean, boolean>;
    setFullScreen: (val: ITableState['isFullScreen']) => void;
    updateTableData: () => void;
};
export default useTableRef;
