import { VNodeChild } from 'vue';
import { SelectOptionGroup } from '../../select/index.js';
import { ComponentSize, ComponentStatus, SelectOption } from '../../../xiaoye-primitives/index.js';
import { LinkProps } from '../../link/index.js';
import { TagProps } from '../../tag/index.js';
export interface DescriptionsDataTag {
    text: string;
    props?: TagProps;
}
export interface DescriptionsDisplayOption extends SelectOption {
    status?: ComponentStatus | "info";
    color?: string;
}
export interface DescriptionsDisplayOptionGroup extends Omit<SelectOptionGroup, "options"> {
    options: DescriptionsDisplayOption[];
}
export interface DescriptionsDataItem {
    label: string;
    value?: unknown;
    row?: Record<string, unknown>;
    span?: number;
    icon?: string;
    tag?: string | DescriptionsDataTag;
    link?: LinkProps;
    valueType?: "text" | "select" | "radio" | "checkbox" | "tag" | "progress" | "link" | "image" | "avatar" | "money" | "date" | "datetime" | "code" | "copy";
    options?: Array<DescriptionsDisplayOption | DescriptionsDisplayOptionGroup>;
    formatter?: (row: Record<string, unknown>, column: DescriptionsDataItem, value: unknown, rowIndex: number) => unknown;
    render?: (value: unknown, context: {
        row: Record<string, unknown>;
        column: DescriptionsDataItem;
        rowIndex: number;
    }) => VNodeChild;
    renderHTML?: (value: unknown, context: {
        row: Record<string, unknown>;
        column: DescriptionsDataItem;
        rowIndex: number;
    }) => string;
    emptyValue?: string;
    className?: string;
    labelClassName?: string;
    contentClassName?: string;
    labelSlot?: string;
    defaultSlot?: string;
}
export interface DescriptionsProps {
    column?: number;
    border?: boolean;
    size?: ComponentSize;
    title?: string;
    extra?: string;
    labelWidth?: string | number;
    direction?: "horizontal" | "vertical";
    collapse?: boolean;
    items?: DescriptionsDataItem[];
}
