import { Prop, Signal, TNode, Value } from '@tempots/dom'; import { ControlSize } from '../theme'; import { DataSource, RowGroup } from './data-source'; import { DataColumnDef, DataTableOptions, DataTablePaginationOptions, DataTableToolbarOptions, RowDetailsConfig } from './data-table-types'; export interface DataTableContext { ds: DataSource; columns: DataColumnDef[]; columnMap: Map>; getCol: (id: C) => DataColumnDef; rowId: (row: T) => string; visibleColumns: Signal; hiddenColumns: Signal; hideableColumns: DataColumnDef[]; hasColumnVisibility: Value; toggleColumnVisibility: (colId: C) => void; showAllColumns: () => void; columnOrder: Prop; reorderableColumns: Value; onColumnOrderChange?: (columnIds: C[]) => void; dragState: { columnId: C | null; }; selectable: Value; selectableSignal: Signal; selectOnRowClickSignal: Signal; selectionAfter: Value; sortable: Value; multiSort: Value; size: Value; onRowClick?: (row: T) => void; filterLayout: Value<'header' | 'row'>; hasFilters: Value; loading: Value; showFooter: Value; emptyContent?: TNode; groupCollapsible: boolean; groupSummary?: (groupKey: string, rows: T[]) => TNode; hasFooter: boolean; rowClickable: Signal; effectiveHoverable: Signal; totalColSpan: Signal; collapsedGroups: Prop>; currentGroupPageGroups: Signal[]>; toolbarConfig: Signal; paginationConfig: Value; paginationEnabledSignal: Signal; pageSizeSignal: Signal; effectiveTotalPages: Signal; effectiveCurrentPage: Signal; setEffectivePage: (page: number) => void; showPagination: Signal; rowDetails?: RowDetailsConfig; hasToggleColumn: boolean; expandedRows?: { toggledIds: Prop>; renderedOnce: Set; isExpanded: (rowId: string) => boolean; toggle: (rowId: string) => void; }; dispose: () => void; } export declare function createDataTableContext(options: DataTableOptions): DataTableContext;