import * as React from 'react'; import { Nullish, State, Modifier } from '@table-library/react-table-library/types/common'; import { TableNode } from '@table-library/react-table-library/types/table'; export declare enum SortIconPositions { Prefix = 0, Suffix = 1 } export declare enum SortToggleType { Alternate = 0, AlternateWithReset = 1 } export declare type SortOptionsIcon = { position?: SortIconPositions; margin?: string; size?: string; iconDefault?: React.ReactElement | Nullish; iconUp?: React.ReactElement | Nullish; iconDown?: React.ReactElement | Nullish; }; export declare type SortFn = (node: TableNode[]) => TableNode[]; export declare type SortOptions = { sortFns: Record; isServer?: boolean; sortToggleType?: SortToggleType; sortIcon?: SortOptionsIcon; isRecursive?: boolean; }; export declare type SortOptionsIconSound = Required; declare type SortOptionsSound = { [K in keyof Required]: K extends 'sortIcon' ? SortOptionsIconSound : Required[K]; }; export declare type SortFunctionInput = { sortKey: string; }; export declare type SortFunctions = { onToggleSort: (sortFunctionInput: SortFunctionInput) => void; }; export declare type ColumnSortProps = { sortKey: string; sortIcon?: SortOptionsIcon; }; export declare type HeaderCellSortProps = { index?: number; sortKey: string; sortIcon?: SortOptionsIcon; children?: React.ReactNode; } & Record; export declare type Sort = { state: State; fns: SortFunctions; options: SortOptionsSound; modifier: Modifier; components: { HeaderCellSort: React.FunctionComponent; }; }; export {};