import { Ref } from 'vue';
import { Column, TablePropTypes } from '../props';
import { UseColumns } from './use-columns';
/**
 * 固定列位置枚举
 */
export declare enum FixedPosition {
    LEFT = "left",
    RIGHT = "right"
}
/**
 * 固定区域样式接口
 */
export interface FixedAreaStyle {
    left?: number;
    right?: number;
    width: string;
}
/**
 * 阴影状态接口
 */
export interface ShadowState {
    /** 是否显示左侧阴影 */
    showLeftShadow: boolean;
    /** 是否显示右侧阴影 */
    showRightShadow: boolean;
}
/**
 * 固定列 Hook 返回值接口
 */
export interface UseFixedColumnReturn {
    /** 左固定列列表 */
    fixedLeftColumns: Ref<Column[]>;
    /** 右固定列列表 */
    fixedRightColumns: Ref<Column[]>;
    /** 左固定区域样式 */
    fixedLeftStyle: FixedAreaStyle;
    /** 右固定区域样式 */
    fixedRightStyle: FixedAreaStyle;
    /** 左固定区域总宽度 */
    fixedLeftWidth: Ref<number>;
    /** 右固定区域总宽度 */
    fixedRightWidth: Ref<number>;
    /** 阴影状态 */
    shadowState: ShadowState;
    /** 是否有固定列 */
    hasFixedColumns: Ref<boolean>;
    /** 计算并更新所有固定列的样式 */
    resolveFixedColumnStyle: () => void;
    /** 更新阴影状态 */
    updateShadowState: (scrollLeft: number, scrollWidth: number, clientWidth: number) => void;
    /** 渲染固定列阴影层 */
    renderFixedRows: () => JSX.Element[];
    /** 判断列是否为左固定列的最后一列 */
    isLastLeftFixed: (column: Column) => boolean;
    /** 判断列是否为右固定列的第一列 */
    isFirstRightFixed: (column: Column) => boolean;
    /** 获取列的固定 class */
    getFixedColumnClass: (column: Column) => Record<string, boolean>;
}
/**
 * 固定列 Hook
 *
 * 实现原理：
 * 1. 通过 position: sticky 实现固定效果
 * 2. 左固定列：从左到右累加 left 偏移量
 * 3. 右固定列：从右到左累加 right 偏移量
 * 4. 通过 CSS 变量控制阴影显示
 *
 * 流程：
 * ```
 * 1. 列配置解析
 *    ├─ 分离左固定列 (fixed='left' 或 fixed=true)
 *    └─ 分离右固定列 (fixed='right')
 *
 * 2. 样式计算 (resolveFixedColumnStyle)
 *    ├─ 左固定列：从左到右累加 left 偏移
 *    │   col1: left: 0px
 *    │   col2: left: col1.width
 *    │   col3: left: col1.width + col2.width
 *    │
 *    └─ 右固定列：从右到左累加 right 偏移
 *        colN:   right: 0px
 *        colN-1: right: colN.width
 *
 * 3. 阴影控制 (updateShadowState)
 *    ├─ scrollLeft > 0 → 显示左固定列右边阴影
 *    └─ scrollLeft + clientWidth < scrollWidth → 显示右固定列左边阴影
 * ```
 *
 * @param props Table 组件 props
 * @param columns useColumns 返回值
 */
export default function useFixedColumn(_props: TablePropTypes, columns: UseColumns): UseFixedColumnReturn;
export type UseFixedColumn = ReturnType<typeof useFixedColumn>;
