import React, { ReactNode } from "react";
import { RadioButtonType, RowSelectionProps, TTableRef } from "../../table";
import { Pagination } from "../../pagination";
export declare type TableRefMethod = {
    reloadTable: () => void;
};
export declare type TableRef = {
    current: TableRefMethod;
};
declare type TTableDefaultFieldRequired = {
    sort: string;
    order: string;
};
declare type TTableDefaultField<T> = {
    [K in keyof T]: string;
};
export interface ICrudTableProps<RecordType> {
    /** ref 操控表格内的一些方法 比如;reloadTable 刷新表格 */
    ref?: TableRef;
    /** 行唯一值 */
    rowKey: (record: object) => string | string;
    /** 表格显示列：表头、分屏、平铺都在这里配置 包括筛选项 */
    columns: any[];
    /** 数据源 启动此数据源 说明接口不需要分页查询 如果使用该属性，说明不是使用 request 的属性做的查询，是在 useEffect 里查询好了，再把结果放到这里展示的方式，所以如果使用了该属性，就不能用 request 属性 */
    dataSource?: any[] | undefined;
    /** 表头查询的request 请求 用户自定义自己的请求 需要配合 tableDefaultField来使用 使用了该属性，就不能用 dataSource 属性 */
    request?: (page: {
        offset: number;
        limit: number;
    }, filters: {
        Key: string;
        Val: string;
        Operator?: string;
    }[], sorter: {
        sort: string;
        order: string;
    }, noFilters: any) => Promise<object> | undefined;
    /** Table表格 col 当前列的信息 page 分页所需 filters: 过滤所需 sorter：排序所需 表头列的筛选请求事件 */
    requestCellFilter?: (page: any, filters: any[], sorter: any, col: any, noFilters: any) => Promise<object> | undefined;
    /** 批量选中行之后的需要执行的按钮操作 */
    selectedRowsToolbar: (selectedRows?: any[], reloadTable?: (filters?: {
        Key: string;
        Val: string;
        Operator?: string;
    }[], noFilters?: any) => void) => any[];
    /** 拖拽后停止拿到改变的列 */
    onResizeStop?: (type: RadioButtonType, { pageSize, tableSize, changeColumns, }: {
        pageSize: any;
        tableSize: any;
        changeColumns: any;
    }) => void;
    /** 自定义标题显示组件 */
    renderSelfHeader?: (tableRef: TTableRef) => React.ReactNode;
    /** 筛选位置的 Toolbar 自定义显示组件 */
    renderSelfToolbar?: (reloadTable: (filters?: {
        Key: string;
        Val: string;
        Operator?: string;
    }[], noFilters?: any) => void) => React.ReactNode;
    /** 表格默认大小 */
    defaultTableSize?: 'small' | 'middle' | 'large';
    /** 默认每页显示的数量 */
    defaultPageSize?: number;
    /** 同原Table 的rowSelection 用法一致，内涵 callback方法 */
    rowSelection?: RowSelectionProps<RecordType>;
    /** 默认查询的条件 在filter外面 */
    tableDefaultField?: TTableDefaultField<TTableDefaultFieldRequired>;
    /** 默认查询的条件 在filter中的 */
    tableDefaultFilter?: {
        Key: string;
        Val: string;
        Operator?: string;
    }[];
    /** 表格内的高度 默认{x: getScrollX(showColumns), y: selectedRows.length > 0 ? 'calc(100vh - 330px)' :'calc(100vh - 270px)'} */
    scroll?: {
        x?: number | string;
        y?: number | string;
    } | undefined;
    /** 表格表头是否吸顶 默认true */
    sticky?: boolean;
    /** 表格底部的内容 */
    footer?: () => ReactNode;
    /** 表格行样式 同Table的 rowClassName 用法一致 */
    rowClassName?: (record: any, index: number) => string;
    /** 分页的一些配置 */
    pagination?: Pagination;
    /** 分页、排序、筛选变化时触发 */
    onChange?: (pagination: any, filters: any, sorter: any) => void | undefined;
    /** 是否不需要 右侧 reload 图标 */
    noReloadIcon: boolean;
}
/**
 * BasicTable
 * 该表格 是在 antd 的 Table表格上做了一层封装
 * 是为了 统一表格的样式，封装的表格 会自带筛选 和 排序
 */
declare const Table: React.FC<ICrudTableProps<any>>;
export default Table;
