import type { CSSProperties, ReactNode } from 'react';
import type { PisellBaseCardProps } from '../pisellBaseCard/types';
/**
 * 实体卡信息密度等级
 * - B1: 最小单位，一行
 * - B2: 主+次级两行
 * - B5: 次级最多 5 行
 * - B9: 全部展示
 */
export declare type EntityCardDensity = 'B1' | 'B2' | 'B5' | 'B9';
/**
 * 实体卡布局方向
 */
export declare type EntityCardLayout = 'horizontal' | 'vertical';
/**
 * 实体卡宽度模式
 * - content: 由内容撑满
 * - full: 撑满父容器
 * - number: 固定像素宽度
 */
export declare type EntityCardWidth = 'content' | 'full' | number;
/**
 * 媒体类型：头像 / 缩略图 / 图标
 */
export declare type EntityCardMediaType = 'avatar' | 'thumbnail' | 'icon';
/**
 * 实体卡媒体配置（头像、缩略图、图标）
 */
export interface EntityCardMediaConfig {
    /** 类型 */
    type: EntityCardMediaType;
    /** 图片地址（avatar/thumbnail 使用） */
    src?: string;
    /** 替换文本 / 描述 */
    alt?: string;
    /** 图标节点（type 为 icon 时使用） */
    icon?: ReactNode;
    /** 尺寸，如 24、48、64 或 CSS 值 */
    size?: number | string;
    /** 形状（avatar/thumbnail）：circle | square */
    shape?: 'circle' | 'square';
    /** 图标颜色（type 为 icon 时） */
    color?: string;
}
/**
 * 次级文案单项（可带提示）
 */
export interface EntityCardSecondaryItem {
    /** 文本内容 */
    text: string;
    /** 是否显示提示 icon（如 info-circle） */
    showTooltip?: boolean;
}
/**
 * 实体卡标签项
 */
export interface EntityCardTagItem {
    /** 标签文案 */
    text: string;
    /** 可选自定义样式 */
    style?: CSSProperties;
}
/**
 * 实体卡底部操作项
 * 支持文本、按钮、图标三种形式，可各自通过 style / className 更改样式
 */
export interface EntityCardActionItem {
    /** 展示形式：文本 / 按钮 / 图标 */
    type: 'text' | 'button' | 'icon';
    /** 文案（text/button 时显示） */
    label?: string;
    /** 图标节点（icon 时单独展示，或 button 旁图标） */
    icon?: ReactNode;
    /** 点击回调 */
    onClick?: () => void;
    /** 单项内联样式 */
    style?: CSSProperties;
    /** 单项类名，用于自定义样式 */
    className?: string;
}
/**
 * 标签展示位置：与主标题同行 / 次级信息下方
 */
export declare type EntityCardTagPosition = 'inline' | 'below';
/**
 * PisellEntityCard 组件 Props
 * 基于 PisellBaseCard，使用结构化配置展示实体信息，支持密度、布局、左滑删除与插槽
 */
export interface PisellEntityCardProps extends PisellBaseCardProps {
    /** 媒体区：头像 / 缩略图 / 图标配置 */
    media?: EntityCardMediaConfig;
    /** 主文案（Name/Title） */
    primaryText?: string;
    /** 副标题：与主标题同一行、紧跟主标题后的部分（如电话号），14px Regular #667085 */
    subtitleText?: string;
    /** 次级文案列表，顺序即展示顺序；可带 showTooltip */
    secondaryTexts?: EntityCardSecondaryItem[];
    /** 标签列表，顺序即展示顺序 */
    tags?: EntityCardTagItem[];
    /** 底部操作列表（View Detail、Select 等） */
    actions?: EntityCardActionItem[];
    /** 是否显示媒体区 @default true */
    showMedia?: boolean;
    /** 是否显示主文案 @default true */
    showPrimaryText?: boolean;
    /** 是否显示副标题（与主标题同行） @default true */
    showSubtitle?: boolean;
    /** 是否显示次级文案 @default true */
    showSecondaryText?: boolean;
    /** 是否显示标签 @default true */
    showTags?: boolean;
    /** 是否显示底部 Action 区 @default false */
    showActions?: boolean;
    /** 信息密度 @default 'B2' */
    density?: EntityCardDensity;
    /** 布局方向 @default 'horizontal' */
    layout?: EntityCardLayout;
    /** 卡片宽度 @default 'content' */
    width?: EntityCardWidth;
    /** 是否开启左滑删除 @default false */
    swipeToDelete?: boolean;
    /** 左滑后点击删除时回调 */
    onDelete?: () => void;
    /** 标签展示位置 @default 'below' */
    tagPosition?: EntityCardTagPosition;
    /** 内容区 gap（CSS gap 值） */
    contentGap?: number | string;
    /** 主文案行数限制（CSS -webkit-line-clamp） */
    primaryLineClamp?: number;
    /** 次级文案行数限制（按密度有默认值，可覆盖） */
    secondaryLineClamp?: number;
    /** 自定义渲染媒体区 */
    renderMedia?: () => ReactNode;
    /** 自定义渲染主文案区 */
    renderPrimary?: () => ReactNode;
    /** 自定义渲染副标题区（与主标题同行） */
    renderSubtitle?: () => ReactNode;
    /** 自定义渲染次级文案区 */
    renderSecondary?: () => ReactNode;
    /** 自定义渲染标签区 */
    renderTags?: () => ReactNode;
    /** 自定义渲染底部操作区 */
    renderActions?: () => ReactNode;
}
