import { CalculatedColumn, CalculatedColumnState } from '../AdaptableState/CalculatedColumnState';
/**
 * Provides run-time access to the Calculated Column Module
 **/
export interface CalculatedColumnApi {
    /**
     * Retrieves Calculated Column section from Adaptable State
     */
    getCalculatedColumnState(): CalculatedColumnState;
    /**
     * Retrieves all Calculated Columns in Adaptable State
     */
    getCalculatedColumns(): CalculatedColumn[];
    /**
     * Retrieves all Aggregated Calculated Columns in Adaptable State
     */
    getAggregatedCalculatedColumns(): CalculatedColumn[];
    /**
     * Retrieves Calculated Column by the technical ID (from `CalculatedColumnState`)
     * @param id - Calculated Column state unique identifier
     * @returns calculated column
     */
    getCalculatedColumnById(id: CalculatedColumn['Uuid']): CalculatedColumn;
    /**
     * Gets Calculated Column, if any, for given ColumnId
     * @param columnId ColumnId for which to retrieve the Calculated Column
     * @returns calculated column
     */
    getCalculatedColumnForColumnId(columnId: string): CalculatedColumn | undefined;
    /**
     * Adds new Calculated Column
     * @param calcColumn Calculated Column to add
     * @returns calculated column
     */
    addCalculatedColumn(calcColumn: CalculatedColumn): CalculatedColumn;
    /**
     * Updates given Calculated Column in Adaptable State
     * @param calcColumn Calculated Column to edit
     * @returns calculated column
     */
    editCalculatedColumn(calcColumn: CalculatedColumn): CalculatedColumn;
    /**
     * Deletes Calculated Column with given ColumnId from Adaptable State
     *
     * @param columnId ColumnId of Calculated Column to delete
     */
    deleteCalculatedColumn(columnId: string): void;
    /**
     * Opens Settings Panel with Calculated Column section selected and visible
     */
    openCalculatedColumnSettingsPanel(): void;
    /**
     * Re-calculates all aggregated CalculatedColumns (defined with a `AggregatedScalarExpression`)
     */
    refreshAggregatedCalculatedColumns(): void;
    /**
     * Re-calculates the aggregated CalculatedColumn (defined with a `AggregatedScalarExpression`) with the given `columnId`
     * @param columnId column ID of the aggregated CalculatedColumn
     */
    refreshAggregatedCalculatedColumn(columnId: string): void;
}
