/// <reference types="react" />
import { IBasicFormColumnsProps } from "../BasicFormColumns";
import FormColumns from "../FormColumns";
import { Moment } from "moment";
import { IConfigParams, TFormDatePickerFields, TFormSelectFields, TFromInputNumberFields } from "./common";
export default interface IFormColumns {
    /** 初始化表单所需的内容 会自动给原数据 增加 groupName: '基础信息', groupOrder: 0 的属性 */
    initFormColumns(config: Array<string | IBasicFormColumnsProps> | IConfigParams): FormColumns;
    /** 配置那些列 需要下拉选择的 */
    setFormColumnToSelect(columns: Array<TFormSelectFields>): FormColumns;
    /** 配置那些列 需要输入数字的 */
    setFormColumnToInputNumber(columns: Array<TFromInputNumberFields>): FormColumns;
    /** 配置那些列 需要日期格式的 */
    setFormColumnToDatePicker(columns: Array<TFormDatePickerFields>): FormColumns;
    /** 配置那些列 需要显示成AutoComplete 可输入 可选择的 */
    setFormColumnToAutoComplete(columns: Array<{
        value: string;
        data: Array<{
            value: string;
        }>;
        defaultValue?: Moment;
    }>): FormColumns;
    /** 配置那些列 需要显示成表单域TextArea的 */
    setFormColumnToInputTextArea(columns: Array<{
        value: string;
    }>): FormColumns;
    /** 配置那些列 是特殊的输入框的 */
    setFormColumnToSpecialInput(columns: Array<{
        value: string;
        valueType: string;
        valueEnum?: {
            prefix?: (updateValue: (inputVal: number | string) => void) => JSX.Element;
            suffix?: (updateValue: (inputVal: number | string) => void) => JSX.Element;
        };
    }>): FormColumns;
    /** 配置那些列 是需要自定义宽度的 */
    setFormColumnToSelfColSpan(columns: Array<{
        value: string;
        colSpan: number;
        labelCol?: object;
        wrapperCol?: object;
        showLabel?: boolean;
    }>): FormColumns;
    /** 配置那些列  是必填项 可自定义校验规则 */
    needToRules(columns: Array<string | {
        value: string;
        rules: Array<{
            required: boolean;
            validator: any;
        }>;
    }>): FormColumns;
    /** 配置那些列 需要隐藏 */
    needToHide(columns: string[]): FormColumns;
    /** 配置那些列 需要不可编辑的 */
    needToDisabled(columns: (string | {
        value: string;
        disabled: boolean;
    })[]): FormColumns;
}
