import React from "react"; type Values = Pick; interface Props { key: string; path: number[]; values: Values; isSelected: boolean; } interface Cell { key: string; props: UseTableCellProps; style: Record; render: () => React.ReactElement | null; Content: (props: React.HTMLProps & UseTableCellProps) => React.ReactElement | null; } interface Row extends Props { cells: Cell[]; } type Rows = Row[]; export interface UseTableCellProps { cell: { value: S[K]; }; row: Props; } export type TableCell = (props: UseTableCellProps) => React.JSX.Element; interface ColumnLayoutProperties { width?: string | number; minWidth?: string | number; maxWidth?: string | number; align?: React.CSSProperties["textAlign"]; cellAlign?: React.CSSProperties["textAlign"]; } type Column = { Header: string | ((props: { toggleAllRowsSelected: () => void; filterValues: Values; setFilters: (values: Values) => void; column: { filterValue: S[K]; setFilter: (value: S[K]) => void; }; }) => React.JSX.Element); Cell?: (props: UseTableCellProps) => React.JSX.Element; cellProps?: { style?: React.CSSProperties; }; headerProps?: { style?: React.CSSProperties; }; filter?: (value: S[K], args: { column: { filterValue: S[K]; }; }) => boolean; } & ColumnLayoutProperties; export type TableColumns = { [K in keyof S]?: Column; }; export type TableDataItem = Record; export declare const useTable: ({ data, ...props }: { columns: { [K in keyof S]?: Column; }; data: S[]; initialState?: { pageIndex?: number; pageSize?: number; }; }) => { canPreviousPage: boolean; canNextPage: boolean; gotoPage: React.Dispatch>; nextPage: () => void; setPageSize: React.Dispatch>; previousPage: () => void; pageIndex: number; headers: { key: string; style: Record; render: () => React.JSX.Element | string; }[]; rows: Rows; page: Row[]; toggleRowSelected: (toggleRows: number[], flag?: boolean) => void; toggleAllRowsSelected: () => void; }; export {};