import { IRowNode, RowClassParams } from '@ag-grid-community/core';
import { DistinctColumnValuesParams } from '../../AdaptableInterfaces/IAdaptable';
import { EditLookUpPermittedValues } from '../../AdaptableOptions/UserInterfaceOptions';
import { AdaptableColumn, AdaptableColumnDataType } from '../../PredefinedConfig/Common/AdaptableColumn';
import { CellDataChangedInfo } from '../../PredefinedConfig/Common/CellDataChangedInfo';
import { AdaptableMenuItem } from '../../PredefinedConfig/Common/Menu';
import { SpecialColumnSettings } from '../../PredefinedConfig/Common/SpecialColumnSettings';
import { AdaptableColumnType } from '../../PredefinedConfig/Common/Types';
import { GridCell } from '../../PredefinedConfig/Selection/GridCell';
import { SelectedCellInfo } from '../../PredefinedConfig/Selection/SelectedCellInfo';
import { SelectedRowInfo } from '../../PredefinedConfig/Selection/SelectedRowInfo';
import { GridDataChangeTrigger } from '../Events/GridDataChanged';
import { ApiBase } from '../Implementation/ApiBase';
export declare class GridInternalApi extends ApiBase {
    /**
     * Fires Grid Sorted Event
     */
    fireGridSortedEvent(): void;
    /**
     * Fires Cell Changed Changed Event - when any data in AG Grid's dataset has changed
     */
    fireCellChangedEvent(cellDataChangedInfo: CellDataChangedInfo): void;
    /**
     * Fires Grid Data Changed Event - when a row has changed in AG Grid
     */
    fireGridDataChangedEvent(dataRows: any[], rowNodes: IRowNode[], rowTrigger: GridDataChangeTrigger): void;
    /**
     * Gets all distinct display values in the Column for given ColumnId
     * @param columnId Column to check
     */
    getDistinctDisplayValuesForColumn(columnId: string): any[];
    /**
     * Gets all distinct Filter values for the Column with the given ColumnId
     * used for Floating Filter and Column Header filter
     * either returns a list of values or al ist a list of values with count
     *
     * This is a general method, and it is used in:
     * - Column Filters
     * - Query Builder
     *
     * @param columnId Column to check
     * @param columnFilter Current applied filter
     */
    getDistinctFilterDisplayValuesForColumn(columnId: string, filter: string, showFilteredRowsOnly: boolean): Promise<{
        values: {
            value: any;
            label: string;
        }[];
        suppressClientSideFilter: boolean;
    }>;
    private shouldShowValuesCount;
    getDistinctFilterDisplayValuesForColumnForFiltersUI(columnId: string, filter: string, showFilteredRowsOnly: boolean): Promise<{
        values: {
            value: any;
            label: string;
        }[];
        suppressClientSideFilter: boolean;
    }>;
    private addPredicateValues;
    private isPredicateInVisibleCellValues;
    private getPredicateOccurance;
    getDistinctFilterListValuesForColumn(column: AdaptableColumn, filter: string, distinctValuesParams: DistinctColumnValuesParams): Promise<{
        suppressClientSideFilter?: boolean;
        gridCells: GridCell[];
    }>;
    /**
     * Gets all distinct Custom Sort values for the Column with the given ColumnId
     * @param columnId Column to check
     */
    getDistinctCustomSortDisplayValuesForColumn(columnId: string): Promise<any[]>;
    getDistinctCustomSortValuesForColumn(column: AdaptableColumn, distinctValuesParams: DistinctColumnValuesParams): Promise<GridCell<any>[]>;
    /**
     * Gets all distinct Bulk Update values for the Column with the given ColumnId
     * @param columnId Column to check
     * @param selectedGridCells Selected grid cells
     */
    getDistinctBulkUpdateDisplayValuesForColumn(columnId: string, selectedGridCells: GridCell[]): Promise<any[]>;
    getDistinctBulkUpdateValuesForColumn(column: AdaptableColumn, selectedGridCells: GridCell[], distinctValuesParams: DistinctColumnValuesParams): Promise<GridCell<any>[]>;
    /**
     * Gets all distinct visible (after current filters are applied) display values in the Column with the given ColumnId
     * @param columnId Column to check
     */
    getDistinctVisibleDisplayValuesForColumn(columnId: string): any[];
    /**
     * Gets all distinct raw values in Column. Values are sorted.
     * @param columnId Column to check
     * @param skipRowNode optional RowNode which should be skipped when collecting the distinct rawValues
     */
    getDistinctRawValuesForColumn(columnId: string, skipRowNode?: IRowNode): any[];
    /**
     * Gets all distinct raw values in Column. Values are un-sorted.
     * @param columnId Column to check
     * @param skipRowNode optional RowNode which should be skipped when collecting the distinct rawValues
     */
    getUnsortedDistinctRawValuesForColumn(columnId: string, skipRowNode?: IRowNode): any[];
    /**
     * Gets all distinct visible raw values in the Column
     * @param columnId Column to check
     */
    getDistinctVisibleRawValuesForColumn(columnId: string): any[];
    private sortDistinctValues;
    setColumns(columns: AdaptableColumn[]): void;
    setSelectedCells(selectedCellInfo: SelectedCellInfo): void;
    setSelectedRows(selectedRowInfo: SelectedRowInfo): void;
    buildStandaloneColumnHeader(column: AdaptableColumn): AdaptableMenuItem[];
    getEditLookUpValuesForColumn(editLookUpItem: EditLookUpPermittedValues, column: AdaptableColumn, gridCell?: GridCell): any[] | undefined;
    getAgGridDataType(dataType: AdaptableColumnDataType): AdaptableColumnType;
    getRowHighlightStyle(params: RowClassParams): {
        [cssProperty: string]: string;
    };
    getAlertRowStyle(params: RowClassParams): {
        [cssProperty: string]: string;
    };
    getAlertRowClass(params: RowClassParams): string | null;
    getRowHighlightClass(params: RowClassParams): string | null;
    deriveSpecialColumnSettingsFromAgGridDefaultColDef(): Partial<SpecialColumnSettings>;
    hasCellEditableAccordingToEditOptions(): boolean;
    /**
     * Returns UNDEFINED if no EditOptions.isCellEditable is provided, otherwise returns the result of the function
     *
     * DO NOT USE THIS METHOD DIRECTLY - use `GridApi.isCellEditable` instead
     */
    isCellEditableAccordingToEditOptions(gridCell: GridCell, defaultColDefinitionEditableValue: boolean): boolean | undefined;
}
