export type NestedKey> = { [K in Extract]: O[K] extends Array ? K : O[K] extends Record ? `${K}` | `${K}.${NestedKey}` : K; }[Extract]; export type SortUnion = 'ASC' | 'DESC'; export type SortType = { field: T; order: SortUnion; }; export type Cursor = { page: number; hasNextPage: boolean; hasPreviousPage: boolean; perPage: number; totalPages: number; total: number; }; export type UseTableConfig = { searchFields: NestedKey[]; limit: number; filterFn: (value: T) => boolean; defaultSort: SortType>; sortFn: (a: T, b: T) => number; };