import { Observable } from 'rxjs';
import { ISort, SortDirection } from '../sort';
import { Sorter } from '../sorter/sorter.service';
import { IColumn } from '../../column';
export { ISort, SortDirection };
export declare class SortManagerService {
    getColumn: {
        (name: string): IColumn<any>;
    };
    maxColumnSorts: number;
    private _sortList;
    private sorter;
    constructor(sorter: Sorter);
    setup(sortList: ISort[], getColumn: {
        (name: string): IColumn<any>;
    }, maxColumnSorts: number): void;
    readonly sortList$: Observable<ISort[]>;
    readonly visualColumnSorting$: Observable<ISort[]>;
    sort(data$: Observable<any[]>): Observable<any[]>;
    updateSorts(column: IColumn<any>): void;
    toggleFirstSort(firstSort: ISort, hasSecondarySorts: boolean, sortList: ISort[]): ISort[];
    setFirstSort(column: IColumn<any>, sortList: ISort[]): ISort[];
    private buildSecondarySorts(direction, secondarySorts);
    private updateVisualColumnSorting(sorts);
    private updateVisualSortIndicator(sort);
    private clearVisualSortIndicator(sort);
}
