import { ClassType, LocaleConfig, StyleType } from '@vexip-ui/config';
import { TooltipTheme } from '../tooltip';
import { ColumnGroupWithKey, ColumnWithKey, Data, ExpandRenderFn, Key, ParsedFilterOptions, ParsedTableSorterOptions, StoreOptions, StoreState, TableCellPropFn, TableCellSpanFn, TableColResizeType, TableColumnRawOptions, TableExpandColumn, TableFootPropFn, TableHeadPropFn, TableKeyConfig, TableRowPropFn, TableRowState, TableSummaryData, TableSummaryOptions } from './symbol';
export declare function useStore(options: StoreOptions): Readonly<{
    state: Readonly<StoreState>;
    getters: Readonly<{
        filteredData: TableRowState[];
        sortedData: TableRowState[];
        processedData: TableRowState[];
        visibleKeys: Set<Key>;
        disableCheckRows: Set<Key>;
        disableExpandRows: Set<Key>;
        disableDragRows: Set<Key>;
        usingTree: boolean;
        hasDragColumn: boolean;
        rowDragging: boolean;
        totalWidths: number[];
        normalWidths: number[];
        leftFixedWidths: number[];
        rightFixedWidths: number[];
        expandColumn: TableExpandColumn<any, string | number> | undefined;
        summaryData: Map<Key, TableSummaryData>;
        topFixedHeights: number[];
        bottomFixedHeights: number[];
        indentedColumn: ColumnWithKey<any, string | number> | undefined;
        hasFixedColumn: boolean;
    }>;
    mutations: Readonly<{
        setColumns: (columns: TableColumnRawOptions[]) => Promise<void>;
        setSummaries: (summaries: TableSummaryOptions<any, string | number>[]) => Promise<void>;
        setData: (data: any[]) => Promise<void>;
        updateTotalHeight: () => Promise<void>;
        isGroupColumn: (column: any) => column is ColumnGroupWithKey;
        buildSummaryKey: (key: Key) => string | symbol;
        setColumnProp: (key: Key, prop: string, value: any) => void;
        setSummaryProp: (key: Key, prop: string, value: any) => void;
        setDataKey: (field: string) => void;
        setCurrentPage: (currentPage: number) => void;
        setPageSize: (pageSize: number) => void;
        setRowClass: (rowClass: ClassType | TableRowPropFn<ClassType>) => void;
        setRowStyle: (rowStyle: StyleType | TableRowPropFn<StyleType>) => void;
        setRowAttrs: (rowAttrs: Record<string, any> | TableRowPropFn<Record<string, any>>) => void;
        setCellClass: (cellClass: ClassType | TableCellPropFn<ClassType>) => void;
        setCellStyle: (cellStyle: StyleType | TableCellPropFn<StyleType>) => void;
        setCellAttrs: (cellAttrs: Record<string, any> | TableCellPropFn<Record<string, any>>) => void;
        setHeadClass: (headClass: ClassType | TableHeadPropFn<ClassType>) => void;
        setHeadStyle: (headStyle: StyleType | TableHeadPropFn<StyleType>) => void;
        setHeadAttrs: (headAttrs: Record<string, any> | TableHeadPropFn<Record<string, any>>) => void;
        setFootClass: (footClass: ClassType | TableFootPropFn<ClassType>) => void;
        setFootStyle: (footStyle: StyleType | TableFootPropFn<StyleType>) => void;
        setFootAttrs: (footAttrs: Record<string, any> | TableFootPropFn<Record<string, any>>) => void;
        setTableWidth: (width: number) => void;
        setRowHeight: (height: number) => void;
        setRowMinHeight: (height: number) => void;
        setCellHeight: (rowKey: Key, columnKey: Key, height: number) => void;
        setVirtual: (virtual: boolean) => void;
        setRowDraggable: (draggable: boolean) => void;
        setBodyYScroll: (scroll: number) => void;
        setBodyXScroll: (scroll: number) => void;
        setBorder: (able: boolean) => void;
        setStripe: (able: boolean) => void;
        setHighlight: (able: boolean) => void;
        setRowProp: (key: Key, prop: Exclude<keyof TableRowState, "key">, value: any) => void;
        setLocale: (locale: LocaleConfig["table"]) => void;
        setTooltipTheme: (theme: TooltipTheme) => void;
        setTooltipWidth: (theme: number | string) => void;
        setSingleSorter: (able: boolean) => void;
        setSingleFilter: (able: boolean) => void;
        setDragging: (dragging: boolean) => void;
        setKeyConfig: (keyConfig: Required<TableKeyConfig>) => void;
        setDisabledTree: (disabled: boolean) => void;
        setNoCascaded: (noCascaded: boolean) => void;
        setColResizable: (resizable: boolean | TableColResizeType) => void;
        setCustomSorter: (able: boolean) => void;
        setCustomFilter: (able: boolean) => void;
        setColumnResizing: (resizing: boolean) => void;
        setResizeLeft: (left: number) => void;
        setExpandRenderer: (renderer: ExpandRenderFn | null) => void;
        setCellSpan: (spanFn: TableCellSpanFn | null) => void;
        setSidePadding: (padding: number | number[]) => void;
        setBorderWidth: (width: number) => void;
        setDataFilter: (filter: (data: Data) => boolean) => void;
        setEllipsis: (ellipsis: boolean) => void;
        setLocked: (locked: boolean) => void;
        setBarScrolling: (scrolling: boolean) => void;
        setHoveredRowKey: (key: Key | null) => void;
        handleSort: (key: Key, type: ParsedTableSorterOptions["type"]) => void;
        clearSort: () => void;
        handleFilter: (key: Key, active: ParsedFilterOptions["active"]) => void;
        clearFilter: () => void;
        toggleFilterItemActive: (options: {
            key: Key;
            value: number | string | null;
            active?: boolean;
            disableOthers?: boolean;
        }) => void;
        refreshRowIndex: () => void;
        handleCheck: (key: Key, checked: boolean, single?: boolean) => void;
        handleCheckAll: () => void;
        clearCheckAll: (includeDisabled?: boolean) => void;
        setRenderRows: (start: number, end: number, force?: boolean) => void;
        handleExpand: (key: Key, expanded: boolean) => void;
        handleDrag: (key: Key, dragging: boolean) => void;
        collectUnderRows: (row: TableRowState, result?: TableRowState[]) => TableRowState[];
        setTreeExpanded: (key: Key, expanded: boolean) => void;
        getParentRow: (key: Key) => TableRowState | null;
        handleColumnResize: (keys: Key[], newWidth: number) => void;
        getCurrentData: () => any[];
        createMinRowState: (key: Key) => TableRowState;
        flatTreeRows: () => void;
        refreshRowDepth: () => void;
        triggerHeightChange: () => void;
        queryRow: (keyOrData: Key | Record<any, any>) => TableRowState | undefined;
    }>;
}>;
export type TableStore = ReturnType<typeof useStore>;
