import { PlusFormProps } from 'plus-pro-components/es/components/form';
import { TableFormRefRow } from 'plus-pro-components/es/components/table';
import { PlusColumn, RecordType, Mutable, FieldValueType } from 'plus-pro-components/es/types';
import { descriptionProps } from 'element-plus';
import { ExtractPropTypes, DefineComponent, ShallowRef, ComponentOptionsMixin, PublicProps, PropType } from 'vue';

export type DescriptionProps = Partial<Mutable<ExtractPropTypes<typeof descriptionProps>>>;
type FormChangeCallBackParams = {
    column: PlusColumn;
    index: number;
    prop: string;
    row: RecordType;
    value: FieldValueType;
};
export interface PlusDescriptionsProps {
    data: RecordType;
    columns?: PlusColumn[];
    column?: number;
    title?: string;
    border?: boolean;
    /**
     * 是否整体可编辑
     * @version 0.1.17
     * @default false
     */
    editable?: boolean;
    /**
     * PlusFormProps 优先级低于column.formProps
     * @version 0.1.17
     */
    formProps?: PlusFormProps;
    /**
     * el-descriptions-item 的props 优先级低于column.descriptionsItemProps
     * @version 0.1.17
     */
    descriptionsItemProps?: RecordType;
}
export interface PlusDescriptionsEmits {
    (e: 'formChange', data: FormChangeCallBackParams): void;
}
export interface PlusTableTableColumnStatus {
    text: string;
    color: string;
}
declare const _default: __VLS_WithTemplateSlots< DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PlusDescriptionsProps>, {
    data: () => {};
    columns: () => never[];
    title: string;
    column: number;
    border: boolean;
    editable: boolean;
    formProps: undefined;
    descriptionsItemProps: undefined;
}>, {
    formRefs: ShallowRef<TableFormRefRow[]>;
    validate: () => Promise<undefined>;
    clearValidate: () => void;
}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    formChange: (data: FormChangeCallBackParams) => void;
}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PlusDescriptionsProps>, {
    data: () => {};
    columns: () => never[];
    title: string;
    column: number;
    border: boolean;
    editable: boolean;
    formProps: undefined;
    descriptionsItemProps: undefined;
}>>> & {
    onFormChange?: ((data: FormChangeCallBackParams) => any) | undefined;
}, {
    columns: PlusColumn[];
    formProps: PlusFormProps;
    border: boolean;
    data: RecordType;
    title: string;
    column: number;
    editable: boolean;
    descriptionsItemProps: RecordType;
}, {}>, Partial<Record<string, (_: {
    column: PlusColumn;
    row: RecordType;
    label: string;
}) => any>> & Partial<Record<string, (_: {
    column: PlusColumn;
    row: RecordType;
    value: any;
}) => any>> & {
    default?(_: {}): any;
    title?(_: {}): any;
    extra?(_: {}): 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;
    };
};
