import React from 'react';
import { IResult } from 'src/4common/http';
import IBasePro from '../0form/abase';
import { IPropertyComponent } from '../ztranslate';
declare const TableType: {
    bordered: boolean;
    cellBordered: boolean;
    isorder: boolean;
    size: string;
    data: never[];
    showtips: number;
    tablePageData: {
        size: string;
    };
    rowKey: string;
    tableColumn: {
        resizable: boolean;
        align: string;
        verticalAlign: string;
    };
    tableColumnGroup: {
        align: string;
        verticalAlign: string;
    };
    tableCell: {};
};
interface Table {
    /** 是否固定表头 - rsuite Table.affixHeader */
    affixHeader?: boolean | number;
    /** 是否固定水平滚动条 - rsuite Table.affixHorizontalScrollbar */
    affixHorizontalScrollbar?: boolean | number;
    /** 是否自动设置高度 - rsuite Table.autoHeight */
    autoHeight?: boolean;
    /** 表格body的ref - rsuite Table.bodyRef */
    bodyRef?: React.Ref<any>;
    /** 是否显示外边框 - rsuite Table.bordered */
    bordered?: boolean;
    /** 是否显示单元格边框 - rsuite Table.cellBordered */
    cellBordered?: boolean;
    /** 表格数据 - rsuite Table.data */
    data?: any;
    /** 是否默认展开所有行 - rsuite Table.defaultExpandAllRows */
    defaultExpandAllRows?: boolean;
    /** 默认展开的行键数组 - rsuite Table.defaultExpandedRowKeys */
    defaultExpandedRowKeys?: string;
    /** 默认排序类型 - rsuite Table.defaultSortType: 'asc' | 'desc' */
    defaultSortType?: string;
    /** 已选择的行数据 - rsuite Table.selectedRows */
    selectedRows?: any[];
    /** 展开的行键数组(受控) - rsuite Table.expandedRowKeys */
    expandedRowKeys?: string;
    /** 表头高度 - rsuite Table.headerHeight */
    headerHeight?: number;
    /** 表格高度 - rsuite Table.height */
    height?: number;
    /** 是否显示行悬停效果 - rsuite Table.hover */
    hover?: boolean;
    /** 是否为树形表格 - rsuite Table.isTree */
    isTree?: boolean;
    /** 加载状态 - rsuite Table.loading */
    loading?: boolean;
    /** 本地化配置 - rsuite Table.locale */
    locale?: any;
    /** 最小高度 - rsuite Table.minHeight */
    minHeight?: number;
    /** 是否显示提示信息 */
    showtips?: number;
    /** 数据更新事件 - rsuite Table.onDataUpdated */
    onDataUpdated?: (nextData: object[], scrollTo: (coord: {
        x: number;
        y: number;
    }) => void) => void;
    /** 展开状态改变事件 - rsuite Table.onExpandChange */
    onExpandChange?: (expanded: boolean, rowData: object) => void;
    /** 行点击事件 - rsuite Table.onRowClick */
    onRowClick?: (rowData: object, e?: any) => void;
    /** 滚动事件 - rsuite Table.onScroll */
    onScroll?: (scrollX: object, scrollY: object) => void;
    /**
     * 对单列进行排序处理
     * 如果外部不用关心排序方式和排序字段的状态,则在排序成功后
     */
    /** 排序列事件 - rsuite Table.onSortColumn */
    onSortColumn?: (dataKey: string, sortType: string, updateInnerSortCoumnCall?: (res: IResult) => void) => void;
    /** 复选框勾选事件 */
    onCheckBox?: (rowDatas: any[], checked: boolean, e?: any) => void;
    /** 单选框选择事件 */
    onRadioBox?: (rowDatas: any[], checked: boolean, e?: any) => void;
    /** 自定义渲染空状态 - rsuite Table.renderEmpty */
    renderEmpty?: (info: React.ReactNode) => React.ReactNode;
    /** 自定义渲染加载状态 - rsuite Table.renderLoading */
    renderLoading?: (loading: React.ReactNode) => React.ReactNode;
    /** 自定义渲染行展开内容 - rsuite Table.renderRowExpanded */
    renderRowExpanded?: (rowDate?: Object) => React.ReactNode;
    /** 自定义渲染树形展开图标 - rsuite Table.renderTreeToggle */
    renderTreeToggle?: (icon: React.ReactNode, rowData: object, expanded: boolean) => React.ReactNode;
    /** 行样式类名 - rsuite Table.rowClassName */
    rowClassName?: string | ((rowData: object) => string);
    /** 列样式类名 */
    colClassName?: string | ((rowData: object, name: string, field: object) => string);
    /** 行样式 - rsuite Table.rowStyle */
    rowStyle?: object | ((rowData: object, name: string, field: object, index: any) => string);
    /** 表头样式类名 - rsuite Table.headerClassName */
    headerClassName?: Object | ((field: object) => string);
    /** 列样式 */
    colStyle?: object | ((rowData: object, name: string, field: object, index: any) => string);
    /** 列点击事件 */
    onColClick?: (value: any, rowData: object, name: string, field: object, index: number, target: any, e?: any) => void;
    /** 列双击事件 */
    onColDbClick?: (value: any, rowData: object, name: string, field: object, index: number, target: any, e?: any) => void;
    /** 行展开高度 - rsuite Table.rowExpandedHeight */
    rowExpandedHeight?: number;
    /** 行高 - rsuite Table.rowHeight */
    rowHeight?: number | ((rowData: object) => number);
    /** 行数据唯一键字段 - rsuite Table.rowKey */
    rowKey?: string;
    /** 是否应该更新滚动位置 - rsuite Table.shouldUpdateScroll */
    shouldUpdateScroll?: boolean;
    /** 是否显示表头 - rsuite Table.showHeader */
    showHeader?: boolean;
    /** 排序列名(受控) - rsuite Table.sortColumn */
    sortColumn?: string;
    /** 排序类型(受控) - rsuite Table.sortType: 'asc' | 'desc' */
    sortType?: string;
    /** 是否启用虚拟化 - rsuite Table.virtualized */
    virtualized?: boolean;
    /** 表格宽度 - rsuite Table.width */
    width?: number;
    /** 是否自动换行 - rsuite Table.wordWrap */
    wordWrap?: boolean;
    /** 操作列配置 */
    operation?: any;
    /** 操作列是否悬浮 */
    operationFixed?: any;
    /** 是否显示序号列 */
    isorder?: boolean;
    /** 是否可编辑 */
    editable?: boolean | number;
    /** 是否将checkbox进行fixed */
    fixedCheckBox?: string;
    /** 编辑触发的操作 */
    onEditor?: (value: any, name: any, row: any, field: any, event: any) => void;
    retConfigState?: UpdateState;
}
interface TableColumn {
    /** 列对齐方式 - rsuite Table.Column.align: 'left' | 'center' | 'right' */
    align?: string;
    /** 列跨距 - rsuite Table.Column.colSpan */
    colSpan?: number;
    /** 是否固定列 - rsuite Table.Column.fixed: 'left' | 'right' | boolean */
    fixed?: boolean | string;
    /**  flexGrow属性，列宽自动撑开 - rsuite Table.Column.flexGrow */
    flexGrow?: number;
    /** 最小列宽 - rsuite Table.Column.minWidth */
    minWidth?: number;
    /** 列宽改变事件 - rsuite Table.Column.onResize */
    onResize?: (columnWidth?: number, dataKey?: string) => void;
    /** 是否可拖拽调整宽度 - rsuite Table.Column.resizable */
    resizable?: boolean;
    /** 是否可排序 - rsuite Table.Column.sortable */
    sortable?: boolean;
    /** 是否为树形列 - rsuite Table.Column.treeCol */
    treeCol?: boolean;
    /** 垂直对齐方式 - rsuite Table.Column.verticalAlign: 'top' | 'middle' | 'bottom' */
    verticalAlign?: string;
    /** 列宽 - rsuite Table.Column.width */
    width?: number;
    /** 格式化函数 - rsuite Table.Column.formatter */
    formatter: (rowData: any) => React.ReactNode;
}
interface TableColumnGroup {
    /** 列组对齐方式 - rsuite Table.ColumnGroup.align: 'left' | 'center' | 'right' */
    align?: string;
    /** 是否固定列组 - rsuite Table.ColumnGroup.fixed: 'left' | 'right' | boolean */
    fixed?: boolean | string;
    /** 垂直对齐方式 - rsuite Table.ColumnGroup.verticalAlign: 'top' | 'middle' | 'bottom' */
    verticalAlign?: string;
    /** 列组头部内容 - rsuite Table.ColumnGroup.header */
    header?: React.ReactNode;
}
interface TableCell {
    /** 数据字段名 */
    dataKey?: string;
    /** 行数据对象 */
    rowData?: object;
    /** 行索引 */
    rowIndex?: number;
}
interface TablePage {
    /** 当前页码 - rsuite Pagination.activePage */
    activePage?: number;
    /** 是否禁用 - rsuite Pagination.disabled */
    disabled?: boolean;
    /** 每页显示条数 - rsuite Pagination.displayLength */
    displayLength?: number;
    /** 是否显示首页按钮 - rsuite Pagination.first */
    first?: boolean;
    /** 是否显示末页按钮 - rsuite Pagination.last */
    last?: boolean;
    /** 每页条数选择配置 - rsuite Pagination.lengthMenu */
    lengthMenu?: any;
    /** 最大显示的按钮数 - rsuite Pagination.maxButtons */
    maxButtons?: number;
    /** 是否显示下一页按钮 - rsuite Pagination.next */
    next?: boolean;
    /** 每页条数改变事件 - rsuite Pagination.onChangeLength */
    onChangeLength?: (eventKey: number) => void;
    /** 页码改变事件 - rsuite Pagination.onChangePage */
    onChangePage?: (eventKey: number) => void;
    /** 是否显示上一页按钮 - rsuite Pagination.prev */
    prev?: boolean;
    /** 自定义渲染每页条数选择器 - rsuite Pagination.renderLengthMenu */
    renderLengthMenu?: (picker: React.ReactNode) => React.ReactNode;
    /** 自定义渲染总计信息 - rsuite Pagination.renderTotal */
    renderTotal?: (total: number, activePage: number) => React.ReactNode;
    /** 是否反向布局 - rsuite Pagination.reverse */
    reverse?: boolean;
    /** 是否显示信息 - rsuite Pagination.showInfo */
    showInfo?: boolean;
    /** 是否显示每页条数选择器 - rsuite Pagination.showLengthMenu */
    showLengthMenu?: boolean;
    /** 数据总数 - rsuite Pagination.total */
    total?: number;
}
interface UpdateState {
    renderIndex?: number;
    updateHeight?: number;
    updateField?: number;
}
interface ITablePro extends IBasePro {
    fields: any[];
    headerCellType?: IPropertyComponent;
    cellType?: IPropertyComponent;
    paginationType?: IPropertyComponent;
    columnType?: IPropertyComponent;
    columnGroupType?: IPropertyComponent;
    tableAttribute?: Table;
    tablePage?: TablePage;
    tableColumn?: TableColumn;
    tableColumnGroup?: TableColumnGroup;
    tableCell?: TableCell;
    showColumnSearch?: boolean;
    searchPro?: any;
    retConfigState?: UpdateState;
}
export default TableType;
export type { ITablePro, Table, TablePage, TableCell, TableColumn };
