import { SetupContext } from '@vue/composition-api';
import { ClassName, Styles } from '../../common';
import { BaseTableCol, TdBaseTableProps } from '../type';
export interface ColumnStickyLeftAndRight {
    left: number[];
    right: number[];
    top: number[];
    bottom?: number[];
}
export interface TableColFixedClasses {
    left: string;
    right: string;
    lastLeft: string;
    firstRight: string;
    leftShadow: string;
    rightShadow: string;
}
export interface TableRowFixedClasses {
    top: string;
    bottom: string;
    firstBottom: string;
    withoutBorderBottom: string;
}
export interface FixedColumnInfo {
    left?: number;
    right?: number;
    top?: number;
    bottom?: number;
    parent?: FixedColumnInfo;
    children?: string[];
    width?: number;
    height?: number;
    col?: BaseTableCol;
    index?: number;
    lastLeftFixedCol?: boolean;
    firstRightFixedCol?: boolean;
}
export declare type RowAndColFixedPosition = Map<string | number, FixedColumnInfo>;
export declare function getColumnFixedStyles(col: TdBaseTableProps['columns'][0], index: number, rowAndColFixedPosition: RowAndColFixedPosition, tableColFixedClasses: TableColFixedClasses): {
    style?: Styles;
    classes?: ClassName;
};
export declare function getRowFixedStyles(rowId: string | number, rowIndex: number, rowLength: number, fixedRows: TdBaseTableProps['fixedRows'], rowAndColFixedPosition: RowAndColFixedPosition, tableRowFixedClasses: TableRowFixedClasses): {
    style: Styles;
    classes: ClassName;
};
export default function useFixed(props: TdBaseTableProps, context: SetupContext): {
    tableWidth: import("@vue/composition-api").Ref<number>;
    thWidthList: import("@vue/composition-api").Ref<{
        [x: string]: number;
    }>;
    isFixedHeader: import("@vue/composition-api").Ref<boolean>;
    isWidthOverflow: import("@vue/composition-api").Ref<boolean>;
    tableContentRef: import("@vue/composition-api").Ref<HTMLDivElement>;
    showAffixHeader: import("@vue/composition-api").Ref<boolean>;
    isFixedColumn: import("@vue/composition-api").Ref<boolean>;
    showColumnShadow: {
        left: boolean;
        right: boolean;
    };
    rowAndColFixedPosition: import("@vue/composition-api").Ref<RowAndColFixedPosition>;
    virtualScrollHeaderPos: import("@vue/composition-api").Ref<{
        left: number;
        top: number;
    }>;
    affixHeaderRef: import("@vue/composition-api").Ref<HTMLDivElement>;
    scrollbarWidth: import("@vue/composition-api").Ref<number>;
    refreshTable: () => void;
    updateThWidthListHandler: () => void;
    updateHeaderScroll: (target?: HTMLElement) => void;
    onTableContentScroll: (e: WheelEvent) => void;
};
