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>;
    tableData: Ref<ITableState['tableData']>;
    tableColumns: ComputedRef<IColumn[]>;
    flattenColumns: ComputedRef<IColumn[]>;
    pagination: Ref<IPagination>;
    layout: Ref<ITableState['layout']>;
    scrollY: Ref<boolean>;
    filters: Ref<IFilter>;
    sorter: Ref<ISorter>;
    superFilters: Ref<ISuperFilter[]>;
    fetchParams: ComputedRef<IFetchParams>;
    totalRow: Ref<ITableState['totalRow']>;
    selectionKeys: Ref<IRowKey[]>;
    rowExpandedKeys: Ref<IRowKey[]>;
    highlightKey: Ref<IRowKey>;
    summationColumns: ComputedRef<IColumn[]>;
    shouldUpdateHeight: ComputedRef<boolean>;
    isFetch: ComputedRef<boolean>;
    isTreeTable: ComputedRef<boolean>;
    isWebPagination: ComputedRef<boolean>;
    isScrollPagination: ComputedRef<boolean>;
    isServiceSummation: ComputedRef<boolean>;
    isGroupSubtotal: ComputedRef<boolean>;
    doLayout: () => void;
    setTotalRow: (value: number) => void;
    setTableData: (records: IRecord[]) => void;
    setTableFlatColumns: (columns: IColumn[]) => void;
    setTableFullData: (records: IRecord[]) => void;
    setTableOriginData: (records: IRecord[]) => void;
    setTableFlatData: (records: IRecord[]) => void;
    setAllTableData: (records: IRecord[]) => void;
    setDeriveRowKeys: (records: IRecord[]) => void;
    setPagination: (pagination: IPagination) => void;
    setSpinning: (value: boolean) => void;
    setSorter: (sorter: ITableState['sorter']) => void;
    setFilters: (sorter: ITableState['filters']) => 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;
    setScrollXStore: (option: ITableRef['scrollXStore']) => void;
    setScrollYStore: (option: ITableRef['scrollYStore']) => void;
    computeVirtualX: (sl: number, tableWidth: number) => {
        toVisibleIndex: number;
        visibleSize: number;
    };
    computeVirtualY: (st: number, rowHeight: number) => {
        toVisibleIndex: number;
    };
    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;
    setRecordsMap: (key: IRowKey, value: IRecord) => void;
    resetTableScroll: () => void;
    clearElementStore: () => void;
    clearRecordsMap: () => void;
};
declare const useTableCore: <T extends ITableProps>(props: T, extra: IExtra) => {
    initialTable: () => void;
    checkDataIndex: () => void;
    createTableFullData: (list: IRecord[]) => void;
    getTableData: () => Promise<void>;
    handleTableData: (dataList: IRecord[]) => void;
    createWebPageData: () => IRecord<any>[];
    createTableData: (list: IRecord[]) => void;
    createGroupData: (list: IRecord[]) => IRecord<any>[];
    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 }: IPagination) => void;
    triggerScrollXEvent: (sl: number) => void;
    triggerScrollYEvent: (st: number) => void;
    scrollBottomDebouncer: (ev: Event) => void;
    getTableDataForDepd: () => Ref<IRecord<any>[], IRecord<any>[]>;
    clearTableSorter: () => void;
    clearTableFilter: () => void;
    clearSuperFilters: () => void;
    clearRowSelection: () => void;
    clearRowHighlight: () => void;
    clearTableLog: () => void;
    destroy: () => void;
};
export default useTableCore;
