import { FilterFieldRuntimeContext } from '../../lib/column-filter-context.js'; import * as React from 'react'; import { RowHeight } from '../../lib/row-height.js'; import { ColumnDef, SortDir } from './types.js'; import { SortRule, ActiveFilter } from '../../lib/table-properties-types.js'; import '../../lib/column-filter-person-options.js'; import '../../lib/column-cell-kind.js'; declare function useTableState>(data: TData[], columns: ColumnDef[], defaultSort?: { key: string; dir: SortDir; }, paginationOverride?: { page: number; pageSize: number; }, /** * When defined (including `""`), toolbar search is synced from the URL (`?q=`). * Use `searchParams.get("q") ?? ""` on library list routes; omit for other hubs. */ syncedSearchFromUrl?: string): { sortRules: SortRule[]; setSortRules: React.Dispatch>; sortKey: string; sortDir: SortDir; addSortRule: (fieldKey: string) => void; removeSortRule: (id: string) => void; toggleSortDir: (id: string) => void; handleSortByKey: (colKey: string) => void; search: string; setSearch: React.Dispatch>; searchOpen: boolean; setSearchOpen: React.Dispatch>; searchRef: React.RefObject; activeFilters: ActiveFilter[]; setActiveFilters: React.Dispatch>; filterConnectors: Record; setFilterConnectors: React.Dispatch>>; toggleConnector: (leftId: string) => void; getConnector: (leftId: string) => "and" | "or"; openFilterId: string | null; setOpenFilterId: React.Dispatch>; filterBarVisible: boolean; setFilterBarVisible: React.Dispatch>; drawerExpandedFilters: Set; setDrawerExpandedFilters: React.Dispatch>>; addFilter: (fieldKey: string, fromDrawer?: boolean) => void; updateFilter: (id: string, patch: Partial) => void; removeFilter: (id: string) => void; openColumnFilterInDrawer: (fieldKey: string) => void; groupBy: string | null; setGroupBy: React.Dispatch>; colMenuSearch: Record; setColMenuSearch: React.Dispatch>>; selected: Set; setSelected: React.Dispatch>>; toggleRow: (id: string | number) => void; toggleAll: (allRowIds: (string | number)[]) => void; getRowId: (row: TData, index: number, getIdFn?: (r: TData, i: number) => string | number) => string | number; colWidths: Record; setColWidths: React.Dispatch>>; resizeRef: React.RefObject<{ key: string; startX: number; startW: number; } | null>; startResize: (key: string, e: React.MouseEvent) => void; colOrder: string[]; setColOrder: React.Dispatch>; moveCol: (key: string, dir: "up" | "down") => void; colPins: Record; setColPins: React.Dispatch>>; lockedPins: Record; LOCKED_KEYS: Set; pinColumn: (key: string, pin: "left" | "right") => void; unpinColumn: (key: string) => void; colWrap: Record; setColWrap: React.Dispatch>>; toggleWrap: (key: string) => void; draggedKey: React.RefObject; dragOverKey: string | null; handleDragStart: (key: string, e: React.DragEvent) => void; handleDragOver: (key: string, e: React.DragEvent) => void; handleDrop: (key: string) => void; handleDragEnd: () => void; scrollRef: React.RefObject; scrolled: boolean; scrollEnd: boolean; isOverflowing: boolean; checkOverflow: () => void; handleScroll: () => void; hoveredRow: string | number | null; setHoveredRow: React.Dispatch>; rows: TData[]; pagedRows: TData[]; groupedRows: { groupKey: string | null; groupLabel: string | null; rows: TData[]; }[]; effectivePins: Record; displayCols: ColumnDef[]; isReflowViewport: boolean; getStickyLeft: (key: string) => number; getStickyRight: (key: string) => number; stickyStyle: (key: string, isHeader?: boolean) => React.CSSProperties; totalWidth: number; sheetOpen: boolean; setSheetOpen: React.Dispatch>; sheetInitialPanel: string | null; setSheetInitialPanel: React.Dispatch>; openFilterPanelInDrawer: () => void; filterFieldContext: Record; showGridlines: boolean; setShowGridlines: React.Dispatch>; rowHeight: RowHeight; setRowHeight: React.Dispatch>; hiddenCols: Set; setHiddenCols: React.Dispatch>>; toggleColVisibility: (key: string) => void; }; export { useTableState };