/// <reference types="react" />
import { IBasicTableColumnsProps } from "./BasicTableColumns";
import { ITableColumns, IConfigParams, TSelectFields, TInputNumberFields, TDatePickerFields } from "./inter/common";
import { Moment } from "moment";
export default abstract class TableColumns implements ITableColumns {
    protected needColumns: any[];
    protected setNeedColumns(needColumns: object[]): void;
    protected getNeedColumns(): object[];
    initTableColumns: (config: Array<string | IBasicTableColumnsProps> | IConfigParams) => this;
    /**
     * 配置 table columns中 哪些列是日期选择模式
     * 使用到dateTs时 format统一为时间戳格式
     * @param columns
     */
    setTableColumnToDatePicker: (columns: Array<TDatePickerFields>) => this;
    /**
     * 配置 Table columns中 哪些列是选择框Select
     * @param columns
     * @public
     */
    setTableColumnToSelect: (columns: Array<TSelectFields>) => this;
    /**
     * 配置 Table columns中 哪些列是InputNumber的列
     * @param columns
     */
    setTableColumnToInputNumber: (columns: Array<TInputNumberFields>) => this;
    /**
     * 行元素是自动填充加选择的模式
     * @param columns
     */
    setTableColumnToAutoComplete: (columns: Array<{
        value: string;
        data: Array<{
            value: string;
        }>;
        defaultValue?: Moment;
    }>) => this;
    /**
     * 配置 Table columns中 哪些列是自定义的可以输入特殊字符的input的列
     * @param columns
     */
    setTableColumnToSpecialInput: (columns: {
        value: string;
        valueType: string;
        valueEnum?: {
            prefix?: (updateValue: (inputVal: number | string) => void) => JSX.Element;
            suffix?: (updateValue: (inputVal: number | string) => void) => JSX.Element;
        };
    }[]) => this;
    /**
     * 对表单的数据进行 分组展示 带标题
     * 一般是按照业务的需求将需要填报的列放到一起展示 并给出标题 默认是 基础数据
     * @param columns
     */
    setSplitGroupTableColumns: (columns: {
        title: string;
        columns: string[] | [][];
        order?: number;
    }[]) => this;
    /**
     * columns里的列是要去校验的列
     * @param columns
     * @param selfRules 自定义校验规则
     */
    needToRules: (columns: Array<string | {
        value: string;
        rules: Array<{
            required: boolean;
            validator: any;
        }>;
    }>) => this;
    /**
     * columns里的列是需要设置成disable的列
     * @param columns
     */
    needToDisabled: (columns: (string | {
        value: string;
        disabled: boolean;
    })[]) => this;
    /**
     * columns里的列是需要导出的列
     * @param columns
     * @public
     */
    needToExport: (columns: string[]) => this;
    /**
     * columns里的列 哪些不需要在Table显示 但是还需要导出的
     * @param columns
     * @public
     */
    needToHideInTableButExport: (columns: string[]) => this;
    /**
     * columns里的列 哪些不需要在Table显示 但是还需要导出的
     * @param columns
     * @public
     */
    needToHide: (columns: string[]) => this;
    /**
     * columns里的列是需要设置成fixed
     * @param columns
     * @public
     */
    needToFixed: (columns: Array<{
        value: string;
        fixed: string;
    }>) => this;
    /**
     * 不需要 排序图标
     * @param columns
     */
    noNeedToSorterIcon: (columns: string[]) => this;
    /**
     * 不需要 过滤 图标
     * @param columns
     */
    noNeedToFilterIcon: (columns: string[]) => this;
}
