import { ComputedRef, Ref } from 'vue';
import { TableBodyRow, TableCellSlotProps, TableFilterValue, TableHeaderCell, TableProps, TableResolvedColumn, TableSortOrder, TableSummaryValue, TableTreeNode } from '../table.js';
export interface TableStore<T = Record<string, unknown>> {
    normalizedColumns: ComputedRef<TableResolvedColumn<T>[]>;
    leafColumns: ComputedRef<TableResolvedColumn<T>[]>;
    hasAutoColumnWidths: ComputedRef<boolean>;
    leftFixedColumns: ComputedRef<TableResolvedColumn<T>[]>;
    rightFixedColumns: ComputedRef<TableResolvedColumn<T>[]>;
    leftFixedLeafColumns: ComputedRef<TableResolvedColumn<T>[]>;
    rightFixedLeafColumns: ComputedRef<TableResolvedColumn<T>[]>;
    headerRows: ComputedRef<TableHeaderCell<T>[][]>;
    bodyRows: ComputedRef<TableBodyRow<T>[]>;
    summaryValues: ComputedRef<TableSummaryValue[]>;
    treeColumn: ComputedRef<TableResolvedColumn<T> | undefined>;
    selectionColumn: ComputedRef<TableResolvedColumn<T> | undefined>;
    fixedOffsets: ComputedRef<{
        left: Record<string, number>;
        right: Record<string, number>;
    }>;
    currentRowKey: ComputedRef<string | number | null>;
    sortProp: ComputedRef<string | undefined>;
    sortOrder: ComputedRef<TableSortOrder>;
    filterPanelColumnUid: Ref<string | null>;
    hasFixedColumns: ComputedRef<boolean>;
    hasLeftFixedColumns: ComputedRef<boolean>;
    hasRightFixedColumns: ComputedRef<boolean>;
    hasTree: ComputedRef<boolean>;
    isCurrentRow: (row: T, rowIndex: number) => boolean;
    isHoveredRow: (row: T) => boolean;
    isRowSelected: (row: T) => boolean;
    isRowSelectionIndeterminate: (row: T) => boolean;
    isAllSelected: ComputedRef<boolean>;
    isSelectionIndeterminate: ComputedRef<boolean>;
    isRowExpanded: (row: T) => boolean;
    isRowExpandable: (row: T, rowIndex: number) => boolean;
    getColumnSortOrder: (column: TableResolvedColumn<T>) => TableSortOrder;
    getColumnFilterValues: (column: TableResolvedColumn<T>) => TableFilterValue[];
    getCellValue: (row: T, column: TableResolvedColumn<T>, rowIndex: number) => unknown;
    getSummaryValue: (column: TableResolvedColumn<T>) => TableSummaryValue;
    getCellMeta: (row: T, rowIndex: number, column: TableResolvedColumn<T>, columnIndex: number, expanded?: boolean, treeNode?: TableTreeNode) => TableCellSlotProps<T>;
    setCurrentRow: (row?: T | null) => void;
    cycleSortOrder: (column: TableResolvedColumn<T>) => void;
    clearSort: () => void;
    clearFilter: (columnKeys?: string | string[]) => void;
    sort: (prop: string, order: TableSortOrder) => void;
    toggleFilterPanel: (column: TableResolvedColumn<T>) => void;
    isFilterPanelOpen: (column: TableResolvedColumn<T>) => boolean;
    closeFilterPanel: () => void;
    setColumnFilters: (column: TableResolvedColumn<T>, values: TableFilterValue[]) => void;
    toggleRowSelection: (row: T, selected?: boolean, ignoreSelectable?: boolean) => void;
    toggleAllSelection: () => void;
    clearSelection: () => void;
    getSelectionRows: () => T[];
    toggleRowExpansion: (row: T, expanded?: boolean) => void;
    toggleTreeRow: (row: T) => void;
    setAllTreeRowsExpanded: (expanded?: boolean) => void;
    setHoveredRow: (row?: T | null) => void;
    getRowKey: (row: T, rowIndex: number) => string | number;
    setColumnWidth: (uid: string, width: number) => void;
    hasColumnWidthOverride: (uid: string) => boolean;
    syncAutoColumnWidths: (widths: Record<string, number>) => void;
    clearAutoColumnWidths: () => void;
    updateKeyChildren: (key: string | number, children: T[]) => void;
}
export declare function useTableStore<T extends Record<string, unknown>>(options: {
    props: TableProps<T>;
    columns: ComputedRef<TableResolvedColumn<T>[]>;
    fitWidth?: ComputedRef<number>;
    emit: (event: string, ...args: any[]) => void;
}): TableStore<T>;
