import { CustomSortState, CustomSort } from '../AdaptableState/CustomSortState';
/**
 *  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?: {
        includeLayoutNotAssociatedObjects?: boolean;
    }): CustomSort[];
    /**
     * Retrieves Custom Sort by the technical ID (from `CustomSortState`)
     * @param id Custom Sort technical id
     * @returns sort column
     */
    getCustomSortById(id: CustomSort['Uuid']): CustomSort;
    /**
     * Retrieves all Custom Sorts that are active (not-suspended) in Adaptable State
     * @returns sort columns
     */
    getActiveCustomSorts(config?: {
        includeLayoutNotAssociatedObjects?: boolean;
    }): CustomSort[];
    /**
     * Retrieves all Custom Sorts that are suspended in Adaptable State
     * @returns sort columns
     */
    getSuspendedCustomSorts(config?: {
        includeLayoutNotAssociatedObjects?: boolean;
    }): CustomSort[];
    /**
     * Retrieves Custom Sort from Adaptable State for Column with given ColumnId
     * @param columnId Id of Column to retrieve Custom Sort for
     * @returns sort column
     */
    getCustomSortForColumn(columnId: string): CustomSort | undefined;
    /**
     * Adds a Custom Sort to Custom Sort collection in Adaptable State
     * @param customSort Custom Sort to add
     * @returns sort column
     */
    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 sort column
     */
    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 sort column
     */
    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 sort column
     */
    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 sort column
     */
    unSuspendCustomSort(customSort: CustomSort): CustomSort;
    /**
     * Opens Settings Panel with Custom Sort section selected and visible
     */
    openCustomSortSettingsPanel(): void;
}
