import { SortDirectionType } from '../utils/SortUtils';
type SortKey<T> = keyof T | [keyof T, keyof T];
type UseSortingResult<T> = {
    /**
     * The sorted data
     */
    sortedItems: T[];
    /**
     * The key(s) to sort the data for
     */
    sortKey: SortKey<T>;
    /**
     * The current direction that the data is sorted
     */
    sortDirection: SortDirectionType;
    /**
     * Function to change the sorting key(s) afterwards
     * @param newKey the new sorting key(s)
     * @returns
     */
    setSortKey: (newKey: SortKey<T>) => void;
    /**
     * Function to change the sorting order afterwards
     * @param newKey the new sorting key(s)
     * @returns
     */
    setSortDirection: (newSortDirection: SortDirectionType) => void;
    /**
     * Function to toggle the sorting between ascending and descending order
     * @returns
     */
    toggleDirection: () => void;
};
declare const useSorting: <T>(items: T[], initialKey: SortKey<T>, initialDirection?: SortDirectionType, enableNaturalSort?: boolean, isCaseSensitive?: boolean) => UseSortingResult<T>;
export default useSorting;
