import type { ComputedRef, Ref } from 'vue'; import type { ColumnsType, ColumnType, DefaultRecordType, FinallyColumnType, Key, SorterResult, SortOrder, SurelyTableProps } from '../components/interface'; export interface SortState { column: FinallyColumnType; key: Key; sortOrder: SortOrder | null; multiplePriority: number | false; } export declare const ASCEND = "ascend"; export declare const DESCEND = "descend"; export declare function getMultiplePriority(column: ColumnType): number | false; export declare function nextSortDirection(sortDirections: SortOrder[], current: SortOrder | null): SortOrder; export declare function getNewColumnsBySorter(columns: ColumnsType, sorterStates: SortState[], pos?: string): ColumnsType; export default function useSorter(_props: SurelyTableProps, allData: Ref, allColumns: Ref, onSorterChange: (sorterResult: SorterResult | SorterResult[], sortStates: SortState[]) => void): { sortedData: ComputedRef; sorterStates: Ref[]>; sorter: ComputedRef | SorterResult[]>; getSorters: (newSorterStates: SortState[]) => SorterResult | SorterResult[]; changeSorter: (sortState: SortState) => void; };