import { CdsTooltip } from '../../CdsTooltip';
import { NTable } from '../interface';
import { ComponentProps } from '../../../utils';
import { Ref, ComputedRef } from 'vue';
export declare const ASCEND = "ascend";
export declare const DESCEND = "descend";
export interface ISorterOptions<RecordType> {
    mergedColumns: ComputedRef<NTable.NColumn.TColumns<RecordType>>;
    sortDirections: ComputedRef<NTable.TSortOrder[]>;
    tableLocale?: Ref<NTable.ILocale>;
    showSorterTooltip?: Ref<boolean | ComponentProps<typeof CdsTooltip>>;
    onSorterChange: (sorterResult: NTable.ISorterResult<RecordType> | NTable.ISorterResult<RecordType>[], sortStates: NTable.ISortState<RecordType>[]) => void;
}
export interface IUseSorter<RecordType> {
    transformColumns: NTable.NColumn.TTransformColumns<RecordType>;
    mergedSorterStates: Ref<NTable.ISortState<RecordType>[]>;
    columnTitleSorterProps: Ref<NTable.NColumn.ITitleProps<RecordType>>;
    sorters: Ref<NTable.ISorterResult<RecordType> | NTable.ISorterResult<RecordType>[]>;
}
export declare function useSorter<RecordType>({ mergedColumns, sortDirections, tableLocale, showSorterTooltip, onSorterChange }: ISorterOptions<RecordType>): IUseSorter<RecordType>;
export declare function getSortData<RecordType>(data: readonly RecordType[], sortStates: NTable.ISortState<RecordType>[], childrenColumnName: string): RecordType[];
