/// <reference types="react" />
import { IBasicEditableColumnsProps } from "./BasicEditableColumns";
import { IConfigParams, TEditableDataPickerFields, TEditableInputNumberFields, TEditableSelectFields } from "./inter/common";
import { Moment } from "moment";
import IEditableColumns from "./inter/IEditableColumns";
export default abstract class EditableColumns implements IEditableColumns {
    protected needColumns: any[];
    protected setNeedColumns(needColumns: object[]): void;
    protected getNeedColumns(): object[];
    /**
     * 初始化 表格数据
     * @param config 初始化表格的列时，在这里配置哪些列需要显示
     * @public
     */
    initTableColumns: (config: Array<string | IBasicEditableColumnsProps> | IConfigParams) => this;
    /**
     * 配置 table columns中 哪些列是日期选择模式 valueType: date 日期类型 | dateRange 日期区间 | dateTime 时间 | time 时间
     * 使用到dateTs时 format统一为时间戳格式
     * @param columns
     * @public
     */
    setTableColumnToDatePicker: (columns: Array<TEditableDataPickerFields>) => this;
    /**
     * 配置 table columns中 哪些列是选择框Select  valueType: radio 单选框 | select 下拉单选 | filterSelect 带筛选的下拉单选 | radioButton 单选按钮 | multiple 下拉多选
     * @param columns
     * @public
     */
    setTableColumnToSelect: (columns: Array<TEditableSelectFields>) => this;
    /**
     * 行元素是自动填充加选择的模式
     * @param columns
     * @public
     */
    setTableColumnToAutoComplete: (columns: Array<{
        value: string;
        data: Array<{
            value: string;
        }>;
        defaultValue?: Moment;
        disabled?: boolean;
    }>) => this;
    /**
     * 行内元素是下拉表格的模式
     * @param columns
     * @public
     */
    setTableColumnToSearchTable: (columns: Array<{
        value: string;
        data: {
            dispatchUrl: string;
            tableColumns: any[];
            sortOrder: {
                sort: string;
                order: string;
            };
            rowKey: string;
            showRowKey?: string;
            operator?: any;
            tableDefaultField?: any;
            rowSelection?: {
                type: string;
            };
        };
    }>) => this;
    /**
     * 配置 table columns中 哪些列是InputNumber的列 valueType: money 金额 | digit 数字 | second 时间数字 | percent 百分比
     * @param columns
     * @public
     */
    setTableColumnToInputNumber: (columns: Array<TEditableInputNumberFields>) => this;
    /**
     * 配置 table columns中 哪些列是自定义的可以输入特殊字符的input的列 prefix 前缀配置| suffix 后缀配置
     * @param columns
     * @public
     */
    setTableColumnToSpecialInput: (columns: {
        value: string;
        valueType: 'specialInput';
        valueEnum?: {
            prefix?: (updateValue: (inputVal: number | string) => void) => JSX.Element;
            suffix?: (updateValue: (inputVal: number | string) => void) => JSX.Element;
        };
    }[]) => this;
    /**
     * 设置编辑表格的哪些列需要批量修改功能：批量修改组件为Select选择框的
     * @param columns
     */
    setEditTableHeaderTitleBatchIconToSelect: (columns: {
        value: string;
        name: string;
        valueAlias?: string;
        data: object[] | [];
        defaultValue?: string | number;
        showTableColumns: string[];
        onChange?: any;
    }[]) => this;
    /**
     * 设置编辑表格的哪些列需要批量修改功能：批量修改组件为Select选择框的
     * @param columns
     */
    setEditTableHeaderTitleBatchIconToMultiSelect: (columns: {
        value: string;
        name: string;
        valueAlias?: string;
        data: object[] | [];
        defaultValue?: string | number;
        showTableColumns: string[];
    }[]) => this;
    /**
     * 设置编辑表格的哪些列需要批量修改功能：批量修改组件为AutoComplete选择框的
     * @param columns
     */
    setEditTableHeaderTitleBatchIconToAutoComplete: (columns: {
        value: string;
        name: string;
        valueAlias?: string;
        data: object[] | [];
        defaultValue?: string | number;
        showTableColumns: string[];
    }[]) => this;
    /**
     * 设置编辑表格的哪些列需要批量修改功能：批量修改组件为Input选择框的
     * @param columns
     */
    setEditTableHeaderTitleBatchIconToInput: (columns: {
        value: string;
        defaultValue?: string | number;
        showTableColumns: string[];
    }[]) => this;
    /**
     * 设置编辑表格的哪些列需要批量修改功能：批量修改组件为DatePicker选择框的
     * @param columns
     */
    setEditTableHeaderTitleBatchIconToDatePicker: (columns: {
        value: string;
        defaultValue?: Moment;
        showTableColumns: string[];
    }[]) => this;
    /**
     * 设置编辑表格的哪些列需要批量修改功能：批量修改组件为Input选择框的
     * @param columns
     */
    setEditTableHeaderTitleBatchIconToInputNumber: (columns: {
        value: string;
        defaultValue?: number;
        min?: number;
        max?: number;
        showTableColumns: string[];
    }[]) => this;
    /**
     * columns里的列是要去校验的列
     * @param columns
     * @param selfRules 自定义校验规则
     * @public
     */
    needToRules: (columns: Array<string | {
        value: string;
        rules: Array<{
            required: boolean;
            validator: any;
        }>;
    }>) => this;
    /**
     * columns里的列 哪些不需要在Table显示 但是还需要导出的
     * @param columns
     * @public
     */
    needToHideInTableButExport: (columns: string[]) => this;
    /**
     * columns里的列是需要设置成fixed
     * @param columns
     * @public
     */
    needToFixed: (columns: Array<{
        value: string;
        fixed: string;
    }>) => this;
    /**
     * columns里的列是 不需要导出的列
     * @param columns
     * @public
     */
    noNeedToExport: (columns: string[]) => this;
    /**
     * 表格模式下的编辑列 哪些列不允许编辑
     * string 类型是：BasicTableTask用
     * object 类型是：BasicEditableProTable用
     * @param columns
     * @public
     */
    noNeedToEditable: (columns: (string | {
        value: string;
        editableFunc: (text: any, record: any, index?: number) => boolean;
    })[]) => this;
    /**
     * 表格模式下的编辑列 哪些列允许编辑
     * string 类型是：BasicTableTask用
     * object 类型是：BasicEditableProTable用
     * @param columns
     * @public
     */
    needToEditable: (columns: (string | {
        value: string;
        editableFunc: (text: any, record: any, index?: number) => boolean;
    })[]) => this;
}
