import { EventEmitter } from '../../stencil-public-runtime';
export interface TableColumn {
    /** 列字段名 */
    prop: string;
    /** 列标题 */
    label: string;
    /** 列宽 */
    width?: string;
    /** 最小列宽 */
    minWidth?: string;
    /** 是否可排序 */
    sortable?: boolean;
    /** 对齐方式 */
    align?: 'left' | 'center' | 'right';
    /** 固定列：left / right / true（等同 left） */
    fixed?: 'left' | 'right' | boolean;
    /** 单元格文本格式化（框架无关，返回纯文本字符串） */
    formatter?: (row: Record<string, any>, index: number) => string;
    /** 该列是否可（行内）编辑；需同时开启 Table.editable 才生效 */
    editable?: boolean;
}
/**
 * 行操作按钮配置（框架无关）。
 * 由 Table 自身渲染按钮（在 shadow DOM 内），点击派发 hbAction 事件，
 * 消费方据此执行编辑/删除等逻辑——无需往每行塞框架专属元素，绕开「slot 跨行共享」限制。
 */
export interface TableAction {
    /** 操作标识，回传到 hbAction.detail.action */
    key: string;
    /** 按钮文案 */
    label: string;
    /** 按钮样式：default 主色文字 / danger 危险色 */
    type?: 'default' | 'primary' | 'danger';
    /** 是否禁用（按行判断） */
    disabled?: (row: Record<string, any>, index: number) => boolean;
}
export type SortDirection = 'ascending' | 'descending' | null;
/**
 * 树形数据配置。
 * `children` 指定子节点在每行数据中的字段名（默认 'children'），
 * 行存在该字段（非空数组）时渲染展开箭头，可递归展开后代。
 */
export interface TableTreeProps {
    children?: string;
}
/**
 * Table 表格组件
 * 用于展示多条结构类似的数据，可对数据进行排序、筛选、选择等操作
 */
export declare class Table {
    /** 数据源 */
    data: Record<string, any>[];
    /** 列配置 */
    columns: TableColumn[];
    /** 是否带斑马纹 */
    stripe: boolean;
    /** 是否带边框 */
    border: boolean;
    /** 表格尺寸 */
    size: 'large' | 'default' | 'small';
    /** 是否显示加载状态 */
    loading: boolean;
    /** 行数据的 Key */
    rowKey: string;
    /** 空数据文案 */
    emptyText: string;
    /** 最大高度（超出固定表头） */
    maxHeight?: string;
    /** 是否高亮当前行 */
    highlightCurrentRow: boolean;
    /** 是否开启行选择（显示 checkbox 列） */
    selectable: boolean;
    /** 行操作配置；非空时自动在末尾渲染「操作」列 */
    actions: TableAction[];
    /** 是否开启虚拟滚动（大数据量场景，默认关闭，向后兼容） */
    virtualScroll: boolean;
    /** 虚拟滚动每行预估高度(px)，用于计算撑高容器与可见窗口 */
    itemHeight: number;
    /** 虚拟滚动视口高度(px)，超过此高度出现滚动条 */
    virtualScrollHeight: number;
    /**
     * 树形数据配置：传入后启用「可展开行」模式。
     * data 行含 `children` 字段（字段名可经此配置覆盖）时渲染展开箭头。
     * 默认 undefined —— 不启用树形。
     */
    treeProps?: TableTreeProps;
    /** 是否开启行内编辑模式（默认关闭）。需列配置 column.editable=true 才对该列生效 */
    editable: boolean;
    sortProp: string;
    sortDirection: SortDirection;
    currentRow: number;
    selectedRows: Set<number>;
    /** 虚拟滚动：当前滚动位置(px)，驱动可见窗口计算 */
    scrollTop: number;
    /** 树形模式：已展开行的 key 列表 */
    expandedRowKeys: Array<string | number>;
    /** 行内编辑：当前正在编辑的单元格 { key, prop }，null 表示无 */
    editingCell: {
        rowKey: string | number;
        prop: string;
    } | null;
    /** 排序变化事件 */
    hbSortChange: EventEmitter<{
        prop: string;
        order: SortDirection;
    }>;
    /** 行点击事件 */
    hbRowClick: EventEmitter<{
        row: Record<string, any>;
        index: number;
    }>;
    /** 选择变化事件 */
    hbSelectionChange: EventEmitter<Record<string, any>[]>;
    /** 行操作点击事件 */
    hbAction: EventEmitter<{
        row: Record<string, any>;
        index: number;
        action: string;
    }>;
    /** 树形行展开/收起事件 */
    hbExpandChange: EventEmitter<{
        expanded: boolean;
        row: Record<string, any>;
    }>;
    /** 行内编辑提交事件 */
    hbCellChange: EventEmitter<{
        row: Record<string, any>;
        prop: string;
        value: any;
    }>;
    handleDataChange(): void;
    /** 树形模式是否启用（显式传入 treeProps 即启用） */
    private get isTreeMode();
    /** 子节点字段名（treeProps.children 缺省回退 'children'） */
    private get childrenField();
    /**
     * 把树拍平成可见行列表：仅保留「祖先链路全部已展开」的后代。
     * @param list  当前层级的数组
     * @param level 当前层级（根 = 0）
     * @param parentKeyPath 父级 key 路径，用于构造深层稳定 key（避免不同分支同 index 撞 key）
     */
    private flattenTree;
    /** 树形展开/收起切换 */
    private toggleExpand;
    /** 行内编辑：进入编辑态 */
    private startEdit;
    /** 行内编辑：提交（回车 / 失焦 / Change） */
    private commitEdit;
    /** 行内编辑：回车提交 / Esc 取消 */
    private onEditKeydown;
    private allCheckboxRef?;
    componentDidRender(): void;
    /** 虚拟滚动上下缓冲行数 */
    private readonly virtualBuffer;
    /** 虚拟滚动：滚动事件回调，更新 scrollTop 触发可见窗口重算 */
    private handleVirtualScroll;
    /** 虚拟滚动：计算可见窗口 [startIndex, endIndex) */
    private get visibleRange();
    /** 虚拟滚动：撑高容器总高度 */
    private get virtualTotalHeight();
    private handleSort;
    private get sortedData();
    private get isAllSelected();
    private get isIndeterminate();
    private toggleRow;
    private toggleAll;
    private emitSelection;
    private handleRowClick;
    private handleAction;
    private get hasActions();
    /** 计算固定列的 sticky 偏移（左侧/右侧累计宽度） */
    private get fixedOffsets();
    private cellStyle;
    /**
     * 渲染单行（普通 + 虚拟滚动 + 树形 共用）。
     * - 普通模式：rowIndex 为在 sortedData 中的全局索引。
     * - 树形模式：fr.level 决定缩进，第一列渲染展开箭头，key 取 fr.key。
     * fr 为可选；未传时按普通模式渲染。
     */
    private renderRow;
    /** 渲染表头（普通 + 虚拟滚动共用，表头始终固定不随滚） */
    private renderHeader;
    render(): any;
}
