import { CSSProperties, ReactNode } from 'react';
import { PisellBasicCardProps } from '../../types';
import { PisellImageCardProps } from '../PisellImageCard/types';
/**
 * 样式变体类型
 */
export declare type GraphicTextCardVariant = 'vertical-image' | 'vertical-icon' | 'horizontal' | 'card';
/**
 * 尺寸类型
 */
export declare type GraphicTextCardSize = 'small' | 'default' | 'large';
/**
 * 宽度模式
 */
export declare type GraphicTextCardWidthMode = 'auto' | 'fixed' | 'full';
/**
 * 图形区域配置
 */
export interface GraphicConfig extends PisellImageCardProps {
    hidden?: boolean;
    /**
     * 图形区域宽度（单位：px）
     * 如不设置，将根据 variant 和 size 自动计算
     */
    width?: number;
    /**
     * 图形区域高度（单位：px）
     * 如不设置，将根据 variant 和 size 自动计算
     */
    height?: number;
    /**
     * 图形区域圆角
     */
    borderRadius?: number | string;
    /**
     * 图形区域背景色
     */
    background?: string;
    /**
     * 图形区域边框
     */
    border?: string;
    /**
     * 图形区域阴影
     */
    boxShadow?: string;
    /**
     * 图形区域内边距
     */
    padding?: number | string;
    /**
     * 图标大小（当使用 icon 时有效，单位：px）
     */
    iconSize?: number;
    /**
     * 图标颜色（当使用 icon 时有效）
     */
    iconColor?: string;
    /**
     * 自定义样式
     */
    style?: CSSProperties;
}
/**
 * 角标类型
 */
export declare type BadgeType = 'dot' | 'number' | 'text';
/**
 * 角标位置
 */
export declare type BadgePosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left';
/**
 * 角标配置
 */
export interface BadgeConfig {
    /**
     * 角标类型
     * @default 'dot'
     */
    type?: BadgeType;
    /**
     * 角标内容（数字或文本）
     * 当 type 为 'number' 或 'text' 时有效
     */
    content?: ReactNode;
    /**
     * 角标位置
     * @default 'top-right'
     */
    position?: BadgePosition;
    /**
     * 角标偏移量 [x, y]
     * 正数向右/下偏移，负数向左/上偏移
     */
    offset?: [number, number];
    /**
     * 角标颜色
     */
    color?: string;
    /**
     * 角标自定义样式
     */
    style?: CSSProperties;
}
/**
 * 文本配置
 */
export interface TextConfig {
    /**
     * 字体大小（单位：px）
     */
    fontSize?: number;
    /**
     * 字体粗细
     */
    fontWeight?: string | number;
    /**
     * 文本颜色
     */
    color?: string;
    /**
     * 最大显示行数
     * @default 1
     */
    maxLines?: number;
    /**
     * 是否显示省略号
     * @default true
     */
    ellipsis?: boolean;
    /**
     * 文本对齐方式
     * @default 'left'
     */
    textAlign?: 'left' | 'center' | 'right';
}
/**
 * GraphicTextCard 组件 Props
 * 基于 PisellBasicCardProps 扩展
 * 注意：重写 onClick 为可选属性
 */
export interface GraphicTextCardProps extends Omit<PisellBasicCardProps, 'onClick'> {
    /**
     * 卡片显示的文本内容（必填）
     */
    text: ReactNode;
    /**
     * 卡片样式变体
     * @default 'vertical-image'
     */
    variant?: GraphicTextCardVariant;
    /**
     * 卡片尺寸
     * @default 'default'
     */
    size?: GraphicTextCardSize;
    /**
     * 是否可点击
     * @default true
     */
    clickable?: boolean;
    /**
     * 图片地址
     * 与 icon 二选一，优先使用 image
     */
    image?: string;
    /**
     * 图标
     * 支持 ReactNode（如 antd Icon、svg 等）或图标 URL
     * 与 image 二选一
     */
    icon?: ReactNode;
    /**
     * 图形区域配置
     * 用于自定义图形区域的样式和尺寸
     */
    graphicConfig?: GraphicConfig;
    /**
     * 图形区域插槽
     * 用于完全自定义图形区域，优先级高于 image 和 icon
     */
    graphicSlot?: ReactNode;
    /**
     * 角标配置
     * 用于显示红点、数字或文本提示
     */
    badge?: BadgeConfig;
    /**
     * 前置插槽
     * 用于在图形区域前添加自定义内容
     */
    prefixSlot?: ReactNode;
    /**
     * 后置插槽
     * 用于在文本内容后添加自定义内容
     */
    suffixSlot?: ReactNode;
    /**
     * 文本配置
     * 用于自定义文本样式和显示行为
     */
    textConfig?: TextConfig;
    /**
     * 宽度模式
     * - auto: 内容撑满，最大宽度 maxWidth
     * - fixed: 固定宽度 width
     * - full: 撑满父容器
     * @default 'auto'
     */
    widthMode?: GraphicTextCardWidthMode;
    /**
     * 固定宽度值
     * 当 widthMode='fixed' 时有效
     */
    width?: number | string;
    /**
     * 最大宽度
     * 当 widthMode='auto' 时有效
     * @default 400
     */
    maxWidth?: number | string;
    /**
     * 点击事件
     * 当 clickable=true 且不在 disabled/loading 状态时触发
     * 注意：PisellBasicCardProps 中的 onClick 是必填的，这里重新定义为可选
     */
    onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
    /**
     * 自定义渲染函数
     * 完全自定义组件的渲染内容
     * 当提供此函数时，组件内置的渲染逻辑将被忽略
     */
    render?: (props: GraphicTextCardProps) => ReactNode;
}
/**
 * GraphicArea 组件 Props
 * 图形区域子组件
 */
export interface GraphicAreaProps {
    /**
     * 图片地址
     */
    image?: string;
    /**
     * 图标内容
     */
    icon?: ReactNode;
    /**
     * 图形配置
     */
    config?: GraphicConfig;
    /**
     * 自定义类名
     */
    className?: string;
    aliWidth?: number;
}
/**
 * TextContent 组件 Props
 * 文本内容子组件
 */
export interface TextContentProps {
    /**
     * 文本内容
     */
    text: ReactNode;
    /**
     * 文本配置
     */
    textConfig?: TextConfig;
    /**
     * 自定义类名
     */
    className?: string;
    active: PisellBasicCardProps['active'];
}
/**
 * BadgeWrapper 组件 Props
 * 角标包装子组件
 */
export interface BadgeWrapperProps {
    /**
     * 角标配置
     */
    badge?: BadgeConfig;
    /**
     * 子元素
     */
    children: ReactNode;
}
