import { FormatColumn, FormatColumnState } from '../AdaptableState/FormatColumnState';
import { AdaptableColumn, AdaptableFormat, AdaptableObjectLookupCriteria, FormatColumnConfig } from '../types';
/**
 * Provides run-time access to the Format Column Module and associated state
 */
export interface FormatColumnApi {
    /**
     * Retrieves Format Column section from Adaptable State
     */
    getFormatColumnState(): FormatColumnState;
    /**
     * Retrieves all Format Columns in Adaptable State
     * @returns format columns
     */
    getFormatColumns(config?: FormatColumnConfig): FormatColumn[];
    /**
     * Retrieves Format Column by the technical ID (from `FormatColumnState`)
     * @param id Format Column id
     * @returns format column
     */
    getFormatColumnByUuId(id: FormatColumn['Uuid'], config?: FormatColumnConfig): FormatColumn;
    /**
     * Retrieves a Format Column by its Name
     * @param name Name of the Format Column
     * @returns Format Column or undefined if not found
     */
    getFormatColumnByName(name: string): FormatColumn | undefined;
    /**
     * Retrieves all active (not-suspended) Format Columns in Adaptable State
     * @returns format columns
     */
    getActiveFormatColumns(config?: FormatColumnConfig): FormatColumn[];
    /**
     * Retrieves the first Format Column's Adaptable Format for a given Column
     * @param column Column to check
     */
    getDisplayFormatForColumn(column: AdaptableColumn, config?: FormatColumnConfig): AdaptableFormat | undefined;
    /**
     * Retrieves all suspended Format Columns in Adaptable State
     * @returns format columns
     */
    getSuspendedFormatColumns(config?: FormatColumnConfig): FormatColumn[];
    /**
     * Adds a Format Column to Format Column State
     * @param formatColumn Format Column to Add
     * @returns format column
     */
    addFormatColumn(formatColumn: FormatColumn): FormatColumn;
    /**
    * Adds Format Columns to Format Column State
    * @param formatColumn Format Columns to Add
    * @returns format columns
    */
    addFormatColumns(formatColumns: FormatColumn[]): FormatColumn[];
    /**
     * Edits the Format Column
     * @param formatColumn Format Column to Edit
     * @returns format column
     */
    editFormatColumn(formatColumn: FormatColumn): FormatColumn;
    /**
     * Deletes an existing Format Column
     * @param formatColumn The Format Column to delete
     */
    deleteFormatColumn(formatColumn: FormatColumn): void;
    /**
     * Deletes all Format Columns in the State
     */
    deleteAllFormatColumns(): void;
    /**
     * Suspends an Format column
     * @param formatColumn The Format Column to suspend
     * @returns format column
     */
    suspendFormatColumn(formatColumn: FormatColumn): FormatColumn;
    /**
     * Suspends an Format column
     * @param formatColumn The Format Column to suspend
     * @returns format column
     */
    unSuspendFormatColumn(formatColumn: FormatColumn): FormatColumn;
    /**
     * Suspends all Format Columns
     */
    suspendAllFormatColumn(): void;
    /**
     * Activates all suspended Format Column
     */
    unSuspendAllFormatColumn(): void;
    /**
     * Opens Settings Panel with Format Column section selected and visible
     */
    openFormatColumnSettingsPanel(): void;
    /**
     * Gets all FormatColumns which are defined for the given column
     * @param column The Column for which to retrieve the Format Column
     * @returns format column
     */
    getFormatColumnsForColumn(column: AdaptableColumn, config?: FormatColumnConfig): FormatColumn[];
    /**
     * Gets all FormatColumns which are defined for the column with the given columnId
     * @param columnId ColumnId for which to retrieve the Format Column
     * @returns format column
     */
    getFormatColumnsForColumnId(columnId: string, config?: FormatColumnConfig): FormatColumn[];
    /**
     * Checks if a Format Column contains a Custom Display Formatter
     * @param formatColumn Format Column
     */
    hasCustomDisplayFormatter(formatColumn: FormatColumn): boolean;
    /**
     * Increment the precedence of the given FormatColumn
     * @param formatColumn
     */
    incrementFormatColumnPrecedence(formatColumn: FormatColumn): void;
    /**
     * Decrement the precedence of the given FormatColumn
     * @param formatColumn
     */
    decrementFormatColumnPrecedence(formatColumn: FormatColumn): void;
    /**
     * Find all Flashing Cell Definitions which match the given criteria
     * @param flashingCellLookupCriteria lookup criteria
     */
    findFormatColumns(formatColumnLookupCriteria: AdaptableObjectLookupCriteria): FormatColumn[];
}
