/// <reference types="lodash" />
import type { ComputedRef, Ref, SetupContext } from '@vue/composition-api';
import type { ClassName, Styles } from '../../../common.type';
import type { BaseTableCol, RecalculateColumnWidthFunc, RowAndColFixedPosition, TableColFixedClasses, TableRowData, TableRowFixedClasses, TypeBaseTableProps } from '../type';
export declare function getColumnFixedStyles(col: TypeBaseTableProps['columns'][0], index: number, rowAndColFixedPosition: RowAndColFixedPosition, tableColFixedClasses: TableColFixedClasses): {
    style?: Styles;
    classes?: ClassName;
};
export declare function getRowFixedStyles(rowId: string | number, rowIndex: number, rowLength: number, fixedRows: TypeBaseTableProps['fixedRows'], rowAndColFixedPosition: RowAndColFixedPosition, tableRowFixedClasses: TableRowFixedClasses): {
    style: Styles;
    classes: ClassName;
};
export default function useFixed(props: TypeBaseTableProps, context: SetupContext, finalColumns: ComputedRef<BaseTableCol<TableRowData>[]>, affixRef: Record<string, Ref>): {
    tableWidth: Ref<number>;
    tableElmWidth: Ref<number>;
    thWidthList: Ref<{
        [x: string]: number;
    }>;
    isFixedHeader: Ref<boolean>;
    isWidthOverflow: Ref<boolean>;
    tableContentRef: Ref<HTMLDivElement>;
    isFixedColumn: Ref<boolean>;
    showColumnShadow: {
        left: boolean;
        right: boolean;
    };
    rowAndColFixedPosition: Ref<RowAndColFixedPosition>;
    virtualScrollHeaderPos: Ref<{
        left: number;
        top: number;
    }>;
    scrollbarWidth: Ref<number>;
    setData: (dataSource: TableRowData[]) => void;
    refreshTable: import("lodash").DebouncedFunc<() => void>;
    emitScrollEvent: (e: WheelEvent) => void;
    updateThWidthListHandler: () => void;
    updateColumnFixedShadow: (target: HTMLElement, extra?: {
        skipScrollLimit?: boolean;
    }) => void;
    setUseFixedTableElmRef: (val: HTMLTableElement) => void;
    getThWidthList: () => {
        [x: string]: number;
    };
    updateThWidthList: (trList: HTMLCollection | {
        [colKey: string]: number;
    }) => void;
    setRecalculateColWidthFuncRef: (val: RecalculateColumnWidthFunc) => void;
    addTableResizeObserver: (tableElement: HTMLDivElement) => void;
};
