import { CSSProperties, ReactNode } from 'react';
import { PisellBasicCardProps } from '../../types';
/**
 * 触发方式类型
 */
export declare type MultilevelCardTrigger = 'click' | 'hover';
/**
 * 次级面板宽度模式
 */
export declare type MultilevelCardPanelWidthMode = 'auto' | 'fixed' | 'full';
/**
 * Hover 延迟配置
 */
export interface MultilevelCardHoverDelay {
    /**
     * 鼠标进入延迟时间（毫秒）
     * @default 100
     */
    enter?: number;
    /**
     * 鼠标离开延迟时间（毫秒）
     * @default 200
     */
    leave?: number;
}
/**
 * MultilevelCard 组件 Props
 */
export interface MultilevelCardProps<T> extends PisellBasicCardProps {
    /**
     * 主卡片插槽
     * 传入任意 Card 组件（如 TextCard、GraphicTextCard 等）
     * 主卡片需实现 PisellBasicCardProps 中的 active 属性（click 模式下）
     */
    card: (props: T) => ReactNode;
    /**
     * 次级面板插槽
     * 传入自定义内容，当主卡片 active 时展示
     */
    panel?: (props: T) => ReactNode;
    /**
     * 触发方式
     * - click: 点击触发，通过主卡片的 active 状态控制展开/收起
     * - hover: 悬停触发，鼠标进入展开，离开时收起
     * @default 'click'
     */
    trigger?: MultilevelCardTrigger;
    /**
     * hover 模式下的延迟时间（毫秒）
     * 用于防抖处理，避免鼠标快速划过时频繁触发
     * @default { enter: 100, leave: 200 }
     */
    hoverDelay?: MultilevelCardHoverDelay;
    /**
     * 次级面板宽度模式
     * - auto: 内容撑满
     * - fixed: 固定宽度，需配合 panelWidth 使用
     * - full: 撑满父容器
     * @default 'full'
     */
    panelWidthMode?: MultilevelCardPanelWidthMode;
    /**
     * 固定宽度值（单位：px 或任意 CSS 宽度值）
     * 当 panelWidthMode='fixed' 时有效
     * @example 300 | '300px' | '50%'
     */
    panelWidth?: number | string;
    /**
     * 次级面板样式
     * 用于自定义次级面板的样式
     */
    panelStyle?: CSSProperties;
    /**
     * 次级面板类名
     * 用于自定义次级面板的类名
     */
    panelClassName?: string;
    /**
     * 次级面板容器
     * 传入 DOM 节点，次级面板将渲染到该节点中（使用 Portal）
     * 不传则默认渲染在组件内部（主卡片下方）
     */
    panelContainer?: (props: any) => HTMLElement | null;
    /**
     * 是否启用动画
     * 控制次级面板展开/收起时的过渡动画
     * @default true
     */
    animation?: boolean;
    /**
     * 动画持续时间（毫秒）
     * @default 300
     */
    animationDuration?: number;
    /**
     * 展开状态变化回调
     * @param expanded - 是否展开
     */
    onExpandChange?: (expanded: boolean) => void;
    /**
     * 次级面板渲染完成回调
     * 当次级面板挂载到 DOM 时触发
     */
    onPanelMount?: () => void;
    /**
     * 次级面板卸载回调
     * 当次级面板从 DOM 卸载时触发
     */
    onPanelUnmount?: () => void;
    /**
     * 组件类名
     */
    className?: string;
    /**
     * 组件样式
     */
    style?: CSSProperties;
}
/**
 * CardWrapper 组件 Props
 * 主卡片包装器子组件
 */
export interface CardWrapperProps {
    /**
     * 主卡片内容
     */
    children: ReactNode;
    /**
     * 触发方式
     */
    trigger: MultilevelCardTrigger;
    /**
     * 点击事件
     */
    onClick?: () => void;
    /**
     * 鼠标进入事件
     */
    onMouseEnter?: () => void;
    /**
     * 鼠标离开事件
     */
    onMouseLeave?: () => void;
    /**
     * 自定义类名
     */
    className?: string;
}
/**
 * PanelWrapper 组件 Props
 * 次级面板包装器子组件
 */
export interface PanelWrapperProps {
    /**
     * 次级面板内容
     */
    children?: ReactNode;
    /**
     * 是否可见
     */
    visible: boolean;
    /**
     * 宽度模式
     */
    widthMode?: MultilevelCardPanelWidthMode;
    /**
     * 固定宽度值
     */
    width?: number | string;
    /**
     * 是否启用动画
     */
    animation?: boolean;
    /**
     * 动画持续时间（毫秒）
     */
    animationDuration?: number;
    /**
     * 渲染完成回调
     */
    onMount?: () => void;
    /**
     * 卸载回调
     */
    onUnmount?: () => void;
    /**
     * 鼠标进入事件（hover 模式下使用）
     */
    onMouseEnter?: () => void;
    /**
     * 鼠标离开事件（hover 模式下使用）
     */
    onMouseLeave?: () => void;
    /**
     * 自定义样式
     */
    style?: CSSProperties;
    /**
     * 自定义类名
     */
    className?: string;
}
