import { ColumnValuesComparer } from '../AdaptableOptions/CustomSortOptions';
import { CustomSortState, CustomSort } from '../AdaptableState/CustomSortState';
import { LayoutExtendedConfig } from '../types';
/**
 *  Provides run-time access to the Custom Sort function
 */
export interface CustomSortApi {
    /**
     * Retrieves Custom Sort section from Adaptable State
     */
    getCustomSortState(): CustomSortState;
    /**
     * Retrieves all Custom Sorts in Adaptable State
     */
    getCustomSorts(config?: LayoutExtendedConfig): CustomSort[];
    /**
     * Retrieves Custom Sort by the technical ID (from `CustomSortState`)
     * @param id Custom Sort technical id
     * @returns Custom Sort
     */
    getCustomSortById(id: CustomSort['Uuid'], config?: LayoutExtendedConfig): CustomSort;
    /**
     * Retrieves all Custom Sorts in Adaptable State that are currently applied
     * @returns Custom Sorts
     */
    getLiveCustomSorts(): CustomSort[];
    /**
     * Returns all Custom Sort Comparers in Custom Sort Options that are currently applied
     */
    getLiveCustomSortComparers(): ColumnValuesComparer[];
    /**
     * Retrieves all Custom Sorts that are active (not-suspended) in Adaptable State
     * @returns Custom Sorts
     */
    getActiveCustomSorts(config?: LayoutExtendedConfig): CustomSort[];
    /**
     * Retrieves all Custom Sorts that are suspended in Adaptable State
     * @returns Custom Sorts
     */
    getSuspendedCustomSorts(config?: LayoutExtendedConfig): CustomSort[];
    /**
     * Retrieves Custom Sort from Adaptable State for Column with given ColumnId
     * @param columnId Id of Column to retrieve Custom Sort for
     * @returns Custom Sort
     */
    getCustomSortForColumn(columnId: string): CustomSort | undefined;
    /**
     * Adds a Custom Sort to Custom Sort collection in Adaptable State
     * @param customSort Custom Sort to add
     * @returns Custom Sort
     */
    addCustomSort(customSort: CustomSort): CustomSort;
    /**
     * Creates new Custom Sort based on given values
     * @param columnId Id of Column to which to apply Custom Sort
     * @param values Custom Sort values to apply
     * @returns Custom Sort
     */
    createCustomSort(columnId: string, values: string[]): CustomSort;
    /**
     * Updates existing Custom Sort with new set of Sorted Values
     * @param columnId Id of Column on which to edit the Custom Sort
     * @param values Custom Sort values to use (replaces what was previously used)
     * @returns Custom Sort
     */
    editCustomSort(columnId: string, values: string[]): CustomSort;
    /**
     * Removes Custom Sort for a given ColumnId
     * @param column columnId on which to delete the Custom Sort
     */
    deleteCustomSort(columnId: string): void;
    /**
     * Suspends Custom Sort
     * @param customSort Custom Sort to suspend
     * @returns Custom Sort
     */
    suspendCustomSort(customSort: CustomSort): CustomSort;
    /**
     * Suspends all Custom Sorts
     */
    suspendAllCustomSort(): void;
    /**
     * Activates all suspended Custom Sort
     */
    unSuspendAllCustomSort(): void;
    /**
     * Un-suspends or activates a suspended Custom Sort
     * @param customSort Custom Sort to suspend
     * @returns Custom Sort
     */
    unSuspendCustomSort(customSort: CustomSort): CustomSort;
    /**
     * Opens Settings Panel with Custom Sort section selected and visible
     */
    openCustomSortSettingsPanel(): void;
}
