import type { TableColumn, TableEmit, RequiredTableProps } from "../typing";
import { type StyleValue } from "vue";
export declare function useTable(props: RequiredTableProps, emit: TableEmit): {
    hierarchicalColumns: import("vue").Ref<{
        title: string;
        key: string;
        customSlot?: string | undefined;
        width?: string | undefined;
        minWidth?: string | undefined;
        sort?: string | undefined;
        titleSlot?: string | undefined;
        align?: import("../../../types").CommonAlign | undefined;
        ellipsisTooltip?: boolean | undefined;
        ellipsisTooltipTheme?: string | undefined;
        ellipsisTooltipProps?: Record<string, any> | undefined;
        fixed?: "left" | "right" | undefined;
        type?: string | undefined;
        children?: any[] | undefined;
        rowspan?: number | undefined;
        resize?: boolean | undefined;
        hide?: boolean | undefined;
        ignoreExport?: boolean | undefined;
        totalRow?: string | number | boolean | undefined;
        totalRowMethod?: ((column: TableColumn, dataSource: import("../../../types").Recordable[]) => void) | undefined;
    }[][]>;
    lastLevelAllColumns: import("vue").Ref<{
        title: string;
        key: string;
        customSlot?: string | undefined;
        width?: string | undefined;
        minWidth?: string | undefined;
        sort?: string | undefined;
        titleSlot?: string | undefined;
        align?: import("../../../types").CommonAlign | undefined;
        ellipsisTooltip?: boolean | undefined;
        ellipsisTooltipTheme?: string | undefined;
        ellipsisTooltipProps?: Record<string, any> | undefined;
        fixed?: "left" | "right" | undefined;
        type?: string | undefined;
        children?: any[] | undefined;
        rowspan?: number | undefined;
        resize?: boolean | undefined;
        hide?: boolean | undefined;
        ignoreExport?: boolean | undefined;
        totalRow?: string | number | boolean | undefined;
        totalRowMethod?: ((column: TableColumn, dataSource: import("../../../types").Recordable[]) => void) | undefined;
    }[]>;
    lastLevelShowColumns: import("vue").Ref<{
        title: string;
        key: string;
        customSlot?: string | undefined;
        width?: string | undefined;
        minWidth?: string | undefined;
        sort?: string | undefined;
        titleSlot?: string | undefined;
        align?: import("../../../types").CommonAlign | undefined;
        ellipsisTooltip?: boolean | undefined;
        ellipsisTooltipTheme?: string | undefined;
        ellipsisTooltipProps?: Record<string, any> | undefined;
        fixed?: "left" | "right" | undefined;
        type?: string | undefined;
        children?: any[] | undefined;
        rowspan?: number | undefined;
        resize?: boolean | undefined;
        hide?: boolean | undefined;
        ignoreExport?: boolean | undefined;
        totalRow?: string | number | boolean | undefined;
        totalRowMethod?: ((column: TableColumn, dataSource: import("../../../types").Recordable[]) => void) | undefined;
    }[]>;
    tableDataSource: import("../../../types").Recordable[];
    columnsState: {
        setRowSpanValue: (column: TableColumn) => number;
        setColSpanValue: (column: TableColumn) => number;
    };
    selectedState: {
        tableSelectedKey: import("vue").Ref<string | number>;
        toggleSelected: (key: string | number) => void;
        allMSelected: import("vue").Ref<boolean>;
        setMAllSelected: (value: boolean) => void;
        someMSelected: import("vue").Ref<boolean>;
        tableMSelectedKeys: (string | number)[];
        toggleMSelected: (data: import("../../../types").Recordable, state: boolean) => void;
        getAllSelectedDataSource: () => import("../../../types").Recordable[];
    };
    expandState: {
        checkExpand: (key: string | number) => boolean;
        /**
         * props.columns 变化时，重新计算
         */
        toggleExpand: (key: string | number, state: boolean) => void;
    };
    hasTotalRow: import("vue").Ref<boolean>;
    commonGetClasses: (column: TableColumn, ...args: any[]) => any[];
    commonGetStylees: (column: TableColumn, ...age: any[]) => StyleValue;
};
export type UseTableReturn = ReturnType<typeof useTable>;
