import { Ref } from 'vue';
import { Column, RenderFunctionString } from '../props';
/**
 * 列配置接口（带内部元数据）
 */
export interface ColumnConfig {
    /** 列唯一标识 */
    id: string;
    /** 父列 ID（用于嵌套列） */
    parentId?: string;
    /** 注册顺序（用于排序） */
    order: number;
    /** 列标签 */
    label?: Column['label'];
    /** 字段名 */
    field?: Column['field'];
    /** 渲染函数 */
    render?: RenderFunctionString | ((...args: unknown[]) => unknown);
    /** 宽度 */
    width?: Column['width'];
    /** 最小宽度 */
    minWidth?: Column['minWidth'];
    /** 列唯一键 */
    columnKey?: Column['columnKey'];
    /** 溢出提示 */
    showOverflowTooltip?: Column['showOverflowTooltip'];
    /** 列类型 */
    type?: Column['type'];
    /** 固定列 */
    fixed?: Column['fixed'];
    /** 是否可调整大小 */
    resizable?: Column['resizable'];
    /** 排序配置 */
    sort?: Column['sort'];
    /** 过滤配置 */
    filter?: Column['filter'];
    /** 列合并 */
    colspan?: Column['colspan'];
    /** 行合并 */
    rowspan?: Column['rowspan'];
    /** 对齐方式 */
    align?: Column['align'];
    /** 自定义类名 */
    className?: Column['className'];
    /** 兼容 prop */
    prop?: Column['prop'];
    /** 说明 */
    explain?: Column['explain'];
    /** 跨页选择 */
    acrossPage?: Column['acrossPage'];
    /** 子列 */
    children?: Column[];
}
/**
 * 列注册表接口
 */
export interface ColumnRegistry {
    /** 注册新列 */
    registerColumn: (id: string, config: Omit<ColumnConfig, 'id' | 'order'>, parentId?: string) => void;
    /** 更新列配置 */
    updateColumn: (id: string, config: Partial<Omit<ColumnConfig, 'id' | 'order'>>) => void;
    /** 注销列 */
    unregisterColumn: (id: string) => void;
    /** 获取所有列（有序） */
    getColumns: () => Column[];
    /** 检查是否有注册的列 */
    hasColumns: () => boolean;
    /** 清空所有列 */
    clear: () => void;
    /** 版本号（用于触发更新） */
    version: Ref<number>;
}
/**
 * 生成列 ID
 */
export declare const generateColumnId: () => string;
/**
 * 重置列 ID 种子（仅用于测试）
 */
export declare const resetColumnIdSeed: () => void;
/**
 * 创建列注册表
 * 负责管理所有列的注册、更新和注销，支持增量操作
 */
export default function useColumnRegistry(): ColumnRegistry;
export type UseColumnRegistry = ReturnType<typeof useColumnRegistry>;
