export declare type ColumnType = { name: string; label?: string; hidden?: boolean; sort?: ((a: RowType, b: RowType) => number) | undefined; render?: ({ value, row }: { value: any; row: T; }) => React.ReactNode; headerRender?: HeaderRenderType; }; export declare type ColumnStateType = { name: string; label: string; hidden: boolean; sort?: ((a: RowType, b: RowType) => number) | undefined; sorted: { on: boolean; asc?: boolean; }; headerRender?: HeaderRenderType; }; export declare type HeaderRenderType = ({ label }: { label: React.ReactNode; }) => React.ReactNode; export declare type HeaderType = { name: string; label?: string; hidden?: boolean; sorted: { on: boolean; asc?: boolean; }; sort?: ((a: RowType, b: RowType) => number) | undefined; render: () => React.ReactNode; }; export declare type DataType = { [key: string]: any; }; export declare type ColumnByNamesType = { [key: string]: ColumnType; }; export declare type RenderFunctionType = ({ value, row }: RenderFunctionArgsType) => React.ReactNode | undefined; declare type RenderFunctionArgsType = { value: any; row: T; }; export declare type ColumnByNameType = Omit>, "name" | "sort">; export interface RowType { id: number; cells: CellType[]; hidden?: boolean; selected?: boolean; original: T; } export declare type CellType = { value: any; render: () => React.ReactNode; }; export interface UseTableTypeParams { columns: ColumnType[]; data: T[]; options?: { sortable?: boolean; selectable?: boolean; filter?: (row: RowType[]) => RowType[]; filterOn?: boolean; }; } export interface UseTablePropsType { columns: ColumnType[]; data: T[]; options?: { sortable?: boolean; selectable?: boolean; filter?: (row: RowType[]) => RowType[]; }; } export interface UseTableOptionsType { sortable?: boolean; selectable?: boolean; pagination?: boolean; filter?: (row: RowType[]) => RowType[]; } export interface UseTableReturnType { headers: HeaderType[]; originalRows: RowType[]; rows: RowType[]; selectedRows: RowType[]; dispatch: React.Dispatch>; toggleSort: (columnName: string, isAscOverride?: boolean) => void; selectRow: (id: number) => void; toggleAll: () => void; setSearchString: (searchString: string) => void; toggleAllState: boolean; pagination: PaginatorType; } declare type PaginatorType = { nextPage: () => void; prevPage: () => void; page: number; perPage: number; canNext: boolean; canPrev: boolean; }; export declare type TableState = { columnsByName: ColumnByNamesType; columns: ColumnStateType[]; rows: RowType[]; originalRows: RowType[]; selectedRows: RowType[]; filterOn: boolean; sortColumn: string | null; toggleAllState: boolean; pagination: PaginatorType; paginationEnabled: boolean; }; export declare type TableAction = { type: "TOGGLE_SORT"; columnName: string; isAscOverride?: boolean; } | { type: "SELECT_ROW"; rowId: number; } | { type: "GLOBAL_FILTER"; filter: (row: RowType[]) => RowType[]; } | { type: "SEARCH_STRING"; searchString: string; } | { type: "GLOBAL_FILTER_OFF"; } | { type: "SET_ROWS"; data: RowType[]; } | { type: "NEXT_PAGE"; } | { type: "PREV_PAGE"; } | { type: "TOGGLE_ALL"; }; export {};