import { TextFieldProps } from './TextField';
import { MoneyFieldProps } from './MoneyField';
import { ImageFieldProps } from './ImageField';
import { DateFieldProps } from './DateField';
import { IndexFieldProps } from './IndexField';
import { PercentFieldProps } from './PercentField';
import { ProgressFieldProps } from './ProgressField';
import { ColorFieldProps } from './ColorField';
import { EnumFieldProps } from './EnumField';
type ExtendProps<T extends {
    value?: any;
}> = T & {
    /**
     * 自定义处理值。
     *
     * @param value 当前值。
     * @returns 处理后的值。
     */
    formatValue?: (value: any) => T['value'];
};
type BizFieldTextProps = {
    valueType: 'text';
} & ExtendProps<TextFieldProps>;
type BizFieldMoneyProps = {
    valueType: 'money';
} & ExtendProps<MoneyFieldProps>;
type BizFieldImageProps = {
    valueType: 'image';
} & ExtendProps<ImageFieldProps>;
type BizFieldDateProps = {
    valueType: DateFieldProps['type'];
} & ExtendProps<Omit<DateFieldProps, 'type'>>;
type BizFieldIndexProps = {
    valueType: 'index' | 'indexBorder';
} & ExtendProps<Omit<IndexFieldProps, 'bordered'>>;
type BizFieldProgressProps = {
    valueType: 'progress';
} & ExtendProps<ProgressFieldProps>;
type BizFieldPercentProps = {
    valueType: 'percent';
} & ExtendProps<PercentFieldProps>;
type BizFieldEnumProps<T = any> = {
    valueType: 'enum' | 'enumTag';
} & ExtendProps<Omit<EnumFieldProps<T>, 'type'>>;
type BizFieldColorProps = {
    valueType: 'color';
} & ExtendProps<ColorFieldProps>;
export type BizFieldProps<T = any> = BizFieldTextProps | BizFieldMoneyProps | BizFieldImageProps | BizFieldDateProps | BizFieldIndexProps | BizFieldProgressProps | BizFieldPercentProps | BizFieldEnumProps<T> | BizFieldColorProps | {
    value: T;
    valueType?: undefined;
    formatValue?: (value: any) => T;
};
export type BizFieldValueType = NonNullable<BizFieldProps['valueType']>;
type ExtendFieldProps<FieldProps extends BizFieldProps, DataType = any> = Pick<FieldProps, 'valueType'> & {
    field?: Partial<FieldProps> | ((value: any, record: DataType, index: number) => Partial<FieldProps>);
};
export type WithFieldProps<DataType = any> = ExtendFieldProps<BizFieldTextProps, DataType> | ExtendFieldProps<BizFieldMoneyProps, DataType> | ExtendFieldProps<BizFieldImageProps, DataType> | ExtendFieldProps<BizFieldDateProps, DataType> | ExtendFieldProps<BizFieldIndexProps, DataType> | ExtendFieldProps<BizFieldProgressProps, DataType> | ExtendFieldProps<BizFieldPercentProps, DataType> | ExtendFieldProps<BizFieldColorProps, DataType> | (ExtendFieldProps<BizFieldEnumProps<DataType>, DataType> & {
    valueEnum: BizFieldEnumProps<DataType>['valueEnum'];
}) | {
    valueType?: undefined;
    valueEnum?: BizFieldEnumProps<DataType>['valueEnum'];
    field?: BizFieldProps | ((value: any, record: DataType, index: number) => BizFieldProps);
};
export {};
