import { type FormProps, FormItemProps, FormRules } from 'element-plus';
export type TColLayout<T = number | string> = {
    span?: T;
    xs?: T;
    sm?: T;
    md?: T;
    ls?: T;
    lg?: T;
    xl?: T;
};
type TOtherOptions = {
    submit?: boolean;
    reset?: boolean;
    submitText?: string;
    resetText?: string;
    showSubmitIcon?: boolean;
};
export type TFormItemType = 'input' | 'inputNumber' | 'select' | 'treeSelect' | 'datepicker' | 'cascader' | 'switch' | 'checkbox' | 'radio' | 'upload' | 'customDatePicker' | 'search' | 'custom' | 'formButtons' | 'commonSelector' | 'commonInput';
export type TFormItemProps = {
    /** 避免field重复 */
    id?: number | string;
    /** 表单里面元素的类型 */
    type: TFormItemType;
    /** 对应v-model的字段值 */
    field?: string;
    /** 对应日期选择器的开始时间字段 */
    startTimeField?: string;
    /** 对应日期选择器的结束时间字段 */
    endTimeField?: string;
    /** 对应通用选择器的后缀输入框字段 */
    suffixInputField?: string;
    actions?: string;
    /** 是否隐藏不显示 */
    hidden?: boolean;
    /** 该项疑问 */
    /** formItem 样式 */
    itemStyle?: Record<string, any>;
    /** 响应式栏珊格 */
    colLayout?: TColLayout;
    /** 是否隐藏表单label（不占位置） */
    hiddenLabel?: boolean;
    /** element 属性 */
    attrs?: Record<string, any>;
    props?: Record<string, any>;
    /** 只适用于多选框 默认checkbox*/
    checkboxType?: 'checkbox' | 'button';
    /** 只适用于单选看 默认radio */
    radioType?: 'radio' | 'button';
    /** 需要对应element插槽名称 */
    slotsName?: Record<string, string>;
    /** 一般用于下拉框等需要的数据 */
    options?: Array<Record<string, any>>;
    /** 表单label，不填不显示，但是占位置 */
    label?: string;
    labelWidth?: string | number;
    /** 是否以行内形式展示校验信息  默认false*/
    inlineMessage?: boolean;
    /** 是否显示校验错误信息 默认显示（true） */
    showMessage?: boolean;
    /** 表单域标签的位置，如果值为 left 或者 right 时，则需要设置 label-width 默认right */
    labelPosition?: 'left' | 'right' | 'top';
    /** 其他选项 */
    otherOptions?: TOtherOptions;
};
export declare type IFormItems = TFormItemProps & Omit<FormItemProps, 'labelWidth' | 'inlineMessage' | 'showMessage' | 'labelPosition' | 'otherOptions'>;
export interface IRow {
    gutter?: number;
    justify?: 'start' | 'end' | 'center' | 'space-around' | 'space-between' | 'space-evenly';
    align?: 'top' | 'middle' | 'bottom';
    tag?: string;
}
export interface IForm {
    formItems: Array<IFormItems>;
    itemStyle?: Record<string, any>;
    /** 是否有展开按钮 */
    isFlexible?: boolean;
    flexible?: {
        /** 需要折叠字段 */
        foldField?: any[] | 'none';
        /** 默认展开 */
        unfold?: boolean;
    };
    rules?: FormRules;
    rowAttrs?: IRow;
    /** 是否用于查询 */
    colLayout?: TColLayout;
    labelWidth?: string;
    labelPosition?: 'left' | 'right' | 'top';
    /** 星号的位置 */
    requireAsteriskPosition?: 'left' | 'right';
    labelSuffix?: string;
    inline?: boolean;
    /** 是否在输入框中显示校验结果反馈图标 */
    statusIcon?: boolean;
    validateOnRuleChange?: boolean;
    hideRequiredAsterisk?: boolean;
    scrollToError?: boolean;
    disabled?: boolean;
    showMessage?: boolean;
    inlineMessage?: boolean;
    elSize?: 'small' | 'large' | 'default' | '' | string;
    otherOptions?: TOtherOptions;
}
export type IProps = IForm & {
    /** v-model 表单需要的数据 */
    modelValue: Record<string, any>;
} & Omit<FormProps, 'model' | 'labelPosition' | 'requireAsteriskPosition' | 'labelWidth' | 'labelSuffix' | 'inline' | 'inlineMessage' | 'statusIcon' | 'showMessage' | 'validateOnRuleChange' | 'hideRequiredAsterisk' | 'scrollToError' | 'disabled' | 'size'>;
export {};
