import type { NamedBean } from '../context/bean';
import { BeanStub } from '../context/beanStub';
import type { AgColumn } from '../entities/agColumn';
import type { DisplaySortDef, SortDef, SortDirection } from '../entities/colDef';
import type { ColumnEventType } from '../events';
import type { SortModelItem } from '../interfaces/iSortModelItem';
import type { SortOption } from '../interfaces/iSortOption';
import type { Component, ComponentSelector } from '../widgets/component';
import { SortIndicatorComp } from './sortIndicatorComp';
export declare class SortService extends BeanStub implements NamedBean {
    beanName: "sortSvc";
    progressSort(column: AgColumn, multiSort: boolean, source: ColumnEventType): void;
    progressSortFromEvent(column: AgColumn, event: MouseEvent | KeyboardEvent): void;
    setSortForColumn(column: AgColumn, sortDef: SortDef, multiSort: boolean, source: ColumnEventType): void;
    private updateSortIndex;
    onSortChanged(source: string, columns?: AgColumn[]): void;
    isSortActive(): boolean;
    dispatchSortChangedEvents(source: string, columns?: AgColumn[]): void;
    private clearSortBarTheseColumns;
    private getNextSortDirection;
    /**
     * @returns a map of sort indexes for every sorted column, if groups sort primaries then they will have equivalent indices
     */
    private getIndexedSortMap;
    getColumnsWithSortingOrdered(): AgColumn[];
    /**
     * Util method to collect sort items by going through sorted columns once.
     */
    private collectSortItems;
    getSortModel(): SortModelItem[];
    getSortOptions(): SortOption[];
    canColumnDisplayMixedSort(column: AgColumn): boolean;
    getDisplaySortForColumn(column: AgColumn): DisplaySortDef | null;
    getDisplaySortIndexForColumn(column: AgColumn): number | null | undefined;
    setupHeader(comp: Component, column: AgColumn): void;
    initCol(column: AgColumn): void;
    /**
     * Update a column's sort state from a sort definition.
     * If `sortDefOrDirection` is `undefined`, the call is a no-op (no change).
     */
    updateColSort(column: AgColumn, sortDefOrDirection: SortDirection | SortDef | undefined, source: ColumnEventType): void;
    private setColSort;
    setColSortIndex(column: AgColumn, sortOrder?: number | null): void;
    createSortIndicator(skipTemplate?: boolean): SortIndicatorComp;
    getSortIndicatorSelector(): ComponentSelector;
}
