import { type ColumnDef, type Row, type Table, type TableOptions } from '@tanstack/vue-table'; import { type MaybeRef, type Ref } from 'vue'; import type { DataTableColumnUiState } from '../../../DataTable/DataTableColumnUi.types'; interface UseDataTableOptions { columns: MaybeRef[]>; data: MaybeRef; /** * TanStack initialState for sorting, pagination, selection, expansion, pinning, column order/sizing, etc. * **`columnVisibility`** and **`columnOrder`** are stripped before `useVueTable` when using **`columnUi`**; set them with **`v-model:column-ui`** instead. */ initialState?: TableOptions['initialState']; /** * Column visibility and order. Pass a ref (e.g. from DataTable `v-model:column-ui`). When omitted, an internal empty ref is used. */ columnUi?: Ref; enableSorting?: boolean; enableFiltering?: boolean; enablePagination?: boolean; pageSize?: number; getSubRows?: (row: TData) => TData[] | undefined; getRowCanExpand?: (row: Row) => boolean; getRowId?: (row: TData) => string; enableRowSelection?: (row: Row) => boolean; } interface UseDataTableReturn { table: Table; isServerMode: boolean; } export default function useDataTable({ columns, data, initialState, columnUi: columnUiOption, enableSorting, enableFiltering, enablePagination, pageSize: defaultPageSize, getSubRows, getRowCanExpand, getRowId, enableRowSelection, }: UseDataTableOptions): UseDataTableReturn; export {};