/// <reference types="react" />
import { IBasicTableColumnsProps } from "../BasicTableColumns";
import { Moment } from "moment";
import { IConfigParams, TDatePickerFields, TInputNumberFields, TSelectFields } from "./common";
import TableColumns from "../TableColumns";
export default interface ITableColumns {
    /** 初始化表格所需的列的内容 会自动给原数据 增加 ellipsis: true,sorter: true,header: true,isChecked: true 的属性 */
    initTableColumns(config?: Array<string | IBasicTableColumnsProps> | IConfigParams): TableColumns;
    /** 配置那些列 显示的是日期格式 */
    setTableColumnToDatePicker(columns: Array<TDatePickerFields>): TableColumns;
    /** 配置那些列 显示的是下拉框 */
    setTableColumnToSelect(columns: Array<TSelectFields>): TableColumns;
    /** 配置那些列 显示的是数字类型格式的输入框 */
    setTableColumnToInputNumber(columns: Array<TInputNumberFields>): TableColumns;
    /** 配置那些列 显示的是AutoComplete组件格式的 可选择 可输入 */
    setTableColumnToAutoComplete(columns: Array<{
        value: string;
        data: Array<{
            value: string;
        }>;
        defaultValue?: Moment;
    }>): TableColumns;
    /** 配置那些列 显示的是特殊的输入框 */
    setTableColumnToSpecialInput(columns: Array<{
        value: string;
        valueType: string;
        valueEnum?: {
            prefix?: (updateValue: (inputVal: number | string) => void) => JSX.Element;
            suffix?: (updateValue: (inputVal: number | string) => void) => JSX.Element;
        };
    }>): TableColumns;
    /** 将在这里配置好的列 进行分组展示 */
    setSplitGroupTableColumns(columns: {
        title: string;
        columns: string[] | [][];
        order?: number;
    }[]): TableColumns;
    /** 配置那些列 是必填项 可自定义校验规则 */
    needToRules(columns: Array<string | {
        value: string;
        rules: Array<{
            required: boolean;
            validator: any;
        }>;
    }>): TableColumns;
    /** 配置那些列 是不可编辑状态 */
    needToDisabled(columns: (string | {
        value: string;
        disabled: boolean;
    })[]): TableColumns;
    /** 配置那些列 是可以导出的列 */
    needToExport(columns: string[]): TableColumns;
    /** 配置那些列 需要隐藏 但是还能导出 推荐使用 needToHide */
    needToHideInTableButExport(columns: string[]): TableColumns;
    /** 配置那些列 需要隐藏 */
    needToHide(columns: string[]): TableColumns;
    /** 配置那些列 需要固定 需要注意的是 要在initTableColumns把列的顺序放到最前面 或者 最后面 */
    needToFixed(columns: Array<{
        value: string;
        fixed: string;
    }>): TableColumns;
    /** 配置那些列 不需要排序 */
    noNeedToSorterIcon(columns: string[]): TableColumns;
    /** 配置那些列 不需要筛选面板 */
    noNeedToFilterIcon(columns: string[]): TableColumns;
}
