export interface AutoColumnWidthOptions {
    /** 表头测量用字号（px） */
    headerFontSize?: number;
    /** 单元格测量用字号（px） */
    cellFontSize?: number;
    /** 行采样率，1 为全量行；小于 1 时隔行/隔多行采样以减轻大数据量时的计算量 */
    sampleRate?: number;
    /** 在「表头与单元格最大文本宽度」之上额外叠加的像素（padding 等） */
    additionalWidth?: number;
    /** 表头独有额外占位（icon 16 + gap 6 + padding-right 8 = 30px），传 0 可关闭图标部分 */
    headerExtraWidth?: number;
    /** 单列默认最大宽度（px），列未单独配置 maxWidth 时使用 */
    maxWidth?: number;
    /** 在测量并 clamp 后，按列 key 自定义最终宽度 */
    getCustomWidth?: (width: number, key: string, params: Record<string, any>) => number;
    /** 为 false 时不做剩余宽度分配，仅返回测量宽度 */
    fillContainerWidth?: boolean;
}
/** useAutoColumnWidth 入参 */
interface UseAutoColumnWidthOptions {
    /** 是否启用自动宽度计算 */
    enabled: boolean;
    /** 列配置（含 id、contentWidthRule、enableAutoWidth 等） */
    columns: any[];
    /** 表格数据，用于逐行测单元格文案宽度 */
    dataSource: any[];
    /** 用户已拖拽保存的列宽，有值的列不再自动计算 */
    persistedWidthMap: Record<string, number>;
    options?: AutoColumnWidthOptions;
    /** 表格内容区宽度，与 fillContainerWidth 配合做剩余宽度分配 */
    containerWidth?: number;
    /** 从容器宽度中预留的像素（如勾选列），再参与剩余宽度计算 */
    reservedWidth?: number;
}
/**
 * 从列配置中收集所有显式设置了 width 的列，返回 key → px 映射。
 * 用于在 columnsAutoWidth=false 时也能让 column.width 生效。
 */
export declare function collectColumnFixedWidths(columns: any[]): Record<string, number>;
/** @internal 仅用于测试：重置缓存的 canvas context，使下次调用重新创建 */
export declare function _resetMeasureContext(): void;
/**
 * 计算操作列宽度：按表头与各可见行按钮（含「更多」）文本测量，取最大内容宽并 clamp。
 * 无按钮或配置了固定 width 时走短路逻辑。
 */
export declare function calculateOperateColumnWidth({ operateColumn, dataSource, options, }: {
    operateColumn?: any;
    dataSource?: any[];
    options?: AutoColumnWidthOptions;
}): number;
/**
 * 为「启用自动宽度且非固定列、无持久化宽度」的列计算建议宽度（key -> px）。
 * 无 canvas 环境时返回空对象。
 */
export declare function calculateAutoWidths({ columns, dataSource, persistedWidthMap, options, }: Omit<UseAutoColumnWidthOptions, 'enabled'>): Record<string, number>;
/**
 * 在容器宽度大于各列当前宽度之和时，将剩余像素均分给可伸缩列（向下取整，余数前若干列 +1）。
 * 无有效容器宽度或无可伸缩列时原样返回 widthMap。
 */
export declare function distributeRemainingWidth({ columns, widthMap, persistedWidthMap, containerWidth, reservedWidth, }: {
    columns: any[];
    widthMap: Record<string, number>;
    persistedWidthMap: Record<string, number>;
    containerWidth?: number;
    reservedWidth?: number;
}): Record<string, number>;
/**
 * 在客户端根据列与数据计算自动列宽。
 * - 测量层（measureText）与分配层（distributeRemainingWidth）分离缓存；
 *   resize 只改变 containerWidth 时不会重新测量，仅重新分配。
 * - 使用 useMemo 同步计算，消除首帧空 widthMap 导致的闪烁。
 */
export declare function useAutoColumnWidth({ enabled, columns, dataSource, persistedWidthMap, options, containerWidth, reservedWidth, }: UseAutoColumnWidthOptions): Record<string, number>;
export {};
