import { PlusRadioProps, PlusDatePickerProps, PlusInputTagProps, PlusFormProps } from 'plus-pro-components';
import { TimeSelectProps } from 'element-plus/es/components/time-select/src/time-select';
import { EpPropMergeType } from 'element-plus/es/utils';
import { PlusFormItemProps } from 'plus-pro-components/es/components/form-item';
import { LooseRequired } from '@vue/shared';
import { PlusColumn, FieldValues, FieldValueType, Mutable, RecordType, PropsItemType, OmitTypes, CascaderProps, OptionsType, RenderTypes, TableValueType, FormItemValueType, OptionsRow } from 'plus-pro-components/es/types';
import { RowProps, ColProps, ElTooltipProps, FormItemProps, ProgressFn, CascaderNode, InputAutoSize, AutocompleteProps, CheckboxGroupProps, ColorPickerProps, DatePickerProps, InputProps, InputNumberProps, RadioGroupProps, RateProps, ISelectProps, SliderProps, SwitchProps, TimePickerDefaultProps, TextProps, ImageProps, LinkProps, TagProps, ProgressProps, TableColumnCtx } from 'element-plus';
import { Ref, ComputedRef, DefineComponent, ComponentOptionsMixin, PublicProps, ExtractPropTypes, CSSProperties, PropType } from 'vue';

export interface PlusFormContentProps {
    modelValue?: FieldValues;
    hasLabel?: boolean;
    columns?: PlusColumn[];
    rowProps?: Partial<Mutable<RowProps>>;
    colProps?: Partial<Mutable<ColProps>>;
    /**
     * @desc 动画时长
     * @version v0.1.15
     */
    collapseDuration?: number;
    /**
     * @desc 是否开启折叠动画
     * @version v0.1.15
     */
    collapseTransition?: boolean;
    /**
     *  @version v0.1.18
     */
    clearable?: boolean;
}
export interface PlusFormContentEmits {
    (e: 'update:modelValue', values: FieldValues): void;
    (e: 'change', values: FieldValues, column: PlusColumn): void;
}
declare const _default: __VLS_WithTemplateSlots< DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PlusFormContentProps>, {
    modelValue: () => {};
    hasLabel: boolean;
    rowProps: () => {};
    colProps: () => {};
    columns: () => never[];
    collapseDuration: undefined;
    collapseTransition: undefined;
    clearable: boolean;
}>, {}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    "update:modelValue": (values: FieldValues) => void;
    change: (values: FieldValues, column: PlusColumn) => void;
}, string, PublicProps, Readonly< ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PlusFormContentProps>, {
    modelValue: () => {};
    hasLabel: boolean;
    rowProps: () => {};
    colProps: () => {};
    columns: () => never[];
    collapseDuration: undefined;
    collapseTransition: undefined;
    clearable: boolean;
}>>> & {
    onChange?: ((values: FieldValues, column: PlusColumn) => any) | undefined;
    "onUpdate:modelValue"?: ((values: FieldValues) => any) | undefined;
}, {
    columns: PlusColumn[];
    modelValue: FieldValues;
    hasLabel: boolean;
    rowProps: Partial<Mutable<RowProps>>;
    colProps: Partial<Mutable<ColProps>>;
    collapseDuration: number;
    collapseTransition: boolean;
    clearable: boolean;
}, {}>, Partial<Record<string, (_: {
    column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "label" | "index" | "tooltip" | "formItemProps" | "fieldProps" | "fieldSlots" | "fieldChildrenSlot" | "modelValue" | "options" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap">> & {
        readonly label: string | ComputedRef<string>;
        readonly modelValue: string | number | boolean | RecordType | Date | string[] | boolean[] | number[] | Date[] | [Date, Date] | [number, number] | [string, string] | string[][] | number[][] | null;
        readonly hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
        readonly tooltip: string | Partial< ElTooltipProps> | ComputedRef<string> | ComputedRef<Partial< ElTooltipProps>>;
        readonly formItemProps: PropsItemType<Mutable< FormItemProps> & {
            [key: string]: any;
            style?: CSSProperties | undefined;
        }>;
        readonly fieldProps: PropsItemType<Partial<{
            [key: string]: any;
            style: CSSProperties;
            rows: number;
            autocomplete: string;
            type: "" | "number" | "default" | "search" | "checkbox" | "radio" | "textarea" | "text" | "circle" | "color" | "button" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "time" | "image" | "line" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "range" | "dashboard" | "hidden" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
            loading: EpPropMergeType<BooleanConstructor, unknown, unknown> | EpPropMergeType<StringConstructor, "lazy" | "eager", unknown> | undefined;
            step: string | number;
            format: string | ProgressFn | undefined;
            filterMethod: Function | ((node: CascaderNode, keyword: string) => boolean) | undefined;
            id: string | [string, string];
            effect: string;
            height: string | number;
            autosize: InputAutoSize;
        } & Mutable<Omit< AutocompleteProps, OmitTypes> & Omit< CascaderProps, OmitTypes> & Omit< CheckboxGroupProps, OmitTypes> & Omit< ColorPickerProps, OmitTypes> & Omit< DatePickerProps, OmitTypes> & Omit< InputProps, OmitTypes> & Omit< InputNumberProps, OmitTypes> & Omit< RadioGroupProps, OmitTypes> & Omit< RateProps, OmitTypes> & Omit< ISelectProps, OmitTypes> & Omit< SliderProps, OmitTypes> & Omit< SwitchProps, OmitTypes> & Omit< TimePickerDefaultProps, OmitTypes> & Omit< TimeSelectProps, OmitTypes> & Omit< PlusRadioProps, OmitTypes> & Omit< PlusDatePickerProps, OmitTypes> & Omit< PlusInputTagProps, OmitTypes> & Omit< TextProps, OmitTypes> & Omit< ImageProps, OmitTypes> & Omit< LinkProps, OmitTypes> & Omit< TagProps, OmitTypes> & Omit< ProgressProps, OmitTypes>>>>;
        readonly options: OptionsType;
        readonly fieldSlots: {
            [slotName: string]: (data?: any) => RenderTypes;
        };
        readonly valueType: TableValueType | FormItemValueType;
        readonly renderField: ((value: FieldValueType, onChange: (value: FieldValueType) => void, props: PlusColumn) => RenderTypes) | undefined;
        readonly renderLabel: ((label: string, props: PlusColumn) => RenderTypes) | undefined;
        readonly fieldChildrenSlot: ((option?: OptionsRow<undefined> | undefined) => RenderTypes) | undefined;
        readonly renderErrorMessage: ((props: PlusColumn & {
            value?: FieldValueType;
            error?: string | undefined;
            label?: string | undefined;
        }) => RenderTypes) | undefined;
        readonly optionsMap: {
            label?: string | undefined;
            value?: string | undefined;
        } | undefined;
        readonly clearable: boolean;
        readonly index: number;
    } & {
        readonly clearable: boolean;
    };
    label: string;
    fieldProps: RecordType;
    formItemProps: RecordType;
    options: OptionsRow<undefined>[];
    fieldInstance?: any;
    valueIsReady?: Ref<boolean> | undefined;
    prop: string;
    modelValue: string | number | boolean | RecordType | Date | string[] | boolean[] | number[] | Date[] | [Date, Date] | [number, number] | [string, string] | string[][] | number[][] | null;
    hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
    tooltip: string | Partial< ElTooltipProps> | ComputedRef<string> | ComputedRef<Partial< ElTooltipProps>>;
    fieldSlots: {
        [slotName: string]: (data?: any) => RenderTypes;
    };
    valueType: TableValueType | FormItemValueType;
    renderField: ((value: FieldValueType, onChange: (value: FieldValueType) => void, props: PlusColumn) => RenderTypes) | undefined;
    renderLabel: ((label: string, props: PlusColumn) => RenderTypes) | undefined;
    fieldChildrenSlot: ((option?: OptionsRow<undefined> | undefined) => RenderTypes) | undefined;
    renderErrorMessage: ((props: PlusColumn & {
        value?: FieldValueType;
        error?: string | undefined;
        label?: string | undefined;
    }) => RenderTypes) | undefined;
    optionsMap: {
        label?: string | undefined;
        value?: string | undefined;
    } | undefined;
    clearable: boolean;
    index: number;
}) => any>> & Partial<Record<string, (_: {
    column: Readonly<Omit< LooseRequired<PlusFormItemProps>, "label" | "index" | "tooltip" | "formItemProps" | "fieldProps" | "fieldSlots" | "fieldChildrenSlot" | "modelValue" | "options" | "hasLabel" | "clearable" | "valueType" | "renderField" | "renderLabel" | "renderErrorMessage" | "optionsMap">> & {
        readonly label: string | ComputedRef<string>;
        readonly modelValue: string | number | boolean | RecordType | Date | string[] | boolean[] | number[] | Date[] | [Date, Date] | [number, number] | [string, string] | string[][] | number[][] | null;
        readonly hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
        readonly tooltip: string | Partial< ElTooltipProps> | ComputedRef<string> | ComputedRef<Partial< ElTooltipProps>>;
        readonly formItemProps: PropsItemType<Mutable< FormItemProps> & {
            [key: string]: any;
            style?: CSSProperties | undefined;
        }>;
        readonly fieldProps: PropsItemType<Partial<{
            [key: string]: any;
            style: CSSProperties;
            rows: number;
            autocomplete: string;
            type: "" | "number" | "default" | "search" | "checkbox" | "radio" | "textarea" | "text" | "circle" | "color" | "button" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "time" | "image" | "line" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "range" | "dashboard" | "hidden" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
            loading: EpPropMergeType<BooleanConstructor, unknown, unknown> | EpPropMergeType<StringConstructor, "lazy" | "eager", unknown> | undefined;
            step: string | number;
            format: string | ProgressFn | undefined;
            filterMethod: Function | ((node: CascaderNode, keyword: string) => boolean) | undefined;
            id: string | [string, string];
            effect: string;
            height: string | number;
            autosize: InputAutoSize;
        } & Mutable<Omit< AutocompleteProps, OmitTypes> & Omit< CascaderProps, OmitTypes> & Omit< CheckboxGroupProps, OmitTypes> & Omit< ColorPickerProps, OmitTypes> & Omit< DatePickerProps, OmitTypes> & Omit< InputProps, OmitTypes> & Omit< InputNumberProps, OmitTypes> & Omit< RadioGroupProps, OmitTypes> & Omit< RateProps, OmitTypes> & Omit< ISelectProps, OmitTypes> & Omit< SliderProps, OmitTypes> & Omit< SwitchProps, OmitTypes> & Omit< TimePickerDefaultProps, OmitTypes> & Omit< TimeSelectProps, OmitTypes> & Omit< PlusRadioProps, OmitTypes> & Omit< PlusDatePickerProps, OmitTypes> & Omit< PlusInputTagProps, OmitTypes> & Omit< TextProps, OmitTypes> & Omit< ImageProps, OmitTypes> & Omit< LinkProps, OmitTypes> & Omit< TagProps, OmitTypes> & Omit< ProgressProps, OmitTypes>>>>;
        readonly options: OptionsType;
        readonly fieldSlots: {
            [slotName: string]: (data?: any) => RenderTypes;
        };
        readonly valueType: TableValueType | FormItemValueType;
        readonly renderField: ((value: FieldValueType, onChange: (value: FieldValueType) => void, props: PlusColumn) => RenderTypes) | undefined;
        readonly renderLabel: ((label: string, props: PlusColumn) => RenderTypes) | undefined;
        readonly fieldChildrenSlot: ((option?: OptionsRow<undefined> | undefined) => RenderTypes) | undefined;
        readonly renderErrorMessage: ((props: PlusColumn & {
            value?: FieldValueType;
            error?: string | undefined;
            label?: string | undefined;
        }) => RenderTypes) | undefined;
        readonly optionsMap: {
            label?: string | undefined;
            value?: string | undefined;
        } | undefined;
        readonly clearable: boolean;
        readonly index: number;
    } & {
        readonly clearable: boolean;
    };
    label: string;
    fieldProps: RecordType;
    formItemProps: RecordType;
    options: OptionsRow<undefined>[];
    fieldInstance?: any;
    valueIsReady?: Ref<boolean> | undefined;
    prop: string;
    modelValue: string | number | boolean | RecordType | Date | string[] | boolean[] | number[] | Date[] | [Date, Date] | [number, number] | [string, string] | string[][] | number[][] | null;
    hasLabel: boolean | Ref<boolean> | ComputedRef<boolean>;
    tooltip: string | Partial< ElTooltipProps> | ComputedRef<string> | ComputedRef<Partial< ElTooltipProps>>;
    fieldSlots: {
        [slotName: string]: (data?: any) => RenderTypes;
    };
    valueType: TableValueType | FormItemValueType;
    renderField: ((value: FieldValueType, onChange: (value: FieldValueType) => void, props: PlusColumn) => RenderTypes) | undefined;
    renderLabel: ((label: string, props: PlusColumn) => RenderTypes) | undefined;
    fieldChildrenSlot: ((option?: OptionsRow<undefined> | undefined) => RenderTypes) | undefined;
    renderErrorMessage: ((props: PlusColumn & {
        value?: FieldValueType;
        error?: string | undefined;
        label?: string | undefined;
    }) => RenderTypes) | undefined;
    optionsMap: {
        label?: string | undefined;
        value?: string | undefined;
    } | undefined;
    clearable: boolean;
    index: number;
}) => any>> & Partial<Record<string, (_: {
    [x: string]: any;
    label?: string | ComputedRef<string> | undefined;
    prop: string;
    width?: string | number | undefined;
    minWidth?: string | number | undefined;
    editable?: boolean | undefined;
    valueType?: TableValueType | FormItemValueType;
    hideInDescriptions?: boolean | Ref<boolean> | ComputedRef<boolean> | undefined;
    hideInForm?: boolean | Ref<boolean> | ComputedRef<boolean> | undefined;
    hideInTable?: boolean | Ref<boolean> | ComputedRef<boolean> | undefined;
    hideInSearch?: boolean | Ref<boolean> | ComputedRef<boolean> | undefined;
    descriptionsItemProps?: RecordType | undefined;
    options?: OptionsType | undefined;
    optionsMap?: {
        label?: string | undefined;
        value?: string | undefined;
    } | undefined;
    customGetStatus?: ((data: {
        options: OptionsRow<undefined>[];
        value: string | number;
        row: RecordType;
    }) => OptionsRow<undefined>) | undefined;
    tooltip?: string | Partial< ElTooltipProps> | ComputedRef<string> | ComputedRef<Partial< ElTooltipProps>> | undefined;
    render?: ((value: any, data: {
        row: RecordType;
        column: PlusColumn;
        index: number;
    }) => RenderTypes) | undefined;
    renderHTML?: ((value: any, data: {
        row: RecordType;
        column: PlusColumn;
        index: number;
    }) => string) | undefined;
    renderHeader?: ((label: string, props: PlusColumn) => RenderTypes) | undefined;
    renderDescriptionsItem?: ((data: {
        value: string;
        column: PlusColumn;
        row: RecordType;
    }) => RenderTypes) | undefined;
    renderDescriptionsLabel?: ((data: {
        label: string;
        column: PlusColumn;
        row: RecordType;
    }) => RenderTypes) | undefined;
    order?: number | ComputedRef<number> | undefined;
    children?: PlusColumn[] | undefined;
    headerFilter?: boolean | undefined;
    disabledHeaderFilter?: boolean | undefined;
    headerIsChecked?: boolean | undefined;
    tableColumnProps?: Partial<Omit< TableColumnCtx<any>, "label " | "prop" | "width" | "minWidth"> & {
        [key: string]: any;
    }> | undefined;
    preview?: boolean | undefined;
    /**
     *  @version v0.1.18
     */
    linkText?: string | undefined;
    formatter?: ((value: any, data: {
        row: RecordType;
        column: PlusColumn;
        index: number;
    }) => string | number) | undefined;
    formProps?: Partial< PlusFormProps> | ComputedRef<Partial< PlusFormProps>> | ((value: FieldValueType, data: {
        row: Record<string, any>;
        index: number;
    }) => Partial< PlusFormProps>) | undefined;
    formItemProps?: PropsItemType<Mutable< FormItemProps> & {
        [key: string]: any;
        style?: CSSProperties | undefined;
    }> | undefined;
    fieldProps?: PropsItemType<Partial<{
        [key: string]: any;
        style: CSSProperties;
        rows: number;
        autocomplete: string;
        type: "" | "number" | "default" | "search" | "checkbox" | "radio" | "textarea" | "text" | "circle" | "color" | "button" | "success" | "warning" | "info" | "primary" | "danger" | "reset" | "submit" | "time" | "image" | "line" | "date" | "year" | "years" | "month" | "dates" | "week" | "datetime" | "datetimerange" | "daterange" | "monthrange" | "range" | "dashboard" | "hidden" | "datetime-local" | "email" | "file" | "password" | "tel" | "url";
        loading: EpPropMergeType<BooleanConstructor, unknown, unknown> | EpPropMergeType<StringConstructor, "lazy" | "eager", unknown> | undefined;
        step: string | number;
        format: string | ProgressFn | undefined;
        filterMethod: Function | ((node: CascaderNode, keyword: string) => boolean) | undefined;
        id: string | [string, string];
        effect: string;
        height: string | number;
        autosize: InputAutoSize;
    } & Mutable<Omit< AutocompleteProps, OmitTypes> & Omit< CascaderProps, OmitTypes> & Omit< CheckboxGroupProps, OmitTypes> & Omit< ColorPickerProps, OmitTypes> & Omit< DatePickerProps, OmitTypes> & Omit< InputProps, OmitTypes> & Omit< InputNumberProps, OmitTypes> & Omit< RadioGroupProps, OmitTypes> & Omit< RateProps, OmitTypes> & Omit< ISelectProps, OmitTypes> & Omit< SliderProps, OmitTypes> & Omit< SwitchProps, OmitTypes> & Omit< TimePickerDefaultProps, OmitTypes> & Omit< TimeSelectProps, OmitTypes> & Omit< PlusRadioProps, OmitTypes> & Omit< PlusDatePickerProps, OmitTypes> & Omit< PlusInputTagProps, OmitTypes> & Omit< TextProps, OmitTypes> & Omit< ImageProps, OmitTypes> & Omit< LinkProps, OmitTypes> & Omit< TagProps, OmitTypes> & Omit< ProgressProps, OmitTypes>>>> | undefined;
    renderField?: ((value: FieldValueType, onChange: (value: FieldValueType) => void, props: PlusColumn) => RenderTypes) | undefined;
    colProps?: Partial<Mutable<ColProps> & {
        [key: string]: any;
        style?: CSSProperties | undefined;
    }> | undefined;
    hasLabel?: boolean | Ref<boolean> | ComputedRef<boolean> | undefined;
    renderLabel?: ((label: string, props: PlusColumn) => RenderTypes) | undefined;
    renderExtra?: ((column: PlusColumn) => RenderTypes) | undefined;
    fieldSlots?: {
        [slotName: string]: (data?: any) => RenderTypes;
    } | undefined;
    fieldChildrenSlot?: ((option?: OptionsRow<undefined> | undefined) => RenderTypes) | undefined;
    renderErrorMessage?: ((props: PlusColumn & {
        value?: FieldValueType;
        error?: string | undefined;
        label?: string | undefined;
    }) => RenderTypes) | undefined;
}) => any>> & {
    "tooltip-icon"?(_: {}): any;
    "search-footer"?(_: {}): any;
}>;
export default _default;
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: PropType<T[K]>;
        required: true;
    };
};
type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
        default: D[K];
    }> : P[K];
};
type __VLS_Prettify<T> = {
    [K in keyof T]: T[K];
} & {};
type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
