import type { ColumnSortingOrder } from '../Options.js';
import QueryingController from './QueryingController.js';
import SortModifier from '../../../Data/Modifiers/SortModifier.js';
/**
 * Class that manages one of the data grid querying types - sorting.
 */
declare class SortingController {
    /**
     * The data grid instance.
     */
    private querying;
    /**
     * The current sorting options: column ID and sorting order.
     */
    currentSorting?: SortingState;
    /**
     * The current multi-column sorting options in priority order.
     */
    currentSortings?: SortingState[];
    /**
     * The modifier that is applied to the data table.
     */
    modifier?: SortModifier;
    /**
     * Constructs the SortingController instance.
     *
     * @param querying
     * The querying controller instance.
     */
    constructor(querying: QueryingController);
    /**
     * Sets the sorting state. If the new sorting state is different than the
     * current one, the `shouldBeUpdated` flag is set to `true`. If the
     * same, the flag is set to `false`.
     *
     * @param order
     * The sorting order.
     *
     * @param columnId
     * The column ID to sort by.
     */
    setSorting(order: ColumnSortingOrder, columnId?: string): void;
    setSorting(sortings: SortingState[]): void;
    /**
     * Checks whether two sorting state arrays are equal.
     *
     * @param a
     * First sorting state array.
     *
     * @param b
     * Second sorting state array.
     */
    private static sortingsEqual;
    /**
     * Returns the sorting options from the data grid options.
     */
    private getSortingOptions;
    /**
     * Loads sorting options from the data grid options.
     */
    loadOptions(): void;
    /**
     * Returns the sorting modifier based on the loaded sorting options.
     */
    private createModifier;
}
/**
 * The sorting state interface.
 */
export interface SortingState {
    columnId?: string;
    order: ColumnSortingOrder;
}
export default SortingController;
