import { ApiBase } from '../Implementation/ApiBase';
import { AdaptableColumn } from '../../PredefinedConfig/Common/AdaptableColumn';
import { AdaptablePredicateDef } from '../../PredefinedConfig/Common/AdaptablePredicate';
import { GridCell } from '../../PredefinedConfig/Selection/GridCell';
import { ColumnFilter } from '../../PredefinedConfig/Common/ColumnFilter';
import { IRowNode } from '@ag-grid-community/core';
import { LayoutColumnFilterAction } from '../../Redux/ActionsReducers/LayoutRedux';
import * as Redux from 'redux';
import { ColumnValuesFilterPredicate } from '../../AdaptableOptions/ColumnFilterOptions';
export declare class ColumnFilterInternalApi extends ApiBase {
    /**
     * Returns Predicate Definition for given Column and Quick Filter shortcut
     * @param shortcut Quick Filter shortcut to lookup
     * @param column AdapTable Column being Filtered
     */
    findPredicateDefByShortcut(shortcut: string, column: AdaptableColumn): AdaptablePredicateDef;
    /**
     * Creates an Equality Filter based on given Grid Cells
     * @param gridCells cells to create Filter for
     */
    createValuesColumnFilterForCells(gridCells: GridCell[]): ColumnFilter | null;
    /**
     *  Creates an Equality Filter based on given Grid Cell
     * @param gridCell cell to create Filter for
     */
    createEqualityColumnFilterForCell(gridCell: GridCell): ColumnFilter | null;
    /**
     * Retrieves description of given Column Filter
     * @param columnFilter Column Filter to use
     */
    columnFilterToString(columnFilter: ColumnFilter): string;
    /**
     * Retrieves descriptions of given Column Filters
     * @param columnFilters Column Filters to use
     */
    columnFiltersToString(columnFilters: ColumnFilter[]): string;
    /**
     * Calls AdapTableQL to evaluate Filter for given Row
     * @param columnFilter Column Filter to use
     * @param node Row Node to evaluate
     */
    evaluateColumnFilter(columnFilter: ColumnFilter, node: IRowNode): boolean;
    /**
     * Checks if the filter action should trigger Column Filtering
     *
     * @param action Filtering Action
     */
    shouldNewColumnFilterTriggerColumnFiltering(action: LayoutColumnFilterAction | Redux.Action): boolean;
    /**
     * Fires Column Filter Applied Event - typically used to enable filtering on the server
     */
    fireColumnFilterAppliedEvent(): void;
    fireGridFilterAppliedEvent(): void;
    /**
     * Compares to sets of Column Filters to see if they are identical
     * @param filters1
     * @param filters2
     */
    areColumnFiltersDifferent(oldFilters: ColumnFilter[], newFilters: ColumnFilter[]): boolean;
    getPredicateDefShortcuts(predicateDef: AdaptablePredicateDef): string[];
    getFilterValuesMaxNumberOfItems(column: AdaptableColumn): number | undefined;
    getValuesFitlerPredicateIds(column: AdaptableColumn): ColumnValuesFilterPredicate[];
}
