import { VegaSlimmer } from '../../../../vega-slimmer/vega-slimmer-core';
import { VegaTableColumnConfig, VegaTableDataSourceItem, VegaTableSortOrderType } from '../../interface';
import { VegaTable } from '../../vega-table';
import { VegaTableSorter } from './vega-table-sorter';
/**
 * The sort controller for the vega-table
 */
export declare class VegaTableSortController extends VegaSlimmer {
  sortersMap: VegaTable['sortersMap'];
  columns: VegaTable['columns'];
  changeEventEmitter: VegaTable['changeEventEmitter'];
  vegaTableDataSourceController: VegaTable['vegaTableDataSourceController'];
  sortConfig: VegaTable['sortConfig'];
  /**
   * The callback of [watchColumns]{@link VegaTable.watchColumns}
   */
  watchColumns(): void;
  /**
   * The method for header cell sort click
   *
   * @param {VegaTableColumnConfig} column - The column for sorting
   * @param {VegaTableSortOrderType} nextSortOrder - The next sorter order
   */
  handleHeadSortClick(column: VegaTableColumnConfig, nextSortOrder: VegaTableSortOrderType): void;
  /**
   * The method to clear all sorters
   */
  clearSorter: () => void;
  /**
   * Sync the default sort order from the columns
   */
  syncSortOrder(): void;
  /**
   * The method to sort the data by sorter which include prop name and order
   *
   * @param {VegaTableDataSourceItem[]} data - The source that will be sorted
   * @param {VegaTableSorter[]} sorters - array of sorters ordered by sequence of columns to be sorted
   * @returns {VegaTableDataSourceItem[]} The sorted data source
   */
  sortData(data: VegaTableDataSourceItem[], sorters: VegaTableSorter[]): VegaTableDataSourceItem[];
}
