import { ColProps, FormItemProps } from 'antdv-next';
import { DefineComponent, DefineSetupFnComponent, VNodeChild } from 'vue';
import { JSX } from 'vue/jsx-runtime';
import { AutoCompleteConfig, CascaderConfig, CheckboxGroupConfig, DatePickerConfig, InputConfig, InputNumberConfig, MonthPickerConfig, PasswordConfig, RadioGroupConfig, RangePickerConfig, RateConfig, SelectConfig, SelectorConfig, SliderConfig, SwitchConfig, TextareaConfig, TimePickerConfig, UploadConfig, WeekPickerConfig } from './formItem';
import { StdTableColumn } from './index';
export type FormItemType = 'input' | 'password' | 'inputNumber' | 'select' | 'autoComplete' | 'selector' | 'date' | 'datetime' | 'year' | 'month' | 'week' | 'time' | 'textarea' | 'radioGroup' | 'checkboxGroup' | 'switch' | 'rate' | 'slider' | 'upload' | 'cascader' | 'transfer' | 'dateRange' | 'datetimeRange' | 'yearRange' | 'monthRange' | 'weekRange' | 'timeRange' | ((context: {
    formData: any;
    column: StdTableColumn;
    config: Record<any, any>;
    mode: 'edit' | 'add';
}) => VNodeChild) | JSX.Element | VNodeChild | DefineComponent<any, any, any> | DefineSetupFnComponent<any, any, any>;
export type StdFormItemConfig = Omit<FormItemProps, 'required'> & {
    name?: string | string[];
    label?: string | (() => string);
    hiddenLabelInEdit?: boolean;
    hiddenLabelInSearch?: boolean;
    hiddenLabelInDetail?: boolean;
    required?: boolean | ((context: {
        formData: Record<string, any>;
    }) => boolean);
};
export interface StdFormConfig extends Record<any, any> {
    type: FormItemType;
    defaultValue?: any;
    valueKey?: string;
    col?: ColProps;
    showInForm?: boolean | ((context: {
        formData: Record<string, any>;
    }) => boolean);
    disabled?: boolean | ((context: {
        formData: Record<string, any>;
    }) => boolean);
    required?: boolean | ((context: {
        formData: Record<string, any>;
    }) => boolean);
    rules?: FormItemProps['rules'];
    password?: PasswordConfig;
    input?: InputConfig;
    inputNumber?: InputNumberConfig;
    textarea?: TextareaConfig;
    select?: SelectConfig;
    autoComplete?: AutoCompleteConfig;
    selector?: SelectorConfig;
    cascader?: CascaderConfig;
    date?: DatePickerConfig;
    datetime?: DatePickerConfig;
    year?: DatePickerConfig;
    week?: WeekPickerConfig;
    month?: MonthPickerConfig;
    time?: TimePickerConfig;
    dateRange?: RangePickerConfig;
    datetimeRange?: RangePickerConfig;
    yearRange?: RangePickerConfig;
    monthRange?: RangePickerConfig;
    weekRange?: RangePickerConfig;
    timeRange?: RangePickerConfig;
    radioGroup?: RadioGroupConfig;
    checkboxGroup?: CheckboxGroupConfig;
    rate?: RateConfig;
    slider?: SliderConfig;
    switch?: SwitchConfig;
    transfer?: TimePickerConfig;
    upload?: UploadConfig;
    customComponent?: Record<string | number | symbol, any>;
    dependencies?: string[];
    onChange?: (value: any, formData: Record<string, any>, dependencies: Record<string, any>) => void;
    formItem?: StdFormItemConfig;
}
