import { TableRowSelection } from '@aplus-frontend/antdv/lib/table/interface';
import { ComputedRef, Ref } from 'vue';
import { Recordable } from '../../type';
import { ApTableProps, ApTableRowSelection } from '../interface';
export interface RowSelectionReturnType<RecordType = any> {
    rowSelection: ComputedRef<TableRowSelection<RecordType>>;
    selectedRows: Ref<RecordType[]>;
    /**
     * 选中某行
     * @param item
     * @returns
     */
    select: (item: RecordType) => void;
    /**
     * 取消选中某行
     * @param item
     * @returns
     */
    unSelect: (item: RecordType) => void;
    /**
     * 某行是否被选中
     * @param item
     * @returns
     */
    isSelected: (item: RecordType) => boolean;
    /**
     * 选中当前所有数据
     * @returns
     */
    selectAll: () => void;
    /**
     * 取消选中当前所有数据
     * @returns
     */
    unSelectAll: () => void;
    /**
     * 清空所有选中
     * @returns
     */
    clearAll: () => void;
    /**
     * 切换某行的选中状态
     * @param item
     * @returns
     */
    toggleSelect: (item: RecordType) => void;
    /**
     * 多项选中
     * @param items
     * @returns
     */
    selectMulti: (items: RecordType[]) => void;
    /**
     * 多项反选
     * @param items
     * @returns
     */
    unSelectMulti: (items: RecordType[]) => void;
}
type RowSelectionParams<T> = Omit<ApTableRowSelection<T>, 'mode'> & {
    /**
     * 数据源（如果是后端分页，则表示当页数据，否则是全量数据）
     */
    dataSource: Ref<T[]>;
    /**
     * 同Table的rowkey
     */
    rowKey: ApTableProps['rowKey'];
};
declare const useTableRowSelection: <RecordType = Recordable>(props: RowSelectionParams<RecordType>) => RowSelectionReturnType<RecordType>;
export default useTableRowSelection;
