import type React from 'react';
import type { CSSProperties } from 'react';
export declare type PisellHierarchicalSummaryListKey = React.Key;
export interface PisellHierarchicalSummaryListItem {
    /**
     * 行标题。最小字段（必填）
     */
    label: React.ReactNode;
    /**
     * 行数值。允许 ReactNode（string/number/组合展示）。
     * 若不传且开启聚合，可能由 children 聚合得到。
     */
    value?: React.ReactNode;
    /**
     * 子级数据（无限层级递归）
     */
    children?: PisellHierarchicalSummaryListItem[];
    /**
     * 可选：稳定 key（推荐传入以保证展开态稳定）。
     * 不传时组件会基于层级路径生成 key。
     */
    key?: PisellHierarchicalSummaryListKey;
    /**
     * 可选：是否隐藏该项
     */
    hidden?: boolean;
    /**
     * 可选：排序权重，值越小越靠前
     */
    order?: number;
    /**
     * 可选：条目数提示（如 "N items" / "N 条"），允许 ReactNode
     */
    itemsCount?: React.ReactNode;
    /**
     * 可选：信息提示 tooltip 内容（hover 触达）
     */
    infoTooltip?: React.ReactNode;
    /**
     * 可选：右侧 value 后附加轻量操作（tag/pill/button 等）
     */
    extra?: React.ReactNode;
    /**
     * 可选：覆盖当前行样式
     */
    rowStyle?: CSSProperties;
    /**
     * 可选：覆盖当前行类名
     */
    rowClassName?: string;
    /**
     * 可选：自定义展开内容。若设置，行可展开且展开后渲染此内容（不再渲染 children 列表）。
     * 用于在列表中嵌入 Collapse 等自定义区块。
     */
    expandedContent?: React.ReactNode;
}
export interface PisellHierarchicalSummaryListLevelTextStyle {
    fontSize?: number | string;
    fontWeight?: number | string;
    color?: string;
    /** 行高，如 24 或 '24px' */
    lineHeight?: number | string;
}
export interface PisellHierarchicalSummaryListIconStyle {
    /** 图标尺寸（px），用于 fontSize 或宽高一致时的边长） */
    size?: number;
    color?: string;
    /** 图标容器宽（px），不传则用 size */
    width?: number;
    /** 图标容器高（px），不传则用 size */
    height?: number;
}
export interface PisellHierarchicalSummaryListDividerStyle {
    show?: boolean;
    color?: string;
    style?: 'solid' | 'dashed' | 'dotted';
}
export interface PisellHierarchicalSummaryListLevelConfig {
    /**
     * 层级缩进（px）。不传则继承全局 indent 规则。
     */
    indent?: number;
    /**
     * 是否显示 "·" 分隔符（标题区元信息前的点）
     */
    showDotSeparator?: boolean;
    /**
     * 层级内分割线
     */
    divider?: PisellHierarchicalSummaryListDividerStyle;
    /**
     * 行容器样式（背景/边框/padding/圆角/阴影等）
     */
    rowStyle?: CSSProperties;
    /**
     * 行容器类名
     */
    rowClassName?: string;
    /**
     * 标题文本样式
     */
    labelTextStyle?: PisellHierarchicalSummaryListLevelTextStyle;
    /**
     * 数值文本样式
     */
    valueTextStyle?: PisellHierarchicalSummaryListLevelTextStyle;
    /**
     * info icon 样式（size/color）
     */
    infoIconStyle?: PisellHierarchicalSummaryListIconStyle;
    /**
     * 展开/收起箭头 icon 样式（size/color）
     */
    expandIconStyle?: PisellHierarchicalSummaryListIconStyle;
    /**
     * 行内元信息样式（如 "·"、N items、info icon 的文案颜色/字号等）
     */
    metaTextStyle?: PisellHierarchicalSummaryListLevelTextStyle;
}
export declare type PisellHierarchicalSummaryListAggregateMode = 'none' | 'sum';
export interface PisellHierarchicalSummaryListAggregateConfig {
    /**
     * 聚合模式
     * - none: 不聚合
     * - sum: 对子级 number 值求和（或使用 getNumberValue 提取）
     * @default 'none'
     */
    mode?: PisellHierarchicalSummaryListAggregateMode;
    /**
     * 从条目提取 number 值，用于 sum 聚合。
     * 默认：若 item.value 是 number，则使用该值；否则忽略。
     */
    getNumberValue?: (item: PisellHierarchicalSummaryListItem) => number | null | undefined;
    /**
     * 聚合结果格式化（sum 输出到 value 区）
     */
    format?: (sum: number, ctx: {
        item: PisellHierarchicalSummaryListItem;
        level: number;
    }) => React.ReactNode;
}
export interface PisellHierarchicalSummaryListRenderContext {
    level: number;
    pathKeys: PisellHierarchicalSummaryListKey[];
    expanded: boolean;
    hasChildren: boolean;
    aggregatedValue?: React.ReactNode;
}
export interface PisellHierarchicalSummaryListProps {
    /**
     * 数据源
     */
    items: PisellHierarchicalSummaryListItem[];
    /**
     * 展开项 keys（受控）
     */
    expandedKeys?: PisellHierarchicalSummaryListKey[];
    /**
     * 默认展开项 keys（非受控）
     */
    defaultExpandedKeys?: PisellHierarchicalSummaryListKey[];
    /**
     * 默认展开层级（非受控初始化）。0 表示只展示 L1（不默认展开子级）。
     * @default 0
     */
    defaultExpandedLevel?: number;
    /**
     * 展开项变化回调
     */
    onExpandedKeysChange?: (keys: PisellHierarchicalSummaryListKey[]) => void;
    /**
     * 手风琴模式：同一层级下仅允许一个子项展开
     * @default false
     */
    accordion?: boolean;
    /**
     * 最大渲染层级（从 1 开始）。超过层级仍保留行，但不再渲染 children。
     */
    maxRenderLevel?: number;
    /**
     * 最大可展开层级（从 1 开始）。超过层级不显示展开箭头。
     */
    maxExpandLevel?: number;
    /**
     * 全局缩进（px），作用于 L2+；也可通过 levelConfig 覆盖。
     * @default 16
     */
    indent?: number;
    /**
     * 行间距（px）
     * @default 8
     */
    rowGap?: number;
    /**
     * 容器内边距（px 或 CSS 值），不传则使用 less 默认 20px
     */
    padding?: number | string;
    /**
     * 行内间距（px），用于 1:1 复刻设计稿
     * - row: 行内左右两栏间距
     * - rowLeft: 左侧 label 与 meta（· / N items）间距
     * - meta: meta 内 dot / items-count / info 间距
     * - rowRight: 右侧 value 与 extra / 展开图标间距
     */
    gaps?: {
        row?: number;
        rowLeft?: number;
        meta?: number;
        rowRight?: number;
    };
    /**
     * 按层级配置样式与功能开关（key 为 level，从 1 开始）
     */
    levelConfig?: Record<number, PisellHierarchicalSummaryListLevelConfig>;
    /**
     * 自定义渲染 label
     */
    renderLabel?: (item: PisellHierarchicalSummaryListItem, ctx: PisellHierarchicalSummaryListRenderContext) => React.ReactNode;
    /**
     * 自定义渲染 value
     */
    renderValue?: (item: PisellHierarchicalSummaryListItem, ctx: PisellHierarchicalSummaryListRenderContext) => React.ReactNode;
    /**
     * 自定义 key 生成（当 item.key 不存在时使用）
     */
    getKey?: (item: PisellHierarchicalSummaryListItem, ctx: {
        level: number;
        index: number;
        parentPathKeys: PisellHierarchicalSummaryListKey[];
    }) => PisellHierarchicalSummaryListKey;
    /**
     * 聚合配置：支持内置或外部传入
     */
    aggregate?: PisellHierarchicalSummaryListAggregateConfig;
    /**
     * 根节点类名
     */
    className?: string;
    /**
     * 根节点样式
     */
    style?: CSSProperties;
    /**
     * 是否渲染根节点 div。为 false 时只渲染内部内容（用于外层用同一 DOM 包裹列表与其它区块）。
     * @default true
     */
    renderRoot?: boolean;
}
