import type { ComputedRef, Ref } from 'vue';
import type { TableCustomRecord, TableProps,  SorterResult,  FetchParams } from '../types/table';
import { PaginationProps } from '../../pagination';
import type { Recordable } from '../../typings/global';
interface ActionType {
    getPaginationInfo: ComputedRef<boolean | PaginationProps>;
    setPagination: (info: Partial<PaginationProps>) => void;
    setLoading: (loading: boolean) => void;
    getFieldsValue: () => Recordable;
    clearSelectedRowKeys: () => void;
    getTabData: () => Recordable;
}
export declare function useDataSource(propsRef: ComputedRef<TableProps>, tableData: Ref<Recordable[]>, { getPaginationInfo, setPagination, setLoading, getFieldsValue, clearSelectedRowKeys, getTabData, }: ActionType, emit: (event: any, ...args: any[]) => void): {
    getDataSourceRef: ComputedRef<{
        [x: string]: any;
    }[]>;
    handleTableChange: (pagination: PaginationProps, filters: Recordable<string[]>, sorter: SorterResult) => void;
    updateTableData: (index: number, key: string, value: any) => Recordable;
    updateTableDataRecord: (rowKey: string | number, record: Recordable) => Recordable | void;
    deleteTableDataRecord: (rowKey: string | number | string[] | number[]) => void;
    insertTableDataRecord: (record: Recordable, index?: number | undefined) => Recordable | void;
    setTableData: <T extends Recordable<any>>(values: T[]) => void;
    getDataSource: <T_1 = Recordable<any>>() => T_1[];
    getRawDataSource: <T_2 = Recordable<any>>() => T_2[];
    getRowKeyRef: ComputedRef<string | ((record: TableCustomRecord<any>) => string) | undefined>;
    getAutoCreateKeyRef: ComputedRef<boolean | undefined>;
    fetch: (params?: FetchParams | undefined) => any;
    reload: (opt?: FetchParams | undefined) => Promise<any>;
    findTableDataRecord: (rowKey: string | number) => Recordable | void;
};
export {};
