import { Ref, ComputedRef } from 'vue';
import type { ITableRef } from './useTableVar';
import type { ITableState } from './useTableRef';
import type { getRowKeyType, IColumn, IFetchParams, IFieldAuthItem, IFilter, IPagination, IRecord, IRowKey, IRule, ISorter, ISuperFilter, ITableProps, IValidItem, TableBodyRef } from '../table/types';
import type { ComponentSize } from '../../../_utils/types';
type IExtra = {
    emit: (name: string, ...args: any[]) => void;
    getRowKey: getRowKeyType;
    tableVar: ITableRef;
    tableElementRef: Ref<HTMLElement | undefined>;
    tableBodyRef: Ref<TableBodyRef | undefined>;
    $size: ComputedRef<ComponentSize>;
    tableColumns: ComputedRef<IColumn[]>;
    flattenColumns: ComputedRef<IColumn[]>;
    pagination: Ref<IPagination>;
    layout: Ref<ITableState['layout']>;
    filters: Ref<IFilter>;
    sorter: Ref<ISorter>;
    superFilters: Ref<ISuperFilter[]>;
    fetchParams: ComputedRef<IFetchParams>;
    selectionKeys: Ref<IRowKey[]>;
    rowExpandedKeys: Ref<IRowKey[]>;
    highlightKey: Ref<IRowKey>;
    summationColumns: ComputedRef<IColumn[]>;
    shouldUpdateHeight: ComputedRef<boolean>;
    isFetch: ComputedRef<boolean>;
    isWebPagination: ComputedRef<boolean>;
    isScrollPagination: ComputedRef<boolean>;
    isServiceSummation: ComputedRef<boolean>;
    isGroupSubtotal: ComputedRef<boolean>;
    doLayout: () => void;
    setTableFlatData: (records: IRecord[]) => void;
    setTableFullData: (records: IRecord[]) => void;
    setTableOriginData: (records: IRecord[]) => void;
    setTableDataMaps: (records: IRecord[]) => void;
    setPagination: (pagination: IPagination) => void;
    setSpinning: (value: boolean) => void;
    setSorter: (sorter: ITableState['sorter'], forceUpdate?: boolean) => void;
    setFilters: (sorter: ITableState['filters'], forceUpdate?: boolean) => void;
    setSuperFilters: (options: ITableState['superFilters']) => void;
    setSelectionKeys: (rowKeys: IRowKey[]) => void;
    setRowExpandedKeys: (rowKeys: IRowKey[]) => void;
    setHighlightKey: (rowKey: IRowKey) => void;
    setSelectionRows: (records: IRecord[]) => void;
    setScrollXLoad: (value: boolean) => void;
    setScrollYLoad: (value: boolean) => void;
    setPingLeft: (value: boolean) => void;
    setPingRight: (value: boolean) => void;
    setFieldAuth: (key: string, value: IFieldAuthItem) => void;
    setResizeState: (option: ITableRef['resizeState']) => void;
    setSummaries: (option: ITableRef['summaries']) => void;
    setPermission: <T extends ITableState['permission']>(option: T | ((prev: T) => T)) => void;
    setUnMounted: (value: boolean) => void;
    resetTableScroll: () => void;
    createTableFocus: () => void;
    clearElementStore: () => void;
};
declare const useTableCore: <T extends ITableProps>(props: T, extra: IExtra) => {
    initialTable: () => void;
    checkDataIndex: () => void;
    createTableFullData: (list: IRecord[]) => void;
    createTableData: (list: IRecord[], fn?: ((list: IRecord[]) => IRecord[]) | undefined) => IRecord<any>[];
    getTableData: () => Promise<void>;
    createWebPageData: () => IRecord<any>[];
    createGroupData: (list: IRecord[]) => IRecord<any>[];
    createAllExpandedKeys: () => (string | number)[];
    setSelectionKeysEffect: (selectedKeys: IRowKey[]) => void;
    doFieldValidate: (rules: IRule[], val: unknown, rowKey: IRowKey, columnKey: string, columnTitle: string) => void;
    getTableLog: () => {
        required: IValidItem[];
        validate: IValidItem[];
        inserted: IRecord<any>[];
        updated: IRecord<any>[];
        removed: IRecord<any>[];
    };
    dataChange: () => void;
    tableChange: () => void;
    toLastPage: () => void;
    toFirstPage: () => void;
    getPageCount: () => number;
    pagerChangeHandle: ({ current, pageSize }: Omit<IPagination, 'total'>) => void;
    scrollBottomDebouncer: (ev: Event) => void;
    clearTableSorter: () => void;
    clearTableFilter: () => void;
    clearSuperFilters: () => void;
    clearRowSelection: () => void;
    clearRowHighlight: () => void;
    clearTableLog: () => void;
    destroy: () => void;
};
export default useTableCore;
