import { Column, HeaderValueGetterParams, IRowNode } from 'ag-grid-enterprise';
import { AdaptableColumn, AdaptableFormat, AdaptablePredicateDef, ColumnScope, FormatColumn, FormatColumnConfig, FormatColumnTarget, StringFormatterOptions } from '../../types';
import { ApiBase } from '../Implementation/ApiBase';
export declare class FormatColumnInternalApi extends ApiBase {
    /**
     * Retrieves all Format Columns in Adaptable State with the `Style` property set
     * @returns format columns
     */
    getAllFormatColumnWithStyle(config?: FormatColumnConfig): FormatColumn[];
    /**
     * Retrieves all Format Columns in Adaptable State with the `Style` or the `CellAlignment` property set
     * @returns format columns
     */
    getAllFormatColumnWithStyleAndCellAlignment(config?: FormatColumnConfig): FormatColumn[];
    /**
     * Retrieves all Format Columns in Adaptable State with `DisplayFormat` property set
     * @returns format columns
     */
    getAllFormatColumnWithDisplayFormat(config?: FormatColumnConfig): FormatColumn[];
    /**
     * Retrieves all Format Columns in Adaptable State with `CellAlignment` property set
     * @returns format columns
     */
    getAllFormatColumnWithCellAlignment(config?: FormatColumnConfig): FormatColumn[];
    /**
     * Get all FormatColumns which are defined for this column and have a custom AdaptableStyle
     * @param column
     * @param config
     * @returns list of FormatColumn
     */
    getFormatColumnsWithStyleForColumn(column: AdaptableColumn, config: FormatColumnConfig): FormatColumn[];
    /**
     * Gets Format Column if any for given Column which includes Style element with ClassName
     * @param column The Column for which to retrieve the Format Column
     * @returns format columns
     */
    getFormatColumnWithStyleClassNameForColumn(column: AdaptableColumn, config: {
        includeSuspended?: boolean;
        target: FormatColumnTarget;
    }): FormatColumn[];
    getFormatColumnWithColumnInScope(formatColumns: FormatColumn[], column: AdaptableColumn): FormatColumn[];
    private getFormatColumnInColumnScope;
    /**
     * Get all FormatColumns which are defined for this column and have a custom DisplayFormat
     * @param column
     * @param config
     * @returns list of FormatColumn
     */
    getFormatColumnsWithDisplayFormatForColumn(column: AdaptableColumn, config: {
        target: FormatColumnTarget;
        includeSuspended?: boolean;
    }): FormatColumn[];
    /**
     * Format value according to format options.
     *
     * @param customDisplayFormatterContext context that includes value to format
     * @param options formatter options
     */
    getNumberFormattedValue(value: any, node: IRowNode, column: AdaptableColumn, options: AdaptableFormat['Options']): any;
    /**
     * Format value according to format options.
     *
     * @param value  context that includes value to format
     * @param options formatter options
     */
    getStringFormattedValue(value: any, node: IRowNode, column: AdaptableColumn, options: StringFormatterOptions): string;
    /**
     * Format value according to format options.
     *
     * @param customDisplayFormatterContext  context that includes value to format
     * @param options formatter options
     */
    getDateFormattedValue(value: any, node: IRowNode, abColumn: AdaptableColumn, options: AdaptableFormat['Options']): string;
    private applyCustomFormatters;
    /**
     * Returns all Predicates appropriate for the given Scope
     * @param scope Scope to check
     */
    getFormatColumnDefsForScope(scope: ColumnScope): AdaptablePredicateDef[];
    formatColumnWithColumnGroupScopeShouldRender(formatColumn: FormatColumn, column: AdaptableColumn): boolean;
    /**
     * Checks if format column is relevant for a given cell (intersection of given AdaptableColumn and RowNode)
     *
     * @param formatColumn
     * @param column
     * @param params
     */
    formatColumnShouldRenderInCell(formatColumn: FormatColumn, column: AdaptableColumn, rowNode: IRowNode, cellValue: any, pivotResultColumn?: Column): boolean;
    /**
     * Checks if format column is relevant for a given Column Header
     *
     * @param formatColumn
     * @param column
     */
    formatColumnShouldRenderInHeader(formatColumn: FormatColumn, column: AdaptableColumn): boolean;
    private evaluatePredicate;
    private evaluateExpression;
    /**
     * Extract from the given FormatColumns the one which is the most relevant  for a given cell (intersection of given AdaptableColumn and RowNode)
     *
     * @param formatColumns
     * @param column
     * @param params
     */
    getMostRelevantFormatColumnForColumn(formatColumns: FormatColumn[], column: AdaptableColumn, params: {
        node: IRowNode;
        value: any;
    }): FormatColumn | undefined;
    /**
     * Retrieves all Format Columns which have an Expression
     * @returns Format Columns with Expression
     */
    getFormatColumnsWithExpression(config?: FormatColumnConfig): FormatColumn[];
    getFormatColumnsDependentOnColumns(columnSet: Set<string>, config?: FormatColumnConfig): FormatColumn[];
    /**
     * Retrieves the columns that need rerendering based on format column predicates.
     */
    getFormatColumnColumnsDependentOnColumnChange(column: AdaptableColumn): string[];
    formatColumnHeaderName(headerName: string, params: HeaderValueGetterParams): string;
}
